|
2382
|
NULL
|
0
|
2026-05-07T11:13:59.002551+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-07/1778 /Users/lukas/.screenpipe/data/data/2026-05-07/1778152439002_m1.jpg...
|
iTerm2
|
NULL
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
iTerm2ShellEditViewSessionScriptsProfilesWindowHel iTerm2ShellEditViewSessionScriptsProfilesWindowHelp(ahol§ Support Daily - in 47 m100% [DEV (docker)83Thu 7 May 14:13:58181₴6DOCKERLast login: Thu MayO ₴1DEV (docker)7 09:44:56 on ttys006H82APP (-zsh)-zsh• 84screenpipe*•$5-zshPoetry could not find a pyproject.toml file in /Users/lukas/jiminny/app or its parentsPoetry could not find a pyproject.toml file in /Users/lukas/jiminny/app or its parentslukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20773-fix-automated-reports-user-pilot-tracking) $ devroot@docker_lamp_1:/home/jiminny# php artisan crm:sync-opportunity --teamId=2 --from='2026-05-01 00:00:00*Syncing opportunity for HubspotYour HubSpotaccount has become disconnected. Please login to Jiminny to reconnect. skipping...root@docker_lamp_1:/home/jiminny# php artisan jiminny:token-info -A 1499 -RDEVaccess_tokenCFPAsBNZxoDp5kAcRyeB1QoE5SM7DSgNuYTFSAFoAYABo3tj9DHAAeAACNeR-JHgMxIZQLNQMl8kQEwrAgwACAkUAhIJBB4BAQEDBxiCiYwCIN7Y_Qwo0qwCMhTnG549n-YtNuc1jgj-2AsLPSmw3DoyQLNQM18kQEwrAiUACBkGawEFThwBARIBAQEEATEEAQEBAQEBAQEBAQUBEggBAQEBAY1access_token_expires_at= 2026-05-07 11:41:20refresh_token => d5ab04e2-2109-4c0b-b513-8cba1dd54371refresh_token_expires_at =root@docker_lamp_1:/home/jiminny#...
|
NULL
|
-8249185083358050119
|
NULL
|
click
|
ocr
|
NULL
|
iTerm2ShellEditViewSessionScriptsProfilesWindowHel iTerm2ShellEditViewSessionScriptsProfilesWindowHelp(ahol§ Support Daily - in 47 m100% [DEV (docker)83Thu 7 May 14:13:58181₴6DOCKERLast login: Thu MayO ₴1DEV (docker)7 09:44:56 on ttys006H82APP (-zsh)-zsh• 84screenpipe*•$5-zshPoetry could not find a pyproject.toml file in /Users/lukas/jiminny/app or its parentsPoetry could not find a pyproject.toml file in /Users/lukas/jiminny/app or its parentslukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20773-fix-automated-reports-user-pilot-tracking) $ devroot@docker_lamp_1:/home/jiminny# php artisan crm:sync-opportunity --teamId=2 --from='2026-05-01 00:00:00*Syncing opportunity for HubspotYour HubSpotaccount has become disconnected. Please login to Jiminny to reconnect. skipping...root@docker_lamp_1:/home/jiminny# php artisan jiminny:token-info -A 1499 -RDEVaccess_tokenCFPAsBNZxoDp5kAcRyeB1QoE5SM7DSgNuYTFSAFoAYABo3tj9DHAAeAACNeR-JHgMxIZQLNQMl8kQEwrAgwACAkUAhIJBB4BAQEDBxiCiYwCIN7Y_Qwo0qwCMhTnG549n-YtNuc1jgj-2AsLPSmw3DoyQLNQM18kQEwrAiUACBkGawEFThwBARIBAQEEATEEAQEBAQEBAQEBAQUBEggBAQEBAY1access_token_expires_at= 2026-05-07 11:41:20refresh_token => d5ab04e2-2109-4c0b-b513-8cba1dd54371refresh_token_expires_at =root@docker_lamp_1:/home/jiminny#...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
2383
|
NULL
|
0
|
2026-05-07T11:13:59.076399+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-07/1778 /Users/lukas/.screenpipe/data/data/2026-05-07/1778152439076_m2.jpg...
|
iTerm2
|
NULL
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
PostmanEditVIewWindowmelpHubSpot rate limit imple PostmanEditVIewWindowmelpHubSpot rate limit implementation strategyX-HubSpot-RateLimit-Secondly-RemainingDeprecated, ignoreSO Max=190, Interval=10000 means this portal is on a Pro/ Enterprise privately-distributedaoo aliyuius. I vousee max=110 .rs a oubnc VAutn nstal. max=250 means they nave uneAPI Limit Increase add-on.What vou cannot get via API• Search 5/sec limit - not exposed anywhere. Not in headers (search responses stripthem), not in any endpoint. It's a documented constant: vou assume it• Daily usage broken out by app within a portal - the daily endpoint aggregates all privateapps. You can't tell from the API which app spent the budget.• Per-app burst limit programmatically — only interred from Max in headers from a callthat app madePostman recide to fullv profile a vortallIhree calls in order.1. GET /account-info/v3/details →grab portalid. timeZone also notethe x-HunSnot-Rate imit-x resnonse neaders (this is vour burst nronle)2. GET /account-info/v3/api-usage/daily/private-apps → daily limit, current spend.reset time3. (Optional) Trigger a 429 deliberately on a sandbox to confirm policyName shape, but thisisn't necessary just for inspection.That gives vou evervthing HubSpot will tell vou about a specific portal's limits. Save the tworequests as a Postman collection with (faccess token}} and ((portal idi} ascollectionvariables and vou can profile anv portal in two clicks.Keep going in Claude CodeSwitch to Claude Code and let Claude work directiv in vour reno..running and testing as it goesWrite a message…Opus 4.7 Adaptive vhellQ SearchYour team is now on the Free plan with 1 admin. You retain editing access and other members are read-only. View team permissions to see who can edit, or upgrade to restore collaboration.GET read ciGET Get EnaGET httos://:HTTP https:pi.hubapi.com/account-info/v3/api-usaqe/secondlv/private-appshttps://api.hubapi.com/account-info/v3/api-usage/sec&hdly/private-apps= DocsParamsAuthorization • Headers 9 Body Scripts SettinasAuth TypeToken{tokenl}The authorization header will be automaticallygenerated when you send the reauest. Learnmore about Bearer Token authorization"supoont Dally • In 47mNo environmentv~ SaveCookies100% L2Inu / May 14.13.09UparadeCOLLECTIONScontacts› CRM ObjectseRM owners> CRM PipelinesDealsEngagements• D OLD ENGAGEMENTSGET list meetingsPST search moditied companiePOST search tasksGET read call> Post search callsGET list callsPOST meetings scheduledGET aet meetinaPOST get link to task> POST Create Contact with Associatio> HubsnotJournal & webhoooks v4POSt Get tokenGET get subscriptionsPOST create subscrintionGET Journal earliestGET lournal latesGeT https:ubspot-webhooks-lournal-nal.s.GET neyt offsetpost get loken prodDEL DELSTE CURSCRIPTION DEP PORTAI.GET DEAL WITH HISTORY pRODEpTICC VA©Authi> Properties> RESSARCHwCCADAUPOST search contact bv ohonePOSt search contact by emailPOST search meetinasPOST search notes> Post Search calls v3.IPOST Search related meetinas v3POST search dealsCAMIDONMCNTC> SPFCSELOWS$ Connect Git @ Console 2 TerminVariables in requestG tokenAll variablesCNeR-JHaMxlZoiNd.BodyCookies 17> HTMLvPreviewY^ Debua with Al l v<meta htto-equiv="Content-Tvoe" content="text/html.charset=utf-8" /><titlesFrror 404 Not Foundk/titlesALASUTTO CODAD ЛЛЙИILО-404 Not Found • 146 ms • 1.01 KB • @| ..Globals Vault Tools? 0 0 0...
|
NULL
|
-2635640190844649340
|
NULL
|
click
|
ocr
|
NULL
|
PostmanEditVIewWindowmelpHubSpot rate limit imple PostmanEditVIewWindowmelpHubSpot rate limit implementation strategyX-HubSpot-RateLimit-Secondly-RemainingDeprecated, ignoreSO Max=190, Interval=10000 means this portal is on a Pro/ Enterprise privately-distributedaoo aliyuius. I vousee max=110 .rs a oubnc VAutn nstal. max=250 means they nave uneAPI Limit Increase add-on.What vou cannot get via API• Search 5/sec limit - not exposed anywhere. Not in headers (search responses stripthem), not in any endpoint. It's a documented constant: vou assume it• Daily usage broken out by app within a portal - the daily endpoint aggregates all privateapps. You can't tell from the API which app spent the budget.• Per-app burst limit programmatically — only interred from Max in headers from a callthat app madePostman recide to fullv profile a vortallIhree calls in order.1. GET /account-info/v3/details →grab portalid. timeZone also notethe x-HunSnot-Rate imit-x resnonse neaders (this is vour burst nronle)2. GET /account-info/v3/api-usage/daily/private-apps → daily limit, current spend.reset time3. (Optional) Trigger a 429 deliberately on a sandbox to confirm policyName shape, but thisisn't necessary just for inspection.That gives vou evervthing HubSpot will tell vou about a specific portal's limits. Save the tworequests as a Postman collection with (faccess token}} and ((portal idi} ascollectionvariables and vou can profile anv portal in two clicks.Keep going in Claude CodeSwitch to Claude Code and let Claude work directiv in vour reno..running and testing as it goesWrite a message…Opus 4.7 Adaptive vhellQ SearchYour team is now on the Free plan with 1 admin. You retain editing access and other members are read-only. View team permissions to see who can edit, or upgrade to restore collaboration.GET read ciGET Get EnaGET httos://:HTTP https:pi.hubapi.com/account-info/v3/api-usaqe/secondlv/private-appshttps://api.hubapi.com/account-info/v3/api-usage/sec&hdly/private-apps= DocsParamsAuthorization • Headers 9 Body Scripts SettinasAuth TypeToken{tokenl}The authorization header will be automaticallygenerated when you send the reauest. Learnmore about Bearer Token authorization"supoont Dally • In 47mNo environmentv~ SaveCookies100% L2Inu / May 14.13.09UparadeCOLLECTIONScontacts› CRM ObjectseRM owners> CRM PipelinesDealsEngagements• D OLD ENGAGEMENTSGET list meetingsPST search moditied companiePOST search tasksGET read call> Post search callsGET list callsPOST meetings scheduledGET aet meetinaPOST get link to task> POST Create Contact with Associatio> HubsnotJournal & webhoooks v4POSt Get tokenGET get subscriptionsPOST create subscrintionGET Journal earliestGET lournal latesGeT https:ubspot-webhooks-lournal-nal.s.GET neyt offsetpost get loken prodDEL DELSTE CURSCRIPTION DEP PORTAI.GET DEAL WITH HISTORY pRODEpTICC VA©Authi> Properties> RESSARCHwCCADAUPOST search contact bv ohonePOSt search contact by emailPOST search meetinasPOST search notes> Post Search calls v3.IPOST Search related meetinas v3POST search dealsCAMIDONMCNTC> SPFCSELOWS$ Connect Git @ Console 2 TerminVariables in requestG tokenAll variablesCNeR-JHaMxlZoiNd.BodyCookies 17> HTMLvPreviewY^ Debua with Al l v<meta htto-equiv="Content-Tvoe" content="text/html.charset=utf-8" /><titlesFrror 404 Not Foundk/titlesALASUTTO CODAD ЛЛЙИILО-404 Not Found • 146 ms • 1.01 KB • @| ..Globals Vault Tools? 0 0 0...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
2447
|
NULL
|
0
|
2026-05-07T11:18:59.765462+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-07/1778 /Users/lukas/.screenpipe/data/data/2026-05-07/1778152739765_m2.jpg...
|
Firefox
|
API usage guidelines and limits - HubSpot docs — W API usage guidelines and limits - HubSpot docs — Work...
|
True
|
developers.hubspot.com/docs/developer-tooling/plat developers.hubspot.com/docs/developer-tooling/platform/usage-guidelines...
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Platform Sprint 3 Q2 - Platform Team - Scrum Board Platform Sprint 3 Q2 - Platform Team - Scrum Board - Jira
Platform Sprint 3 Q2 - Platform Team - Scrum Board - Jira
SevenShores\Hubspot\Exceptions\BadRequest: Client error: `POST https://api.hubapi.com/crm/v3/objects/contact/search` resulted in a `429 Too Many Requests` response: {"status":"error","message":"You have reached your secondly limit.","errorType":"RATE_LIMIT
SevenShores\Hubspot\Exceptions\BadRequest: Client error: `POST https://api.hubapi.com/crm/v3/objects/contact/search` resulted in a `429 Too Many Requests` response: {"status":"error","message":"You have reached your secondly limit.","errorType":"RATE_LIMIT
Service-Desk - Queues - Platform team - Service space - Jira
Service-Desk - Queues - Platform team - Service space - Jira
Jy 20807 check various issues with stages by nikolaybiaivanov · Pull Request #12041 · jiminny/app
Jy 20807 check various issues with stages by nikolaybiaivanov · Pull Request #12041 · jiminny/app
Sentry
Sentry
Pull requests · jiminny/app
Pull requests · jiminny/app
Userpilot | Ask Jiminny Report Generated
Userpilot | Ask Jiminny Report Generated
JY-20773 fix user pilot tracking ofr automated report generated by LakyLak · Pull Request #12024 · jiminny/app
JY-20773 fix user pilot tracking ofr automated report generated by LakyLak · Pull Request #12024 · jiminny/app
Jiminny
Jiminny
API usage guidelines and limits - HubSpot docs
API usage guidelines and limits - HubSpot docs
Close tab
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Skip to main content
Skip to main content
HubSpot docs home page light logo
HubSpot docs
home page
Open search
Search...
⌘
K
Toggle assistant panel
Ask AI
Ask Docs AI
Changelog
Changelog
Log In
Log In
Sign up
Sign up
Home
Home
Get Started
Get Started
Apps
Apps
CMS
CMS
APIs
APIs
Developer Tooling
Developer Tooling
Overview
Overview
Platform
Platform
Versioning
Versioning
API usage guidelines
API usage guidelines
APIs by tier
APIs by tier
Breaking change guidelines
Breaking change guidelines
Local development
Local development
Toggle HubSpot CLI section
HubSpot CLI
Build with config profiles
Build with config profiles
Configurable test accounts
Configurable test accounts
Toggle Developer MCP section
Developer MCP
VS Code extension
VS Code extension
Troubleshooting
Troubleshooting
Third-party tools
Third-party tools
Set up GitHub Actions
Set up GitHub Actions
Postman for HubSpot APIs
Postman for HubSpot APIs
SDKs
SDKs
Node
Node
Php
Php
Python
Python
Ruby
Ruby
English
English
Toggle dark mode
close
close
On this page
On this page
Authentication and security
Authentication and security
Checking API usage
Checking API usage
Apps built on version 2025.2 and 2026.03 of the developer platform
Apps built on version 2025.2 and 2026.03 of the developer platform
Legacy apps
Legacy apps
Rate limits
Rate limits
Publicly distributed OAuth app limits
Publicly distributed OAuth app limits
Privately distributed app limits
Privately distributed app limits
Exemptions
Exemptions
App and account limits
App and account limits
API-specific limits
API-specific limits
Timeline event limits
Timeline event limits
Custom event limits
Custom event limits
Service limits
Service limits
Rate limit error responses
Rate limit error responses
Address rate limit issues
Address rate limit issues
Use batch APIs and cache results when possible
Use batch APIs and cache results when possible
Use webhooks to get updated data from HubSpot
Use webhooks to get updated data from HubSpot
Platform
API usage guidelines and limits
API usage guidelines and limits
Learn about the different API and developer feature limits in HubSpot.
Documentation Index
Documentation Index
Fetch the complete documentation index at:
https://developers.hubspot.com/docs/llms.txt
https://developers.hubspot.com/docs/llms.txt
Use this file to discover all available pages before exploring further.
HubSpot closely monitors usage of all APIs to ensure a quality experience for every user. All app and integration developers must comply with the
HubSpot Acceptable Use Policy
HubSpot Acceptable Use Policy
and
API Terms
API Terms
. While HubSpot reserves the right to change or deprecate the APIs over time, updates will always be provided in advance through the
Developer Changelog
Developer Changelog
.
Navigate to header Authentication and security
Navigate to header
Authentication and security
For optimal security, all apps must use HubSpot’s
OAuth protocol
OAuth protocol
directly, or use your app’s static auth token if you’re building an
app installed in a single account
app installed in a single account
. Apps are responsible for storing time-to-live (TTL) data and refreshing user access tokens in accordance with this protocol. When an access token is generated, it will include an
expires_in
parameter indicating how long it can be used to make API calls before refreshing.
Unauthorized (401)
requests are not a valid indicator that a new access token must be retrieved.
Navigate to header Checking API usage
Navigate to header
Checking API usage
Navigate to header Apps built on version 2025.2 and 2026.03 of the developer platform
Navigate to header
Apps built on version 2025.2 and 2026.03 of the developer platform
To view API usage for your apps built on the
new developer platform
new developer platform
:
In your HubSpot account, navigate to
Development
in the main navigation bar.
In the left sidebar menu, navigate to
Monitoring
>
API call usage
.
Your API usage across all your apps will be listed at the top of the page. You can also review usage for the apps you built in your specific account, along with any third-party apps you’ve installed.
Navigate to header Legacy apps
Navigate to header
Legacy apps
To view API usage for a legacy
private app
private app
:
In your HubSpot account, navigate to
Development
in the main navigation bar.
In the left sidebar menu, navigate to
Legacy apps
.
Click the
name
of the private app.
On the app details page, click the
Logs
tab.
Review the API calls listed in the table. You can also use the
search bar
,
filters
, and
date pickers
to further refine the displayed API calls.
Learn more about
checking API usage in legacy private apps
checking API usage in legacy private apps
.
To view API usage for a public app using OAuth:
In your HubSpot account, navigate to
Development
in the main navigation bar.
In the left sidebar menu, navigate to
Monitoring
, then select
Logs
.
At the top, select the
name
of the app.
Use the
tabs
to view different types of requests being made to or from the app. While viewing these logs, you can click an
individual request
to view more information.
Learn more about
monitoring API usage for legacy public apps
monitoring API usage for legacy public apps
.
Navigate to header Rate limits
Navigate to header
Rate limits
The number of calls your app can make is based on your account subscription in the account it’s installed in, and whether you’ve purchased the
API limit increase
API limit increase
.
You can keep the following general limits in mind when making requests to HubSpot’s API endpoints, however some APIs may also have more specific limits listed on their relevant API guide (e.g., the
exports API
exports API
).
The following APIs have limits that are unique from or stricter than the general limits. Refer to each associated guide for more information.
Associations API
Associations API
CRM Search API
CRM Search API
GraphQL API
GraphQL API
Navigate to header Publicly distributed OAuth app limits
Navigate to header
Publicly distributed OAuth app limits
For
legacy public apps
legacy public apps
, and apps on the latest versions of the developer platform (2025.2 and 2026.03) using
OAuth authentication
OAuth authentication
distributed
distributed
via the HubSpot marketplace, each HubSpot account that installs your app is limited to 110 requests every 10 seconds. This excludes the
CRM Search API
CRM Search API
.
The
API limit increase add-on
API limit increase add-on
does
not
increase the limits of
legacy public apps
legacy public apps
nor apps on the latest versions of the developer platform (2025.2 and 2026.03) using
OAuth authentication
OAuth authentication
that are
distributed
distributed
via the HubSpot marketplace.
Navigate to header Privately distributed app limits
Navigate to header
Privately distributed app limits
The limits in the table below apply to
legacy private apps
legacy private apps
, as well as apps on the latest versions of the developer platform (2025.2 and 2026.03) with a
distribution
distribution
set to
private
. Note that for these privately distributed app types:
The burst limit, detailed in the
Per 10 seconds
column below, applies individually per app.
The daily limit, detailed in the
Per day
column below, is shared across all apps within the same HubSpot account.
Product Tier
Per 10 Seconds
Per Day
Privately distributed apps
(Any Hub)
Free and Starter
100 / app
250,000 / account
(Any Hub)
Professional
190 / app
625,000 / account
(Any Hub)
Enterprise
190 / app
1,000,000 / account
Privately distributed apps with
API Limit Increase
API Limit Increase
(Any Hub)
Free, Starter, Professional, and Enterprise
250 / app
1,000,000 / account on top of your base subscription, for each limit increase. You can purchase a maximum of two API limit increases.
Privately distributed apps
Privately distributed apps with
API Limit Increase
API Limit Increase
Product Tier
(Any Hub)
Free and Starter
(Any Hub)
Professional
(Any Hub)
Enterprise
(Any Hub)
Free, Starter, Professional, and Enterprise
Per 10 Seconds
100 / app
190 / app
190 / app
250 / app
Per Day
250,000 / account
625,000 / account
1,000,000 / account
1,000,000 / account on top of your base subscription, for each limit increase. You can purchase a maximum of two API limit increases.
Navigate to header Exemptions
Navigate to header
Exemptions
Some APIs are exempt from the 10-second and daily limits (e.g., certain
marketing single send API
marketing single send API
and
source code API
source code API
endpoints). However, you should note the following for the exempt APIs:
API requests that are exempt from daily or secondary limits will
not
be logged in HubSpot. If you want to store these exempted requests, you’ll need to log these requests externally.
A high number of requests may result in
5xx
errors. These can be addressed the same as you would
429 errors
429
errors
.
Navigate to header App and account limits
Navigate to header
App and account limits
The following limits apply for creating legacy apps, webhook subscriptions, and CRM extension settings.
You can create up to 100
legacy public apps
legacy public apps
per developer account.
You can create up to 20
legacy private apps
legacy private apps
per HubSpot account.
You can create up to 1,000
webhook subscriptions
webhook subscriptions
per app.
You can create up to 25 CRM extension settings per
legacy public app
legacy public app
.
Navigate to header API-specific limits
Navigate to header
API-specific limits
Some features and APIs have more limits that are listed below. Additional limis for each API can also be found on an API’s associated guide (e.g., the
exports API
exports API
).
Navigate to header Timeline event limits
Navigate to header
Timeline event limits
Timeline events
Timeline events
in a legacy public app are subject to the following limits:
You can create up to 750 timeline event types per public app.
You can create up to 500 properties per timeline event type.
Each serialized event instance has the following size limits:
500 bytes for the event instance ID
510 KB per property/token
1 MB in total size for the event instance
Navigate to header Custom event limits
Navigate to header
Custom event limits
Custom events
Custom events
are subject to the following limits:
There is a limit of 500 unique event definitions per account.
There is a limit of 30 million event completions per month.
The send custom event completions endpoint supports up to 1250 requests per second.
The custom event completion batch endpoint supports batches of 500.
Consult the other custom event restrictions in the
API guide
API guide
.
Navigate to header Service limits
Navigate to header
Service limits
Learn more about service limits and pricing on
HubSpot’s Product & Services Catalog
HubSpot’s Product & Services Catalog
.
Navigate to header Rate limit error responses
Navigate to header
Rate limit error responses
Any app or integration exceeding its rate limits will receive a
429
error response for all subsequent API calls. Requests resulting in an error response shouldn’t exceed 5% of your total daily requests. If you plan on listing your app in the
HubSpot Marketplace
HubSpot Marketplace
, it must stay under this 5% limit to be certified.
The
429
response will have the following format:
Report incorrect code
Copy the contents from the code block
Ask AI
{
"status"
:
"error"
,
"message"
:
"You have reached your daily limit."
,
"errorType"
:
"RATE_LIMIT"
,
"correlationId"
:
"c033cdaa-2c40-4a64-ae48-b4cec88dad24"
,
"policyName"
:
"DAILY"
,
"requestId"
:
"3d3e35b7-0dae-4b9f-a6e3-9c230cbcf8dd"
}
The
message
and
policyName
will indicate which limit you hit (either daily or secondly).
The
daily
limit resets at midnight based on your
time zone setting
time zone setting
.
The following table details the rate limit headers included in the response of each API request to HubSpot, subject to the exceptions listed below the table.
Header
Description
X-HubSpot-RateLimit-Daily
The number of API requests that are allowed per day. Note that this header is not included in the response to API requests authorized using
OAuth
OAuth
.
X-HubSpot-RateLimit-Daily-Remaining
The number of API requests still allowed for the current day. Note that this header is not included in the response to API requests authorized using
OAuth
OAuth
.
X-HubSpot-RateLimit-Interval-Milliseconds
The window of time that the
X-HubSpot-RateLimit-Max
and
X-HubSpot-RateLimit-Remaining
headers apply to.For example, a value of 10000 would be a window of 10 seconds.
X-HubSpot-RateLimit-Max
The number of requests allowed in the window specified in
X-HubSpot-RateLimit-Interval-Milliseconds
.For example, if this header had a value of 100, and the
X-HubSpot-RateLimit-Interval-Milliseconds
header was 10000, the enforced limit would be 100 requests per 10 seconds.
X-HubSpot-RateLimit-Remaining
The number of API requests still allowed for the window specified in
X-HubSpot-RateLimit-Interval-Milliseconds
.
Header
X-HubSpot-RateLimit-Daily
X-HubSpot-RateLimit-Daily-Remaining
X-HubSpot-RateLimit-Interval-Milliseconds
X-HubSpot-RateLimit-Max
X-HubSpot-RateLimit-Remaining
Description
The number of API requests that are allowed per day. Note that this header is not included in the response to API requests authorized using
OAuth
OAuth
.
The number of API requests still allowed for the current day. Note that this header is not included in the response to API requests authorized using
OAuth
OAuth
.
The window of time that the
X-HubSpot-RateLimit-Max
and
X-HubSpot-RateLimit-Remaining
headers apply to.For example, a value of 10000 would be a window of 10 seconds.
The number of requests allowed in the window specified in
X-HubSpot-RateLimit-Interval-Milliseconds
.For example, if this header had a value of 100, and the
X-HubSpot-RateLimit-Interval-Milliseconds
header was 10000, the enforced limit would be 100 requests per 10 seconds.
The number of API requests still allowed for the window specified in
X-HubSpot-RateLimit-Interval-Milliseconds
.
The
X-HubSpot-RateLimit-Secondly
and
X-HubSpot-RateLimit-Secondly-Remaining
headers are still included and will still have accurate data, but the limit referenced by these headers is no longer enforced and these two headers should be considered deprecated.
Responses from the search API endpoints will
not
include any of the rate limit headers listed above.
You can also check the number of calls used during the current day using
this endpoint
this endpoint
.
Navigate to header Address rate limit issues
Navigate to header
Address rate limit issues
The sections below detail two possible ways you can reduce the volume of API traffic if you repeatedly hit your API request limit. If you’re running into the
TEN_SECONDLY_ROLLING
limit, you should throttle the requests that your app is making to stay under that limit. In addition to throttling the requests, or if you’re running into the daily limit, check out the suggestions below....
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Platform Sprint 3 Q2 - Platform Team - Scrum Board - Jira","depth":4,"bounds":{"left":0.34773937,"top":0.0518755,"width":0.07962101,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Platform Sprint 3 Q2 - Platform Team - Scrum Board - Jira","depth":5,"bounds":{"left":0.36103722,"top":0.06304868,"width":0.10106383,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"SevenShores\\Hubspot\\Exceptions\\BadRequest: Client error: `POST https://api.hubapi.com/crm/v3/objects/contact/search` resulted in a `429 Too Many Requests` response: {\"status\":\"error\",\"message\":\"You have reached your secondly limit.\",\"errorType\":\"RATE_LIMIT","depth":4,"bounds":{"left":0.34773937,"top":0.08459697,"width":0.07962101,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"SevenShores\\Hubspot\\Exceptions\\BadRequest: Client error: `POST https://api.hubapi.com/crm/v3/objects/contact/search` resulted in a `429 Too Many Requests` response: {\"status\":\"error\",\"message\":\"You have reached your secondly limit.\",\"errorType\":\"RATE_LIMIT","depth":5,"bounds":{"left":0.36103722,"top":0.09577015,"width":0.4644282,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Service-Desk - Queues - Platform team - Service space - Jira","depth":4,"bounds":{"left":0.34773937,"top":0.11731844,"width":0.07962101,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Service-Desk - Queues - Platform team - Service space - Jira","depth":5,"bounds":{"left":0.36103722,"top":0.12849163,"width":0.10721409,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jy 20807 check various issues with stages by nikolaybiaivanov · Pull Request #12041 · jiminny/app","depth":4,"bounds":{"left":0.34773937,"top":0.15003991,"width":0.07962101,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jy 20807 check various issues with stages by nikolaybiaivanov · Pull Request #12041 · jiminny/app","depth":5,"bounds":{"left":0.36103722,"top":0.16121309,"width":0.17037898,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Sentry","depth":4,"bounds":{"left":0.34773937,"top":0.18276137,"width":0.07962101,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Sentry","depth":5,"bounds":{"left":0.36103722,"top":0.19393456,"width":0.011303191,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Pull requests · jiminny/app","depth":4,"bounds":{"left":0.34773937,"top":0.21548285,"width":0.07962101,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Pull requests · jiminny/app","depth":5,"bounds":{"left":0.36103722,"top":0.22665602,"width":0.04537899,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Userpilot | Ask Jiminny Report Generated","depth":4,"bounds":{"left":0.34773937,"top":0.2482043,"width":0.07962101,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Userpilot | Ask Jiminny Report Generated","depth":5,"bounds":{"left":0.36103722,"top":0.25937748,"width":0.07164229,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"JY-20773 fix user pilot tracking ofr automated report generated by LakyLak · Pull Request #12024 · jiminny/app","depth":4,"bounds":{"left":0.34773937,"top":0.28092578,"width":0.07962101,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20773 fix user pilot tracking ofr automated report generated by LakyLak · Pull Request #12024 · jiminny/app","depth":5,"bounds":{"left":0.36103722,"top":0.29209897,"width":0.19331782,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny","depth":4,"bounds":{"left":0.34773937,"top":0.31364724,"width":0.07962101,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny","depth":5,"bounds":{"left":0.36103722,"top":0.32482043,"width":0.013131649,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"API usage guidelines and limits - HubSpot docs","depth":4,"bounds":{"left":0.34773937,"top":0.3463687,"width":0.07962101,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"API usage guidelines and limits - HubSpot docs","depth":5,"bounds":{"left":0.36103722,"top":0.3575419,"width":0.082446806,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close tab","depth":5,"bounds":{"left":0.41505983,"top":0.35355148,"width":0.007978723,"height":0.01915403},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"New Tab","depth":4,"bounds":{"left":0.35056517,"top":0.38068634,"width":0.07413564,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Customize sidebar","depth":6,"bounds":{"left":0.35056517,"top":0.97007185,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open Google Gemini (⌃X)","depth":6,"bounds":{"left":0.3615359,"top":0.97007185,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Tabs from other devices","depth":6,"bounds":{"left":0.3726729,"top":0.97007185,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open history (⇧⌘H)","depth":6,"bounds":{"left":0.38380983,"top":0.97007185,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open bookmarks (⌘B)","depth":6,"bounds":{"left":0.3949468,"top":0.97007185,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Skip to main content","depth":6,"on_screen":false,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Skip to main content","depth":7,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"HubSpot docs home page light logo","depth":7,"bounds":{"left":0.44331783,"top":0.0,"width":0.08045213,"height":0.022346368},"on_screen":false,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"HubSpot docs","depth":9,"bounds":{"left":0.4429854,"top":0.0,"width":0.03557181,"height":0.015961692},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"home page","depth":9,"bounds":{"left":0.47855717,"top":0.0,"width":0.029920213,"height":0.015961692},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Open search","depth":7,"bounds":{"left":0.6253325,"top":0.0,"width":0.13081782,"height":0.028731046},"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Search...","depth":9,"bounds":{"left":0.63796544,"top":0.0,"width":0.018284574,"height":0.01396648},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"⌘","depth":9,"bounds":{"left":0.74551195,"top":0.0,"width":0.003656915,"height":0.011971269},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"K","depth":9,"bounds":{"left":0.7491689,"top":0.0,"width":0.0029920214,"height":0.011971269},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Toggle assistant panel","depth":7,"bounds":{"left":0.75947475,"top":0.0,"width":0.04255319,"height":0.028731046},"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Ask AI","depth":9,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Ask Docs AI","depth":9,"bounds":{"left":0.77077794,"top":0.0,"width":0.026595745,"height":0.01396648},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Changelog","depth":10,"bounds":{"left":0.9049202,"top":0.0,"width":0.023603724,"height":0.015961692},"on_screen":false,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Changelog","depth":11,"bounds":{"left":0.9049202,"top":0.0,"width":0.023603724,"height":0.01396648},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Log In","depth":10,"bounds":{"left":0.93650264,"top":0.0,"width":0.014295213,"height":0.015961692},"on_screen":false,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Log In","depth":11,"bounds":{"left":0.93650264,"top":0.0,"width":0.014295213,"height":0.01396648},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Sign up","depth":10,"bounds":{"left":0.9587766,"top":0.0,"width":0.025265958,"height":0.028731046},"on_screen":false,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Sign up","depth":12,"bounds":{"left":0.9587766,"top":0.0,"width":0.01662234,"height":0.01396648},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Home","depth":7,"bounds":{"left":0.44331783,"top":0.0,"width":0.013131649,"height":0.03830806},"on_screen":false,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Home","depth":8,"bounds":{"left":0.44331783,"top":0.0,"width":0.013131649,"height":0.01396648},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Get Started","depth":7,"bounds":{"left":0.4644282,"top":0.0,"width":0.025764627,"height":0.03830806},"on_screen":false,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Get Started","depth":8,"bounds":{"left":0.4644282,"top":0.0,"width":0.025764627,"height":0.01396648},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Apps","depth":7,"bounds":{"left":0.49817154,"top":0.0,"width":0.011136968,"height":0.03830806},"on_screen":false,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Apps","depth":8,"bounds":{"left":0.49817154,"top":0.0,"width":0.011136968,"height":0.01396648},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"CMS","depth":7,"bounds":{"left":0.51728725,"top":0.0,"width":0.009973404,"height":0.03830806},"on_screen":false,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"CMS","depth":8,"bounds":{"left":0.51728725,"top":0.0,"width":0.009973404,"height":0.01396648},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"APIs","depth":7,"bounds":{"left":0.53523934,"top":0.0,"width":0.010305851,"height":0.03830806},"on_screen":false,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"APIs","depth":8,"bounds":{"left":0.53523934,"top":0.0,"width":0.010305851,"height":0.01396648},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Developer Tooling","depth":7,"bounds":{"left":0.55352396,"top":0.0,"width":0.0390625,"height":0.03830806},"on_screen":false,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Developer Tooling","depth":8,"bounds":{"left":0.55352396,"top":0.0,"width":0.0390625,"height":0.01396648},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Overview","depth":10,"bounds":{"left":0.43001994,"top":0.005586592,"width":0.0831117,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Overview","depth":12,"bounds":{"left":0.4353391,"top":0.011572227,"width":0.020611702,"height":0.01396648},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Platform","depth":8,"bounds":{"left":0.4353391,"top":0.056664005,"width":0.019448139,"height":0.015961692},"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Platform","depth":9,"bounds":{"left":0.4353391,"top":0.057861134,"width":0.019448139,"height":0.01396648},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Versioning","depth":10,"bounds":{"left":0.43583778,"top":0.08060654,"width":0.07729388,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Versioning","depth":12,"bounds":{"left":0.44115692,"top":0.086592175,"width":0.023105053,"height":0.01396648},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"API usage guidelines","depth":10,"bounds":{"left":0.43583778,"top":0.10694334,"width":0.07729388,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"API usage guidelines","depth":12,"bounds":{"left":0.44115692,"top":0.11292897,"width":0.046210106,"height":0.01396648},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"APIs by tier","depth":10,"bounds":{"left":0.43583778,"top":0.13328013,"width":0.07729388,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"APIs by tier","depth":12,"bounds":{"left":0.44115692,"top":0.13926576,"width":0.025598405,"height":0.01396648},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Breaking change guidelines","depth":10,"bounds":{"left":0.43583778,"top":0.15961692,"width":0.07729388,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Breaking change guidelines","depth":12,"bounds":{"left":0.44115692,"top":0.16560255,"width":0.06050532,"height":0.01396648},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Local development","depth":8,"bounds":{"left":0.4353391,"top":0.21069433,"width":0.04288564,"height":0.015961692},"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Local development","depth":9,"bounds":{"left":0.4353391,"top":0.21189146,"width":0.04288564,"height":0.01396648},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Toggle HubSpot CLI section","depth":10,"bounds":{"left":0.43001994,"top":0.23463687,"width":0.043882977,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"HubSpot CLI","depth":11,"bounds":{"left":0.44132313,"top":0.2406225,"width":0.028590426,"height":0.01396648},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Build with config profiles","depth":10,"bounds":{"left":0.43583778,"top":0.26097366,"width":0.07729388,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Build with config profiles","depth":12,"bounds":{"left":0.44115692,"top":0.2669593,"width":0.054022606,"height":0.01396648},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Configurable test accounts","depth":10,"bounds":{"left":0.43583778,"top":0.28731045,"width":0.07729388,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Configurable test accounts","depth":12,"bounds":{"left":0.44115692,"top":0.2932961,"width":0.059175532,"height":0.01396648},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Toggle Developer MCP section","depth":10,"bounds":{"left":0.43001994,"top":0.31364724,"width":0.04870346,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Developer MCP","depth":11,"bounds":{"left":0.44132313,"top":0.3196329,"width":0.033410903,"height":0.01396648},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"VS Code extension","depth":10,"bounds":{"left":0.43583778,"top":0.33998403,"width":0.07729388,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"VS Code extension","depth":12,"bounds":{"left":0.44115692,"top":0.34596968,"width":0.04105718,"height":0.01396648},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Troubleshooting","depth":10,"bounds":{"left":0.43583778,"top":0.36632082,"width":0.07729388,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Troubleshooting","depth":12,"bounds":{"left":0.44115692,"top":0.37230647,"width":0.03507314,"height":0.01396648},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Third-party tools","depth":8,"bounds":{"left":0.4353391,"top":0.41739824,"width":0.037898935,"height":0.015961692},"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Third-party tools","depth":9,"bounds":{"left":0.4353391,"top":0.41859537,"width":0.037898935,"height":0.01396648},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Set up GitHub Actions","depth":10,"bounds":{"left":0.43583778,"top":0.44134077,"width":0.07729388,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Set up GitHub Actions","depth":12,"bounds":{"left":0.44115692,"top":0.44732642,"width":0.048537236,"height":0.01396648},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Postman for HubSpot APIs","depth":10,"bounds":{"left":0.43583778,"top":0.46767756,"width":0.07729388,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Postman for HubSpot APIs","depth":12,"bounds":{"left":0.44115692,"top":0.4736632,"width":0.059341755,"height":0.01396648},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"SDKs","depth":8,"bounds":{"left":0.4353391,"top":0.51875496,"width":0.011968086,"height":0.015961692},"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"SDKs","depth":9,"bounds":{"left":0.4353391,"top":0.5199521,"width":0.011968086,"height":0.01396648},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Node","depth":10,"bounds":{"left":0.43583778,"top":0.54269755,"width":0.07729388,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Node","depth":12,"bounds":{"left":0.4504654,"top":0.54868317,"width":0.011968086,"height":0.01396648},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Php","depth":10,"bounds":{"left":0.43583778,"top":0.56903434,"width":0.07729388,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Php","depth":12,"bounds":{"left":0.4504654,"top":0.57501996,"width":0.008477394,"height":0.01396648},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Python","depth":10,"bounds":{"left":0.43583778,"top":0.5953711,"width":0.07729388,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Python","depth":12,"bounds":{"left":0.4504654,"top":0.60135674,"width":0.015458777,"height":0.01396648},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Ruby","depth":10,"bounds":{"left":0.43583778,"top":0.6217079,"width":0.07729388,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Ruby","depth":12,"bounds":{"left":0.4504654,"top":0.62769353,"width":0.011136968,"height":0.01396648},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"English","depth":7,"bounds":{"left":0.43666887,"top":0.80686355,"width":0.026595745,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"English","depth":9,"bounds":{"left":0.4476396,"top":0.81284916,"width":0.015625,"height":0.01396648},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Toggle dark mode","depth":7,"bounds":{"left":0.48853058,"top":0.8084597,"width":0.017287234,"height":0.022346368},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"close","depth":7,"bounds":{"left":0.49983376,"top":0.0023942539,"width":0.008643617,"height":0.0207502},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"close","depth":9,"bounds":{"left":0.50382316,"top":0.007980846,"width":0.012632979,"height":0.015961692},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"On this page","depth":10,"bounds":{"left":0.8528923,"top":0.018355945,"width":0.03474069,"height":0.01915403},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"On this page","depth":12,"bounds":{"left":0.85954124,"top":0.021149242,"width":0.028091755,"height":0.01396648},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Authentication and security","depth":12,"bounds":{"left":0.8528923,"top":0.043894652,"width":0.082446806,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Authentication and security","depth":13,"bounds":{"left":0.8528923,"top":0.04988029,"width":0.06050532,"height":0.01396648},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Checking API usage","depth":12,"bounds":{"left":0.8528923,"top":0.06943336,"width":0.082446806,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Checking API usage","depth":13,"bounds":{"left":0.8528923,"top":0.075418994,"width":0.044215426,"height":0.01396648},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Apps built on version 2025.2 and 2026.03 of the developer platform","depth":12,"bounds":{"left":0.8528923,"top":0.09497207,"width":0.082446806,"height":0.044692736},"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Apps built on version 2025.2 and 2026.03 of the developer platform","depth":13,"bounds":{"left":0.85821146,"top":0.1009577,"width":0.07413564,"height":0.03312051},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Legacy apps","depth":12,"bounds":{"left":0.8528923,"top":0.1396648,"width":0.082446806,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Legacy apps","depth":13,"bounds":{"left":0.85821146,"top":0.14565043,"width":0.027925532,"height":0.01396648},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Rate limits","depth":12,"bounds":{"left":0.8528923,"top":0.16520351,"width":0.082446806,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Rate limits","depth":13,"bounds":{"left":0.8528923,"top":0.17118914,"width":0.023105053,"height":0.01396648},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Publicly distributed OAuth app limits","depth":12,"bounds":{"left":0.8528923,"top":0.19074222,"width":0.082446806,"height":0.044692736},"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Publicly distributed OAuth app limits","depth":13,"bounds":{"left":0.85821146,"top":0.19672786,"width":0.06798537,"height":0.03312051},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Privately distributed app limits","depth":12,"bounds":{"left":0.8528923,"top":0.23543495,"width":0.082446806,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Privately distributed app limits","depth":13,"bounds":{"left":0.85821146,"top":0.2414206,"width":0.06698803,"height":0.01396648},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Exemptions","depth":12,"bounds":{"left":0.8528923,"top":0.26097366,"width":0.082446806,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Exemptions","depth":13,"bounds":{"left":0.85821146,"top":0.2669593,"width":0.02543218,"height":0.01396648},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"App and account limits","depth":12,"bounds":{"left":0.8528923,"top":0.28651237,"width":0.082446806,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"App and account limits","depth":13,"bounds":{"left":0.8528923,"top":0.292498,"width":0.05069814,"height":0.01396648},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"API-specific limits","depth":12,"bounds":{"left":0.8528923,"top":0.3120511,"width":0.082446806,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"API-specific limits","depth":13,"bounds":{"left":0.8528923,"top":0.3180367,"width":0.039727394,"height":0.01396648},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Timeline event limits","depth":12,"bounds":{"left":0.8528923,"top":0.33758977,"width":0.082446806,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Timeline event limits","depth":13,"bounds":{"left":0.85821146,"top":0.34357542,"width":0.04438165,"height":0.01396648},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Custom event limits","depth":12,"bounds":{"left":0.8528923,"top":0.36312848,"width":0.082446806,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Custom event limits","depth":13,"bounds":{"left":0.85821146,"top":0.36911413,"width":0.043218084,"height":0.01396648},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Service limits","depth":12,"bounds":{"left":0.8528923,"top":0.3886672,"width":0.082446806,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Service limits","depth":13,"bounds":{"left":0.8528923,"top":0.39465284,"width":0.029089095,"height":0.01396648},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Rate limit error responses","depth":12,"bounds":{"left":0.8528923,"top":0.4142059,"width":0.082446806,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Rate limit error responses","depth":13,"bounds":{"left":0.8528923,"top":0.42019153,"width":0.055851065,"height":0.01396648},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Address rate limit issues","depth":12,"bounds":{"left":0.8528923,"top":0.43974462,"width":0.082446806,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Address rate limit issues","depth":13,"bounds":{"left":0.8528923,"top":0.44573024,"width":0.05285904,"height":0.01396648},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Use batch APIs and cache results when possible","depth":12,"bounds":{"left":0.8528923,"top":0.46528333,"width":0.082446806,"height":0.044692736},"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Use batch APIs and cache results when possible","depth":13,"bounds":{"left":0.85821146,"top":0.47126895,"width":0.07480053,"height":0.03312051},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Use webhooks to get updated data from HubSpot","depth":12,"bounds":{"left":0.8528923,"top":0.509976,"width":0.082446806,"height":0.044692736},"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Use webhooks to get updated data from HubSpot","depth":13,"bounds":{"left":0.85821146,"top":0.5159617,"width":0.06715426,"height":0.03312051},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Platform","depth":10,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"API usage guidelines and limits","depth":9,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"API usage guidelines and limits","depth":10,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Learn about the different API and developer feature limits in HubSpot.","depth":10,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Documentation Index","depth":10,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Documentation Index","depth":11,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Fetch the complete documentation index at:","depth":11,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"https://developers.hubspot.com/docs/llms.txt","depth":11,"on_screen":false,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"https://developers.hubspot.com/docs/llms.txt","depth":12,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Use this file to discover all available pages before exploring further.","depth":11,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"HubSpot closely monitors usage of all APIs to ensure a quality experience for every user. All app and integration developers must comply with the","depth":10,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"HubSpot Acceptable Use Policy","depth":10,"on_screen":false,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"HubSpot Acceptable Use Policy","depth":11,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"and","depth":10,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"API Terms","depth":10,"on_screen":false,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"API Terms","depth":11,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":". While HubSpot reserves the right to change or deprecate the APIs over time, updates will always be provided in advance through the","depth":10,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Developer Changelog","depth":10,"on_screen":false,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Developer Changelog","depth":11,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".","depth":10,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Navigate to header Authentication and security","depth":9,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXLink","text":"Navigate to header","depth":11,"on_screen":false,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"","depth":12,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Authentication and security","depth":11,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"For optimal security, all apps must use HubSpot’s","depth":10,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"OAuth protocol","depth":10,"on_screen":false,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"OAuth protocol","depth":11,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"directly, or use your app’s static auth token if you’re building an","depth":10,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"app installed in a single account","depth":10,"on_screen":false,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"app installed in a single account","depth":11,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":". Apps are responsible for storing time-to-live (TTL) data and refreshing user access tokens in accordance with this protocol. When an access token is generated, it will include an","depth":10,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"expires_in","depth":11,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"parameter indicating how long it can be used to make API calls before refreshing.","depth":10,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Unauthorized (401)","depth":11,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"requests are not a valid indicator that a new access token must be retrieved.","depth":10,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Navigate to header Checking API usage","depth":9,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXLink","text":"Navigate to header","depth":11,"on_screen":false,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"","depth":12,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Checking API usage","depth":11,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Navigate to header Apps built on version 2025.2 and 2026.03 of the developer platform","depth":9,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXLink","text":"Navigate to header","depth":11,"on_screen":false,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"","depth":12,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Apps built on version 2025.2 and 2026.03 of the developer platform","depth":11,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"To view API usage for your apps built on the","depth":10,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"new developer platform","depth":10,"on_screen":false,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"new developer platform","depth":11,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":":","depth":10,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"In your HubSpot account, navigate to","depth":11,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Development","depth":12,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"in the main navigation bar.","depth":11,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"In the left sidebar menu, navigate to","depth":11,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Monitoring","depth":12,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":">","depth":11,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"API call usage","depth":12,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".","depth":11,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Your API usage across all your apps will be listed at the top of the page. You can also review usage for the apps you built in your specific account, along with any third-party apps you’ve installed.","depth":11,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Navigate to header Legacy apps","depth":9,"bounds":{"left":0.57629657,"top":0.0,"width":0.25531915,"height":0.022346368},"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXLink","text":"Navigate to header","depth":11,"bounds":{"left":0.56299865,"top":0.0,"width":0.013297873,"height":0.022346368},"on_screen":false,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"","depth":12,"bounds":{"left":0.56266624,"top":0.0,"width":0.0004986702,"height":0.01915403},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Legacy apps","depth":11,"bounds":{"left":0.57629657,"top":0.0,"width":0.04089096,"height":0.019952115},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"To view API usage for a legacy","depth":11,"bounds":{"left":0.57629657,"top":0.0,"width":0.082446806,"height":0.015961692},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"private app","depth":11,"bounds":{"left":0.6587433,"top":0.0,"width":0.02925532,"height":0.01556265},"on_screen":false,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"private app","depth":12,"bounds":{"left":0.6587433,"top":0.0,"width":0.02925532,"height":0.01556265},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":":","depth":11,"bounds":{"left":0.68799865,"top":0.0,"width":0.0013297872,"height":0.015961692},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"In your HubSpot account, navigate to","depth":11,"bounds":{"left":0.5895944,"top":0.0,"width":0.096409574,"height":0.015961692},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Development","depth":12,"bounds":{"left":0.686004,"top":0.0,"width":0.034574468,"height":0.015961692},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"in the main navigation bar.","depth":11,"bounds":{"left":0.72057843,"top":0.0,"width":0.068484046,"height":0.015961692},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"In the left sidebar menu, navigate to","depth":11,"bounds":{"left":0.5895944,"top":0.014764565,"width":0.093417555,"height":0.015961692},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Legacy apps","depth":12,"bounds":{"left":0.68301195,"top":0.014764565,"width":0.033410903,"height":0.015961692},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".","depth":11,"bounds":{"left":0.71642286,"top":0.014764565,"width":0.0011635638,"height":0.015961692},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Click the","depth":11,"bounds":{"left":0.5895944,"top":0.04349561,"width":0.022772606,"height":0.015961692},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"name","depth":12,"bounds":{"left":0.61236703,"top":0.04349561,"width":0.01462766,"height":0.015961692},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"of the private app.","depth":11,"bounds":{"left":0.62699467,"top":0.04349561,"width":0.048038565,"height":0.015961692},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"On the app details page, click the","depth":11,"bounds":{"left":0.5895944,"top":0.07222666,"width":0.085605055,"height":0.015961692},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Logs","depth":12,"bounds":{"left":0.67519945,"top":0.07222666,"width":0.012466756,"height":0.015961692},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"tab.","depth":11,"bounds":{"left":0.68766624,"top":0.07222666,"width":0.011136968,"height":0.015961692},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Review the API calls listed in the table. You can also use the","depth":11,"bounds":{"left":0.5895944,"top":0.1009577,"width":0.15043218,"height":0.015961692},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"search bar","depth":12,"bounds":{"left":0.7400266,"top":0.1009577,"width":0.027759308,"height":0.015961692},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":",","depth":11,"bounds":{"left":0.7677859,"top":0.1009577,"width":0.0028257978,"height":0.015961692},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"filters","depth":12,"bounds":{"left":0.7706117,"top":0.1009577,"width":0.014793883,"height":0.015961692},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":", and","depth":11,"bounds":{"left":0.7854056,"top":0.1009577,"width":0.013962766,"height":0.015961692},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"date pickers","depth":12,"bounds":{"left":0.5895944,"top":0.1009577,"width":0.22190824,"height":0.03830806},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"to further refine the displayed API calls.","depth":11,"bounds":{"left":0.60821146,"top":0.12330407,"width":0.10073138,"height":0.015961692},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Learn more about","depth":11,"bounds":{"left":0.57629657,"top":0.16161214,"width":0.048537236,"height":0.015961692},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"checking API usage in legacy private apps","depth":11,"bounds":{"left":0.62483376,"top":0.16201118,"width":0.10571808,"height":0.01556265},"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"checking API usage in legacy private apps","depth":12,"bounds":{"left":0.62483376,"top":0.16201118,"width":0.10571808,"height":0.01556265},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".","depth":11,"bounds":{"left":0.73055184,"top":0.16161214,"width":0.0013297872,"height":0.015961692},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"To view API usage for a public app using OAuth:","depth":10,"bounds":{"left":0.57629657,"top":0.20031923,"width":0.12051197,"height":0.015961692},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"In your HubSpot account, navigate to","depth":11,"bounds":{"left":0.5895944,"top":0.2386273,"width":0.096409574,"height":0.015961692},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Development","depth":12,"bounds":{"left":0.686004,"top":0.2386273,"width":0.034574468,"height":0.015961692},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"in the main navigation bar.","depth":11,"bounds":{"left":0.72057843,"top":0.2386273,"width":0.068484046,"height":0.015961692},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"In the left sidebar menu, navigate to","depth":11,"bounds":{"left":0.5895944,"top":0.26735833,"width":0.093417555,"height":0.015961692},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Monitoring","depth":12,"bounds":{"left":0.68301195,"top":0.26735833,"width":0.028424202,"height":0.015961692},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":", then select","depth":11,"bounds":{"left":0.71143615,"top":0.26735833,"width":0.03125,"height":0.015961692},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Logs","depth":12,"bounds":{"left":0.74268615,"top":0.26735833,"width":0.012466756,"height":0.015961692},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".","depth":11,"bounds":{"left":0.75515294,"top":0.26735833,"width":0.0013297872,"height":0.015961692},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"At the top, select the","depth":11,"bounds":{"left":0.5895944,"top":0.29608938,"width":0.05319149,"height":0.015961692},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"name","depth":12,"bounds":{"left":0.6427859,"top":0.29608938,"width":0.014793883,"height":0.015961692},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"of the app.","depth":11,"bounds":{"left":0.6575798,"top":0.29608938,"width":0.028756648,"height":0.015961692},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Use the","depth":11,"bounds":{"left":0.5895944,"top":0.32482043,"width":0.02044548,"height":0.015961692},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"tabs","depth":12,"bounds":{"left":0.6100399,"top":0.32482043,"width":0.011635638,"height":0.015961692},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"to view different types of requests being made to or from the app. While viewing these logs, you can click an","depth":11,"bounds":{"left":0.5895944,"top":0.32482043,"width":0.23537233,"height":0.03830806},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"individual request","depth":12,"bounds":{"left":0.65924203,"top":0.3471668,"width":0.046875,"height":0.015961692},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"to view more information.","depth":11,"bounds":{"left":0.70611703,"top":0.3471668,"width":0.065990694,"height":0.015961692},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Learn more about","depth":10,"bounds":{"left":0.57629657,"top":0.38547486,"width":0.04637633,"height":0.015961692},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"monitoring API usage for legacy public apps","depth":10,"bounds":{"left":0.62267286,"top":0.3858739,"width":0.11186835,"height":0.01556265},"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"monitoring API usage for legacy public apps","depth":11,"bounds":{"left":0.62267286,"top":0.3858739,"width":0.11186835,"height":0.01556265},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".","depth":10,"bounds":{"left":0.73454124,"top":0.38547486,"width":0.0011635638,"height":0.015961692},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Navigate to header Rate limits","depth":9,"bounds":{"left":0.57629657,"top":0.4237829,"width":0.25531915,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXLink","text":"Navigate to header","depth":11,"bounds":{"left":0.56299865,"top":0.4237829,"width":0.013297873,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"","depth":12,"bounds":{"left":0.5625,"top":0.42498004,"width":0.0006648936,"height":0.023144454},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Rate limits","depth":11,"bounds":{"left":0.57629657,"top":0.424581,"width":0.040724736,"height":0.023942538},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The number of calls your app can make is based on your account subscription in the account it’s installed in, and whether you’ve purchased the","depth":10,"bounds":{"left":0.57629657,"top":0.46528333,"width":0.24135639,"height":0.03830806},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"API limit increase","depth":10,"bounds":{"left":0.69365025,"top":0.48802873,"width":0.04305186,"height":0.01556265},"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"API limit increase","depth":11,"bounds":{"left":0.69365025,"top":0.48802873,"width":0.04305186,"height":0.01556265},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".","depth":10,"bounds":{"left":0.73670214,"top":0.48762968,"width":0.0013297872,"height":0.015961692},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"You can keep the following general limits in mind when making requests to HubSpot’s API endpoints, however some APIs may also have more specific limits listed on their relevant API guide (e.g., the","depth":10,"bounds":{"left":0.57629657,"top":0.5263368,"width":0.2526596,"height":0.03830806},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"exports API","depth":10,"bounds":{"left":0.57629657,"top":0.5714286,"width":0.02925532,"height":0.01556265},"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"exports API","depth":11,"bounds":{"left":0.57629657,"top":0.5714286,"width":0.02925532,"height":0.01556265},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":").","depth":10,"bounds":{"left":0.60555184,"top":0.57102954,"width":0.0029920214,"height":0.015961692},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The following APIs have limits that are unique from or stricter than the general limits. Refer to each associated guide for more information.","depth":11,"bounds":{"left":0.59258646,"top":0.6209098,"width":0.2165891,"height":0.029928172},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Associations API","depth":12,"bounds":{"left":0.601895,"top":0.6671987,"width":0.035904255,"height":0.013567438},"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Associations API","depth":13,"bounds":{"left":0.601895,"top":0.6671987,"width":0.035904255,"height":0.013567438},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"CRM Search API","depth":12,"bounds":{"left":0.601895,"top":0.688747,"width":0.034408245,"height":0.013567438},"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"CRM Search API","depth":13,"bounds":{"left":0.601895,"top":0.688747,"width":0.034408245,"height":0.013567438},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"GraphQL API","depth":12,"bounds":{"left":0.601895,"top":0.7106943,"width":0.028424202,"height":0.013567438},"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"GraphQL API","depth":13,"bounds":{"left":0.601895,"top":0.7106943,"width":0.028424202,"height":0.013567438},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Navigate to header Publicly distributed OAuth app limits","depth":9,"bounds":{"left":0.57629657,"top":0.76376694,"width":0.25531915,"height":0.022346368},"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXLink","text":"Navigate to header","depth":11,"bounds":{"left":0.56299865,"top":0.76376694,"width":0.013297873,"height":0.022346368},"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"","depth":12,"bounds":{"left":0.56266624,"top":0.76536316,"width":0.0004986702,"height":0.01915403},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Publicly distributed OAuth app limits","depth":11,"bounds":{"left":0.57629657,"top":0.7649641,"width":0.116855055,"height":0.019952115},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"For","depth":10,"bounds":{"left":0.57629657,"top":0.79888266,"width":0.009640957,"height":0.015961692},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"legacy public apps","depth":10,"bounds":{"left":0.5859375,"top":0.7992817,"width":0.04737367,"height":0.01556265},"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"legacy public apps","depth":11,"bounds":{"left":0.5859375,"top":0.7992817,"width":0.04737367,"height":0.01556265},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":", and apps on the latest versions of the developer platform (2025.2 and 2026.03) using","depth":10,"bounds":{"left":0.57629657,"top":0.79888266,"width":0.23420878,"height":0.03830806},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"OAuth authentication","depth":10,"bounds":{"left":0.6140292,"top":0.8216281,"width":0.053856384,"height":0.01556265},"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"OAuth authentication","depth":11,"bounds":{"left":0.6140292,"top":0.8216281,"width":0.053856384,"height":0.01556265},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"distributed","depth":10,"bounds":{"left":0.6693817,"top":0.8216281,"width":0.027925532,"height":0.01556265},"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"distributed","depth":11,"bounds":{"left":0.6693817,"top":0.8216281,"width":0.027925532,"height":0.01556265},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"via the HubSpot marketplace, each HubSpot account that installs your app is limited to 110 requests every 10 seconds. This excludes the","depth":10,"bounds":{"left":0.57629657,"top":0.82122904,"width":0.23454122,"height":0.038707104},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"CRM Search API","depth":10,"bounds":{"left":0.57629657,"top":0.8443735,"width":0.24019282,"height":0.03790902},"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"CRM Search API","depth":11,"bounds":{"left":0.57629657,"top":0.8443735,"width":0.24019282,"height":0.03790902},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".","depth":10,"bounds":{"left":0.6028923,"top":0.86632085,"width":0.0011635638,"height":0.015961692},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The","depth":11,"bounds":{"left":0.59258646,"top":0.9162011,"width":0.008976064,"height":0.01396648},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"API limit increase add-on","depth":11,"bounds":{"left":0.6015625,"top":0.91660017,"width":0.05501995,"height":0.013567438},"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"API limit increase add-on","depth":12,"bounds":{"left":0.6015625,"top":0.91660017,"width":0.05501995,"height":0.013567438},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"does","depth":11,"bounds":{"left":0.6565825,"top":0.9162011,"width":0.013131649,"height":0.01396648},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"not","depth":11,"bounds":{"left":0.6697141,"top":0.9162011,"width":0.00731383,"height":0.01396648},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"increase the limits of","depth":11,"bounds":{"left":0.67702794,"top":0.9162011,"width":0.048038565,"height":0.01396648},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"legacy public apps","depth":11,"bounds":{"left":0.7250665,"top":0.91660017,"width":0.04138963,"height":0.013567438},"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"legacy public apps","depth":12,"bounds":{"left":0.7250665,"top":0.91660017,"width":0.04138963,"height":0.013567438},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"nor apps on the latest versions of the developer platform (2025.2 and 2026.03) using","depth":11,"bounds":{"left":0.59258646,"top":0.9162011,"width":0.22323804,"height":0.030327214},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"OAuth authentication","depth":11,"bounds":{"left":0.72888964,"top":0.93296087,"width":0.04720745,"height":0.013567438},"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"OAuth authentication","depth":12,"bounds":{"left":0.72888964,"top":0.93296087,"width":0.04720745,"height":0.013567438},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"that are","depth":11,"bounds":{"left":0.77609706,"top":0.9325619,"width":0.020113032,"height":0.01396648},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"distributed","depth":11,"bounds":{"left":0.7962101,"top":0.93296087,"width":0.024268618,"height":0.013567438},"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"distributed","depth":12,"bounds":{"left":0.7962101,"top":0.93296087,"width":0.024268618,"height":0.013567438},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"via the HubSpot marketplace.","depth":11,"bounds":{"left":0.59258646,"top":0.9485235,"width":0.0653258,"height":0.01396648},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Navigate to header Privately distributed app limits","depth":9,"bounds":{"left":0.57629657,"top":0.99640864,"width":0.25531915,"height":0.0035913587},"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXLink","text":"Navigate to header","depth":11,"bounds":{"left":0.56299865,"top":0.99640864,"width":0.013297873,"height":0.0035913587},"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"","depth":12,"bounds":{"left":0.56266624,"top":0.9980048,"width":0.0004986702,"height":0.0019952059},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Privately distributed app limits","depth":11,"bounds":{"left":0.57629657,"top":0.99760574,"width":0.09840426,"height":0.002394259},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The limits in the table below apply to","depth":10,"bounds":{"left":0.57629657,"top":1.0,"width":0.0930851,"height":-0.0315243},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"legacy private apps","depth":10,"bounds":{"left":0.6693817,"top":1.0,"width":0.049867023,"height":-0.031923413},"on_screen":false,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"legacy private apps","depth":11,"bounds":{"left":0.6693817,"top":1.0,"width":0.049867023,"height":-0.031923413},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":", as well as apps on the latest versions of the developer platform (2025.2 and 2026.03) with a","depth":10,"bounds":{"left":0.57629657,"top":1.0,"width":0.25465426,"height":-0.0315243},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"distribution","depth":10,"bounds":{"left":0.69581115,"top":1.0,"width":0.02925532,"height":-0.05426979},"on_screen":false,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"distribution","depth":11,"bounds":{"left":0.69581115,"top":1.0,"width":0.02925532,"height":-0.05426979},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"set to","depth":10,"bounds":{"left":0.7250665,"top":1.0,"width":0.017287234,"height":-0.053870678},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"private","depth":11,"bounds":{"left":0.7450133,"top":1.0,"width":0.019448139,"height":-0.055067778},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":". Note that for these privately distributed app types:","depth":10,"bounds":{"left":0.57629657,"top":1.0,"width":0.24135639,"height":-0.053870678},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The burst limit, detailed in the","depth":11,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Per 10 seconds","depth":12,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"column below, applies individually per app.","depth":11,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The daily limit, detailed in the","depth":11,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Per day","depth":12,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"column below, is shared across all apps within the same HubSpot account.","depth":11,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Product Tier","depth":15,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Per 10 Seconds","depth":15,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Per Day","depth":15,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Privately distributed apps","depth":14,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(Any Hub)","depth":14,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Free and Starter","depth":14,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"100 / app","depth":14,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"250,000 / account","depth":14,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(Any Hub)","depth":14,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Professional","depth":14,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"190 / app","depth":14,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"625,000 / account","depth":14,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(Any Hub)","depth":14,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Enterprise","depth":14,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"190 / app","depth":14,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1,000,000 / account","depth":14,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Privately distributed apps with","depth":14,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"API Limit Increase","depth":14,"on_screen":false,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"API Limit Increase","depth":15,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(Any Hub)","depth":14,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Free, Starter, Professional, and Enterprise","depth":14,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"250 / app","depth":14,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1,000,000 / account on top of your base subscription, for each limit increase. You can purchase a maximum of two API limit increases.","depth":14,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Privately distributed apps","depth":14,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Privately distributed apps with","depth":14,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"API Limit Increase","depth":14,"on_screen":false,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"API Limit Increase","depth":15,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Product Tier","depth":15,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(Any Hub)","depth":14,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Free and Starter","depth":14,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(Any Hub)","depth":14,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Professional","depth":14,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(Any Hub)","depth":14,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Enterprise","depth":14,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(Any Hub)","depth":14,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Free, Starter, Professional, and Enterprise","depth":14,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Per 10 Seconds","depth":15,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"100 / app","depth":14,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"190 / app","depth":14,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"190 / app","depth":14,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"250 / app","depth":14,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Per Day","depth":15,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"250,000 / account","depth":14,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"625,000 / account","depth":14,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1,000,000 / account","depth":14,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1,000,000 / account on top of your base subscription, for each limit increase. You can purchase a maximum of two API limit increases.","depth":14,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Navigate to header Exemptions","depth":9,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXLink","text":"Navigate to header","depth":11,"on_screen":false,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"","depth":12,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Exemptions","depth":11,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Some APIs are exempt from the 10-second and daily limits (e.g., certain","depth":10,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"marketing single send API","depth":10,"on_screen":false,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"marketing single send API","depth":11,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"and","depth":10,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"source code API","depth":10,"on_screen":false,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"source code API","depth":11,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"endpoints). However, you should note the following for the exempt APIs:","depth":10,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"API requests that are exempt from daily or secondary limits will","depth":11,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"not","depth":11,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"be logged in HubSpot. If you want to store these exempted requests, you’ll need to log these requests externally.","depth":11,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"A high number of requests may result in","depth":11,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"5xx","depth":12,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"errors. These can be addressed the same as you would","depth":11,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"429 errors","depth":11,"on_screen":false,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"429","depth":13,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"errors","depth":12,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".","depth":11,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Navigate to header App and account limits","depth":9,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXLink","text":"Navigate to header","depth":11,"on_screen":false,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"","depth":12,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"App and account limits","depth":11,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The following limits apply for creating legacy apps, webhook subscriptions, and CRM extension settings.","depth":10,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"You can create up to 100","depth":11,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"legacy public apps","depth":11,"on_screen":false,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"legacy public apps","depth":12,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"per developer account.","depth":11,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"You can create up to 20","depth":11,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"legacy private apps","depth":11,"on_screen":false,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"legacy private apps","depth":12,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"per HubSpot account.","depth":11,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"You can create up to 1,000","depth":11,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"webhook subscriptions","depth":11,"on_screen":false,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"webhook subscriptions","depth":12,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"per app.","depth":11,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"You can create up to 25 CRM extension settings per","depth":11,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"legacy public app","depth":11,"on_screen":false,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"legacy public app","depth":12,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".","depth":11,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Navigate to header API-specific limits","depth":9,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXLink","text":"Navigate to header","depth":11,"on_screen":false,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"","depth":12,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"API-specific limits","depth":11,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Some features and APIs have more limits that are listed below. Additional limis for each API can also be found on an API’s associated guide (e.g., the","depth":10,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"exports API","depth":10,"on_screen":false,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"exports API","depth":11,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":").","depth":10,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Navigate to header Timeline event limits","depth":9,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXLink","text":"Navigate to header","depth":11,"on_screen":false,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"","depth":12,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Timeline event limits","depth":11,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Timeline events","depth":10,"on_screen":false,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Timeline events","depth":11,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"in a legacy public app are subject to the following limits:","depth":10,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"You can create up to 750 timeline event types per public app.","depth":11,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"You can create up to 500 properties per timeline event type.","depth":11,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Each serialized event instance has the following size limits:","depth":11,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"500 bytes for the event instance ID","depth":13,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"510 KB per property/token","depth":13,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1 MB in total size for the event instance","depth":13,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Navigate to header Custom event limits","depth":9,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXLink","text":"Navigate to header","depth":11,"on_screen":false,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"","depth":12,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Custom event limits","depth":11,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Custom events","depth":10,"on_screen":false,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Custom events","depth":11,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"are subject to the following limits:","depth":10,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"There is a limit of 500 unique event definitions per account.","depth":11,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"There is a limit of 30 million event completions per month.","depth":11,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The send custom event completions endpoint supports up to 1250 requests per second.","depth":11,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The custom event completion batch endpoint supports batches of 500.","depth":11,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Consult the other custom event restrictions in the","depth":10,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"API guide","depth":10,"on_screen":false,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"API guide","depth":11,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".","depth":10,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Navigate to header Service limits","depth":9,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXLink","text":"Navigate to header","depth":11,"on_screen":false,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"","depth":12,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Service limits","depth":11,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Learn more about service limits and pricing on","depth":10,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"HubSpot’s Product & Services Catalog","depth":10,"on_screen":false,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"HubSpot’s Product & Services Catalog","depth":11,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".","depth":10,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Navigate to header Rate limit error responses","depth":9,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXLink","text":"Navigate to header","depth":11,"on_screen":false,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"","depth":12,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Rate limit error responses","depth":11,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Any app or integration exceeding its rate limits will receive a","depth":10,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"429","depth":11,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"error response for all subsequent API calls. Requests resulting in an error response shouldn’t exceed 5% of your total daily requests. If you plan on listing your app in the","depth":10,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"HubSpot Marketplace","depth":10,"on_screen":false,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"HubSpot Marketplace","depth":11,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":", it must stay under this 5% limit to be certified.","depth":10,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The","depth":10,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"429","depth":11,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"response will have the following format:","depth":10,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Report incorrect code","depth":10,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Copy the contents from the code block","depth":10,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Ask AI","depth":10,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"{","depth":12,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"\"status\"","depth":12,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":":","depth":12,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"\"error\"","depth":12,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":",","depth":12,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"\"message\"","depth":12,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":":","depth":12,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"\"You have reached your daily limit.\"","depth":12,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":",","depth":12,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"\"errorType\"","depth":12,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":":","depth":12,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"\"RATE_LIMIT\"","depth":12,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":",","depth":12,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"\"correlationId\"","depth":12,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":":","depth":12,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"\"c033cdaa-2c40-4a64-ae48-b4cec88dad24\"","depth":12,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":",","depth":12,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"\"policyName\"","depth":12,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":":","depth":12,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"\"DAILY\"","depth":12,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":",","depth":12,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"\"requestId\"","depth":12,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":":","depth":12,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"\"3d3e35b7-0dae-4b9f-a6e3-9c230cbcf8dd\"","depth":12,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"}","depth":12,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The","depth":10,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"message","depth":11,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"and","depth":10,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"policyName","depth":11,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"will indicate which limit you hit (either daily or secondly).","depth":10,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The","depth":10,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"daily","depth":11,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"limit resets at midnight based on your","depth":10,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"time zone setting","depth":10,"on_screen":false,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"time zone setting","depth":11,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".","depth":10,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The following table details the rate limit headers included in the response of each API request to HubSpot, subject to the exceptions listed below the table.","depth":10,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Header","depth":15,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Description","depth":15,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"X-HubSpot-RateLimit-Daily","depth":15,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The number of API requests that are allowed per day. Note that this header is not included in the response to API requests authorized using","depth":14,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"OAuth","depth":14,"on_screen":false,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"OAuth","depth":15,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".","depth":14,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"X-HubSpot-RateLimit-Daily-Remaining","depth":15,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The number of API requests still allowed for the current day. Note that this header is not included in the response to API requests authorized using","depth":14,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"OAuth","depth":14,"on_screen":false,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"OAuth","depth":15,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".","depth":14,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"X-HubSpot-RateLimit-Interval-Milliseconds","depth":15,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The window of time that the","depth":14,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"X-HubSpot-RateLimit-Max","depth":15,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"and","depth":14,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"X-HubSpot-RateLimit-Remaining","depth":15,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"headers apply to.For example, a value of 10000 would be a window of 10 seconds.","depth":14,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"X-HubSpot-RateLimit-Max","depth":15,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The number of requests allowed in the window specified in","depth":14,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"X-HubSpot-RateLimit-Interval-Milliseconds","depth":15,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".For example, if this header had a value of 100, and the","depth":14,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"X-HubSpot-RateLimit-Interval-Milliseconds","depth":15,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"header was 10000, the enforced limit would be 100 requests per 10 seconds.","depth":14,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"X-HubSpot-RateLimit-Remaining","depth":15,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The number of API requests still allowed for the window specified in","depth":14,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"X-HubSpot-RateLimit-Interval-Milliseconds","depth":15,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".","depth":14,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Header","depth":15,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"X-HubSpot-RateLimit-Daily","depth":15,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"X-HubSpot-RateLimit-Daily-Remaining","depth":15,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"X-HubSpot-RateLimit-Interval-Milliseconds","depth":15,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"X-HubSpot-RateLimit-Max","depth":15,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"X-HubSpot-RateLimit-Remaining","depth":15,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Description","depth":15,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The number of API requests that are allowed per day. Note that this header is not included in the response to API requests authorized using","depth":14,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"OAuth","depth":14,"on_screen":false,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"OAuth","depth":15,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".","depth":14,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The number of API requests still allowed for the current day. Note that this header is not included in the response to API requests authorized using","depth":14,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"OAuth","depth":14,"on_screen":false,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"OAuth","depth":15,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".","depth":14,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The window of time that the","depth":14,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"X-HubSpot-RateLimit-Max","depth":15,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"and","depth":14,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"X-HubSpot-RateLimit-Remaining","depth":15,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"headers apply to.For example, a value of 10000 would be a window of 10 seconds.","depth":14,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The number of requests allowed in the window specified in","depth":14,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"X-HubSpot-RateLimit-Interval-Milliseconds","depth":15,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".For example, if this header had a value of 100, and the","depth":14,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"X-HubSpot-RateLimit-Interval-Milliseconds","depth":15,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"header was 10000, the enforced limit would be 100 requests per 10 seconds.","depth":14,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The number of API requests still allowed for the window specified in","depth":14,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"X-HubSpot-RateLimit-Interval-Milliseconds","depth":15,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".","depth":14,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The","depth":12,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"X-HubSpot-RateLimit-Secondly","depth":13,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"and","depth":12,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"X-HubSpot-RateLimit-Secondly-Remaining","depth":13,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"headers are still included and will still have accurate data, but the limit referenced by these headers is no longer enforced and these two headers should be considered deprecated.","depth":12,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Responses from the search API endpoints will","depth":12,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"not","depth":12,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"include any of the rate limit headers listed above.","depth":12,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"You can also check the number of calls used during the current day using","depth":10,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"this endpoint","depth":10,"on_screen":false,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"this endpoint","depth":11,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".","depth":10,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Navigate to header Address rate limit issues","depth":9,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXLink","text":"Navigate to header","depth":11,"on_screen":false,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"","depth":12,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Address rate limit issues","depth":11,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The sections below detail two possible ways you can reduce the volume of API traffic if you repeatedly hit your API request limit. If you’re running into the","depth":10,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"TEN_SECONDLY_ROLLING","depth":11,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"limit, you should throttle the requests that your app is making to stay under that limit. In addition to throttling the requests, or if you’re running into the daily limit, check out the suggestions below.","depth":10,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"}]...
|
3967006131711014636
|
-6209774113831366959
|
visual_change
|
accessibility
|
NULL
|
Platform Sprint 3 Q2 - Platform Team - Scrum Board Platform Sprint 3 Q2 - Platform Team - Scrum Board - Jira
Platform Sprint 3 Q2 - Platform Team - Scrum Board - Jira
SevenShores\Hubspot\Exceptions\BadRequest: Client error: `POST https://api.hubapi.com/crm/v3/objects/contact/search` resulted in a `429 Too Many Requests` response: {"status":"error","message":"You have reached your secondly limit.","errorType":"RATE_LIMIT
SevenShores\Hubspot\Exceptions\BadRequest: Client error: `POST https://api.hubapi.com/crm/v3/objects/contact/search` resulted in a `429 Too Many Requests` response: {"status":"error","message":"You have reached your secondly limit.","errorType":"RATE_LIMIT
Service-Desk - Queues - Platform team - Service space - Jira
Service-Desk - Queues - Platform team - Service space - Jira
Jy 20807 check various issues with stages by nikolaybiaivanov · Pull Request #12041 · jiminny/app
Jy 20807 check various issues with stages by nikolaybiaivanov · Pull Request #12041 · jiminny/app
Sentry
Sentry
Pull requests · jiminny/app
Pull requests · jiminny/app
Userpilot | Ask Jiminny Report Generated
Userpilot | Ask Jiminny Report Generated
JY-20773 fix user pilot tracking ofr automated report generated by LakyLak · Pull Request #12024 · jiminny/app
JY-20773 fix user pilot tracking ofr automated report generated by LakyLak · Pull Request #12024 · jiminny/app
Jiminny
Jiminny
API usage guidelines and limits - HubSpot docs
API usage guidelines and limits - HubSpot docs
Close tab
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Skip to main content
Skip to main content
HubSpot docs home page light logo
HubSpot docs
home page
Open search
Search...
⌘
K
Toggle assistant panel
Ask AI
Ask Docs AI
Changelog
Changelog
Log In
Log In
Sign up
Sign up
Home
Home
Get Started
Get Started
Apps
Apps
CMS
CMS
APIs
APIs
Developer Tooling
Developer Tooling
Overview
Overview
Platform
Platform
Versioning
Versioning
API usage guidelines
API usage guidelines
APIs by tier
APIs by tier
Breaking change guidelines
Breaking change guidelines
Local development
Local development
Toggle HubSpot CLI section
HubSpot CLI
Build with config profiles
Build with config profiles
Configurable test accounts
Configurable test accounts
Toggle Developer MCP section
Developer MCP
VS Code extension
VS Code extension
Troubleshooting
Troubleshooting
Third-party tools
Third-party tools
Set up GitHub Actions
Set up GitHub Actions
Postman for HubSpot APIs
Postman for HubSpot APIs
SDKs
SDKs
Node
Node
Php
Php
Python
Python
Ruby
Ruby
English
English
Toggle dark mode
close
close
On this page
On this page
Authentication and security
Authentication and security
Checking API usage
Checking API usage
Apps built on version 2025.2 and 2026.03 of the developer platform
Apps built on version 2025.2 and 2026.03 of the developer platform
Legacy apps
Legacy apps
Rate limits
Rate limits
Publicly distributed OAuth app limits
Publicly distributed OAuth app limits
Privately distributed app limits
Privately distributed app limits
Exemptions
Exemptions
App and account limits
App and account limits
API-specific limits
API-specific limits
Timeline event limits
Timeline event limits
Custom event limits
Custom event limits
Service limits
Service limits
Rate limit error responses
Rate limit error responses
Address rate limit issues
Address rate limit issues
Use batch APIs and cache results when possible
Use batch APIs and cache results when possible
Use webhooks to get updated data from HubSpot
Use webhooks to get updated data from HubSpot
Platform
API usage guidelines and limits
API usage guidelines and limits
Learn about the different API and developer feature limits in HubSpot.
Documentation Index
Documentation Index
Fetch the complete documentation index at:
https://developers.hubspot.com/docs/llms.txt
https://developers.hubspot.com/docs/llms.txt
Use this file to discover all available pages before exploring further.
HubSpot closely monitors usage of all APIs to ensure a quality experience for every user. All app and integration developers must comply with the
HubSpot Acceptable Use Policy
HubSpot Acceptable Use Policy
and
API Terms
API Terms
. While HubSpot reserves the right to change or deprecate the APIs over time, updates will always be provided in advance through the
Developer Changelog
Developer Changelog
.
Navigate to header Authentication and security
Navigate to header
Authentication and security
For optimal security, all apps must use HubSpot’s
OAuth protocol
OAuth protocol
directly, or use your app’s static auth token if you’re building an
app installed in a single account
app installed in a single account
. Apps are responsible for storing time-to-live (TTL) data and refreshing user access tokens in accordance with this protocol. When an access token is generated, it will include an
expires_in
parameter indicating how long it can be used to make API calls before refreshing.
Unauthorized (401)
requests are not a valid indicator that a new access token must be retrieved.
Navigate to header Checking API usage
Navigate to header
Checking API usage
Navigate to header Apps built on version 2025.2 and 2026.03 of the developer platform
Navigate to header
Apps built on version 2025.2 and 2026.03 of the developer platform
To view API usage for your apps built on the
new developer platform
new developer platform
:
In your HubSpot account, navigate to
Development
in the main navigation bar.
In the left sidebar menu, navigate to
Monitoring
>
API call usage
.
Your API usage across all your apps will be listed at the top of the page. You can also review usage for the apps you built in your specific account, along with any third-party apps you’ve installed.
Navigate to header Legacy apps
Navigate to header
Legacy apps
To view API usage for a legacy
private app
private app
:
In your HubSpot account, navigate to
Development
in the main navigation bar.
In the left sidebar menu, navigate to
Legacy apps
.
Click the
name
of the private app.
On the app details page, click the
Logs
tab.
Review the API calls listed in the table. You can also use the
search bar
,
filters
, and
date pickers
to further refine the displayed API calls.
Learn more about
checking API usage in legacy private apps
checking API usage in legacy private apps
.
To view API usage for a public app using OAuth:
In your HubSpot account, navigate to
Development
in the main navigation bar.
In the left sidebar menu, navigate to
Monitoring
, then select
Logs
.
At the top, select the
name
of the app.
Use the
tabs
to view different types of requests being made to or from the app. While viewing these logs, you can click an
individual request
to view more information.
Learn more about
monitoring API usage for legacy public apps
monitoring API usage for legacy public apps
.
Navigate to header Rate limits
Navigate to header
Rate limits
The number of calls your app can make is based on your account subscription in the account it’s installed in, and whether you’ve purchased the
API limit increase
API limit increase
.
You can keep the following general limits in mind when making requests to HubSpot’s API endpoints, however some APIs may also have more specific limits listed on their relevant API guide (e.g., the
exports API
exports API
).
The following APIs have limits that are unique from or stricter than the general limits. Refer to each associated guide for more information.
Associations API
Associations API
CRM Search API
CRM Search API
GraphQL API
GraphQL API
Navigate to header Publicly distributed OAuth app limits
Navigate to header
Publicly distributed OAuth app limits
For
legacy public apps
legacy public apps
, and apps on the latest versions of the developer platform (2025.2 and 2026.03) using
OAuth authentication
OAuth authentication
distributed
distributed
via the HubSpot marketplace, each HubSpot account that installs your app is limited to 110 requests every 10 seconds. This excludes the
CRM Search API
CRM Search API
.
The
API limit increase add-on
API limit increase add-on
does
not
increase the limits of
legacy public apps
legacy public apps
nor apps on the latest versions of the developer platform (2025.2 and 2026.03) using
OAuth authentication
OAuth authentication
that are
distributed
distributed
via the HubSpot marketplace.
Navigate to header Privately distributed app limits
Navigate to header
Privately distributed app limits
The limits in the table below apply to
legacy private apps
legacy private apps
, as well as apps on the latest versions of the developer platform (2025.2 and 2026.03) with a
distribution
distribution
set to
private
. Note that for these privately distributed app types:
The burst limit, detailed in the
Per 10 seconds
column below, applies individually per app.
The daily limit, detailed in the
Per day
column below, is shared across all apps within the same HubSpot account.
Product Tier
Per 10 Seconds
Per Day
Privately distributed apps
(Any Hub)
Free and Starter
100 / app
250,000 / account
(Any Hub)
Professional
190 / app
625,000 / account
(Any Hub)
Enterprise
190 / app
1,000,000 / account
Privately distributed apps with
API Limit Increase
API Limit Increase
(Any Hub)
Free, Starter, Professional, and Enterprise
250 / app
1,000,000 / account on top of your base subscription, for each limit increase. You can purchase a maximum of two API limit increases.
Privately distributed apps
Privately distributed apps with
API Limit Increase
API Limit Increase
Product Tier
(Any Hub)
Free and Starter
(Any Hub)
Professional
(Any Hub)
Enterprise
(Any Hub)
Free, Starter, Professional, and Enterprise
Per 10 Seconds
100 / app
190 / app
190 / app
250 / app
Per Day
250,000 / account
625,000 / account
1,000,000 / account
1,000,000 / account on top of your base subscription, for each limit increase. You can purchase a maximum of two API limit increases.
Navigate to header Exemptions
Navigate to header
Exemptions
Some APIs are exempt from the 10-second and daily limits (e.g., certain
marketing single send API
marketing single send API
and
source code API
source code API
endpoints). However, you should note the following for the exempt APIs:
API requests that are exempt from daily or secondary limits will
not
be logged in HubSpot. If you want to store these exempted requests, you’ll need to log these requests externally.
A high number of requests may result in
5xx
errors. These can be addressed the same as you would
429 errors
429
errors
.
Navigate to header App and account limits
Navigate to header
App and account limits
The following limits apply for creating legacy apps, webhook subscriptions, and CRM extension settings.
You can create up to 100
legacy public apps
legacy public apps
per developer account.
You can create up to 20
legacy private apps
legacy private apps
per HubSpot account.
You can create up to 1,000
webhook subscriptions
webhook subscriptions
per app.
You can create up to 25 CRM extension settings per
legacy public app
legacy public app
.
Navigate to header API-specific limits
Navigate to header
API-specific limits
Some features and APIs have more limits that are listed below. Additional limis for each API can also be found on an API’s associated guide (e.g., the
exports API
exports API
).
Navigate to header Timeline event limits
Navigate to header
Timeline event limits
Timeline events
Timeline events
in a legacy public app are subject to the following limits:
You can create up to 750 timeline event types per public app.
You can create up to 500 properties per timeline event type.
Each serialized event instance has the following size limits:
500 bytes for the event instance ID
510 KB per property/token
1 MB in total size for the event instance
Navigate to header Custom event limits
Navigate to header
Custom event limits
Custom events
Custom events
are subject to the following limits:
There is a limit of 500 unique event definitions per account.
There is a limit of 30 million event completions per month.
The send custom event completions endpoint supports up to 1250 requests per second.
The custom event completion batch endpoint supports batches of 500.
Consult the other custom event restrictions in the
API guide
API guide
.
Navigate to header Service limits
Navigate to header
Service limits
Learn more about service limits and pricing on
HubSpot’s Product & Services Catalog
HubSpot’s Product & Services Catalog
.
Navigate to header Rate limit error responses
Navigate to header
Rate limit error responses
Any app or integration exceeding its rate limits will receive a
429
error response for all subsequent API calls. Requests resulting in an error response shouldn’t exceed 5% of your total daily requests. If you plan on listing your app in the
HubSpot Marketplace
HubSpot Marketplace
, it must stay under this 5% limit to be certified.
The
429
response will have the following format:
Report incorrect code
Copy the contents from the code block
Ask AI
{
"status"
:
"error"
,
"message"
:
"You have reached your daily limit."
,
"errorType"
:
"RATE_LIMIT"
,
"correlationId"
:
"c033cdaa-2c40-4a64-ae48-b4cec88dad24"
,
"policyName"
:
"DAILY"
,
"requestId"
:
"3d3e35b7-0dae-4b9f-a6e3-9c230cbcf8dd"
}
The
message
and
policyName
will indicate which limit you hit (either daily or secondly).
The
daily
limit resets at midnight based on your
time zone setting
time zone setting
.
The following table details the rate limit headers included in the response of each API request to HubSpot, subject to the exceptions listed below the table.
Header
Description
X-HubSpot-RateLimit-Daily
The number of API requests that are allowed per day. Note that this header is not included in the response to API requests authorized using
OAuth
OAuth
.
X-HubSpot-RateLimit-Daily-Remaining
The number of API requests still allowed for the current day. Note that this header is not included in the response to API requests authorized using
OAuth
OAuth
.
X-HubSpot-RateLimit-Interval-Milliseconds
The window of time that the
X-HubSpot-RateLimit-Max
and
X-HubSpot-RateLimit-Remaining
headers apply to.For example, a value of 10000 would be a window of 10 seconds.
X-HubSpot-RateLimit-Max
The number of requests allowed in the window specified in
X-HubSpot-RateLimit-Interval-Milliseconds
.For example, if this header had a value of 100, and the
X-HubSpot-RateLimit-Interval-Milliseconds
header was 10000, the enforced limit would be 100 requests per 10 seconds.
X-HubSpot-RateLimit-Remaining
The number of API requests still allowed for the window specified in
X-HubSpot-RateLimit-Interval-Milliseconds
.
Header
X-HubSpot-RateLimit-Daily
X-HubSpot-RateLimit-Daily-Remaining
X-HubSpot-RateLimit-Interval-Milliseconds
X-HubSpot-RateLimit-Max
X-HubSpot-RateLimit-Remaining
Description
The number of API requests that are allowed per day. Note that this header is not included in the response to API requests authorized using
OAuth
OAuth
.
The number of API requests still allowed for the current day. Note that this header is not included in the response to API requests authorized using
OAuth
OAuth
.
The window of time that the
X-HubSpot-RateLimit-Max
and
X-HubSpot-RateLimit-Remaining
headers apply to.For example, a value of 10000 would be a window of 10 seconds.
The number of requests allowed in the window specified in
X-HubSpot-RateLimit-Interval-Milliseconds
.For example, if this header had a value of 100, and the
X-HubSpot-RateLimit-Interval-Milliseconds
header was 10000, the enforced limit would be 100 requests per 10 seconds.
The number of API requests still allowed for the window specified in
X-HubSpot-RateLimit-Interval-Milliseconds
.
The
X-HubSpot-RateLimit-Secondly
and
X-HubSpot-RateLimit-Secondly-Remaining
headers are still included and will still have accurate data, but the limit referenced by these headers is no longer enforced and these two headers should be considered deprecated.
Responses from the search API endpoints will
not
include any of the rate limit headers listed above.
You can also check the number of calls used during the current day using
this endpoint
this endpoint
.
Navigate to header Address rate limit issues
Navigate to header
Address rate limit issues
The sections below detail two possible ways you can reduce the volume of API traffic if you repeatedly hit your API request limit. If you’re running into the
TEN_SECONDLY_ROLLING
limit, you should throttle the requests that your app is making to stay under that limit. In addition to throttling the requests, or if you’re running into the daily limit, check out the suggestions below....
|
2446
|
NULL
|
NULL
|
NULL
|
|
2448
|
NULL
|
0
|
2026-05-07T11:19:00.790899+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-07/1778 /Users/lukas/.screenpipe/data/data/2026-05-07/1778152740790_m1.jpg...
|
Firefox
|
API usage guidelines and limits - HubSpot docs — W API usage guidelines and limits - HubSpot docs — Work...
|
True
|
developers.hubspot.com/docs/developer-tooling/plat developers.hubspot.com/docs/developer-tooling/platform/usage-guidelines...
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Platform Sprint 3 Q2 - Platform Team - Scrum Board Platform Sprint 3 Q2 - Platform Team - Scrum Board - Jira
Platform Sprint 3 Q2 - Platform Team - Scrum Board - Jira
SevenShores\Hubspot\Exceptions\BadRequest: Client error: `POST https://api.hubapi.com/crm/v3/objects/contact/search` resulted in a `429 Too Many Requests` response: {"status":"error","message":"You have reached your secondly limit.","errorType":"RATE_LIMIT
SevenShores\Hubspot\Exceptions\BadRequest: Client error: `POST https://api.hubapi.com/crm/v3/objects/contact/search` resulted in a `429 Too Many Requests` response: {"status":"error","message":"You have reached your secondly limit.","errorType":"RATE_LIMIT
Service-Desk - Queues - Platform team - Service space - Jira
Service-Desk - Queues - Platform team - Service space - Jira
Jy 20807 check various issues with stages by nikolaybiaivanov · Pull Request #12041 · jiminny/app
Jy 20807 check various issues with stages by nikolaybiaivanov · Pull Request #12041 · jiminny/app
Sentry
Sentry
Pull requests · jiminny/app
Pull requests · jiminny/app
Userpilot | Ask Jiminny Report Generated
Userpilot | Ask Jiminny Report Generated
JY-20773 fix user pilot tracking ofr automated report generated by LakyLak · Pull Request #12024 · jiminny/app
JY-20773 fix user pilot tracking ofr automated report generated by LakyLak · Pull Request #12024 · jiminny/app
Jiminny
Jiminny
API usage guidelines and limits - HubSpot docs
API usage guidelines and limits - HubSpot docs
Close tab
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Skip to main content
Skip to main content
HubSpot docs home page light logo
HubSpot docs
home page
Open search
Search...
⌘
K
Toggle assistant panel
Ask AI
Ask Docs AI
Changelog
Changelog
Log In
Log In
Sign up
Sign up
Home
Home
Get Started
Get Started
Apps
Apps
CMS
CMS
APIs
APIs
Developer Tooling
Developer Tooling
Overview
Overview
Platform
Platform
Versioning
Versioning
API usage guidelines
API usage guidelines
APIs by tier
APIs by tier
Breaking change guidelines
Breaking change guidelines
Local development
Local development
Toggle HubSpot CLI section
HubSpot CLI
Build with config profiles
Build with config profiles
Configurable test accounts
Configurable test accounts
Toggle Developer MCP section
Developer MCP
VS Code extension
VS Code extension
Troubleshooting
Troubleshooting
Third-party tools
Third-party tools
Set up GitHub Actions
Set up GitHub Actions
Postman for HubSpot APIs
Postman for HubSpot APIs
SDKs
SDKs
Node
Node
Php
Php
Python
Python
Ruby
Ruby
English
English
Toggle dark mode
close
close
On this page
On this page
Authentication and security
Authentication and security
Checking API usage
Checking API usage
Apps built on version 2025.2 and 2026.03 of the developer platform
Apps built on version 2025.2 and 2026.03 of the developer platform
Legacy apps
Legacy apps
Rate limits
Rate limits
Publicly distributed OAuth app limits
Publicly distributed OAuth app limits
Privately distributed app limits
Privately distributed app limits
Exemptions
Exemptions
App and account limits
App and account limits
API-specific limits
API-specific limits
Timeline event limits
Timeline event limits
Custom event limits
Custom event limits
Service limits
Service limits
Rate limit error responses
Rate limit error responses
Address rate limit issues
Address rate limit issues
Use batch APIs and cache results when possible
Use batch APIs and cache results when possible
Use webhooks to get updated data from HubSpot
Use webhooks to get updated data from HubSpot
Platform
API usage guidelines and limits
API usage guidelines and limits
Learn about the different API and developer feature limits in HubSpot.
Documentation Index
Documentation Index
Fetch the complete documentation index at:
https://developers.hubspot.com/docs/llms.txt
https://developers.hubspot.com/docs/llms.txt
Use this file to discover all available pages before exploring further.
HubSpot closely monitors usage of all APIs to ensure a quality experience for every user. All app and integration developers must comply with the
HubSpot Acceptable Use Policy
HubSpot Acceptable Use Policy
and
API Terms
API Terms
. While HubSpot reserves the right to change or deprecate the APIs over time, updates will always be provided in advance through the
Developer Changelog
Developer Changelog
.
Navigate to header Authentication and security
Navigate to header
Authentication and security
For optimal security, all apps must use HubSpot’s
OAuth protocol
OAuth protocol
directly, or use your app’s static auth token if you’re building an
app installed in a single account
app installed in a single account
. Apps are responsible for storing time-to-live (TTL) data and refreshing user access tokens in accordance with this protocol. When an access token is generated, it will include an
expires_in
parameter indicating how long it can be used to make API calls before refreshing.
Unauthorized (401)
requests are not a valid indicator that a new access token must be retrieved.
Navigate to header Checking API usage
Navigate to header
Checking API usage
Navigate to header Apps built on version 2025.2 and 2026.03 of the developer platform
Navigate to header
Apps built on version 2025.2 and 2026.03 of the developer platform
To view API usage for your apps built on the
new developer platform
new developer platform
:
In your HubSpot account, navigate to
Development
in the main navigation bar.
In the left sidebar menu, navigate to
Monitoring
>
API call usage
.
Your API usage across all your apps will be listed at the top of the page. You can also review usage for the apps you built in your specific account, along with any third-party apps you’ve installed.
Navigate to header Legacy apps
Navigate to header
Legacy apps
To view API usage for a legacy
private app
private app
:
In your HubSpot account, navigate to
Development
in the main navigation bar.
In the left sidebar menu, navigate to
Legacy apps
.
Click the
name
of the private app.
On the app details page, click the
Logs
tab.
Review the API calls listed in the table. You can also use the
search bar
,
filters
, and
date pickers
to further refine the displayed API calls.
Learn more about
checking API usage in legacy private apps
checking API usage in legacy private apps
.
To view API usage for a public app using OAuth:
In your HubSpot account, navigate to
Development
in the main navigation bar.
In the left sidebar menu, navigate to
Monitoring
, then select
Logs
.
At the top, select the
name
of the app.
Use the
tabs
to view different types of requests being made to or from the app. While viewing these logs, you can click an
individual request
to view more information.
Learn more about
monitoring API usage for legacy public apps
monitoring API usage for legacy public apps
.
Navigate to header Rate limits
Navigate to header
Rate limits
The number of calls your app can make is based on your account subscription in the account it’s installed in, and whether you’ve purchased the
API limit increase
API limit increase
.
You can keep the following general limits in mind when making requests to HubSpot’s API endpoints, however some APIs may also have more specific limits listed on their relevant API guide (e.g., the
exports API
exports API
).
The following APIs have limits that are unique from or stricter than the general limits. Refer to each associated guide for more information.
Associations API
Associations API
CRM Search API
CRM Search API
GraphQL API
GraphQL API
Navigate to header Publicly distributed OAuth app limits
Navigate to header
Publicly distributed OAuth app limits
For
legacy public apps
legacy public apps
, and apps on the latest versions of the developer platform (2025.2 and 2026.03) using
OAuth authentication
OAuth authentication
distributed
distributed
via the HubSpot marketplace, each HubSpot account that installs your app is limited to 110 requests every 10 seconds. This excludes the
CRM Search API
CRM Search API
.
The
API limit increase add-on
API limit increase add-on
does
not
increase the limits of
legacy public apps
legacy public apps
nor apps on the latest versions of the developer platform (2025.2 and 2026.03) using
OAuth authentication
OAuth authentication
that are
distributed
distributed
via the HubSpot marketplace.
Navigate to header Privately distributed app limits
Navigate to header
Privately distributed app limits
The limits in the table below apply to
legacy private apps
legacy private apps
, as well as apps on the latest versions of the developer platform (2025.2 and 2026.03) with a
distribution
distribution
set to
private
. Note that for these privately distributed app types:
The burst limit, detailed in the
Per 10 seconds
column below, applies individually per app.
The daily limit, detailed in the
Per day
column below, is shared across all apps within the same HubSpot account.
Product Tier
Per 10 Seconds
Per Day
Privately distributed apps
(Any Hub)
Free and Starter
100 / app
250,000 / account
(Any Hub)
Professional
190 / app
625,000 / account
(Any Hub)
Enterprise
190 / app
1,000,000 / account
Privately distributed apps with
API Limit Increase
API Limit Increase
(Any Hub)
Free, Starter, Professional, and Enterprise
250 / app
1,000,000 / account on top of your base subscription, for each limit increase. You can purchase a maximum of two API limit increases.
Privately distributed apps
Privately distributed apps with
API Limit Increase
API Limit Increase
Product Tier
(Any Hub)
Free and Starter
(Any Hub)
Professional
(Any Hub)
Enterprise
(Any Hub)
Free, Starter, Professional, and Enterprise
Per 10 Seconds
100 / app
190 / app
190 / app
250 / app
Per Day
250,000 / account
625,000 / account
1,000,000 / account
1,000,000 / account on top of your base subscription, for each limit increase. You can purchase a maximum of two API limit increases.
Navigate to header Exemptions
Navigate to header
Exemptions
Some APIs are exempt from the 10-second and daily limits (e.g., certain
marketing single send API
marketing single send API
and
source code API
source code API
endpoints). However, you should note the following for the exempt APIs:
API requests that are exempt from daily or secondary limits will
not
be logged in HubSpot. If you want to store these exempted requests, you’ll need to log these requests externally.
A high number of requests may result in
5xx
errors. These can be addressed the same as you would
429 errors
429
errors
.
Navigate to header App and account limits
Navigate to header
App and account limits
The following limits apply for creating legacy apps, webhook subscriptions, and CRM extension settings.
You can create up to 100
legacy public apps
legacy public apps
per developer account.
You can create up to 20
legacy private apps
legacy private apps
per HubSpot account....
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Platform Sprint 3 Q2 - Platform Team - Scrum Board - Jira","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Platform Sprint 3 Q2 - Platform Team - Scrum Board - Jira","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"SevenShores\\Hubspot\\Exceptions\\BadRequest: Client error: `POST https://api.hubapi.com/crm/v3/objects/contact/search` resulted in a `429 Too Many Requests` response: {\"status\":\"error\",\"message\":\"You have reached your secondly limit.\",\"errorType\":\"RATE_LIMIT","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"SevenShores\\Hubspot\\Exceptions\\BadRequest: Client error: `POST https://api.hubapi.com/crm/v3/objects/contact/search` resulted in a `429 Too Many Requests` response: {\"status\":\"error\",\"message\":\"You have reached your secondly limit.\",\"errorType\":\"RATE_LIMIT","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Service-Desk - Queues - Platform team - Service space - Jira","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Service-Desk - Queues - Platform team - Service space - Jira","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jy 20807 check various issues with stages by nikolaybiaivanov · Pull Request #12041 · jiminny/app","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jy 20807 check various issues with stages by nikolaybiaivanov · Pull Request #12041 · jiminny/app","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Sentry","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Sentry","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Pull requests · jiminny/app","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Pull requests · jiminny/app","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Userpilot | Ask Jiminny Report Generated","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Userpilot | Ask Jiminny Report Generated","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"JY-20773 fix user pilot tracking ofr automated report generated by LakyLak · Pull Request #12024 · jiminny/app","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20773 fix user pilot tracking ofr automated report generated by LakyLak · Pull Request #12024 · jiminny/app","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"API usage guidelines and limits - HubSpot docs","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"API usage guidelines and limits - HubSpot docs","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close tab","depth":5,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"New Tab","depth":4,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Customize sidebar","depth":6,"bounds":{"left":0.16770834,"top":0.0,"width":0.022222223,"height":0.035555556},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open Google Gemini (⌃X)","depth":6,"bounds":{"left":0.190625,"top":0.0,"width":0.022222223,"height":0.035555556},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Tabs from other devices","depth":6,"bounds":{"left":0.21388888,"top":0.0,"width":0.022222223,"height":0.035555556},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open history (⇧⌘H)","depth":6,"bounds":{"left":0.23715279,"top":0.0,"width":0.022222223,"height":0.035555556},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open bookmarks (⌘B)","depth":6,"bounds":{"left":0.26041666,"top":0.0,"width":0.022222223,"height":0.035555556},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Skip to main content","depth":6,"on_screen":false,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Skip to main content","depth":7,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"HubSpot docs home page light logo","depth":7,"on_screen":false,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"HubSpot docs","depth":9,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"home page","depth":9,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Open search","depth":7,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Search...","depth":9,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"⌘","depth":9,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"K","depth":9,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Toggle assistant panel","depth":7,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Ask AI","depth":9,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Ask Docs AI","depth":9,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Changelog","depth":10,"on_screen":false,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Changelog","depth":11,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Log In","depth":10,"on_screen":false,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Log In","depth":11,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Sign up","depth":10,"on_screen":false,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Sign up","depth":12,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Home","depth":7,"on_screen":false,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Home","depth":8,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Get Started","depth":7,"on_screen":false,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Get Started","depth":8,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Apps","depth":7,"on_screen":false,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Apps","depth":8,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"CMS","depth":7,"on_screen":false,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"CMS","depth":8,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"APIs","depth":7,"on_screen":false,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"APIs","depth":8,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Developer Tooling","depth":7,"on_screen":false,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Developer Tooling","depth":8,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Overview","depth":10,"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Overview","depth":12,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Platform","depth":8,"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Platform","depth":9,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Versioning","depth":10,"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Versioning","depth":12,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"API usage guidelines","depth":10,"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"API usage guidelines","depth":12,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"APIs by tier","depth":10,"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"APIs by tier","depth":12,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Breaking change guidelines","depth":10,"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Breaking change guidelines","depth":12,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Local development","depth":8,"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Local development","depth":9,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Toggle HubSpot CLI section","depth":10,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"HubSpot CLI","depth":11,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Build with config profiles","depth":10,"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Build with config profiles","depth":12,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Configurable test accounts","depth":10,"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Configurable test accounts","depth":12,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Toggle Developer MCP section","depth":10,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Developer MCP","depth":11,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"VS Code extension","depth":10,"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"VS Code extension","depth":12,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Troubleshooting","depth":10,"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Troubleshooting","depth":12,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Third-party tools","depth":8,"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Third-party tools","depth":9,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Set up GitHub Actions","depth":10,"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Set up GitHub Actions","depth":12,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Postman for HubSpot APIs","depth":10,"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Postman for HubSpot APIs","depth":12,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"SDKs","depth":8,"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"SDKs","depth":9,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Node","depth":10,"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Node","depth":12,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Php","depth":10,"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Php","depth":12,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Python","depth":10,"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Python","depth":12,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Ruby","depth":10,"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Ruby","depth":12,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"English","depth":7,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"English","depth":9,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Toggle dark mode","depth":7,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"close","depth":7,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"close","depth":9,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"On this page","depth":10,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"On this page","depth":12,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Authentication and security","depth":12,"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Authentication and security","depth":13,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Checking API usage","depth":12,"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Checking API usage","depth":13,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Apps built on version 2025.2 and 2026.03 of the developer platform","depth":12,"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Apps built on version 2025.2 and 2026.03 of the developer platform","depth":13,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Legacy apps","depth":12,"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Legacy apps","depth":13,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Rate limits","depth":12,"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Rate limits","depth":13,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Publicly distributed OAuth app limits","depth":12,"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Publicly distributed OAuth app limits","depth":13,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Privately distributed app limits","depth":12,"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Privately distributed app limits","depth":13,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Exemptions","depth":12,"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Exemptions","depth":13,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"App and account limits","depth":12,"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"App and account limits","depth":13,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"API-specific limits","depth":12,"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"API-specific limits","depth":13,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Timeline event limits","depth":12,"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Timeline event limits","depth":13,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Custom event limits","depth":12,"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Custom event limits","depth":13,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Service limits","depth":12,"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Service limits","depth":13,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Rate limit error responses","depth":12,"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Rate limit error responses","depth":13,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Address rate limit issues","depth":12,"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Address rate limit issues","depth":13,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Use batch APIs and cache results when possible","depth":12,"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Use batch APIs and cache results when possible","depth":13,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Use webhooks to get updated data from HubSpot","depth":12,"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Use webhooks to get updated data from HubSpot","depth":13,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Platform","depth":10,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"API usage guidelines and limits","depth":9,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"API usage guidelines and limits","depth":10,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Learn about the different API and developer feature limits in HubSpot.","depth":10,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Documentation Index","depth":10,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Documentation Index","depth":11,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Fetch the complete documentation index at:","depth":11,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"https://developers.hubspot.com/docs/llms.txt","depth":11,"on_screen":false,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"https://developers.hubspot.com/docs/llms.txt","depth":12,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Use this file to discover all available pages before exploring further.","depth":11,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"HubSpot closely monitors usage of all APIs to ensure a quality experience for every user. All app and integration developers must comply with the","depth":10,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"HubSpot Acceptable Use Policy","depth":10,"on_screen":false,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"HubSpot Acceptable Use Policy","depth":11,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"and","depth":10,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"API Terms","depth":10,"on_screen":false,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"API Terms","depth":11,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":". While HubSpot reserves the right to change or deprecate the APIs over time, updates will always be provided in advance through the","depth":10,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Developer Changelog","depth":10,"on_screen":false,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Developer Changelog","depth":11,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".","depth":10,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Navigate to header Authentication and security","depth":9,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXLink","text":"Navigate to header","depth":11,"on_screen":false,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"","depth":12,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Authentication and security","depth":11,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"For optimal security, all apps must use HubSpot’s","depth":10,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"OAuth protocol","depth":10,"on_screen":false,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"OAuth protocol","depth":11,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"directly, or use your app’s static auth token if you’re building an","depth":10,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"app installed in a single account","depth":10,"on_screen":false,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"app installed in a single account","depth":11,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":". Apps are responsible for storing time-to-live (TTL) data and refreshing user access tokens in accordance with this protocol. When an access token is generated, it will include an","depth":10,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"expires_in","depth":11,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"parameter indicating how long it can be used to make API calls before refreshing.","depth":10,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Unauthorized (401)","depth":11,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"requests are not a valid indicator that a new access token must be retrieved.","depth":10,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Navigate to header Checking API usage","depth":9,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXLink","text":"Navigate to header","depth":11,"on_screen":false,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"","depth":12,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Checking API usage","depth":11,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Navigate to header Apps built on version 2025.2 and 2026.03 of the developer platform","depth":9,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXLink","text":"Navigate to header","depth":11,"on_screen":false,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"","depth":12,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Apps built on version 2025.2 and 2026.03 of the developer platform","depth":11,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"To view API usage for your apps built on the","depth":10,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"new developer platform","depth":10,"on_screen":false,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"new developer platform","depth":11,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":":","depth":10,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"In your HubSpot account, navigate to","depth":11,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Development","depth":12,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"in the main navigation bar.","depth":11,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"In the left sidebar menu, navigate to","depth":11,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Monitoring","depth":12,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":">","depth":11,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"API call usage","depth":12,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".","depth":11,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Your API usage across all your apps will be listed at the top of the page. You can also review usage for the apps you built in your specific account, along with any third-party apps you’ve installed.","depth":11,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Navigate to header Legacy apps","depth":9,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXLink","text":"Navigate to header","depth":11,"on_screen":false,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"","depth":12,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Legacy apps","depth":11,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"To view API usage for a legacy","depth":11,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"private app","depth":11,"on_screen":false,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"private app","depth":12,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":":","depth":11,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"In your HubSpot account, navigate to","depth":11,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Development","depth":12,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"in the main navigation bar.","depth":11,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"In the left sidebar menu, navigate to","depth":11,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Legacy apps","depth":12,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".","depth":11,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Click the","depth":11,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"name","depth":12,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"of the private app.","depth":11,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"On the app details page, click the","depth":11,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Logs","depth":12,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"tab.","depth":11,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Review the API calls listed in the table. You can also use the","depth":11,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"search bar","depth":12,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":",","depth":11,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"filters","depth":12,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":", and","depth":11,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"date pickers","depth":12,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"to further refine the displayed API calls.","depth":11,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Learn more about","depth":11,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"checking API usage in legacy private apps","depth":11,"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"checking API usage in legacy private apps","depth":12,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".","depth":11,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"To view API usage for a public app using OAuth:","depth":10,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"In your HubSpot account, navigate to","depth":11,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Development","depth":12,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"in the main navigation bar.","depth":11,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"In the left sidebar menu, navigate to","depth":11,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Monitoring","depth":12,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":", then select","depth":11,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Logs","depth":12,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".","depth":11,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"At the top, select the","depth":11,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"name","depth":12,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"of the app.","depth":11,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Use the","depth":11,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"tabs","depth":12,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"to view different types of requests being made to or from the app. While viewing these logs, you can click an","depth":11,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"individual request","depth":12,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"to view more information.","depth":11,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Learn more about","depth":10,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"monitoring API usage for legacy public apps","depth":10,"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"monitoring API usage for legacy public apps","depth":11,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".","depth":10,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Navigate to header Rate limits","depth":9,"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXLink","text":"Navigate to header","depth":11,"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"","depth":12,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Rate limits","depth":11,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The number of calls your app can make is based on your account subscription in the account it’s installed in, and whether you’ve purchased the","depth":10,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"API limit increase","depth":10,"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"API limit increase","depth":11,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".","depth":10,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"You can keep the following general limits in mind when making requests to HubSpot’s API endpoints, however some APIs may also have more specific limits listed on their relevant API guide (e.g., the","depth":10,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"exports API","depth":10,"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"exports API","depth":11,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":").","depth":10,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The following APIs have limits that are unique from or stricter than the general limits. Refer to each associated guide for more information.","depth":11,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Associations API","depth":12,"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Associations API","depth":13,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"CRM Search API","depth":12,"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"CRM Search API","depth":13,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"GraphQL API","depth":12,"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"GraphQL API","depth":13,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Navigate to header Publicly distributed OAuth app limits","depth":9,"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXLink","text":"Navigate to header","depth":11,"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"","depth":12,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Publicly distributed OAuth app limits","depth":11,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"For","depth":10,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"legacy public apps","depth":10,"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"legacy public apps","depth":11,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":", and apps on the latest versions of the developer platform (2025.2 and 2026.03) using","depth":10,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"OAuth authentication","depth":10,"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"OAuth authentication","depth":11,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"distributed","depth":10,"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"distributed","depth":11,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"via the HubSpot marketplace, each HubSpot account that installs your app is limited to 110 requests every 10 seconds. This excludes the","depth":10,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"CRM Search API","depth":10,"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"CRM Search API","depth":11,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".","depth":10,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The","depth":11,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"API limit increase add-on","depth":11,"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"API limit increase add-on","depth":12,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"does","depth":11,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"not","depth":11,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"increase the limits of","depth":11,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"legacy public apps","depth":11,"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"legacy public apps","depth":12,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"nor apps on the latest versions of the developer platform (2025.2 and 2026.03) using","depth":11,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"OAuth authentication","depth":11,"bounds":{"left":0.9579861,"top":0.0,"width":0.042013884,"height":0.018888889},"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"OAuth authentication","depth":12,"bounds":{"left":0.9579861,"top":0.0,"width":0.042013884,"height":0.018888889},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"that are","depth":11,"bounds":{"left":1.0,"top":0.0,"width":-0.056597233,"height":0.019444445},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"distributed","depth":11,"bounds":{"left":1.0,"top":0.0,"width":-0.09861112,"height":0.018888889},"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"distributed","depth":12,"bounds":{"left":1.0,"top":0.0,"width":-0.09861112,"height":0.018888889},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"via the HubSpot marketplace.","depth":11,"bounds":{"left":0.6732639,"top":0.0,"width":0.13645834,"height":0.019444445},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Navigate to header Privately distributed app limits","depth":9,"bounds":{"left":0.6392361,"top":0.0,"width":0.3607639,"height":0.031111112},"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXLink","text":"Navigate to header","depth":11,"bounds":{"left":0.61145836,"top":0.0,"width":0.027777778,"height":0.031111112},"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"","depth":12,"bounds":{"left":0.6107639,"top":0.0,"width":0.0010416667,"height":0.026666667},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Privately distributed app limits","depth":11,"bounds":{"left":0.6392361,"top":0.0,"width":0.20555556,"height":0.027777778},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The limits in the table below apply to","depth":10,"bounds":{"left":0.6392361,"top":0.04388889,"width":0.19444445,"height":0.022222223},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"legacy private apps","depth":10,"bounds":{"left":0.83368057,"top":0.044444446,"width":0.104166664,"height":0.021666666},"on_screen":false,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"legacy private apps","depth":11,"bounds":{"left":0.83368057,"top":0.044444446,"width":0.104166664,"height":0.021666666},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":", as well as apps on the latest versions of the developer platform (2025.2 and 2026.03) with a","depth":10,"bounds":{"left":0.6392361,"top":0.04388889,"width":0.3607639,"height":0.053333335},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"distribution","depth":10,"bounds":{"left":0.8888889,"top":0.075555556,"width":0.06111111,"height":0.021666666},"on_screen":false,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"distribution","depth":11,"bounds":{"left":0.8888889,"top":0.075555556,"width":0.06111111,"height":0.021666666},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"set to","depth":10,"bounds":{"left":0.95,"top":0.075,"width":0.036111113,"height":0.022222223},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"private","depth":11,"bounds":{"left":0.9916667,"top":0.07666667,"width":0.008333325,"height":0.02111111},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":". Note that for these privately distributed app types:","depth":10,"bounds":{"left":0.6392361,"top":0.075,"width":0.3607639,"height":0.053888887},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The burst limit, detailed in the","depth":11,"bounds":{"left":0.6614583,"top":0.16,"width":0.15763889,"height":0.022222223},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Per 10 seconds","depth":12,"bounds":{"left":0.8190972,"top":0.16,"width":0.078125,"height":0.022222223},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"column below, applies individually per app.","depth":11,"bounds":{"left":0.8972222,"top":0.16,"width":0.10277778,"height":0.022222223},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The daily limit, detailed in the","depth":11,"bounds":{"left":0.6614583,"top":0.2,"width":0.15590277,"height":0.022222223},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Per day","depth":12,"bounds":{"left":0.8173611,"top":0.2,"width":0.04027778,"height":0.022222223},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"column below, is shared across all apps within the same HubSpot account.","depth":11,"bounds":{"left":0.6614583,"top":0.2,"width":0.3385417,"height":0.053333335},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Product Tier","depth":15,"bounds":{"left":0.76840276,"top":0.2988889,"width":0.058680557,"height":0.019444445},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Per 10 Seconds","depth":15,"bounds":{"left":0.88784724,"top":0.2988889,"width":0.072916664,"height":0.019444445},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Per Day","depth":15,"bounds":{"left":0.9920139,"top":0.2988889,"width":0.007986128,"height":0.019444445},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Privately distributed apps","depth":14,"bounds":{"left":0.6392361,"top":0.34,"width":0.11736111,"height":0.019444445},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(Any Hub)","depth":14,"bounds":{"left":0.76840276,"top":0.34,"width":0.046180554,"height":0.019444445},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Free and Starter","depth":14,"bounds":{"left":0.76840276,"top":0.36222222,"width":0.07534722,"height":0.019444445},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"100 / app","depth":14,"bounds":{"left":0.88784724,"top":0.34,"width":0.04548611,"height":0.019444445},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"250,000 / account","depth":14,"bounds":{"left":0.9920139,"top":0.34,"width":0.007986128,"height":0.019444445},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(Any Hub)","depth":14,"bounds":{"left":0.76840276,"top":0.40333334,"width":0.046180554,"height":0.019444445},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Professional","depth":14,"bounds":{"left":0.76840276,"top":0.42555556,"width":0.05590278,"height":0.019444445},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"190 / app","depth":14,"bounds":{"left":0.88784724,"top":0.40333334,"width":0.044791665,"height":0.019444445},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"625,000 / account","depth":14,"bounds":{"left":0.9920139,"top":0.40333334,"width":0.007986128,"height":0.019444445},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(Any Hub)","depth":14,"bounds":{"left":0.76840276,"top":0.46666667,"width":0.046180554,"height":0.019444445},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Enterprise","depth":14,"bounds":{"left":0.76840276,"top":0.4888889,"width":0.046527777,"height":0.019444445},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"190 / app","depth":14,"bounds":{"left":0.88784724,"top":0.46666667,"width":0.044791665,"height":0.019444445},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1,000,000 / account","depth":14,"bounds":{"left":0.9920139,"top":0.46666667,"width":0.007986128,"height":0.019444445},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Privately distributed apps with","depth":14,"bounds":{"left":0.6392361,"top":0.53,"width":0.11736111,"height":0.041666668},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"API Limit Increase","depth":14,"bounds":{"left":0.6611111,"top":0.55277777,"width":0.08125,"height":0.018888889},"on_screen":false,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"API Limit Increase","depth":15,"bounds":{"left":0.6611111,"top":0.55277777,"width":0.08125,"height":0.018888889},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(Any Hub)","depth":14,"bounds":{"left":0.76840276,"top":0.53,"width":0.046180554,"height":0.019444445},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Free, Starter, Professional, and Enterprise","depth":14,"bounds":{"left":0.76840276,"top":0.55222225,"width":0.07847222,"height":0.06388889},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"250 / app","depth":14,"bounds":{"left":0.88784724,"top":0.53,"width":0.045833334,"height":0.019444445},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1,000,000 / account on top of your base subscription, for each limit increase. You can purchase a maximum of two API limit increases.","depth":14,"bounds":{"left":0.9920139,"top":0.53,"width":0.007986128,"height":0.08611111},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Privately distributed apps","depth":14,"bounds":{"left":0.6392361,"top":0.34,"width":0.11736111,"height":0.019444445},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Privately distributed apps with","depth":14,"bounds":{"left":0.6392361,"top":0.53,"width":0.11736111,"height":0.041666668},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"API Limit Increase","depth":14,"bounds":{"left":0.6611111,"top":0.55277777,"width":0.08125,"height":0.018888889},"on_screen":false,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"API Limit Increase","depth":15,"bounds":{"left":0.6611111,"top":0.55277777,"width":0.08125,"height":0.018888889},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Product Tier","depth":15,"bounds":{"left":0.76840276,"top":0.2988889,"width":0.058680557,"height":0.019444445},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(Any Hub)","depth":14,"bounds":{"left":0.76840276,"top":0.34,"width":0.046180554,"height":0.019444445},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Free and Starter","depth":14,"bounds":{"left":0.76840276,"top":0.36222222,"width":0.07534722,"height":0.019444445},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(Any Hub)","depth":14,"bounds":{"left":0.76840276,"top":0.40333334,"width":0.046180554,"height":0.019444445},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Professional","depth":14,"bounds":{"left":0.76840276,"top":0.42555556,"width":0.05590278,"height":0.019444445},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(Any Hub)","depth":14,"bounds":{"left":0.76840276,"top":0.46666667,"width":0.046180554,"height":0.019444445},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Enterprise","depth":14,"bounds":{"left":0.76840276,"top":0.4888889,"width":0.046527777,"height":0.019444445},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(Any Hub)","depth":14,"bounds":{"left":0.76840276,"top":0.53,"width":0.046180554,"height":0.019444445},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Free, Starter, Professional, and Enterprise","depth":14,"bounds":{"left":0.76840276,"top":0.55222225,"width":0.07847222,"height":0.06388889},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Per 10 Seconds","depth":15,"bounds":{"left":0.88784724,"top":0.2988889,"width":0.072916664,"height":0.019444445},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"100 / app","depth":14,"bounds":{"left":0.88784724,"top":0.34,"width":0.04548611,"height":0.019444445},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"190 / app","depth":14,"bounds":{"left":0.88784724,"top":0.40333334,"width":0.044791665,"height":0.019444445},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"190 / app","depth":14,"bounds":{"left":0.88784724,"top":0.46666667,"width":0.044791665,"height":0.019444445},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"250 / app","depth":14,"bounds":{"left":0.88784724,"top":0.53,"width":0.045833334,"height":0.019444445},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Per Day","depth":15,"bounds":{"left":0.9920139,"top":0.2988889,"width":0.007986128,"height":0.019444445},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"250,000 / account","depth":14,"bounds":{"left":0.9920139,"top":0.34,"width":0.007986128,"height":0.019444445},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"625,000 / account","depth":14,"bounds":{"left":0.9920139,"top":0.40333334,"width":0.007986128,"height":0.019444445},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1,000,000 / account","depth":14,"bounds":{"left":0.9920139,"top":0.46666667,"width":0.007986128,"height":0.019444445},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1,000,000 / account on top of your base subscription, for each limit increase. You can purchase a maximum of two API limit increases.","depth":14,"bounds":{"left":0.9920139,"top":0.53,"width":0.007986128,"height":0.08611111},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Navigate to header Exemptions","depth":9,"bounds":{"left":0.6392361,"top":0.6722222,"width":0.3607639,"height":0.031111112},"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXLink","text":"Navigate to header","depth":11,"bounds":{"left":0.61145836,"top":0.6722222,"width":0.027777778,"height":0.031111112},"on_screen":false,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"","depth":12,"bounds":{"left":0.6107639,"top":0.67444444,"width":0.0010416667,"height":0.026666667},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Exemptions","depth":11,"bounds":{"left":0.6392361,"top":0.67388886,"width":0.07777778,"height":0.027777778},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Some APIs are exempt from the 10-second and daily limits (e.g., certain","depth":10,"bounds":{"left":0.6392361,"top":0.7211111,"width":0.3607639,"height":0.022222223},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"marketing single send API","depth":10,"bounds":{"left":1.0,"top":0.7216667,"width":-0.017708302,"height":0.021666666},"on_screen":false,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"marketing single send API","depth":11,"bounds":{"left":1.0,"top":0.7216667,"width":-0.017708302,"height":0.021666666},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"and","depth":10,"bounds":{"left":0.6392361,"top":0.75222224,"width":0.023263888,"height":0.022222223},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"source code API","depth":10,"bounds":{"left":0.6625,"top":0.75277776,"width":0.083680555,"height":0.021666666},"on_screen":false,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"source code API","depth":11,"bounds":{"left":0.6625,"top":0.75277776,"width":0.083680555,"height":0.021666666},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"endpoints). However, you should note the following for the exempt APIs:","depth":10,"bounds":{"left":0.74618053,"top":0.75222224,"width":0.25381947,"height":0.022222223},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"API requests that are exempt from daily or secondary limits will","depth":11,"bounds":{"left":0.6614583,"top":0.8061111,"width":0.3361111,"height":0.022222223},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"not","depth":11,"bounds":{"left":0.99756944,"top":0.8061111,"width":0.0024305582,"height":0.022222223},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"be logged in HubSpot. If you want to store these exempted requests, you’ll need to log these requests externally.","depth":11,"bounds":{"left":0.6614583,"top":0.8061111,"width":0.3385417,"height":0.053333335},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"A high number of requests may result in","depth":11,"bounds":{"left":0.6614583,"top":0.87722224,"width":0.21145834,"height":0.022222223},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"5xx","depth":12,"bounds":{"left":0.8784722,"top":0.8788889,"width":0.017361112,"height":0.02111111},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"errors. These can be addressed the same as you would","depth":11,"bounds":{"left":0.6614583,"top":0.87722224,"width":0.3385417,"height":0.053333335},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"429 errors","depth":11,"bounds":{"left":0.6951389,"top":0.9088889,"width":0.06388889,"height":0.021666666},"on_screen":false,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"429","depth":13,"bounds":{"left":0.70069444,"top":0.91,"width":0.017708333,"height":0.02111111},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"errors","depth":12,"bounds":{"left":0.7239583,"top":0.9088889,"width":0.035069443,"height":0.021666666},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".","depth":11,"bounds":{"left":0.7590278,"top":0.90833336,"width":0.0024305556,"height":0.022222223},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Navigate to header App and account limits","depth":9,"bounds":{"left":0.6392361,"top":0.96166664,"width":0.3607639,"height":0.035555556},"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXLink","text":"Navigate to header","depth":11,"bounds":{"left":0.61145836,"top":0.96166664,"width":0.027777778,"height":0.035555556},"on_screen":false,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"","depth":12,"bounds":{"left":0.61041665,"top":0.9633333,"width":0.0013888889,"height":0.032222223},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"App and account limits","depth":11,"bounds":{"left":0.6392361,"top":0.9627778,"width":0.18472221,"height":0.033333335},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The following limits apply for creating legacy apps, webhook subscriptions, and CRM extension settings.","depth":10,"bounds":{"left":0.6392361,"top":1.0,"width":0.3607639,"height":-0.019444466},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"You can create up to 100","depth":11,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"legacy public apps","depth":11,"on_screen":false,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"legacy public apps","depth":12,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"per developer account.","depth":11,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"You can create up to 20","depth":11,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"legacy private apps","depth":11,"on_screen":false,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"legacy private apps","depth":12,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"per HubSpot account.","depth":11,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"}]...
|
1453020532251431147
|
-6065378550290551151
|
idle
|
accessibility
|
NULL
|
Platform Sprint 3 Q2 - Platform Team - Scrum Board Platform Sprint 3 Q2 - Platform Team - Scrum Board - Jira
Platform Sprint 3 Q2 - Platform Team - Scrum Board - Jira
SevenShores\Hubspot\Exceptions\BadRequest: Client error: `POST https://api.hubapi.com/crm/v3/objects/contact/search` resulted in a `429 Too Many Requests` response: {"status":"error","message":"You have reached your secondly limit.","errorType":"RATE_LIMIT
SevenShores\Hubspot\Exceptions\BadRequest: Client error: `POST https://api.hubapi.com/crm/v3/objects/contact/search` resulted in a `429 Too Many Requests` response: {"status":"error","message":"You have reached your secondly limit.","errorType":"RATE_LIMIT
Service-Desk - Queues - Platform team - Service space - Jira
Service-Desk - Queues - Platform team - Service space - Jira
Jy 20807 check various issues with stages by nikolaybiaivanov · Pull Request #12041 · jiminny/app
Jy 20807 check various issues with stages by nikolaybiaivanov · Pull Request #12041 · jiminny/app
Sentry
Sentry
Pull requests · jiminny/app
Pull requests · jiminny/app
Userpilot | Ask Jiminny Report Generated
Userpilot | Ask Jiminny Report Generated
JY-20773 fix user pilot tracking ofr automated report generated by LakyLak · Pull Request #12024 · jiminny/app
JY-20773 fix user pilot tracking ofr automated report generated by LakyLak · Pull Request #12024 · jiminny/app
Jiminny
Jiminny
API usage guidelines and limits - HubSpot docs
API usage guidelines and limits - HubSpot docs
Close tab
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Skip to main content
Skip to main content
HubSpot docs home page light logo
HubSpot docs
home page
Open search
Search...
⌘
K
Toggle assistant panel
Ask AI
Ask Docs AI
Changelog
Changelog
Log In
Log In
Sign up
Sign up
Home
Home
Get Started
Get Started
Apps
Apps
CMS
CMS
APIs
APIs
Developer Tooling
Developer Tooling
Overview
Overview
Platform
Platform
Versioning
Versioning
API usage guidelines
API usage guidelines
APIs by tier
APIs by tier
Breaking change guidelines
Breaking change guidelines
Local development
Local development
Toggle HubSpot CLI section
HubSpot CLI
Build with config profiles
Build with config profiles
Configurable test accounts
Configurable test accounts
Toggle Developer MCP section
Developer MCP
VS Code extension
VS Code extension
Troubleshooting
Troubleshooting
Third-party tools
Third-party tools
Set up GitHub Actions
Set up GitHub Actions
Postman for HubSpot APIs
Postman for HubSpot APIs
SDKs
SDKs
Node
Node
Php
Php
Python
Python
Ruby
Ruby
English
English
Toggle dark mode
close
close
On this page
On this page
Authentication and security
Authentication and security
Checking API usage
Checking API usage
Apps built on version 2025.2 and 2026.03 of the developer platform
Apps built on version 2025.2 and 2026.03 of the developer platform
Legacy apps
Legacy apps
Rate limits
Rate limits
Publicly distributed OAuth app limits
Publicly distributed OAuth app limits
Privately distributed app limits
Privately distributed app limits
Exemptions
Exemptions
App and account limits
App and account limits
API-specific limits
API-specific limits
Timeline event limits
Timeline event limits
Custom event limits
Custom event limits
Service limits
Service limits
Rate limit error responses
Rate limit error responses
Address rate limit issues
Address rate limit issues
Use batch APIs and cache results when possible
Use batch APIs and cache results when possible
Use webhooks to get updated data from HubSpot
Use webhooks to get updated data from HubSpot
Platform
API usage guidelines and limits
API usage guidelines and limits
Learn about the different API and developer feature limits in HubSpot.
Documentation Index
Documentation Index
Fetch the complete documentation index at:
https://developers.hubspot.com/docs/llms.txt
https://developers.hubspot.com/docs/llms.txt
Use this file to discover all available pages before exploring further.
HubSpot closely monitors usage of all APIs to ensure a quality experience for every user. All app and integration developers must comply with the
HubSpot Acceptable Use Policy
HubSpot Acceptable Use Policy
and
API Terms
API Terms
. While HubSpot reserves the right to change or deprecate the APIs over time, updates will always be provided in advance through the
Developer Changelog
Developer Changelog
.
Navigate to header Authentication and security
Navigate to header
Authentication and security
For optimal security, all apps must use HubSpot’s
OAuth protocol
OAuth protocol
directly, or use your app’s static auth token if you’re building an
app installed in a single account
app installed in a single account
. Apps are responsible for storing time-to-live (TTL) data and refreshing user access tokens in accordance with this protocol. When an access token is generated, it will include an
expires_in
parameter indicating how long it can be used to make API calls before refreshing.
Unauthorized (401)
requests are not a valid indicator that a new access token must be retrieved.
Navigate to header Checking API usage
Navigate to header
Checking API usage
Navigate to header Apps built on version 2025.2 and 2026.03 of the developer platform
Navigate to header
Apps built on version 2025.2 and 2026.03 of the developer platform
To view API usage for your apps built on the
new developer platform
new developer platform
:
In your HubSpot account, navigate to
Development
in the main navigation bar.
In the left sidebar menu, navigate to
Monitoring
>
API call usage
.
Your API usage across all your apps will be listed at the top of the page. You can also review usage for the apps you built in your specific account, along with any third-party apps you’ve installed.
Navigate to header Legacy apps
Navigate to header
Legacy apps
To view API usage for a legacy
private app
private app
:
In your HubSpot account, navigate to
Development
in the main navigation bar.
In the left sidebar menu, navigate to
Legacy apps
.
Click the
name
of the private app.
On the app details page, click the
Logs
tab.
Review the API calls listed in the table. You can also use the
search bar
,
filters
, and
date pickers
to further refine the displayed API calls.
Learn more about
checking API usage in legacy private apps
checking API usage in legacy private apps
.
To view API usage for a public app using OAuth:
In your HubSpot account, navigate to
Development
in the main navigation bar.
In the left sidebar menu, navigate to
Monitoring
, then select
Logs
.
At the top, select the
name
of the app.
Use the
tabs
to view different types of requests being made to or from the app. While viewing these logs, you can click an
individual request
to view more information.
Learn more about
monitoring API usage for legacy public apps
monitoring API usage for legacy public apps
.
Navigate to header Rate limits
Navigate to header
Rate limits
The number of calls your app can make is based on your account subscription in the account it’s installed in, and whether you’ve purchased the
API limit increase
API limit increase
.
You can keep the following general limits in mind when making requests to HubSpot’s API endpoints, however some APIs may also have more specific limits listed on their relevant API guide (e.g., the
exports API
exports API
).
The following APIs have limits that are unique from or stricter than the general limits. Refer to each associated guide for more information.
Associations API
Associations API
CRM Search API
CRM Search API
GraphQL API
GraphQL API
Navigate to header Publicly distributed OAuth app limits
Navigate to header
Publicly distributed OAuth app limits
For
legacy public apps
legacy public apps
, and apps on the latest versions of the developer platform (2025.2 and 2026.03) using
OAuth authentication
OAuth authentication
distributed
distributed
via the HubSpot marketplace, each HubSpot account that installs your app is limited to 110 requests every 10 seconds. This excludes the
CRM Search API
CRM Search API
.
The
API limit increase add-on
API limit increase add-on
does
not
increase the limits of
legacy public apps
legacy public apps
nor apps on the latest versions of the developer platform (2025.2 and 2026.03) using
OAuth authentication
OAuth authentication
that are
distributed
distributed
via the HubSpot marketplace.
Navigate to header Privately distributed app limits
Navigate to header
Privately distributed app limits
The limits in the table below apply to
legacy private apps
legacy private apps
, as well as apps on the latest versions of the developer platform (2025.2 and 2026.03) with a
distribution
distribution
set to
private
. Note that for these privately distributed app types:
The burst limit, detailed in the
Per 10 seconds
column below, applies individually per app.
The daily limit, detailed in the
Per day
column below, is shared across all apps within the same HubSpot account.
Product Tier
Per 10 Seconds
Per Day
Privately distributed apps
(Any Hub)
Free and Starter
100 / app
250,000 / account
(Any Hub)
Professional
190 / app
625,000 / account
(Any Hub)
Enterprise
190 / app
1,000,000 / account
Privately distributed apps with
API Limit Increase
API Limit Increase
(Any Hub)
Free, Starter, Professional, and Enterprise
250 / app
1,000,000 / account on top of your base subscription, for each limit increase. You can purchase a maximum of two API limit increases.
Privately distributed apps
Privately distributed apps with
API Limit Increase
API Limit Increase
Product Tier
(Any Hub)
Free and Starter
(Any Hub)
Professional
(Any Hub)
Enterprise
(Any Hub)
Free, Starter, Professional, and Enterprise
Per 10 Seconds
100 / app
190 / app
190 / app
250 / app
Per Day
250,000 / account
625,000 / account
1,000,000 / account
1,000,000 / account on top of your base subscription, for each limit increase. You can purchase a maximum of two API limit increases.
Navigate to header Exemptions
Navigate to header
Exemptions
Some APIs are exempt from the 10-second and daily limits (e.g., certain
marketing single send API
marketing single send API
and
source code API
source code API
endpoints). However, you should note the following for the exempt APIs:
API requests that are exempt from daily or secondary limits will
not
be logged in HubSpot. If you want to store these exempted requests, you’ll need to log these requests externally.
A high number of requests may result in
5xx
errors. These can be addressed the same as you would
429 errors
429
errors
.
Navigate to header App and account limits
Navigate to header
App and account limits
The following limits apply for creating legacy apps, webhook subscriptions, and CRM extension settings.
You can create up to 100
legacy public apps
legacy public apps
per developer account.
You can create up to 20
legacy private apps
legacy private apps
per HubSpot account....
|
NULL
|
NULL
|
NULL
|
NULL
|
|
2529
|
NULL
|
0
|
2026-05-07T11:24:07.050372+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-07/1778 /Users/lukas/.screenpipe/data/data/2026-05-07/1778153047050_m1.jpg...
|
Claude
|
Claude
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Skip to content
Skip to content
Click to collapse
Skip to content
Skip to content
Click to collapse
⌘B
Drag to resize
Open sidebar
Chat
Cowork
Code
New chat ⌘N
New chat
⌘N
Projects
Artifacts
Customize
Pinned
Bulgarian citizenship application process for EU residents
More options for Bulgarian citizenship application process for EU residents
Dawarich location tracking project
More options for Dawarich location tracking project
Recents
View all
HubSpot rate limit implementation strategy
More options for HubSpot rate limit implementation strategy
Screenpipe retention policy code location
More options for Screenpipe retention policy code location
Viewing retention policy in screenpipe
More options for Viewing retention policy in screenpipe
Clean shot x video recording termination issue
More options for Clean shot x video recording termination issue
HubSpot rate limit handling with executeRequest
More options for HubSpot rate limit handling with executeRequest
Untitled
More options
💬 Screen pipe. Is there ability…
More options for 💬 Screen pipe. Is there ability…
SMB mount access inconsistency between Finder and iTerm
More options for SMB mount access inconsistency between Finder and iTerm
💬 What is the best switch I can…
More options for 💬 What is the best switch I can…
Permission denied on screenpipe volume
More options for Permission denied on screenpipe volume
Screenpipe sync database attachment error
More options for Screenpipe sync database attachment error
Last swimming outing with Dani
More options for Last swimming outing with Dani
Definition of incarcerated
More options for Definition of incarcerated
Chromecast remote volume buttons not working
More options for Chromecast remote volume buttons not working
Salesforce API errors with Organization and FieldDefinition queries
More options for Salesforce API errors with Organization and FieldDefinition queries
Daily activity summary from screenpipe data
More options for Daily activity summary from screenpipe data
MacBook unexpected restarts and kanji screen
More options for MacBook unexpected restarts and kanji screen
Security patch review and testing guidance
More options for Security patch review and testing guidance
Food calorie values reference
More options for Food calorie values reference
Tracking location history from last week
More options for Tracking location history from last week
Lukas Pro
Get apps and extensions
HubSpot rate limit implementation strategy, rename chat
HubSpot rate limit implementation strategy
More options for HubSpot rate limit implementation strategy
Open sidebar
Share chat
Claude finished the response
You said: So just a solution for rate limit implementation.
You said: So just a solution for rate limit implementation.
So just a solution for rate limit implementation. The situation currently is that there are some daily and secondary limits for HubSpot. I would like to make sure I never reach a 429 error rate limit. The requests can come from any flow. It can be:
updating activity (engagement, meeting, call, note)
searching for a company or contact
updating deal
patching IDs
Review what the limit is at the moment in the HubSpot documentation and then think of the solution:
where to store it
how to read it
how to work with multiple jobs
how to work with paginated requests Let's consider a situation when there are 600 opportunities to sync. What would be the flow? How would the rate limit be recognized? How would it be handled? What are the potential issues? [API usage guidelines and limits - HubSpot docs](
https://developers.hubspot.com/docs/developer-tooling/platform/usage-guidelines
https://developers.hubspot.com/docs/developer-tooling/platform/usage-guidelines
). Example of such a error Client error:
POST https://api.hubapi.com/crm/v3/objects/contact/search
resulted in a
429 Too Many Requests
response: {"status":"error","message":"You have reached your secondly limit.","errorType":"RATE_LIMIT","correlationId":"019dffc4-4 (truncated...). Think carefully about the implementation and potential issue and bottlenecks.
Show more
10:42
Retry
Edit
Copy
Claude responded: Current HubSpot limits (Apr 2026)
Claude responded: Current HubSpot limits (Apr 2026)
Synthesized HubSpot rate limit architecture with Redis storage and sliding window algorithms
Synthesized HubSpot rate limit architecture with Redis storage and sliding window algorithms
Current HubSpot limits (Apr 2026)
Current HubSpot limits (Apr 2026)
For privately distributed apps (which is what Jiminny presumably uses with HubSpot), the limits are layered: a per-app burst window of 100/10s on Free/Starter, 190/10s on Pro/Enterprise, or 250/10s with the API Limit Increase add-on
, plus a per-account daily cap of 250k / 625k / 1M depending on tier — shared across all private apps in the account
. The burst window is per app; the daily quota is per portal.
hubspot
hubspot
hubspot
hubspot
The Search API is special: five requests per second per account, capped at 200 records per page, with a hard 10,000-result ceiling per query
. That's the limit the 429 in your example is hitting (
secondly limit
on
/crm/v3/objects/contact/search
). It's a separate bucket from the 190/10s, and critically, search responses do not include the
X-HubSpot-RateLimit-*
headers
— you can't read remaining capacity off the response, you have to track it yourself.
hubspot
hubspot
hubspot
hubspot
Non-search endpoints return
X-HubSpot-RateLimit-Remaining
,
-Max
, and
-Interval-Milliseconds
. The daily headers are not returned for OAuth-authenticated calls
, so for those you check the account-info endpoint or maintain your own counter. There's also a soft rule: errors should stay under 5% of total daily requests
— that's enforced for marketplace listing, but it's also a sane operational target.
hubspot
hubspot
hubspot
hubspot
So you have
four buckets
to track at minimum: app-burst (10s sliding), search-secondly (1s sliding), account-daily (24h fixed, midnight in HubSpot's TZ), and per-app daily share (your own budgeting on top of the account cap).
Where to store it
Where to store it
Redis. It's the only realistic option once you have multiple queue workers — DB-backed counters serialize too much, and in-process state can't coordinate across workers. Laravel already speaks Redis natively, and you get atomic
INCR
/
EXPIRE
plus Lua scripting for true CAS semantics.
Key layout I'd use:
Copy to clipboard
hubspot:rl:burst:{portalId}:{appId} ZSET (sliding 10s)
hubspot:rl:search:{portalId} ZSET (sliding 1s)
hubspot:rl:daily:{portalId} STRING + TTL to midnight TZ
hubspot:rl:meta:{portalId} HASH (last seen headers)
The two short-window buckets are sliding-window-log (Redis ZSET, score =
microtime
, member = unique request id). Lua script removes entries older than the window, counts remaining slots, and only adds the new one if there's room — all atomic. Fixed windows are simpler but allow 2× the limit at the boundary, which on a 5/s window is brutal.
The daily bucket is a plain
INCR
with TTL set to seconds-until-midnight in
HubSpot's account timezone
, not yours — Sofia is UTC+2/+3 but your portal might be set to US Eastern. Get this once and cache it.
How to read it
How to read it
Two-phase: optimistic pre-check, authoritative post-update.
Before a call, run the Lua acquire script. If it returns "denied," sleep until a slot frees up (the script can return ms-until-next-slot) or push the job back to the queue with a delay. Don't busy-loop.
After the call, parse
X-HubSpot-RateLimit-Remaining
/
-Max
/
-Interval-Milliseconds
and store them in
hubspot:rl:meta:{portalId}
. This is your reality check — if your local counter says 50 remaining but HubSpot's header says 5, you trust HubSpot and clamp your counter. This handles clock drift, missed accounting (e.g., crashed worker that took a token but never made the request), and other apps in the same account consuming the daily budget invisibly.
For search specifically, since headers don't come back, the local counter
is
the source of truth — meaning if you ever crash mid-flight, you've under-counted. Always release tokens on connection-level failure but
not
on 429 (you really did make that request).
How to work with multiple jobs
How to work with multiple jobs
The queue layer needs to enforce concurrency separately from the rate limiter. Both work together:
Concurrency cap
via
Queue::throttle()
or a Redis semaphore — limits how many sync workers run in parallel against HubSpot. Without this, you can have 50 workers all blocked waiting for tokens, which is wasteful and creates retry storms.
Per-tenant fairness
— if you sync many Jiminny customers into different HubSpot portals, each portal has its own bucket but you still want one slow portal not to starve others. Either separate queues per portal or a fair-share scheduler.
Priority lanes
— webhook-driven updates (user-visible latency) should outrank background batch syncs. Two queues:
hubspot-priority
and
hubspot-bulk
, with priority workers taking 70% of the burst budget and bulk taking 30% (enforce via separate sub-buckets if you really want hard separation, otherwise just pull from priority first).
Backoff on 429
— respect the
Retry-After
header. If absent, exponential with jitter (e.g.,
min(2^attempt * 250ms, 30s) ± 20%
). The jitter is non-negotiable; without it, simultaneous 429s retry in lockstep and you get thundering-herd 429s on retry.
How to work with paginated requests
How to work with paginated requests
The trap is treating "fetch all" as one logical operation. Each page is its own API call and competes for tokens with everything else.
Two practical rules:
Don't hold the worker idle while paginating.
If page N takes 500ms and page N+1 needs to wait 800ms for a token, you've burned 800ms of worker time doing nothing. Instead, fetch page N, dispatch the
processing
of page N as a separate job, and queue a "fetch page N+1" job with a delay equal to the wait time. Each page becomes its own atomic unit.
Always batch where HubSpot offers it.
POST /crm/v3/objects/{type}/batch/{read|update|create}
accepts up to 100 IDs per call. For your "patching IDs" flow this is the difference between 600 calls and 6.
Walkthrough: 600 opportunities
Walkthrough: 600 opportunities
Naive flow (one PATCH per deal): 600 calls. At 190/10s that's ~32s of API time, well under daily. You'd hit burst easily without throttling. Plus likely 1-3 search calls upfront and N association calls.
Sane flow:
Identify deltas
— if you can avoid Search at all, do. Use
lastmodifieddate
filter on a single search if you must, paginate at limit=200. For 600 deals that's 3 search calls @ 5/s = ~600ms naturally throttled.
Batch read
current state —
POST /crm/v3/objects/deals/batch/read
with 100 IDs per call → 6 calls. Burst weight 6.
Compute diff
in your code (no API).
Batch update
—
POST /crm/v3/objects/deals/batch/update
with 100 per call → 6 calls.
Associations
—
POST /crm/v4/associations/{from}/{to}/batch/create
if needed → another few batch calls.
Total: ~15-20 API calls for 600 deals. Burst budget consumed: 20/190 over ~5s. Daily impact: trivial.
Recognition: pre-check denies if
<weight>
slots aren't free; on 429 the response surfaces
policyName
(DAILY/SECONDLY) — log it, push the job back with
Retry-After
delay, increment a metric so you can alarm on sustained 429 rate.
Pitfalls & bottlenecks worth pre-empting
Pitfalls & bottlenecks worth pre-empting
Daily quota is shared across the whole portal
, including any n8n flows, other private apps, marketing automation calling APIs, etc. Budget for ~70-80% of the documented limit, not 100%. Add an internal per-app daily cap so a runaway sync can't starve other apps.
Search is uniquely fragile
: separate 5/s bucket, no headers to read, 10k-result cap per query. If you ever hit 10k+ deals matching a filter, partition by
hs_object_id
ranges or by
lastmodifieddate
windows.
Retry storms after HubSpot incidents
— always jitter, always cap total retries (e.g., 5 attempts, then dead-letter).
Webhook → sync → webhook loops
— when your update fires a HubSpot webhook that triggers another sync. Tag your own writes (e.g., a custom property
jy_last_sync_id
) and ignore webhooks where it just changed.
Token refresh
— OAuth refresh itself counts against burst. Cache the access token in Redis with TTL =
expires_in - 60s
, single-flight the refresh (only one worker refreshes; others wait on a lock).
Search latency for fresh writes
— newly created/updated objects don't appear in search instantly. Don't write-then-search; use returned IDs directly.
Clock skew
— Redis is authoritative. Don't use
time()
from each worker for window scoring; use
redis.call('TIME')
inside the Lua script.
Dead workers with held tokens
— sliding-window-log handles this naturally because tokens expire by score; token-bucket implementations need explicit release-on-crash logic.
The 5% error rule
counts every 429 toward your error budget, even successfully retried ones. If your pre-check is working well, 429s should be near zero — if they're not, your pre-check is wrong, not just slow.
Phantom contention with Laravel
RateLimited
middleware
: it's per-job-class by default, not per-portal. If your
SyncDealJob
and
UpdateActivityJob
are different classes both calling HubSpot, they don't share a Laravel-level limiter — you need a single
HubspotRateLimiter
service that everything routes through.
If you want, I can sketch the Lua script for the sliding-window acquire and the Laravel service wrapper around it.
Copy
Give positive feedback
Give negative feedback
Retry
You said: What will happen if there are two different types of rate limits?
You said: What will happen if there are two different types of rate limits?
What will happen if there are two different types of rate limits?
Search requests that have 5 requests per second
The other rate limit that has, let's say, 100 requests per 10 seconds How do these work together? Is there some conflict? Can I reach the limit with one request and block either as well, or are these separated? Can I still continue making search requests once I hit the normal requests limits?
13:40
Retry
Edit
Copy
Claude responded: They're independent buckets — with one shared bucket on top.
Claude responded: They're independent buckets — with one shared bucket on top.
Analyzed independent rate limit buckets and their practical interactions
Analyzed independent rate limit buckets and their practical interactions
They're independent buckets — with one shared bucket on top.
The three buckets and what each call hits
The three buckets and what each call hits
Copy to clipboard
┌──────────────────┐
Search request ──→ │ Search: 5/sec │ ──┐
└──────────────────┘ │
├──→ ┌─────────────────┐
┌──────────────────┐ │ │ Daily: 250k–1M │
Non-search call ──→ │ Burst: 190/10s │ ──┘ │ (per portal) │
└──────────────────┘ └─────────────────┘
A search call is only metered against the search bucket and the daily bucket. A non-search call (batch read/update, single PATCH, associations, etc.) is only metered against the burst bucket and the daily bucket. The two short-window buckets do not share counters.
What this means practically
What this means practically
Hitting search secondly limit (5/s):
Only further
/search
calls 429. Your batch reads, batch updates, single PATCHes, association calls — all keep working at full burst speed. This is actually useful: if your sync is bottlenecked on Search, you can pivot to using
lastmodifieddate
filters via batch endpoints, or use the IDs you already have to do batch reads, while Search cools off.
Hitting burst limit (190/10s):
Only non-search calls 429. You can still issue Search calls at 5/s. Useful for: continuing to identify deltas for queueing while in-flight updates drain, or refreshing a small set of records via Search even though your write pipeline is paused.
Hitting daily limit:
Everything stops. Search and non-search alike. Doesn't unblock until midnight in your portal's configured timezone — and remember this is shared across every private app in the portal, plus n8n flows, marketing tools, anything else hitting the API with that account.
So can one type of request block the other?
So can one type of request block the other?
Search → Burst:
No.
Saturating Search at 50 calls per 10s leaves your full 190/10s burst untouched.
Burst → Search:
No.
Saturating burst leaves Search's 5/s untouched.
Either → Daily:
Yes
, but only by contributing to the same daily counter. It's volume that kills you here, not the type.
In theory you can sustain ~50 search + ~190 other =
~240 calls per 10 seconds
indefinitely (until daily runs out), because the two buckets bill independently.
Implementation consequence
Implementation consequence
Your rate limiter needs to know which bucket a request hits before it acquires. Cleanest pattern:
Copy to clipboard
php
$limiter
->
acquire
(
'search'
,
$weight
=
1
)
;
// for search endpoints only
$limiter
->
acquire
(
'burst'
,
$weight
=
1
)
;
// for everything else
$limiter
->
acquire
(
'daily'
,
$weight
=
1
)
;
// every call, both kinds
In Redis: three separate keys, three separate Lua acquire scripts (or one script with a bucket parameter). A search call calls
acquire('search')
+
acquire('daily')
. A batch update calls
acquire('burst')
+
acquire('daily')
.
One subtle pitfall: when you backoff on a 429,
inspect
policyName
in the response body
to know which bucket actually fired. If you see
SECONDLY
from a search endpoint, you only need to delay search-bound jobs — burst-bound jobs in the queue can keep running. If you blanket-pause everything on any 429, you waste capacity on the bucket that's still healthy. Two queues (or two throttle keys) make this clean; one global pause is the lazy version.
The other subtlety: the burst response gives you
X-HubSpot-RateLimit-Remaining
to clamp local state against, but search doesn't return those headers. So your search counter is unverified — be slightly more conservative there (e.g., budget 4/s instead of 5) to absorb the unaccounted-for calls.
Copy
Give positive feedback
Give negative feedback
Retry
You said: Ok, so what will happen each time I make a request?
You said: Ok, so what will happen each time I make a request?
Ok, so what will happen each time I make a request? Let's say I have 100,000 requests to make that are instant. Do I need to increment each request based on the type? For example, if there is a search request, I need to increment both the search bucket and also the daily bucket. If it's a burst, then I can go to the daily and burst buckets. If I need to check if it can make a call, do I need to see both the daily and search, or burst, respectively? Isn't that too heavy for the infrastructure, adding additional load to each request?
13:44
Retry
Edit
Copy
Claude responded: Yes, your understanding is correct — every request must check and reserve from each bucket it applies to, atomically, before the call goes out.
Claude responded: Yes, your understanding is correct — every request must check and reserve from each bucket it applies to, atomically, before the call goes out.
Analyzed per-request overhead concerns and quantified Redis performance impact
Analyzed per-request overhead concerns and quantified Redis performance impact
Yes, your understanding is correct — every request must check and reserve from each bucket it applies to, atomically, before the call goes out. But the overhead is much smaller than it sounds, and importantly, it's nowhere near your bottleneck.
What "two buckets per request" actually costs
What "two buckets per request" actually costs
Each request makes
one round trip to Redis
— not two — because you fold both bucket checks into a single Lua script that runs atomically server-side:
Copy to clipboard
lua
-- KEYS[1] = burst bucket key (or search)
-- KEYS[2] = daily bucket key
-- ARGV[1] = now (ms) ARGV[2] = window_ms
-- ARGV[3] = bucket_max ARGV[4] = daily_max
-- ARGV[5] = request_id ARGV[6] = daily_ttl
-- Trim sliding window
redis
.
call
(
'ZREMRANGEBYSCORE'
,
KEYS
[
1
]
,
0
,
ARGV
[
1
]
-
ARGV
[
2
]
)
local
burst_used
=
redis
.
call
(
'ZCARD'
,
KEYS
[
1
]
)
local
daily_used
=
tonumber
(
redis
.
call
(
'GET'
,
KEYS
[
2
]
)
or
'0'
)
if
burst_used
>=
tonumber
(
ARGV
[
3
]
)
then
-- Tell caller how long to sleep until oldest entry expires
local
oldest
=
redis
.
call
(
'ZRANGE'
,
KEYS
[
1
]
,
0
,
0
,
'WITHSCORES'
)
return
{
0
,
'BURST'
,
(
oldest
[
2
]
+
ARGV
[
2
]
)
-
ARGV
[
1
]
}
end
if
daily_used
>=
tonumber
(
ARGV
[
4
]
)
then
return
{
0
,
'DAILY'
,
-
1
}
end...
|
[{"role":"AXLink","text":& [{"role":"AXLink","text":"Skip to content","depth":14,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Skip to content","depth":15,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Click to collapse","depth":16,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"⌘B","depth":16,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Drag to resize","depth":16,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Open sidebar","depth":14,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Chat","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Cowork","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"New chat ⌘N","depth":15,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"New chat","depth":16,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"⌘N","depth":17,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Projects","depth":15,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Artifacts","depth":15,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Customize","depth":15,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Pinned","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXButton","text":"Bulgarian citizenship application process for EU residents","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Bulgarian citizenship application process for EU residents","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Dawarich location tracking project","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Dawarich location tracking project","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Recents","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXButton","text":"View all","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"HubSpot rate limit implementation strategy","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for HubSpot rate limit implementation strategy","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Screenpipe retention policy code location","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Screenpipe retention policy code location","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Viewing retention policy in screenpipe","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Viewing retention policy in screenpipe","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Clean shot x video recording termination issue","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Clean shot x video recording termination issue","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"HubSpot rate limit handling with executeRequest","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for HubSpot rate limit handling with executeRequest","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Untitled","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"💬 Screen pipe. Is there ability…","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for 💬 Screen pipe. Is there ability…","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"SMB mount access inconsistency between Finder and iTerm","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for SMB mount access inconsistency between Finder and iTerm","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"💬 What is the best switch I can…","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for 💬 What is the best switch I can…","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Permission denied on screenpipe volume","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Permission denied on screenpipe volume","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Screenpipe sync database attachment error","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Screenpipe sync database attachment error","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Last swimming outing with Dani","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Last swimming outing with Dani","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Definition of incarcerated","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Definition of incarcerated","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Chromecast remote volume buttons not working","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Chromecast remote volume buttons not working","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Salesforce API errors with Organization and FieldDefinition queries","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Salesforce API errors with Organization and FieldDefinition queries","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Daily activity summary from screenpipe data","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Daily activity summary from screenpipe data","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"MacBook unexpected restarts and kanji screen","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for MacBook unexpected restarts and kanji screen","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Security patch review and testing guidance","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Security patch review and testing guidance","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Food calorie values reference","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Food calorie values reference","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Tracking location history from last week","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Tracking location history from last week","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"Lukas Pro","depth":15,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Get apps and extensions","depth":15,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"HubSpot rate limit implementation strategy, rename chat","depth":19,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"HubSpot rate limit implementation strategy","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXPopUpButton","text":"More options for HubSpot rate limit implementation strategy","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Open sidebar","depth":21,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Share chat","depth":21,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Claude finished the response","depth":21,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"You said: So just a solution for rate limit implementation.","depth":20,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"You said: So just a solution for rate limit implementation.","depth":21,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"So just a solution for rate limit implementation. The situation currently is that there are some daily and secondary limits for HubSpot. I would like to make sure I never reach a 429 error rate limit. The requests can come from any flow. It can be:","depth":24,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"updating activity (engagement, meeting, call, note)","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"searching for a company or contact","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"updating deal","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"patching IDs\nReview what the limit is at the moment in the HubSpot documentation and then think of the solution:","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"where to store it","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"how to read it","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"how to work with multiple jobs","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"how to work with paginated requests Let's consider a situation when there are 600 opportunities to sync. What would be the flow? How would the rate limit be recognized? How would it be handled? What are the potential issues? [API usage guidelines and limits - HubSpot docs](","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXLink","text":"https://developers.hubspot.com/docs/developer-tooling/platform/usage-guidelines","depth":25,"on_screen":false,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"https://developers.hubspot.com/docs/developer-tooling/platform/usage-guidelines","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"). Example of such a error Client error:","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"POST https://api.hubapi.com/crm/v3/objects/contact/search","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"resulted in a","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"429 Too Many Requests","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"response: {\"status\":\"error\",\"message\":\"You have reached your secondly limit.\",\"errorType\":\"RATE_LIMIT\",\"correlationId\":\"019dffc4-4 (truncated...). Think carefully about the implementation and potential issue and bottlenecks.","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Show more","depth":22,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:42","depth":22,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Retry","depth":22,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Edit","depth":22,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Copy","depth":22,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXHeading","text":"Claude responded: Current HubSpot limits (Apr 2026)","depth":21,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"Claude responded: Current HubSpot limits (Apr 2026)","depth":22,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Synthesized HubSpot rate limit architecture with Redis storage and sliding window algorithms","depth":22,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Synthesized HubSpot rate limit architecture with Redis storage and sliding window algorithms","depth":23,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"Current HubSpot limits (Apr 2026)","depth":24,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"Current HubSpot limits (Apr 2026)","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"For privately distributed apps (which is what Jiminny presumably uses with HubSpot), the limits are layered: a per-app burst window of 100/10s on Free/Starter, 190/10s on Pro/Enterprise, or 250/10s with the API Limit Increase add-on","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", plus a per-account daily cap of 250k / 625k / 1M depending on tier — shared across all private apps in the account","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":". The burst window is per app; the daily quota is per portal.","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXLink","text":"hubspot","depth":26,"on_screen":false,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"hubspot","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXLink","text":"hubspot","depth":26,"on_screen":false,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"hubspot","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"The Search API is special: five requests per second per account, capped at 200 records per page, with a hard 10,000-result ceiling per query","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":". That's the limit the 429 in your example is hitting (","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"secondly limit","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"on","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/crm/v3/objects/contact/search","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"). It's a separate bucket from the 190/10s, and critically, search responses do not include the","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"X-HubSpot-RateLimit-*","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"headers","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— you can't read remaining capacity off the response, you have to track it yourself.","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXLink","text":"hubspot","depth":26,"on_screen":false,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"hubspot","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXLink","text":"hubspot","depth":26,"on_screen":false,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"hubspot","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Non-search endpoints return","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"X-HubSpot-RateLimit-Remaining","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":",","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"-Max","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", and","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"-Interval-Milliseconds","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":". The daily headers are not returned for OAuth-authenticated calls","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", so for those you check the account-info endpoint or maintain your own counter. There's also a soft rule: errors should stay under 5% of total daily requests","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— that's enforced for marketplace listing, but it's also a sane operational target.","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXLink","text":"hubspot","depth":26,"on_screen":false,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"hubspot","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXLink","text":"hubspot","depth":26,"on_screen":false,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"hubspot","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"So you have","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"four buckets","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"to track at minimum: app-burst (10s sliding), search-secondly (1s sliding), account-daily (24h fixed, midnight in HubSpot's TZ), and per-app daily share (your own budgeting on top of the account cap).","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"Where to store it","depth":24,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"Where to store it","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Redis. It's the only realistic option once you have multiple queue workers — DB-backed counters serialize too much, and in-process state can't coordinate across workers. Laravel already speaks Redis natively, and you get atomic","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"INCR","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"EXPIRE","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"plus Lua scripting for true CAS semantics.","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Key layout I'd use:","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Copy to clipboard","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"hubspot:rl:burst:{portalId}:{appId} ZSET (sliding 10s)","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"hubspot:rl:search:{portalId} ZSET (sliding 1s)","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"hubspot:rl:daily:{portalId} STRING + TTL to midnight TZ","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"hubspot:rl:meta:{portalId} HASH (last seen headers)","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"The two short-window buckets are sliding-window-log (Redis ZSET, score =","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"microtime","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", member = unique request id). Lua script removes entries older than the window, counts remaining slots, and only adds the new one if there's room — all atomic. Fixed windows are simpler but allow 2× the limit at the boundary, which on a 5/s window is brutal.","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"The daily bucket is a plain","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"INCR","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"with TTL set to seconds-until-midnight in","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"HubSpot's account timezone","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", not yours — Sofia is UTC+2/+3 but your portal might be set to US Eastern. Get this once and cache it.","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"How to read it","depth":24,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"How to read it","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Two-phase: optimistic pre-check, authoritative post-update.","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Before a call, run the Lua acquire script. If it returns \"denied,\" sleep until a slot frees up (the script can return ms-until-next-slot) or push the job back to the queue with a delay. Don't busy-loop.","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"After the call, parse","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"X-HubSpot-RateLimit-Remaining","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"-Max","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"-Interval-Milliseconds","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"and store them in","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"hubspot:rl:meta:{portalId}","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":". This is your reality check — if your local counter says 50 remaining but HubSpot's header says 5, you trust HubSpot and clamp your counter. This handles clock drift, missed accounting (e.g., crashed worker that took a token but never made the request), and other apps in the same account consuming the daily budget invisibly.","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"For search specifically, since headers don't come back, the local counter","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"is","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"the source of truth — meaning if you ever crash mid-flight, you've under-counted. Always release tokens on connection-level failure but","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"not","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"on 429 (you really did make that request).","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"How to work with multiple jobs","depth":24,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"How to work with multiple jobs","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"The queue layer needs to enforce concurrency separately from the rate limiter. Both work together:","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Concurrency cap","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"via","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Queue::throttle()","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"or a Redis semaphore — limits how many sync workers run in parallel against HubSpot. Without this, you can have 50 workers all blocked waiting for tokens, which is wasteful and creates retry storms.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Per-tenant fairness","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— if you sync many Jiminny customers into different HubSpot portals, each portal has its own bucket but you still want one slow portal not to starve others. Either separate queues per portal or a fair-share scheduler.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Priority lanes","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— webhook-driven updates (user-visible latency) should outrank background batch syncs. Two queues:","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"hubspot-priority","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"and","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"hubspot-bulk","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", with priority workers taking 70% of the burst budget and bulk taking 30% (enforce via separate sub-buckets if you really want hard separation, otherwise just pull from priority first).","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Backoff on 429","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— respect the","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Retry-After","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"header. If absent, exponential with jitter (e.g.,","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"min(2^attempt * 250ms, 30s) ± 20%","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"). The jitter is non-negotiable; without it, simultaneous 429s retry in lockstep and you get thundering-herd 429s on retry.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"How to work with paginated requests","depth":24,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"How to work with paginated requests","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"The trap is treating \"fetch all\" as one logical operation. Each page is its own API call and competes for tokens with everything else.","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Two practical rules:","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Don't hold the worker idle while paginating.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"If page N takes 500ms and page N+1 needs to wait 800ms for a token, you've burned 800ms of worker time doing nothing. Instead, fetch page N, dispatch the","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"processing","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"of page N as a separate job, and queue a \"fetch page N+1\" job with a delay equal to the wait time. Each page becomes its own atomic unit.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Always batch where HubSpot offers it.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"POST /crm/v3/objects/{type}/batch/{read|update|create}","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"accepts up to 100 IDs per call. For your \"patching IDs\" flow this is the difference between 600 calls and 6.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"Walkthrough: 600 opportunities","depth":24,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"Walkthrough: 600 opportunities","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Naive flow (one PATCH per deal): 600 calls. At 190/10s that's ~32s of API time, well under daily. You'd hit burst easily without throttling. Plus likely 1-3 search calls upfront and N association calls.","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Sane flow:","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Identify deltas","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— if you can avoid Search at all, do. Use","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"lastmodifieddate","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"filter on a single search if you must, paginate at limit=200. For 600 deals that's 3 search calls @ 5/s = ~600ms naturally throttled.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Batch read","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"current state —","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"POST /crm/v3/objects/deals/batch/read","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"with 100 IDs per call → 6 calls. Burst weight 6.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Compute diff","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"in your code (no API).","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Batch update","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"—","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"POST /crm/v3/objects/deals/batch/update","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"with 100 per call → 6 calls.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Associations","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"—","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"POST /crm/v4/associations/{from}/{to}/batch/create","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"if needed → another few batch calls.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Total: ~15-20 API calls for 600 deals. Burst budget consumed: 20/190 over ~5s. Daily impact: trivial.","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Recognition: pre-check denies if","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"<weight>","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"slots aren't free; on 429 the response surfaces","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"policyName","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"(DAILY/SECONDLY) — log it, push the job back with","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Retry-After","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"delay, increment a metric so you can alarm on sustained 429 rate.","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"Pitfalls & bottlenecks worth pre-empting","depth":24,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"Pitfalls & bottlenecks worth pre-empting","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Daily quota is shared across the whole portal","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", including any n8n flows, other private apps, marketing automation calling APIs, etc. Budget for ~70-80% of the documented limit, not 100%. Add an internal per-app daily cap so a runaway sync can't starve other apps.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Search is uniquely fragile","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":": separate 5/s bucket, no headers to read, 10k-result cap per query. If you ever hit 10k+ deals matching a filter, partition by","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"hs_object_id","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"ranges or by","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"lastmodifieddate","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"windows.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Retry storms after HubSpot incidents","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— always jitter, always cap total retries (e.g., 5 attempts, then dead-letter).","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Webhook → sync → webhook loops","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— when your update fires a HubSpot webhook that triggers another sync. Tag your own writes (e.g., a custom property","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"jy_last_sync_id","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":") and ignore webhooks where it just changed.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Token refresh","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— OAuth refresh itself counts against burst. Cache the access token in Redis with TTL =","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"expires_in - 60s","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", single-flight the refresh (only one worker refreshes; others wait on a lock).","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Search latency for fresh writes","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— newly created/updated objects don't appear in search instantly. Don't write-then-search; use returned IDs directly.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Clock skew","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— Redis is authoritative. Don't use","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"time()","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"from each worker for window scoring; use","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"redis.call('TIME')","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"inside the Lua script.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Dead workers with held tokens","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— sliding-window-log handles this naturally because tokens expire by score; token-bucket implementations need explicit release-on-crash logic.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"The 5% error rule","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"counts every 429 toward your error budget, even successfully retried ones. If your pre-check is working well, 429s should be near zero — if they're not, your pre-check is wrong, not just slow.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Phantom contention with Laravel","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"RateLimited","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"middleware","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":": it's per-job-class by default, not per-portal. If your","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"SyncDealJob","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"and","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"UpdateActivityJob","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"are different classes both calling HubSpot, they don't share a Laravel-level limiter — you need a single","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"HubspotRateLimiter","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"service that everything routes through.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"If you want, I can sketch the Lua script for the sliding-window acquire and the Laravel service wrapper around it.","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Copy","depth":22,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Give positive feedback","depth":22,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Give negative feedback","depth":22,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Retry","depth":22,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXHeading","text":"You said: What will happen if there are two different types of rate limits?","depth":20,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"You said: What will happen if there are two different types of rate limits?","depth":21,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"What will happen if there are two different types of rate limits?","depth":24,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Search requests that have 5 requests per second","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"The other rate limit that has, let's say, 100 requests per 10 seconds How do these work together? Is there some conflict? Can I reach the limit with one request and block either as well, or are these separated? Can I still continue making search requests once I hit the normal requests limits?","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"13:40","depth":22,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Retry","depth":22,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Edit","depth":22,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Copy","depth":22,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXHeading","text":"Claude responded: They're independent buckets — with one shared bucket on top.","depth":21,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"Claude responded: They're independent buckets — with one shared bucket on top.","depth":22,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Analyzed independent rate limit buckets and their practical interactions","depth":22,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Analyzed independent rate limit buckets and their practical interactions","depth":23,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"They're independent buckets — with one shared bucket on top.","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"The three buckets and what each call hits","depth":24,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"The three buckets and what each call hits","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Copy to clipboard","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"┌──────────────────┐","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Search request ──→ │ Search: 5/sec │ ──┐","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"└──────────────────┘ │","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"├──→ ┌─────────────────┐","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"┌──────────────────┐ │ │ Daily: 250k–1M │","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Non-search call ──→ │ Burst: 190/10s │ ──┘ │ (per portal) │","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"└──────────────────┘ └─────────────────┘","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"A search call is only metered against the search bucket and the daily bucket. A non-search call (batch read/update, single PATCH, associations, etc.) is only metered against the burst bucket and the daily bucket. The two short-window buckets do not share counters.","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"What this means practically","depth":24,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"What this means practically","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Hitting search secondly limit (5/s):","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Only further","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/search","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"calls 429. Your batch reads, batch updates, single PATCHes, association calls — all keep working at full burst speed. This is actually useful: if your sync is bottlenecked on Search, you can pivot to using","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"lastmodifieddate","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"filters via batch endpoints, or use the IDs you already have to do batch reads, while Search cools off.","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Hitting burst limit (190/10s):","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Only non-search calls 429. You can still issue Search calls at 5/s. Useful for: continuing to identify deltas for queueing while in-flight updates drain, or refreshing a small set of records via Search even though your write pipeline is paused.","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Hitting daily limit:","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Everything stops. Search and non-search alike. Doesn't unblock until midnight in your portal's configured timezone — and remember this is shared across every private app in the portal, plus n8n flows, marketing tools, anything else hitting the API with that account.","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"So can one type of request block the other?","depth":24,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"So can one type of request block the other?","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Search → Burst:","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"No.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Saturating Search at 50 calls per 10s leaves your full 190/10s burst untouched.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Burst → Search:","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"No.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Saturating burst leaves Search's 5/s untouched.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Either → Daily:","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Yes","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", but only by contributing to the same daily counter. It's volume that kills you here, not the type.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"In theory you can sustain ~50 search + ~190 other =","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"~240 calls per 10 seconds","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"indefinitely (until daily runs out), because the two buckets bill independently.","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"Implementation consequence","depth":24,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"Implementation consequence","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Your rate limiter needs to know which bucket a request hits before it acquires. Cleanest pattern:","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Copy to clipboard","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"php","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"$limiter","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"->","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"acquire","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"(","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"'search'","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":",","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"$weight","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"=","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":")","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":";","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"// for search endpoints only","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"$limiter","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"->","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"acquire","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"(","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"'burst'","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":",","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"$weight","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"=","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":")","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":";","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"// for everything else","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"$limiter","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"->","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"acquire","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"(","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"'daily'","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":",","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"$weight","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"=","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":")","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":";","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"// every call, both kinds","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"In Redis: three separate keys, three separate Lua acquire scripts (or one script with a bucket parameter). A search call calls","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"acquire('search')","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"acquire('daily')","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":". A batch update calls","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"acquire('burst')","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"acquire('daily')","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":".","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"One subtle pitfall: when you backoff on a 429,","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"inspect","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"policyName","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"in the response body","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"to know which bucket actually fired. If you see","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"SECONDLY","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"from a search endpoint, you only need to delay search-bound jobs — burst-bound jobs in the queue can keep running. If you blanket-pause everything on any 429, you waste capacity on the bucket that's still healthy. Two queues (or two throttle keys) make this clean; one global pause is the lazy version.","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"The other subtlety: the burst response gives you","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"X-HubSpot-RateLimit-Remaining","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"to clamp local state against, but search doesn't return those headers. So your search counter is unverified — be slightly more conservative there (e.g., budget 4/s instead of 5) to absorb the unaccounted-for calls.","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Copy","depth":22,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Give positive feedback","depth":22,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Give negative feedback","depth":22,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Retry","depth":22,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXHeading","text":"You said: Ok, so what will happen each time I make a request?","depth":20,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"You said: Ok, so what will happen each time I make a request?","depth":21,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Ok, so what will happen each time I make a request? Let's say I have 100,000 requests to make that are instant. Do I need to increment each request based on the type? For example, if there is a search request, I need to increment both the search bucket and also the daily bucket. If it's a burst, then I can go to the daily and burst buckets. If I need to check if it can make a call, do I need to see both the daily and search, or burst, respectively? Isn't that too heavy for the infrastructure, adding additional load to each request?","depth":24,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"13:44","depth":22,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Retry","depth":22,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Edit","depth":22,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Copy","depth":22,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXHeading","text":"Claude responded: Yes, your understanding is correct — every request must check and reserve from each bucket it applies to, atomically, before the call goes out.","depth":21,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"Claude responded: Yes, your understanding is correct — every request must check and reserve from each bucket it applies to, atomically, before the call goes out.","depth":22,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Analyzed per-request overhead concerns and quantified Redis performance impact","depth":22,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Analyzed per-request overhead concerns and quantified Redis performance impact","depth":23,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Yes, your understanding is correct — every request must check and reserve from each bucket it applies to, atomically, before the call goes out. But the overhead is much smaller than it sounds, and importantly, it's nowhere near your bottleneck.","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"What \"two buckets per request\" actually costs","depth":24,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"What \"two buckets per request\" actually costs","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Each request makes","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"one round trip to Redis","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— not two — because you fold both bucket checks into a single Lua script that runs atomically server-side:","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Copy to clipboard","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"lua","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"-- KEYS[1] = burst bucket key (or search)","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"-- KEYS[2] = daily bucket key","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"-- ARGV[1] = now (ms) ARGV[2] = window_ms","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"-- ARGV[3] = bucket_max ARGV[4] = daily_max","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"-- ARGV[5] = request_id ARGV[6] = daily_ttl","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"-- Trim sliding window","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"redis","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":".","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"call","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"(","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"'ZREMRANGEBYSCORE'","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":",","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"KEYS","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"[","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"]","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":",","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"0","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":",","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"ARGV","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"[","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"]","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"-","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"ARGV","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"[","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"2","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"]","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":")","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"local","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"burst_used","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"=","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"redis","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":".","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"call","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"(","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"'ZCARD'","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":",","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"KEYS","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"[","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"]","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":")","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"local","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"daily_used","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"=","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"tonumber","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"(","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"redis","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":".","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"call","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"(","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"'GET'","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":",","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"KEYS","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"[","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"2","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"]","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":")","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"or","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"'0'","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":")","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"if","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"burst_used","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":">=","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"tonumber","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"(","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"ARGV","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"[","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"3","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"]","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":")","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"then","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"-- Tell caller how long to sleep until oldest entry expires","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"local","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"oldest","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"=","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"redis","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":".","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"call","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"(","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"'ZRANGE'","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":",","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"KEYS","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"[","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"]","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":",","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"0","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":",","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"0","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":",","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"'WITHSCORES'","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":")","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"return","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"{","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"0","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":",","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"'BURST'","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":",","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"(","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"oldest","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"[","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"2","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"]","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"ARGV","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"[","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"2","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"]","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":")","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"-","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"ARGV","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"[","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"]","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"}","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"end","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"if","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"daily_used","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":">=","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"tonumber","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"(","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"ARGV","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"[","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"4","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"]","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":")","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"then","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"return","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"{","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"0","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":",","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"'DAILY'","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":",","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"-","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"}","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"end","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"}]...
|
5356894363347964202
|
-6913395462521398188
|
idle
|
accessibility
|
NULL
|
Skip to content
Skip to content
Click to collapse
Skip to content
Skip to content
Click to collapse
⌘B
Drag to resize
Open sidebar
Chat
Cowork
Code
New chat ⌘N
New chat
⌘N
Projects
Artifacts
Customize
Pinned
Bulgarian citizenship application process for EU residents
More options for Bulgarian citizenship application process for EU residents
Dawarich location tracking project
More options for Dawarich location tracking project
Recents
View all
HubSpot rate limit implementation strategy
More options for HubSpot rate limit implementation strategy
Screenpipe retention policy code location
More options for Screenpipe retention policy code location
Viewing retention policy in screenpipe
More options for Viewing retention policy in screenpipe
Clean shot x video recording termination issue
More options for Clean shot x video recording termination issue
HubSpot rate limit handling with executeRequest
More options for HubSpot rate limit handling with executeRequest
Untitled
More options
💬 Screen pipe. Is there ability…
More options for 💬 Screen pipe. Is there ability…
SMB mount access inconsistency between Finder and iTerm
More options for SMB mount access inconsistency between Finder and iTerm
💬 What is the best switch I can…
More options for 💬 What is the best switch I can…
Permission denied on screenpipe volume
More options for Permission denied on screenpipe volume
Screenpipe sync database attachment error
More options for Screenpipe sync database attachment error
Last swimming outing with Dani
More options for Last swimming outing with Dani
Definition of incarcerated
More options for Definition of incarcerated
Chromecast remote volume buttons not working
More options for Chromecast remote volume buttons not working
Salesforce API errors with Organization and FieldDefinition queries
More options for Salesforce API errors with Organization and FieldDefinition queries
Daily activity summary from screenpipe data
More options for Daily activity summary from screenpipe data
MacBook unexpected restarts and kanji screen
More options for MacBook unexpected restarts and kanji screen
Security patch review and testing guidance
More options for Security patch review and testing guidance
Food calorie values reference
More options for Food calorie values reference
Tracking location history from last week
More options for Tracking location history from last week
Lukas Pro
Get apps and extensions
HubSpot rate limit implementation strategy, rename chat
HubSpot rate limit implementation strategy
More options for HubSpot rate limit implementation strategy
Open sidebar
Share chat
Claude finished the response
You said: So just a solution for rate limit implementation.
You said: So just a solution for rate limit implementation.
So just a solution for rate limit implementation. The situation currently is that there are some daily and secondary limits for HubSpot. I would like to make sure I never reach a 429 error rate limit. The requests can come from any flow. It can be:
updating activity (engagement, meeting, call, note)
searching for a company or contact
updating deal
patching IDs
Review what the limit is at the moment in the HubSpot documentation and then think of the solution:
where to store it
how to read it
how to work with multiple jobs
how to work with paginated requests Let's consider a situation when there are 600 opportunities to sync. What would be the flow? How would the rate limit be recognized? How would it be handled? What are the potential issues? [API usage guidelines and limits - HubSpot docs](
https://developers.hubspot.com/docs/developer-tooling/platform/usage-guidelines
https://developers.hubspot.com/docs/developer-tooling/platform/usage-guidelines
). Example of such a error Client error:
POST https://api.hubapi.com/crm/v3/objects/contact/search
resulted in a
429 Too Many Requests
response: {"status":"error","message":"You have reached your secondly limit.","errorType":"RATE_LIMIT","correlationId":"019dffc4-4 (truncated...). Think carefully about the implementation and potential issue and bottlenecks.
Show more
10:42
Retry
Edit
Copy
Claude responded: Current HubSpot limits (Apr 2026)
Claude responded: Current HubSpot limits (Apr 2026)
Synthesized HubSpot rate limit architecture with Redis storage and sliding window algorithms
Synthesized HubSpot rate limit architecture with Redis storage and sliding window algorithms
Current HubSpot limits (Apr 2026)
Current HubSpot limits (Apr 2026)
For privately distributed apps (which is what Jiminny presumably uses with HubSpot), the limits are layered: a per-app burst window of 100/10s on Free/Starter, 190/10s on Pro/Enterprise, or 250/10s with the API Limit Increase add-on
, plus a per-account daily cap of 250k / 625k / 1M depending on tier — shared across all private apps in the account
. The burst window is per app; the daily quota is per portal.
hubspot
hubspot
hubspot
hubspot
The Search API is special: five requests per second per account, capped at 200 records per page, with a hard 10,000-result ceiling per query
. That's the limit the 429 in your example is hitting (
secondly limit
on
/crm/v3/objects/contact/search
). It's a separate bucket from the 190/10s, and critically, search responses do not include the
X-HubSpot-RateLimit-*
headers
— you can't read remaining capacity off the response, you have to track it yourself.
hubspot
hubspot
hubspot
hubspot
Non-search endpoints return
X-HubSpot-RateLimit-Remaining
,
-Max
, and
-Interval-Milliseconds
. The daily headers are not returned for OAuth-authenticated calls
, so for those you check the account-info endpoint or maintain your own counter. There's also a soft rule: errors should stay under 5% of total daily requests
— that's enforced for marketplace listing, but it's also a sane operational target.
hubspot
hubspot
hubspot
hubspot
So you have
four buckets
to track at minimum: app-burst (10s sliding), search-secondly (1s sliding), account-daily (24h fixed, midnight in HubSpot's TZ), and per-app daily share (your own budgeting on top of the account cap).
Where to store it
Where to store it
Redis. It's the only realistic option once you have multiple queue workers — DB-backed counters serialize too much, and in-process state can't coordinate across workers. Laravel already speaks Redis natively, and you get atomic
INCR
/
EXPIRE
plus Lua scripting for true CAS semantics.
Key layout I'd use:
Copy to clipboard
hubspot:rl:burst:{portalId}:{appId} ZSET (sliding 10s)
hubspot:rl:search:{portalId} ZSET (sliding 1s)
hubspot:rl:daily:{portalId} STRING + TTL to midnight TZ
hubspot:rl:meta:{portalId} HASH (last seen headers)
The two short-window buckets are sliding-window-log (Redis ZSET, score =
microtime
, member = unique request id). Lua script removes entries older than the window, counts remaining slots, and only adds the new one if there's room — all atomic. Fixed windows are simpler but allow 2× the limit at the boundary, which on a 5/s window is brutal.
The daily bucket is a plain
INCR
with TTL set to seconds-until-midnight in
HubSpot's account timezone
, not yours — Sofia is UTC+2/+3 but your portal might be set to US Eastern. Get this once and cache it.
How to read it
How to read it
Two-phase: optimistic pre-check, authoritative post-update.
Before a call, run the Lua acquire script. If it returns "denied," sleep until a slot frees up (the script can return ms-until-next-slot) or push the job back to the queue with a delay. Don't busy-loop.
After the call, parse
X-HubSpot-RateLimit-Remaining
/
-Max
/
-Interval-Milliseconds
and store them in
hubspot:rl:meta:{portalId}
. This is your reality check — if your local counter says 50 remaining but HubSpot's header says 5, you trust HubSpot and clamp your counter. This handles clock drift, missed accounting (e.g., crashed worker that took a token but never made the request), and other apps in the same account consuming the daily budget invisibly.
For search specifically, since headers don't come back, the local counter
is
the source of truth — meaning if you ever crash mid-flight, you've under-counted. Always release tokens on connection-level failure but
not
on 429 (you really did make that request).
How to work with multiple jobs
How to work with multiple jobs
The queue layer needs to enforce concurrency separately from the rate limiter. Both work together:
Concurrency cap
via
Queue::throttle()
or a Redis semaphore — limits how many sync workers run in parallel against HubSpot. Without this, you can have 50 workers all blocked waiting for tokens, which is wasteful and creates retry storms.
Per-tenant fairness
— if you sync many Jiminny customers into different HubSpot portals, each portal has its own bucket but you still want one slow portal not to starve others. Either separate queues per portal or a fair-share scheduler.
Priority lanes
— webhook-driven updates (user-visible latency) should outrank background batch syncs. Two queues:
hubspot-priority
and
hubspot-bulk
, with priority workers taking 70% of the burst budget and bulk taking 30% (enforce via separate sub-buckets if you really want hard separation, otherwise just pull from priority first).
Backoff on 429
— respect the
Retry-After
header. If absent, exponential with jitter (e.g.,
min(2^attempt * 250ms, 30s) ± 20%
). The jitter is non-negotiable; without it, simultaneous 429s retry in lockstep and you get thundering-herd 429s on retry.
How to work with paginated requests
How to work with paginated requests
The trap is treating "fetch all" as one logical operation. Each page is its own API call and competes for tokens with everything else.
Two practical rules:
Don't hold the worker idle while paginating.
If page N takes 500ms and page N+1 needs to wait 800ms for a token, you've burned 800ms of worker time doing nothing. Instead, fetch page N, dispatch the
processing
of page N as a separate job, and queue a "fetch page N+1" job with a delay equal to the wait time. Each page becomes its own atomic unit.
Always batch where HubSpot offers it.
POST /crm/v3/objects/{type}/batch/{read|update|create}
accepts up to 100 IDs per call. For your "patching IDs" flow this is the difference between 600 calls and 6.
Walkthrough: 600 opportunities
Walkthrough: 600 opportunities
Naive flow (one PATCH per deal): 600 calls. At 190/10s that's ~32s of API time, well under daily. You'd hit burst easily without throttling. Plus likely 1-3 search calls upfront and N association calls.
Sane flow:
Identify deltas
— if you can avoid Search at all, do. Use
lastmodifieddate
filter on a single search if you must, paginate at limit=200. For 600 deals that's 3 search calls @ 5/s = ~600ms naturally throttled.
Batch read
current state —
POST /crm/v3/objects/deals/batch/read
with 100 IDs per call → 6 calls. Burst weight 6.
Compute diff
in your code (no API).
Batch update
—
POST /crm/v3/objects/deals/batch/update
with 100 per call → 6 calls.
Associations
—
POST /crm/v4/associations/{from}/{to}/batch/create
if needed → another few batch calls.
Total: ~15-20 API calls for 600 deals. Burst budget consumed: 20/190 over ~5s. Daily impact: trivial.
Recognition: pre-check denies if
<weight>
slots aren't free; on 429 the response surfaces
policyName
(DAILY/SECONDLY) — log it, push the job back with
Retry-After
delay, increment a metric so you can alarm on sustained 429 rate.
Pitfalls & bottlenecks worth pre-empting
Pitfalls & bottlenecks worth pre-empting
Daily quota is shared across the whole portal
, including any n8n flows, other private apps, marketing automation calling APIs, etc. Budget for ~70-80% of the documented limit, not 100%. Add an internal per-app daily cap so a runaway sync can't starve other apps.
Search is uniquely fragile
: separate 5/s bucket, no headers to read, 10k-result cap per query. If you ever hit 10k+ deals matching a filter, partition by
hs_object_id
ranges or by
lastmodifieddate
windows.
Retry storms after HubSpot incidents
— always jitter, always cap total retries (e.g., 5 attempts, then dead-letter).
Webhook → sync → webhook loops
— when your update fires a HubSpot webhook that triggers another sync. Tag your own writes (e.g., a custom property
jy_last_sync_id
) and ignore webhooks where it just changed.
Token refresh
— OAuth refresh itself counts against burst. Cache the access token in Redis with TTL =
expires_in - 60s
, single-flight the refresh (only one worker refreshes; others wait on a lock).
Search latency for fresh writes
— newly created/updated objects don't appear in search instantly. Don't write-then-search; use returned IDs directly.
Clock skew
— Redis is authoritative. Don't use
time()
from each worker for window scoring; use
redis.call('TIME')
inside the Lua script.
Dead workers with held tokens
— sliding-window-log handles this naturally because tokens expire by score; token-bucket implementations need explicit release-on-crash logic.
The 5% error rule
counts every 429 toward your error budget, even successfully retried ones. If your pre-check is working well, 429s should be near zero — if they're not, your pre-check is wrong, not just slow.
Phantom contention with Laravel
RateLimited
middleware
: it's per-job-class by default, not per-portal. If your
SyncDealJob
and
UpdateActivityJob
are different classes both calling HubSpot, they don't share a Laravel-level limiter — you need a single
HubspotRateLimiter
service that everything routes through.
If you want, I can sketch the Lua script for the sliding-window acquire and the Laravel service wrapper around it.
Copy
Give positive feedback
Give negative feedback
Retry
You said: What will happen if there are two different types of rate limits?
You said: What will happen if there are two different types of rate limits?
What will happen if there are two different types of rate limits?
Search requests that have 5 requests per second
The other rate limit that has, let's say, 100 requests per 10 seconds How do these work together? Is there some conflict? Can I reach the limit with one request and block either as well, or are these separated? Can I still continue making search requests once I hit the normal requests limits?
13:40
Retry
Edit
Copy
Claude responded: They're independent buckets — with one shared bucket on top.
Claude responded: They're independent buckets — with one shared bucket on top.
Analyzed independent rate limit buckets and their practical interactions
Analyzed independent rate limit buckets and their practical interactions
They're independent buckets — with one shared bucket on top.
The three buckets and what each call hits
The three buckets and what each call hits
Copy to clipboard
┌──────────────────┐
Search request ──→ │ Search: 5/sec │ ──┐
└──────────────────┘ │
├──→ ┌─────────────────┐
┌──────────────────┐ │ │ Daily: 250k–1M │
Non-search call ──→ │ Burst: 190/10s │ ──┘ │ (per portal) │
└──────────────────┘ └─────────────────┘
A search call is only metered against the search bucket and the daily bucket. A non-search call (batch read/update, single PATCH, associations, etc.) is only metered against the burst bucket and the daily bucket. The two short-window buckets do not share counters.
What this means practically
What this means practically
Hitting search secondly limit (5/s):
Only further
/search
calls 429. Your batch reads, batch updates, single PATCHes, association calls — all keep working at full burst speed. This is actually useful: if your sync is bottlenecked on Search, you can pivot to using
lastmodifieddate
filters via batch endpoints, or use the IDs you already have to do batch reads, while Search cools off.
Hitting burst limit (190/10s):
Only non-search calls 429. You can still issue Search calls at 5/s. Useful for: continuing to identify deltas for queueing while in-flight updates drain, or refreshing a small set of records via Search even though your write pipeline is paused.
Hitting daily limit:
Everything stops. Search and non-search alike. Doesn't unblock until midnight in your portal's configured timezone — and remember this is shared across every private app in the portal, plus n8n flows, marketing tools, anything else hitting the API with that account.
So can one type of request block the other?
So can one type of request block the other?
Search → Burst:
No.
Saturating Search at 50 calls per 10s leaves your full 190/10s burst untouched.
Burst → Search:
No.
Saturating burst leaves Search's 5/s untouched.
Either → Daily:
Yes
, but only by contributing to the same daily counter. It's volume that kills you here, not the type.
In theory you can sustain ~50 search + ~190 other =
~240 calls per 10 seconds
indefinitely (until daily runs out), because the two buckets bill independently.
Implementation consequence
Implementation consequence
Your rate limiter needs to know which bucket a request hits before it acquires. Cleanest pattern:
Copy to clipboard
php
$limiter
->
acquire
(
'search'
,
$weight
=
1
)
;
// for search endpoints only
$limiter
->
acquire
(
'burst'
,
$weight
=
1
)
;
// for everything else
$limiter
->
acquire
(
'daily'
,
$weight
=
1
)
;
// every call, both kinds
In Redis: three separate keys, three separate Lua acquire scripts (or one script with a bucket parameter). A search call calls
acquire('search')
+
acquire('daily')
. A batch update calls
acquire('burst')
+
acquire('daily')
.
One subtle pitfall: when you backoff on a 429,
inspect
policyName
in the response body
to know which bucket actually fired. If you see
SECONDLY
from a search endpoint, you only need to delay search-bound jobs — burst-bound jobs in the queue can keep running. If you blanket-pause everything on any 429, you waste capacity on the bucket that's still healthy. Two queues (or two throttle keys) make this clean; one global pause is the lazy version.
The other subtlety: the burst response gives you
X-HubSpot-RateLimit-Remaining
to clamp local state against, but search doesn't return those headers. So your search counter is unverified — be slightly more conservative there (e.g., budget 4/s instead of 5) to absorb the unaccounted-for calls.
Copy
Give positive feedback
Give negative feedback
Retry
You said: Ok, so what will happen each time I make a request?
You said: Ok, so what will happen each time I make a request?
Ok, so what will happen each time I make a request? Let's say I have 100,000 requests to make that are instant. Do I need to increment each request based on the type? For example, if there is a search request, I need to increment both the search bucket and also the daily bucket. If it's a burst, then I can go to the daily and burst buckets. If I need to check if it can make a call, do I need to see both the daily and search, or burst, respectively? Isn't that too heavy for the infrastructure, adding additional load to each request?
13:44
Retry
Edit
Copy
Claude responded: Yes, your understanding is correct — every request must check and reserve from each bucket it applies to, atomically, before the call goes out.
Claude responded: Yes, your understanding is correct — every request must check and reserve from each bucket it applies to, atomically, before the call goes out.
Analyzed per-request overhead concerns and quantified Redis performance impact
Analyzed per-request overhead concerns and quantified Redis performance impact
Yes, your understanding is correct — every request must check and reserve from each bucket it applies to, atomically, before the call goes out. But the overhead is much smaller than it sounds, and importantly, it's nowhere near your bottleneck.
What "two buckets per request" actually costs
What "two buckets per request" actually costs
Each request makes
one round trip to Redis
— not two — because you fold both bucket checks into a single Lua script that runs atomically server-side:
Copy to clipboard
lua
-- KEYS[1] = burst bucket key (or search)
-- KEYS[2] = daily bucket key
-- ARGV[1] = now (ms) ARGV[2] = window_ms
-- ARGV[3] = bucket_max ARGV[4] = daily_max
-- ARGV[5] = request_id ARGV[6] = daily_ttl
-- Trim sliding window
redis
.
call
(
'ZREMRANGEBYSCORE'
,
KEYS
[
1
]
,
0
,
ARGV
[
1
]
-
ARGV
[
2
]
)
local
burst_used
=
redis
.
call
(
'ZCARD'
,
KEYS
[
1
]
)
local
daily_used
=
tonumber
(
redis
.
call
(
'GET'
,
KEYS
[
2
]
)
or
'0'
)
if
burst_used
>=
tonumber
(
ARGV
[
3
]
)
then
-- Tell caller how long to sleep until oldest entry expires
local
oldest
=
redis
.
call
(
'ZRANGE'
,
KEYS
[
1
]
,
0
,
0
,
'WITHSCORES'
)
return
{
0
,
'BURST'
,
(
oldest
[
2
]
+
ARGV
[
2
]
)
-
ARGV
[
1
]
}
end
if
daily_used
>=
tonumber
(
ARGV
[
4
]
)
then
return
{
0
,
'DAILY'
,
-
1
}
end...
|
2526
|
NULL
|
NULL
|
NULL
|
|
2530
|
NULL
|
0
|
2026-05-07T11:24:07.898992+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-07/1778 /Users/lukas/.screenpipe/data/data/2026-05-07/1778153047898_m2.jpg...
|
Claude
|
Claude
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Skip to content
Skip to content
Click to collapse
Skip to content
Skip to content
Click to collapse
⌘B
Drag to resize
Open sidebar
Chat
Cowork
Code
New chat ⌘N
New chat
⌘N
Projects
Artifacts
Customize
Pinned
Bulgarian citizenship application process for EU residents
More options for Bulgarian citizenship application process for EU residents
Dawarich location tracking project
More options for Dawarich location tracking project
Recents
View all
HubSpot rate limit implementation strategy
More options for HubSpot rate limit implementation strategy
Screenpipe retention policy code location
More options for Screenpipe retention policy code location
Viewing retention policy in screenpipe
More options for Viewing retention policy in screenpipe
Clean shot x video recording termination issue
More options for Clean shot x video recording termination issue
HubSpot rate limit handling with executeRequest
More options for HubSpot rate limit handling with executeRequest
Untitled
More options
💬 Screen pipe. Is there ability…
More options for 💬 Screen pipe. Is there ability…
SMB mount access inconsistency between Finder and iTerm
More options for SMB mount access inconsistency between Finder and iTerm
💬 What is the best switch I can…
More options for 💬 What is the best switch I can…
Permission denied on screenpipe volume
More options for Permission denied on screenpipe volume
Screenpipe sync database attachment error
More options for Screenpipe sync database attachment error
Last swimming outing with Dani
More options for Last swimming outing with Dani
Definition of incarcerated
More options for Definition of incarcerated
Chromecast remote volume buttons not working
More options for Chromecast remote volume buttons not working
Salesforce API errors with Organization and FieldDefinition queries
More options for Salesforce API errors with Organization and FieldDefinition queries
Daily activity summary from screenpipe data
More options for Daily activity summary from screenpipe data
MacBook unexpected restarts and kanji screen
More options for MacBook unexpected restarts and kanji screen
Security patch review and testing guidance
More options for Security patch review and testing guidance
Food calorie values reference
More options for Food calorie values reference
Tracking location history from last week
More options for Tracking location history from last week
Lukas Pro
Get apps and extensions
HubSpot rate limit implementation strategy, rename chat
HubSpot rate limit implementation strategy
More options for HubSpot rate limit implementation strategy
Open sidebar
Share chat
Claude finished the response
You said: So just a solution for rate limit implementation.
You said: So just a solution for rate limit implementation.
So just a solution for rate limit implementation. The situation currently is that there are some daily and secondary limits for HubSpot. I would like to make sure I never reach a 429 error rate limit. The requests can come from any flow. It can be:
updating activity (engagement, meeting, call, note)
searching for a company or contact
updating deal
patching IDs
Review what the limit is at the moment in the HubSpot documentation and then think of the solution:
where to store it
how to read it
how to work with multiple jobs
how to work with paginated requests Let's consider a situation when there are 600 opportunities to sync. What would be the flow? How would the rate limit be recognized? How would it be handled? What are the potential issues? [API usage guidelines and limits - HubSpot docs](
https://developers.hubspot.com/docs/developer-tooling/platform/usage-guidelines
https://developers.hubspot.com/docs/developer-tooling/platform/usage-guidelines
). Example of such a error Client error:
POST https://api.hubapi.com/crm/v3/objects/contact/search
resulted in a
429 Too Many Requests
response: {"status":"error","message":"You have reached your secondly limit.","errorType":"RATE_LIMIT","correlationId":"019dffc4-4 (truncated...). Think carefully about the implementation and potential issue and bottlenecks.
Show more
10:42
Retry
Edit
Copy
Claude responded: Current HubSpot limits (Apr 2026)
Claude responded: Current HubSpot limits (Apr 2026)
Synthesized HubSpot rate limit architecture with Redis storage and sliding window algorithms
Synthesized HubSpot rate limit architecture with Redis storage and sliding window algorithms
Current HubSpot limits (Apr 2026)
Current HubSpot limits (Apr 2026)
For privately distributed apps (which is what Jiminny presumably uses with HubSpot), the limits are layered: a per-app burst window of 100/10s on Free/Starter, 190/10s on Pro/Enterprise, or 250/10s with the API Limit Increase add-on
, plus a per-account daily cap of 250k / 625k / 1M depending on tier — shared across all private apps in the account
. The burst window is per app; the daily quota is per portal.
hubspot
hubspot
hubspot
hubspot
The Search API is special: five requests per second per account, capped at 200 records per page, with a hard 10,000-result ceiling per query
. That's the limit the 429 in your example is hitting (
secondly limit
on
/crm/v3/objects/contact/search
). It's a separate bucket from the 190/10s, and critically, search responses do not include the
X-HubSpot-RateLimit-*
headers
— you can't read remaining capacity off the response, you have to track it yourself.
hubspot
hubspot
hubspot
hubspot
Non-search endpoints return
X-HubSpot-RateLimit-Remaining
,
-Max
, and
-Interval-Milliseconds
. The daily headers are not returned for OAuth-authenticated calls
, so for those you check the account-info endpoint or maintain your own counter. There's also a soft rule: errors should stay under 5% of total daily requests
— that's enforced for marketplace listing, but it's also a sane operational target.
hubspot
hubspot
hubspot
hubspot
So you have
four buckets
to track at minimum: app-burst (10s sliding), search-secondly (1s sliding), account-daily (24h fixed, midnight in HubSpot's TZ), and per-app daily share (your own budgeting on top of the account cap).
Where to store it
Where to store it
Redis. It's the only realistic option once you have multiple queue workers — DB-backed counters serialize too much, and in-process state can't coordinate across workers. Laravel already speaks Redis natively, and you get atomic
INCR
/
EXPIRE
plus Lua scripting for true CAS semantics.
Key layout I'd use:
Copy to clipboard
hubspot:rl:burst:{portalId}:{appId} ZSET (sliding 10s)
hubspot:rl:search:{portalId} ZSET (sliding 1s)
hubspot:rl:daily:{portalId} STRING + TTL to midnight TZ
hubspot:rl:meta:{portalId} HASH (last seen headers)
The two short-window buckets are sliding-window-log (Redis ZSET, score =
microtime
, member = unique request id). Lua script removes entries older than the window, counts remaining slots, and only adds the new one if there's room — all atomic. Fixed windows are simpler but allow 2× the limit at the boundary, which on a 5/s window is brutal.
The daily bucket is a plain
INCR
with TTL set to seconds-until-midnight in
HubSpot's account timezone
, not yours — Sofia is UTC+2/+3 but your portal might be set to US Eastern. Get this once and cache it.
How to read it
How to read it
Two-phase: optimistic pre-check, authoritative post-update.
Before a call, run the Lua acquire script. If it returns "denied," sleep until a slot frees up (the script can return ms-until-next-slot) or push the job back to the queue with a delay. Don't busy-loop.
After the call, parse
X-HubSpot-RateLimit-Remaining
/
-Max
/
-Interval-Milliseconds
and store them in
hubspot:rl:meta:{portalId}
. This is your reality check — if your local counter says 50 remaining but HubSpot's header says 5, you trust HubSpot and clamp your counter. This handles clock drift, missed accounting (e.g., crashed worker that took a token but never made the request), and other apps in the same account consuming the daily budget invisibly.
For search specifically, since headers don't come back, the local counter
is
the source of truth — meaning if you ever crash mid-flight, you've under-counted. Always release tokens on connection-level failure but
not
on 429 (you really did make that request).
How to work with multiple jobs
How to work with multiple jobs
The queue layer needs to enforce concurrency separately from the rate limiter. Both work together:
Concurrency cap
via
Queue::throttle()
or a Redis semaphore — limits how many sync workers run in parallel against HubSpot. Without this, you can have 50 workers all blocked waiting for tokens, which is wasteful and creates retry storms.
Per-tenant fairness
— if you sync many Jiminny customers into different HubSpot portals, each portal has its own bucket but you still want one slow portal not to starve others. Either separate queues per portal or a fair-share scheduler.
Priority lanes
— webhook-driven updates (user-visible latency) should outrank background batch syncs. Two queues:
hubspot-priority
and
hubspot-bulk
, with priority workers taking 70% of the burst budget and bulk taking 30% (enforce via separate sub-buckets if you really want hard separation, otherwise just pull from priority first).
Backoff on 429
— respect the
Retry-After
header. If absent, exponential with jitter (e.g.,
min(2^attempt * 250ms, 30s) ± 20%
). The jitter is non-negotiable; without it, simultaneous 429s retry in lockstep and you get thundering-herd 429s on retry.
How to work with paginated requests
How to work with paginated requests
The trap is treating "fetch all" as one logical operation. Each page is its own API call and competes for tokens with everything else.
Two practical rules:
Don't hold the worker idle while paginating.
If page N takes 500ms and page N+1 needs to wait 800ms for a token, you've burned 800ms of worker time doing nothing. Instead, fetch page N, dispatch the
processing
of page N as a separate job, and queue a "fetch page N+1" job with a delay equal to the wait time. Each page becomes its own atomic unit.
Always batch where HubSpot offers it.
POST /crm/v3/objects/{type}/batch/{read|update|create}
accepts up to 100 IDs per call. For your "patching IDs" flow this is the difference between 600 calls and 6.
Walkthrough: 600 opportunities
Walkthrough: 600 opportunities
Naive flow (one PATCH per deal): 600 calls. At 190/10s that's ~32s of API time, well under daily. You'd hit burst easily without throttling. Plus likely 1-3 search calls upfront and N association calls.
Sane flow:
Identify deltas
— if you can avoid Search at all, do. Use
lastmodifieddate
filter on a single search if you must, paginate at limit=200. For 600 deals that's 3 search calls @ 5/s = ~600ms naturally throttled.
Batch read
current state —
POST /crm/v3/objects/deals/batch/read
with 100 IDs per call → 6 calls. Burst weight 6.
Compute diff
in your code (no API).
Batch update
—
POST /crm/v3/objects/deals/batch/update
with 100 per call → 6 calls.
Associations
—
POST /crm/v4/associations/{from}/{to}/batch/create
if needed → another few batch calls.
Total: ~15-20 API calls for 600 deals. Burst budget consumed: 20/190 over ~5s. Daily impact: trivial.
Recognition: pre-check denies if
<weight>
slots aren't free; on 429 the response surfaces
policyName
(DAILY/SECONDLY) — log it, push the job back with
Retry-After
delay, increment a metric so you can alarm on sustained 429 rate.
Pitfalls & bottlenecks worth pre-empting
Pitfalls & bottlenecks worth pre-empting
Daily quota is shared across the whole portal
, including any n8n flows, other private apps, marketing automation calling APIs, etc. Budget for ~70-80% of the documented limit, not 100%. Add an internal per-app daily cap so a runaway sync can't starve other apps.
Search is uniquely fragile
: separate 5/s bucket, no headers to read, 10k-result cap per query. If you ever hit 10k+ deals matching a filter, partition by
hs_object_id
ranges or by
lastmodifieddate
windows.
Retry storms after HubSpot incidents
— always jitter, always cap total retries (e.g., 5 attempts, then dead-letter).
Webhook → sync → webhook loops
— when your update fires a HubSpot webhook that triggers another sync. Tag your own writes (e.g., a custom property
jy_last_sync_id
) and ignore webhooks where it just changed.
Token refresh
— OAuth refresh itself counts against burst. Cache the access token in Redis with TTL =
expires_in - 60s
, single-flight the refresh (only one worker refreshes; others wait on a lock).
Search latency for fresh writes
— newly created/updated objects don't appear in search instantly. Don't write-then-search; use returned IDs directly.
Clock skew
— Redis is authoritative. Don't use
time()
from each worker for window scoring; use
redis.call('TIME')
inside the Lua script.
Dead workers with held tokens
— sliding-window-log handles this naturally because tokens expire by score; token-bucket implementations need explicit release-on-crash logic.
The 5% error rule
counts every 429 toward your error budget, even successfully retried ones. If your pre-check is working well, 429s should be near zero — if they're not, your pre-check is wrong, not just slow.
Phantom contention with Laravel
RateLimited
middleware
: it's per-job-class by default, not per-portal. If your
SyncDealJob
and
UpdateActivityJob
are different classes both calling HubSpot, they don't share a Laravel-level limiter — you need a single
HubspotRateLimiter
service that everything routes through.
If you want, I can sketch the Lua script for the sliding-window acquire and the Laravel service wrapper around it.
Copy
Give positive feedback
Give negative feedback
Retry
You said: What will happen if there are two different types of rate limits?
You said: What will happen if there are two different types of rate limits?
What will happen if there are two different types of rate limits?
Search requests that have 5 requests per second
The other rate limit that has, let's say, 100 requests per 10 seconds How do these work together? Is there some conflict? Can I reach the limit with one request and block either as well, or are these separated? Can I still continue making search requests once I hit the normal requests limits?
13:40
Retry
Edit
Copy
Claude responded: They're independent buckets — with one shared bucket on top.
Claude responded: They're independent buckets — with one shared bucket on top.
Analyzed independent rate limit buckets and their practical interactions
Analyzed independent rate limit buckets and their practical interactions
They're independent buckets — with one shared bucket on top.
The three buckets and what each call hits
The three buckets and what each call hits
Copy to clipboard
┌──────────────────┐
Search request ──→ │ Search: 5/sec │ ──┐
└──────────────────┘ │
├──→ ┌─────────────────┐
┌──────────────────┐ │ │ Daily: 250k–1M │
Non-search call ──→ │ Burst: 190/10s │ ──┘ │ (per portal) │
└──────────────────┘ └─────────────────┘
A search call is only metered against the search bucket and the daily bucket. A non-search call (batch read/update, single PATCH, associations, etc.) is only metered against the burst bucket and the daily bucket. The two short-window buckets do not share counters.
What this means practically
What this means practically
Hitting search secondly limit (5/s):
Only further
/search
calls 429. Your batch reads, batch updates, single PATCHes, association calls — all keep working at full burst speed. This is actually useful: if your sync is bottlenecked on Search, you can pivot to using
lastmodifieddate
filters via batch endpoints, or use the IDs you already have to do batch reads, while Search cools off.
Hitting burst limit (190/10s):
Only non-search calls 429. You can still issue Search calls at 5/s. Useful for: continuing to identify deltas for queueing while in-flight updates drain, or refreshing a small set of records via Search even though your write pipeline is paused.
Hitting daily limit:
Everything stops. Search and non-search alike. Doesn't unblock until midnight in your portal's configured timezone — and remember this is shared across every private app in the portal, plus n8n flows, marketing tools, anything else hitting the API with that account.
So can one type of request block the other?
So can one type of request block the other?
Search → Burst:
No.
Saturating Search at 50 calls per 10s leaves your full 190/10s burst untouched.
Burst → Search:
No.
Saturating burst leaves Search's 5/s untouched.
Either → Daily:
Yes
, but only by contributing to the same daily counter. It's volume that kills you here, not the type.
In theory you can sustain ~50 search + ~190 other =
~240 calls per 10 seconds
indefinitely (until daily runs out), because the two buckets bill independently.
Implementation consequence
Implementation consequence
Your rate limiter needs to know which bucket a request hits before it acquires. Cleanest pattern:
Copy to clipboard
php
$limiter
->
acquire
(
'search'
,
$weight
=
1
)
;
// for search endpoints only
$limiter
->
acquire
(
'burst'
,
$weight
=
1
)
;
// for everything else
$limiter
->
acquire
(
'daily'
,
$weight
=
1
)
;
// every call, both kinds
In Redis: three separate keys, three separate Lua acquire scripts (or one script with a bucket parameter). A search call calls
acquire('search')
+
acquire('daily')
. A batch update calls
acquire('burst')
+
acquire('daily')
.
One subtle pitfall: when you backoff on a 429,
inspect
policyName
in the response body
to know which bucket actually fired. If you see
SECONDLY
from a search endpoint, you only need to delay search-bound jobs — burst-bound jobs in the queue can keep running. If you blanket-pause everything on any 429, you waste capacity on the bucket that's still healthy. Two queues (or two throttle keys) make this clean; one global pause is the lazy version.
The other subtlety: the burst response gives you
X-HubSpot-RateLimit-Remaining
to clamp local state against, but search doesn't return those headers. So your search counter is unverified — be slightly more conservative there (e.g., budget 4/s instead of 5) to absorb the unaccounted-for calls.
Copy
Give positive feedback
Give negative feedback
Retry
You said: Ok, so what will happen each time I make a request?
You said: Ok, so what will happen each time I make a request?
Ok, so what will happen each time I make a request? Let's say I have 100,000 requests to make that are instant. Do I need to increment each request based on the type? For example, if there is a search request, I need to increment both the search bucket and also the daily bucket. If it's a burst, then I can go to the daily and burst buckets. If I need to check if it can make a call, do I need to see both the daily and search, or burst, respectively? Isn't that too heavy for the infrastructure, adding additional load to each request?
13:44
Retry
Edit
Copy
Claude responded: Yes, your understanding is correct — every request must check and reserve from each bucket it applies to, atomically, before the call goes out.
Claude responded: Yes, your understanding is correct — every request must check and reserve from each bucket it applies to, atomically, before the call goes out.
Analyzed per-request overhead concerns and quantified Redis performance impact
Analyzed per-request overhead concerns and quantified Redis performance impact
Yes, your understanding is correct — every request must check and reserve from each bucket it applies to, atomically, before the call goes out. But the overhead is much smaller than it sounds, and importantly, it's nowhere near your bottleneck.
What "two buckets per request" actually costs
What "two buckets per request" actually costs
Each request makes
one round trip to Redis
— not two — because you fold both bucket checks into a single Lua script that runs atomically server-side:
Copy to clipboard
lua
-- KEYS[1] = burst bucket key (or search)
-- KEYS[2] = daily bucket key
-- ARGV[1] = now (ms) ARGV[2] = window_ms
-- ARGV[3] = bucket_max ARGV[4] = daily_max
-- ARGV[5] = request_id ARGV[6] = daily_ttl
-- Trim sliding window
redis
.
call
(
'ZREMRANGEBYSCORE'
,
KEYS
[
1
]
,
0
,
ARGV
[
1
]
-
ARGV
[
2
]
)
local
burst_used
=
redis
.
call
(
'ZCARD'
,
KEYS
[
1
]
)
local
daily_used...
|
[{"role":"AXLink","text":& [{"role":"AXLink","text":"Skip to content","depth":14,"bounds":{"left":0.029587766,"top":0.03830806,"width":0.0003324468,"height":0.0007980846},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Skip to content","depth":15,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Click to collapse","depth":16,"bounds":{"left":0.10239362,"top":0.06703911,"width":0.030585106,"height":0.011971269},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.10239362,"top":0.06703911,"width":0.0029920214,"height":0.011971269}},{"char_start":1,"char_count":16,"bounds":{"left":0.10538564,"top":0.06703911,"width":0.027925532,"height":0.011971269}}],"role_description":"text"},{"role":"AXStaticText","text":"⌘B","depth":16,"bounds":{"left":0.1349734,"top":0.06703911,"width":0.0063164895,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Drag to resize","depth":16,"bounds":{"left":0.10239362,"top":0.079010375,"width":0.025930852,"height":0.011971269},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.10239362,"top":0.079010375,"width":0.0029920214,"height":0.011971269}},{"char_start":1,"char_count":13,"bounds":{"left":0.10538564,"top":0.079010375,"width":0.022938829,"height":0.011971269}}],"role_description":"text"},{"role":"AXButton","text":"Open sidebar","depth":14,"bounds":{"left":0.029920213,"top":0.02793296,"width":0.00930851,"height":0.022346368},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Chat","depth":16,"bounds":{"left":0.004986702,"top":0.059856344,"width":0.025930852,"height":0.022346368},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Cowork","depth":16,"bounds":{"left":0.03158245,"top":0.059856344,"width":0.03125,"height":0.022346368},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code","depth":16,"bounds":{"left":0.0631649,"top":0.059856344,"width":0.026928192,"height":0.022346368},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"New chat ⌘N","depth":15,"bounds":{"left":0.0043218085,"top":0.08938547,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"New chat","depth":16,"bounds":{"left":0.014295213,"top":0.0933759,"width":0.018949468,"height":0.012769354},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.014295213,"top":0.0933759,"width":0.003656915,"height":0.013567438}},{"char_start":1,"char_count":7,"bounds":{"left":0.01761968,"top":0.0933759,"width":0.015957447,"height":0.013567438}}],"role_description":"text"},{"role":"AXStaticText","text":"⌘N","depth":17,"bounds":{"left":0.08178192,"top":0.0933759,"width":0.006981383,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Projects","depth":15,"bounds":{"left":0.0043218085,"top":0.110135674,"width":0.08643617,"height":0.019952115},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Artifacts","depth":15,"bounds":{"left":0.0043218085,"top":0.1300878,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Customize","depth":15,"bounds":{"left":0.0043218085,"top":0.15003991,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Pinned","depth":16,"bounds":{"left":0.0063164895,"top":0.18914606,"width":0.08377659,"height":0.013567438},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXButton","text":"Bulgarian citizenship application process for EU residents","depth":18,"bounds":{"left":0.0043218085,"top":0.20590582,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Bulgarian citizenship application process for EU residents","depth":19,"bounds":{"left":0.08344415,"top":0.20909816,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Dawarich location tracking project","depth":18,"bounds":{"left":0.0043218085,"top":0.22745411,"width":0.08643617,"height":0.019952115},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Dawarich location tracking project","depth":19,"bounds":{"left":0.08344415,"top":0.22984837,"width":0.005984043,"height":0.015163607},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Recents","depth":16,"bounds":{"left":0.0063164895,"top":0.25698325,"width":0.06349734,"height":0.012769354},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXButton","text":"View all","depth":16,"bounds":{"left":0.07114362,"top":0.25698325,"width":0.018949468,"height":0.012769354},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"HubSpot rate limit implementation strategy","depth":18,"bounds":{"left":0.0043218085,"top":0.27294493,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for HubSpot rate limit implementation strategy","depth":19,"bounds":{"left":0.08344415,"top":0.27613726,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Screenpipe retention policy code location","depth":18,"bounds":{"left":0.0043218085,"top":0.29449323,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Screenpipe retention policy code location","depth":19,"bounds":{"left":0.08344415,"top":0.29768556,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Viewing retention policy in screenpipe","depth":18,"bounds":{"left":0.0043218085,"top":0.31524342,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Viewing retention policy in screenpipe","depth":19,"bounds":{"left":0.08344415,"top":0.31843576,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Clean shot x video recording termination issue","depth":18,"bounds":{"left":0.0043218085,"top":0.3367917,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Clean shot x video recording termination issue","depth":19,"bounds":{"left":0.08344415,"top":0.33998403,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"HubSpot rate limit handling with executeRequest","depth":18,"bounds":{"left":0.0043218085,"top":0.3575419,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for HubSpot rate limit handling with executeRequest","depth":19,"bounds":{"left":0.08344415,"top":0.36073422,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Untitled","depth":18,"bounds":{"left":0.0043218085,"top":0.3790902,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options","depth":19,"bounds":{"left":0.08344415,"top":0.38228253,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"💬 Screen pipe. Is there ability…","depth":18,"bounds":{"left":0.0043218085,"top":0.39984038,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for 💬 Screen pipe. Is there ability…","depth":19,"bounds":{"left":0.08344415,"top":0.40303272,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"SMB mount access inconsistency between Finder and iTerm","depth":18,"bounds":{"left":0.0043218085,"top":0.42138866,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for SMB mount access inconsistency between Finder and iTerm","depth":19,"bounds":{"left":0.08344415,"top":0.4237829,"width":0.005984043,"height":0.015163607},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"💬 What is the best switch I can…","depth":18,"bounds":{"left":0.0043218085,"top":0.44213888,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for 💬 What is the best switch I can…","depth":19,"bounds":{"left":0.08344415,"top":0.44533122,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Permission denied on screenpipe volume","depth":18,"bounds":{"left":0.0043218085,"top":0.46288908,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Permission denied on screenpipe volume","depth":19,"bounds":{"left":0.08344415,"top":0.4660814,"width":0.005984043,"height":0.015163607},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Screenpipe sync database attachment error","depth":18,"bounds":{"left":0.0043218085,"top":0.48443735,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Screenpipe sync database attachment error","depth":19,"bounds":{"left":0.08344415,"top":0.48762968,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Last swimming outing with Dani","depth":18,"bounds":{"left":0.0043218085,"top":0.5051876,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Last swimming outing with Dani","depth":19,"bounds":{"left":0.08344415,"top":0.5083799,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Definition of incarcerated","depth":18,"bounds":{"left":0.0043218085,"top":0.52673584,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Definition of incarcerated","depth":19,"bounds":{"left":0.08344415,"top":0.52992815,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Chromecast remote volume buttons not working","depth":18,"bounds":{"left":0.0043218085,"top":0.547486,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Chromecast remote volume buttons not working","depth":19,"bounds":{"left":0.08344415,"top":0.5506784,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Salesforce API errors with Organization and FieldDefinition queries","depth":18,"bounds":{"left":0.0043218085,"top":0.56903434,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Salesforce API errors with Organization and FieldDefinition queries","depth":19,"bounds":{"left":0.08344415,"top":0.57222664,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Daily activity summary from screenpipe data","depth":18,"bounds":{"left":0.0043218085,"top":0.5897845,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Daily activity summary from screenpipe data","depth":19,"bounds":{"left":0.08344415,"top":0.59297687,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"MacBook unexpected restarts and kanji screen","depth":18,"bounds":{"left":0.0043218085,"top":0.6113328,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for MacBook unexpected restarts and kanji screen","depth":19,"bounds":{"left":0.08344415,"top":0.61452514,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Security patch review and testing guidance","depth":18,"bounds":{"left":0.0043218085,"top":0.632083,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Security patch review and testing guidance","depth":19,"bounds":{"left":0.08344415,"top":0.63527536,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Food calorie values reference","depth":18,"bounds":{"left":0.0043218085,"top":0.65363127,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Food calorie values reference","depth":19,"bounds":{"left":0.08344415,"top":0.65682364,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Tracking location history from last week","depth":18,"bounds":{"left":0.0043218085,"top":0.6743815,"width":0.08643617,"height":0.011173184},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Tracking location history from last week","depth":19,"bounds":{"left":0.08344415,"top":0.6775738,"width":0.005984043,"height":0.007980846},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"Lukas Pro","depth":15,"bounds":{"left":0.0043218085,"top":0.6943336,"width":0.037898935,"height":0.01915403},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Get apps and extensions","depth":15,"bounds":{"left":0.08277926,"top":0.6943336,"width":0.007978723,"height":0.01915403},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"HubSpot rate limit implementation strategy, rename chat","depth":19,"bounds":{"left":0.043218084,"top":0.02793296,"width":0.09773936,"height":0.022346368},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"HubSpot rate limit implementation strategy","depth":21,"bounds":{"left":0.04454787,"top":0.031923383,"width":0.09507979,"height":0.014365523},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.04454787,"top":0.031923383,"width":0.003656915,"height":0.014365523}},{"char_start":1,"char_count":41,"bounds":{"left":0.048204787,"top":0.031923383,"width":0.09142287,"height":0.014365523}}],"role_description":"text"},{"role":"AXPopUpButton","text":"More options for HubSpot rate limit implementation strategy","depth":19,"bounds":{"left":0.14128989,"top":0.02793296,"width":0.0066489363,"height":0.022346368},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Open sidebar","depth":21,"bounds":{"left":0.47340426,"top":0.026336791,"width":0.010638298,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Share chat","depth":21,"bounds":{"left":0.48537233,"top":0.026336791,"width":0.010638298,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Claude finished the response","depth":21,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"You said: So just a solution for rate limit implementation.","depth":20,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"You said: So just a solution for rate limit implementation.","depth":21,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"So just a solution for rate limit implementation. The situation currently is that there are some daily and secondary limits for HubSpot. I would like to make sure I never reach a 429 error rate limit. The requests can come from any flow. It can be:","depth":24,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"updating activity (engagement, meeting, call, note)","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"searching for a company or contact","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"updating deal","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"patching IDs\nReview what the limit is at the moment in the HubSpot documentation and then think of the solution:","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"where to store it","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"how to read it","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"how to work with multiple jobs","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"how to work with paginated requests Let's consider a situation when there are 600 opportunities to sync. What would be the flow? How would the rate limit be recognized? How would it be handled? What are the potential issues? [API usage guidelines and limits - HubSpot docs](","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXLink","text":"https://developers.hubspot.com/docs/developer-tooling/platform/usage-guidelines","depth":25,"on_screen":false,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"https://developers.hubspot.com/docs/developer-tooling/platform/usage-guidelines","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"). Example of such a error Client error:","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"POST https://api.hubapi.com/crm/v3/objects/contact/search","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"resulted in a","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"429 Too Many Requests","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"response: {\"status\":\"error\",\"message\":\"You have reached your secondly limit.\",\"errorType\":\"RATE_LIMIT\",\"correlationId\":\"019dffc4-4 (truncated...). Think carefully about the implementation and potential issue and bottlenecks.","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Show more","depth":22,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:42","depth":22,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Retry","depth":22,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Edit","depth":22,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Copy","depth":22,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXHeading","text":"Claude responded: Current HubSpot limits (Apr 2026)","depth":21,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"Claude responded: Current HubSpot limits (Apr 2026)","depth":22,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Synthesized HubSpot rate limit architecture with Redis storage and sliding window algorithms","depth":22,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Synthesized HubSpot rate limit architecture with Redis storage and sliding window algorithms","depth":23,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"Current HubSpot limits (Apr 2026)","depth":24,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"Current HubSpot limits (Apr 2026)","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"For privately distributed apps (which is what Jiminny presumably uses with HubSpot), the limits are layered: a per-app burst window of 100/10s on Free/Starter, 190/10s on Pro/Enterprise, or 250/10s with the API Limit Increase add-on","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", plus a per-account daily cap of 250k / 625k / 1M depending on tier — shared across all private apps in the account","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":". The burst window is per app; the daily quota is per portal.","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXLink","text":"hubspot","depth":26,"on_screen":false,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"hubspot","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXLink","text":"hubspot","depth":26,"on_screen":false,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"hubspot","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"The Search API is special: five requests per second per account, capped at 200 records per page, with a hard 10,000-result ceiling per query","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":". That's the limit the 429 in your example is hitting (","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"secondly limit","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"on","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/crm/v3/objects/contact/search","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"). It's a separate bucket from the 190/10s, and critically, search responses do not include the","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"X-HubSpot-RateLimit-*","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"headers","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— you can't read remaining capacity off the response, you have to track it yourself.","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXLink","text":"hubspot","depth":26,"on_screen":false,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"hubspot","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXLink","text":"hubspot","depth":26,"on_screen":false,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"hubspot","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Non-search endpoints return","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"X-HubSpot-RateLimit-Remaining","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":",","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"-Max","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", and","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"-Interval-Milliseconds","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":". The daily headers are not returned for OAuth-authenticated calls","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", so for those you check the account-info endpoint or maintain your own counter. There's also a soft rule: errors should stay under 5% of total daily requests","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— that's enforced for marketplace listing, but it's also a sane operational target.","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXLink","text":"hubspot","depth":26,"on_screen":false,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"hubspot","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXLink","text":"hubspot","depth":26,"on_screen":false,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"hubspot","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"So you have","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"four buckets","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"to track at minimum: app-burst (10s sliding), search-secondly (1s sliding), account-daily (24h fixed, midnight in HubSpot's TZ), and per-app daily share (your own budgeting on top of the account cap).","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"Where to store it","depth":24,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"Where to store it","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Redis. It's the only realistic option once you have multiple queue workers — DB-backed counters serialize too much, and in-process state can't coordinate across workers. Laravel already speaks Redis natively, and you get atomic","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"INCR","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"EXPIRE","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"plus Lua scripting for true CAS semantics.","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Key layout I'd use:","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Copy to clipboard","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"hubspot:rl:burst:{portalId}:{appId} ZSET (sliding 10s)","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"hubspot:rl:search:{portalId} ZSET (sliding 1s)","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"hubspot:rl:daily:{portalId} STRING + TTL to midnight TZ","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"hubspot:rl:meta:{portalId} HASH (last seen headers)","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"The two short-window buckets are sliding-window-log (Redis ZSET, score =","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"microtime","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", member = unique request id). Lua script removes entries older than the window, counts remaining slots, and only adds the new one if there's room — all atomic. Fixed windows are simpler but allow 2× the limit at the boundary, which on a 5/s window is brutal.","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"The daily bucket is a plain","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"INCR","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"with TTL set to seconds-until-midnight in","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"HubSpot's account timezone","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", not yours — Sofia is UTC+2/+3 but your portal might be set to US Eastern. Get this once and cache it.","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"How to read it","depth":24,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"How to read it","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Two-phase: optimistic pre-check, authoritative post-update.","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Before a call, run the Lua acquire script. If it returns \"denied,\" sleep until a slot frees up (the script can return ms-until-next-slot) or push the job back to the queue with a delay. Don't busy-loop.","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"After the call, parse","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"X-HubSpot-RateLimit-Remaining","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"-Max","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"-Interval-Milliseconds","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"and store them in","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"hubspot:rl:meta:{portalId}","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":". This is your reality check — if your local counter says 50 remaining but HubSpot's header says 5, you trust HubSpot and clamp your counter. This handles clock drift, missed accounting (e.g., crashed worker that took a token but never made the request), and other apps in the same account consuming the daily budget invisibly.","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"For search specifically, since headers don't come back, the local counter","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"is","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"the source of truth — meaning if you ever crash mid-flight, you've under-counted. Always release tokens on connection-level failure but","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"not","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"on 429 (you really did make that request).","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"How to work with multiple jobs","depth":24,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"How to work with multiple jobs","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"The queue layer needs to enforce concurrency separately from the rate limiter. Both work together:","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Concurrency cap","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"via","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Queue::throttle()","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"or a Redis semaphore — limits how many sync workers run in parallel against HubSpot. Without this, you can have 50 workers all blocked waiting for tokens, which is wasteful and creates retry storms.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Per-tenant fairness","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— if you sync many Jiminny customers into different HubSpot portals, each portal has its own bucket but you still want one slow portal not to starve others. Either separate queues per portal or a fair-share scheduler.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Priority lanes","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— webhook-driven updates (user-visible latency) should outrank background batch syncs. Two queues:","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"hubspot-priority","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"and","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"hubspot-bulk","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", with priority workers taking 70% of the burst budget and bulk taking 30% (enforce via separate sub-buckets if you really want hard separation, otherwise just pull from priority first).","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Backoff on 429","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— respect the","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Retry-After","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"header. If absent, exponential with jitter (e.g.,","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"min(2^attempt * 250ms, 30s) ± 20%","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"). The jitter is non-negotiable; without it, simultaneous 429s retry in lockstep and you get thundering-herd 429s on retry.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"How to work with paginated requests","depth":24,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"How to work with paginated requests","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"The trap is treating \"fetch all\" as one logical operation. Each page is its own API call and competes for tokens with everything else.","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Two practical rules:","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Don't hold the worker idle while paginating.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"If page N takes 500ms and page N+1 needs to wait 800ms for a token, you've burned 800ms of worker time doing nothing. Instead, fetch page N, dispatch the","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"processing","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"of page N as a separate job, and queue a \"fetch page N+1\" job with a delay equal to the wait time. Each page becomes its own atomic unit.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Always batch where HubSpot offers it.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"POST /crm/v3/objects/{type}/batch/{read|update|create}","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"accepts up to 100 IDs per call. For your \"patching IDs\" flow this is the difference between 600 calls and 6.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"Walkthrough: 600 opportunities","depth":24,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"Walkthrough: 600 opportunities","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Naive flow (one PATCH per deal): 600 calls. At 190/10s that's ~32s of API time, well under daily. You'd hit burst easily without throttling. Plus likely 1-3 search calls upfront and N association calls.","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Sane flow:","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Identify deltas","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— if you can avoid Search at all, do. Use","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"lastmodifieddate","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"filter on a single search if you must, paginate at limit=200. For 600 deals that's 3 search calls @ 5/s = ~600ms naturally throttled.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Batch read","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"current state —","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"POST /crm/v3/objects/deals/batch/read","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"with 100 IDs per call → 6 calls. Burst weight 6.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Compute diff","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"in your code (no API).","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Batch update","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"—","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"POST /crm/v3/objects/deals/batch/update","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"with 100 per call → 6 calls.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Associations","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"—","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"POST /crm/v4/associations/{from}/{to}/batch/create","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"if needed → another few batch calls.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Total: ~15-20 API calls for 600 deals. Burst budget consumed: 20/190 over ~5s. Daily impact: trivial.","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Recognition: pre-check denies if","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"<weight>","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"slots aren't free; on 429 the response surfaces","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"policyName","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"(DAILY/SECONDLY) — log it, push the job back with","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Retry-After","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"delay, increment a metric so you can alarm on sustained 429 rate.","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"Pitfalls & bottlenecks worth pre-empting","depth":24,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"Pitfalls & bottlenecks worth pre-empting","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Daily quota is shared across the whole portal","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", including any n8n flows, other private apps, marketing automation calling APIs, etc. Budget for ~70-80% of the documented limit, not 100%. Add an internal per-app daily cap so a runaway sync can't starve other apps.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Search is uniquely fragile","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":": separate 5/s bucket, no headers to read, 10k-result cap per query. If you ever hit 10k+ deals matching a filter, partition by","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"hs_object_id","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"ranges or by","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"lastmodifieddate","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"windows.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Retry storms after HubSpot incidents","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— always jitter, always cap total retries (e.g., 5 attempts, then dead-letter).","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Webhook → sync → webhook loops","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— when your update fires a HubSpot webhook that triggers another sync. Tag your own writes (e.g., a custom property","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"jy_last_sync_id","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":") and ignore webhooks where it just changed.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Token refresh","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— OAuth refresh itself counts against burst. Cache the access token in Redis with TTL =","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"expires_in - 60s","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", single-flight the refresh (only one worker refreshes; others wait on a lock).","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Search latency for fresh writes","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— newly created/updated objects don't appear in search instantly. Don't write-then-search; use returned IDs directly.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Clock skew","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— Redis is authoritative. Don't use","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"time()","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"from each worker for window scoring; use","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"redis.call('TIME')","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"inside the Lua script.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Dead workers with held tokens","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— sliding-window-log handles this naturally because tokens expire by score; token-bucket implementations need explicit release-on-crash logic.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"The 5% error rule","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"counts every 429 toward your error budget, even successfully retried ones. If your pre-check is working well, 429s should be near zero — if they're not, your pre-check is wrong, not just slow.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Phantom contention with Laravel","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"RateLimited","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"middleware","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":": it's per-job-class by default, not per-portal. If your","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"SyncDealJob","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"and","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"UpdateActivityJob","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"are different classes both calling HubSpot, they don't share a Laravel-level limiter — you need a single","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"HubspotRateLimiter","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"service that everything routes through.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"If you want, I can sketch the Lua script for the sliding-window acquire and the Laravel service wrapper around it.","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Copy","depth":22,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Give positive feedback","depth":22,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Give negative feedback","depth":22,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Retry","depth":22,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXHeading","text":"You said: What will happen if there are two different types of rate limits?","depth":20,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"You said: What will happen if there are two different types of rate limits?","depth":21,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"What will happen if there are two different types of rate limits?","depth":24,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Search requests that have 5 requests per second","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"The other rate limit that has, let's say, 100 requests per 10 seconds How do these work together? Is there some conflict? Can I reach the limit with one request and block either as well, or are these separated? Can I still continue making search requests once I hit the normal requests limits?","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"13:40","depth":22,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Retry","depth":22,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Edit","depth":22,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Copy","depth":22,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXHeading","text":"Claude responded: They're independent buckets — with one shared bucket on top.","depth":21,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"Claude responded: They're independent buckets — with one shared bucket on top.","depth":22,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Analyzed independent rate limit buckets and their practical interactions","depth":22,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Analyzed independent rate limit buckets and their practical interactions","depth":23,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"They're independent buckets — with one shared bucket on top.","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"The three buckets and what each call hits","depth":24,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"The three buckets and what each call hits","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Copy to clipboard","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"┌──────────────────┐","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Search request ──→ │ Search: 5/sec │ ──┐","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"└──────────────────┘ │","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"├──→ ┌─────────────────┐","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"┌──────────────────┐ │ │ Daily: 250k–1M │","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Non-search call ──→ │ Burst: 190/10s │ ──┘ │ (per portal) │","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"└──────────────────┘ └─────────────────┘","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"A search call is only metered against the search bucket and the daily bucket. A non-search call (batch read/update, single PATCH, associations, etc.) is only metered against the burst bucket and the daily bucket. The two short-window buckets do not share counters.","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"What this means practically","depth":24,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"What this means practically","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Hitting search secondly limit (5/s):","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Only further","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/search","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"calls 429. Your batch reads, batch updates, single PATCHes, association calls — all keep working at full burst speed. This is actually useful: if your sync is bottlenecked on Search, you can pivot to using","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"lastmodifieddate","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"filters via batch endpoints, or use the IDs you already have to do batch reads, while Search cools off.","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Hitting burst limit (190/10s):","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Only non-search calls 429. You can still issue Search calls at 5/s. Useful for: continuing to identify deltas for queueing while in-flight updates drain, or refreshing a small set of records via Search even though your write pipeline is paused.","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Hitting daily limit:","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Everything stops. Search and non-search alike. Doesn't unblock until midnight in your portal's configured timezone — and remember this is shared across every private app in the portal, plus n8n flows, marketing tools, anything else hitting the API with that account.","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"So can one type of request block the other?","depth":24,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"So can one type of request block the other?","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Search → Burst:","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"No.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Saturating Search at 50 calls per 10s leaves your full 190/10s burst untouched.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Burst → Search:","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"No.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Saturating burst leaves Search's 5/s untouched.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Either → Daily:","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Yes","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", but only by contributing to the same daily counter. It's volume that kills you here, not the type.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"In theory you can sustain ~50 search + ~190 other =","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"~240 calls per 10 seconds","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"indefinitely (until daily runs out), because the two buckets bill independently.","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"Implementation consequence","depth":24,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"Implementation consequence","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Your rate limiter needs to know which bucket a request hits before it acquires. Cleanest pattern:","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Copy to clipboard","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"php","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"$limiter","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"->","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"acquire","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"(","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"'search'","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":",","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"$weight","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"=","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":")","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":";","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"// for search endpoints only","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"$limiter","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"->","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"acquire","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"(","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"'burst'","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":",","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"$weight","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"=","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":")","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":";","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"// for everything else","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"$limiter","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"->","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"acquire","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"(","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"'daily'","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":",","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"$weight","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"=","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":")","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":";","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"// every call, both kinds","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"In Redis: three separate keys, three separate Lua acquire scripts (or one script with a bucket parameter). A search call calls","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"acquire('search')","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"acquire('daily')","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":". A batch update calls","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"acquire('burst')","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"acquire('daily')","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":".","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"One subtle pitfall: when you backoff on a 429,","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"inspect","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"policyName","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"in the response body","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"to know which bucket actually fired. If you see","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"SECONDLY","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"from a search endpoint, you only need to delay search-bound jobs — burst-bound jobs in the queue can keep running. If you blanket-pause everything on any 429, you waste capacity on the bucket that's still healthy. Two queues (or two throttle keys) make this clean; one global pause is the lazy version.","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"The other subtlety: the burst response gives you","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"X-HubSpot-RateLimit-Remaining","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"to clamp local state against, but search doesn't return those headers. So your search counter is unverified — be slightly more conservative there (e.g., budget 4/s instead of 5) to absorb the unaccounted-for calls.","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Copy","depth":22,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Give positive feedback","depth":22,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Give negative feedback","depth":22,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Retry","depth":22,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXHeading","text":"You said: Ok, so what will happen each time I make a request?","depth":20,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"You said: Ok, so what will happen each time I make a request?","depth":21,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Ok, so what will happen each time I make a request? Let's say I have 100,000 requests to make that are instant. Do I need to increment each request based on the type? For example, if there is a search request, I need to increment both the search bucket and also the daily bucket. If it's a burst, then I can go to the daily and burst buckets. If I need to check if it can make a call, do I need to see both the daily and search, or burst, respectively? Isn't that too heavy for the infrastructure, adding additional load to each request?","depth":24,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"13:44","depth":22,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Retry","depth":22,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Edit","depth":22,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Copy","depth":22,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXHeading","text":"Claude responded: Yes, your understanding is correct — every request must check and reserve from each bucket it applies to, atomically, before the call goes out.","depth":21,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"Claude responded: Yes, your understanding is correct — every request must check and reserve from each bucket it applies to, atomically, before the call goes out.","depth":22,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Analyzed per-request overhead concerns and quantified Redis performance impact","depth":22,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Analyzed per-request overhead concerns and quantified Redis performance impact","depth":23,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Yes, your understanding is correct — every request must check and reserve from each bucket it applies to, atomically, before the call goes out. But the overhead is much smaller than it sounds, and importantly, it's nowhere near your bottleneck.","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"What \"two buckets per request\" actually costs","depth":24,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"What \"two buckets per request\" actually costs","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Each request makes","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"one round trip to Redis","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— not two — because you fold both bucket checks into a single Lua script that runs atomically server-side:","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Copy to clipboard","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"lua","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"-- KEYS[1] = burst bucket key (or search)","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"-- KEYS[2] = daily bucket key","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"-- ARGV[1] = now (ms) ARGV[2] = window_ms","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"-- ARGV[3] = bucket_max ARGV[4] = daily_max","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"-- ARGV[5] = request_id ARGV[6] = daily_ttl","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"-- Trim sliding window","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"redis","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":".","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"call","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"(","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"'ZREMRANGEBYSCORE'","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":",","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"KEYS","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"[","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"]","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":",","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"0","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":",","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"ARGV","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"[","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"]","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"-","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"ARGV","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"[","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"2","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"]","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":")","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"local","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"burst_used","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"=","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"redis","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":".","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"call","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"(","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"'ZCARD'","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":",","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"KEYS","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"[","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"]","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":")","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"local","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"daily_used","depth":27,"on_screen":false,"role_description":"text"}]...
|
-4027012066361656060
|
-6913325059417482156
|
idle
|
accessibility
|
NULL
|
Skip to content
Skip to content
Click to collapse
Skip to content
Skip to content
Click to collapse
⌘B
Drag to resize
Open sidebar
Chat
Cowork
Code
New chat ⌘N
New chat
⌘N
Projects
Artifacts
Customize
Pinned
Bulgarian citizenship application process for EU residents
More options for Bulgarian citizenship application process for EU residents
Dawarich location tracking project
More options for Dawarich location tracking project
Recents
View all
HubSpot rate limit implementation strategy
More options for HubSpot rate limit implementation strategy
Screenpipe retention policy code location
More options for Screenpipe retention policy code location
Viewing retention policy in screenpipe
More options for Viewing retention policy in screenpipe
Clean shot x video recording termination issue
More options for Clean shot x video recording termination issue
HubSpot rate limit handling with executeRequest
More options for HubSpot rate limit handling with executeRequest
Untitled
More options
💬 Screen pipe. Is there ability…
More options for 💬 Screen pipe. Is there ability…
SMB mount access inconsistency between Finder and iTerm
More options for SMB mount access inconsistency between Finder and iTerm
💬 What is the best switch I can…
More options for 💬 What is the best switch I can…
Permission denied on screenpipe volume
More options for Permission denied on screenpipe volume
Screenpipe sync database attachment error
More options for Screenpipe sync database attachment error
Last swimming outing with Dani
More options for Last swimming outing with Dani
Definition of incarcerated
More options for Definition of incarcerated
Chromecast remote volume buttons not working
More options for Chromecast remote volume buttons not working
Salesforce API errors with Organization and FieldDefinition queries
More options for Salesforce API errors with Organization and FieldDefinition queries
Daily activity summary from screenpipe data
More options for Daily activity summary from screenpipe data
MacBook unexpected restarts and kanji screen
More options for MacBook unexpected restarts and kanji screen
Security patch review and testing guidance
More options for Security patch review and testing guidance
Food calorie values reference
More options for Food calorie values reference
Tracking location history from last week
More options for Tracking location history from last week
Lukas Pro
Get apps and extensions
HubSpot rate limit implementation strategy, rename chat
HubSpot rate limit implementation strategy
More options for HubSpot rate limit implementation strategy
Open sidebar
Share chat
Claude finished the response
You said: So just a solution for rate limit implementation.
You said: So just a solution for rate limit implementation.
So just a solution for rate limit implementation. The situation currently is that there are some daily and secondary limits for HubSpot. I would like to make sure I never reach a 429 error rate limit. The requests can come from any flow. It can be:
updating activity (engagement, meeting, call, note)
searching for a company or contact
updating deal
patching IDs
Review what the limit is at the moment in the HubSpot documentation and then think of the solution:
where to store it
how to read it
how to work with multiple jobs
how to work with paginated requests Let's consider a situation when there are 600 opportunities to sync. What would be the flow? How would the rate limit be recognized? How would it be handled? What are the potential issues? [API usage guidelines and limits - HubSpot docs](
https://developers.hubspot.com/docs/developer-tooling/platform/usage-guidelines
https://developers.hubspot.com/docs/developer-tooling/platform/usage-guidelines
). Example of such a error Client error:
POST https://api.hubapi.com/crm/v3/objects/contact/search
resulted in a
429 Too Many Requests
response: {"status":"error","message":"You have reached your secondly limit.","errorType":"RATE_LIMIT","correlationId":"019dffc4-4 (truncated...). Think carefully about the implementation and potential issue and bottlenecks.
Show more
10:42
Retry
Edit
Copy
Claude responded: Current HubSpot limits (Apr 2026)
Claude responded: Current HubSpot limits (Apr 2026)
Synthesized HubSpot rate limit architecture with Redis storage and sliding window algorithms
Synthesized HubSpot rate limit architecture with Redis storage and sliding window algorithms
Current HubSpot limits (Apr 2026)
Current HubSpot limits (Apr 2026)
For privately distributed apps (which is what Jiminny presumably uses with HubSpot), the limits are layered: a per-app burst window of 100/10s on Free/Starter, 190/10s on Pro/Enterprise, or 250/10s with the API Limit Increase add-on
, plus a per-account daily cap of 250k / 625k / 1M depending on tier — shared across all private apps in the account
. The burst window is per app; the daily quota is per portal.
hubspot
hubspot
hubspot
hubspot
The Search API is special: five requests per second per account, capped at 200 records per page, with a hard 10,000-result ceiling per query
. That's the limit the 429 in your example is hitting (
secondly limit
on
/crm/v3/objects/contact/search
). It's a separate bucket from the 190/10s, and critically, search responses do not include the
X-HubSpot-RateLimit-*
headers
— you can't read remaining capacity off the response, you have to track it yourself.
hubspot
hubspot
hubspot
hubspot
Non-search endpoints return
X-HubSpot-RateLimit-Remaining
,
-Max
, and
-Interval-Milliseconds
. The daily headers are not returned for OAuth-authenticated calls
, so for those you check the account-info endpoint or maintain your own counter. There's also a soft rule: errors should stay under 5% of total daily requests
— that's enforced for marketplace listing, but it's also a sane operational target.
hubspot
hubspot
hubspot
hubspot
So you have
four buckets
to track at minimum: app-burst (10s sliding), search-secondly (1s sliding), account-daily (24h fixed, midnight in HubSpot's TZ), and per-app daily share (your own budgeting on top of the account cap).
Where to store it
Where to store it
Redis. It's the only realistic option once you have multiple queue workers — DB-backed counters serialize too much, and in-process state can't coordinate across workers. Laravel already speaks Redis natively, and you get atomic
INCR
/
EXPIRE
plus Lua scripting for true CAS semantics.
Key layout I'd use:
Copy to clipboard
hubspot:rl:burst:{portalId}:{appId} ZSET (sliding 10s)
hubspot:rl:search:{portalId} ZSET (sliding 1s)
hubspot:rl:daily:{portalId} STRING + TTL to midnight TZ
hubspot:rl:meta:{portalId} HASH (last seen headers)
The two short-window buckets are sliding-window-log (Redis ZSET, score =
microtime
, member = unique request id). Lua script removes entries older than the window, counts remaining slots, and only adds the new one if there's room — all atomic. Fixed windows are simpler but allow 2× the limit at the boundary, which on a 5/s window is brutal.
The daily bucket is a plain
INCR
with TTL set to seconds-until-midnight in
HubSpot's account timezone
, not yours — Sofia is UTC+2/+3 but your portal might be set to US Eastern. Get this once and cache it.
How to read it
How to read it
Two-phase: optimistic pre-check, authoritative post-update.
Before a call, run the Lua acquire script. If it returns "denied," sleep until a slot frees up (the script can return ms-until-next-slot) or push the job back to the queue with a delay. Don't busy-loop.
After the call, parse
X-HubSpot-RateLimit-Remaining
/
-Max
/
-Interval-Milliseconds
and store them in
hubspot:rl:meta:{portalId}
. This is your reality check — if your local counter says 50 remaining but HubSpot's header says 5, you trust HubSpot and clamp your counter. This handles clock drift, missed accounting (e.g., crashed worker that took a token but never made the request), and other apps in the same account consuming the daily budget invisibly.
For search specifically, since headers don't come back, the local counter
is
the source of truth — meaning if you ever crash mid-flight, you've under-counted. Always release tokens on connection-level failure but
not
on 429 (you really did make that request).
How to work with multiple jobs
How to work with multiple jobs
The queue layer needs to enforce concurrency separately from the rate limiter. Both work together:
Concurrency cap
via
Queue::throttle()
or a Redis semaphore — limits how many sync workers run in parallel against HubSpot. Without this, you can have 50 workers all blocked waiting for tokens, which is wasteful and creates retry storms.
Per-tenant fairness
— if you sync many Jiminny customers into different HubSpot portals, each portal has its own bucket but you still want one slow portal not to starve others. Either separate queues per portal or a fair-share scheduler.
Priority lanes
— webhook-driven updates (user-visible latency) should outrank background batch syncs. Two queues:
hubspot-priority
and
hubspot-bulk
, with priority workers taking 70% of the burst budget and bulk taking 30% (enforce via separate sub-buckets if you really want hard separation, otherwise just pull from priority first).
Backoff on 429
— respect the
Retry-After
header. If absent, exponential with jitter (e.g.,
min(2^attempt * 250ms, 30s) ± 20%
). The jitter is non-negotiable; without it, simultaneous 429s retry in lockstep and you get thundering-herd 429s on retry.
How to work with paginated requests
How to work with paginated requests
The trap is treating "fetch all" as one logical operation. Each page is its own API call and competes for tokens with everything else.
Two practical rules:
Don't hold the worker idle while paginating.
If page N takes 500ms and page N+1 needs to wait 800ms for a token, you've burned 800ms of worker time doing nothing. Instead, fetch page N, dispatch the
processing
of page N as a separate job, and queue a "fetch page N+1" job with a delay equal to the wait time. Each page becomes its own atomic unit.
Always batch where HubSpot offers it.
POST /crm/v3/objects/{type}/batch/{read|update|create}
accepts up to 100 IDs per call. For your "patching IDs" flow this is the difference between 600 calls and 6.
Walkthrough: 600 opportunities
Walkthrough: 600 opportunities
Naive flow (one PATCH per deal): 600 calls. At 190/10s that's ~32s of API time, well under daily. You'd hit burst easily without throttling. Plus likely 1-3 search calls upfront and N association calls.
Sane flow:
Identify deltas
— if you can avoid Search at all, do. Use
lastmodifieddate
filter on a single search if you must, paginate at limit=200. For 600 deals that's 3 search calls @ 5/s = ~600ms naturally throttled.
Batch read
current state —
POST /crm/v3/objects/deals/batch/read
with 100 IDs per call → 6 calls. Burst weight 6.
Compute diff
in your code (no API).
Batch update
—
POST /crm/v3/objects/deals/batch/update
with 100 per call → 6 calls.
Associations
—
POST /crm/v4/associations/{from}/{to}/batch/create
if needed → another few batch calls.
Total: ~15-20 API calls for 600 deals. Burst budget consumed: 20/190 over ~5s. Daily impact: trivial.
Recognition: pre-check denies if
<weight>
slots aren't free; on 429 the response surfaces
policyName
(DAILY/SECONDLY) — log it, push the job back with
Retry-After
delay, increment a metric so you can alarm on sustained 429 rate.
Pitfalls & bottlenecks worth pre-empting
Pitfalls & bottlenecks worth pre-empting
Daily quota is shared across the whole portal
, including any n8n flows, other private apps, marketing automation calling APIs, etc. Budget for ~70-80% of the documented limit, not 100%. Add an internal per-app daily cap so a runaway sync can't starve other apps.
Search is uniquely fragile
: separate 5/s bucket, no headers to read, 10k-result cap per query. If you ever hit 10k+ deals matching a filter, partition by
hs_object_id
ranges or by
lastmodifieddate
windows.
Retry storms after HubSpot incidents
— always jitter, always cap total retries (e.g., 5 attempts, then dead-letter).
Webhook → sync → webhook loops
— when your update fires a HubSpot webhook that triggers another sync. Tag your own writes (e.g., a custom property
jy_last_sync_id
) and ignore webhooks where it just changed.
Token refresh
— OAuth refresh itself counts against burst. Cache the access token in Redis with TTL =
expires_in - 60s
, single-flight the refresh (only one worker refreshes; others wait on a lock).
Search latency for fresh writes
— newly created/updated objects don't appear in search instantly. Don't write-then-search; use returned IDs directly.
Clock skew
— Redis is authoritative. Don't use
time()
from each worker for window scoring; use
redis.call('TIME')
inside the Lua script.
Dead workers with held tokens
— sliding-window-log handles this naturally because tokens expire by score; token-bucket implementations need explicit release-on-crash logic.
The 5% error rule
counts every 429 toward your error budget, even successfully retried ones. If your pre-check is working well, 429s should be near zero — if they're not, your pre-check is wrong, not just slow.
Phantom contention with Laravel
RateLimited
middleware
: it's per-job-class by default, not per-portal. If your
SyncDealJob
and
UpdateActivityJob
are different classes both calling HubSpot, they don't share a Laravel-level limiter — you need a single
HubspotRateLimiter
service that everything routes through.
If you want, I can sketch the Lua script for the sliding-window acquire and the Laravel service wrapper around it.
Copy
Give positive feedback
Give negative feedback
Retry
You said: What will happen if there are two different types of rate limits?
You said: What will happen if there are two different types of rate limits?
What will happen if there are two different types of rate limits?
Search requests that have 5 requests per second
The other rate limit that has, let's say, 100 requests per 10 seconds How do these work together? Is there some conflict? Can I reach the limit with one request and block either as well, or are these separated? Can I still continue making search requests once I hit the normal requests limits?
13:40
Retry
Edit
Copy
Claude responded: They're independent buckets — with one shared bucket on top.
Claude responded: They're independent buckets — with one shared bucket on top.
Analyzed independent rate limit buckets and their practical interactions
Analyzed independent rate limit buckets and their practical interactions
They're independent buckets — with one shared bucket on top.
The three buckets and what each call hits
The three buckets and what each call hits
Copy to clipboard
┌──────────────────┐
Search request ──→ │ Search: 5/sec │ ──┐
└──────────────────┘ │
├──→ ┌─────────────────┐
┌──────────────────┐ │ │ Daily: 250k–1M │
Non-search call ──→ │ Burst: 190/10s │ ──┘ │ (per portal) │
└──────────────────┘ └─────────────────┘
A search call is only metered against the search bucket and the daily bucket. A non-search call (batch read/update, single PATCH, associations, etc.) is only metered against the burst bucket and the daily bucket. The two short-window buckets do not share counters.
What this means practically
What this means practically
Hitting search secondly limit (5/s):
Only further
/search
calls 429. Your batch reads, batch updates, single PATCHes, association calls — all keep working at full burst speed. This is actually useful: if your sync is bottlenecked on Search, you can pivot to using
lastmodifieddate
filters via batch endpoints, or use the IDs you already have to do batch reads, while Search cools off.
Hitting burst limit (190/10s):
Only non-search calls 429. You can still issue Search calls at 5/s. Useful for: continuing to identify deltas for queueing while in-flight updates drain, or refreshing a small set of records via Search even though your write pipeline is paused.
Hitting daily limit:
Everything stops. Search and non-search alike. Doesn't unblock until midnight in your portal's configured timezone — and remember this is shared across every private app in the portal, plus n8n flows, marketing tools, anything else hitting the API with that account.
So can one type of request block the other?
So can one type of request block the other?
Search → Burst:
No.
Saturating Search at 50 calls per 10s leaves your full 190/10s burst untouched.
Burst → Search:
No.
Saturating burst leaves Search's 5/s untouched.
Either → Daily:
Yes
, but only by contributing to the same daily counter. It's volume that kills you here, not the type.
In theory you can sustain ~50 search + ~190 other =
~240 calls per 10 seconds
indefinitely (until daily runs out), because the two buckets bill independently.
Implementation consequence
Implementation consequence
Your rate limiter needs to know which bucket a request hits before it acquires. Cleanest pattern:
Copy to clipboard
php
$limiter
->
acquire
(
'search'
,
$weight
=
1
)
;
// for search endpoints only
$limiter
->
acquire
(
'burst'
,
$weight
=
1
)
;
// for everything else
$limiter
->
acquire
(
'daily'
,
$weight
=
1
)
;
// every call, both kinds
In Redis: three separate keys, three separate Lua acquire scripts (or one script with a bucket parameter). A search call calls
acquire('search')
+
acquire('daily')
. A batch update calls
acquire('burst')
+
acquire('daily')
.
One subtle pitfall: when you backoff on a 429,
inspect
policyName
in the response body
to know which bucket actually fired. If you see
SECONDLY
from a search endpoint, you only need to delay search-bound jobs — burst-bound jobs in the queue can keep running. If you blanket-pause everything on any 429, you waste capacity on the bucket that's still healthy. Two queues (or two throttle keys) make this clean; one global pause is the lazy version.
The other subtlety: the burst response gives you
X-HubSpot-RateLimit-Remaining
to clamp local state against, but search doesn't return those headers. So your search counter is unverified — be slightly more conservative there (e.g., budget 4/s instead of 5) to absorb the unaccounted-for calls.
Copy
Give positive feedback
Give negative feedback
Retry
You said: Ok, so what will happen each time I make a request?
You said: Ok, so what will happen each time I make a request?
Ok, so what will happen each time I make a request? Let's say I have 100,000 requests to make that are instant. Do I need to increment each request based on the type? For example, if there is a search request, I need to increment both the search bucket and also the daily bucket. If it's a burst, then I can go to the daily and burst buckets. If I need to check if it can make a call, do I need to see both the daily and search, or burst, respectively? Isn't that too heavy for the infrastructure, adding additional load to each request?
13:44
Retry
Edit
Copy
Claude responded: Yes, your understanding is correct — every request must check and reserve from each bucket it applies to, atomically, before the call goes out.
Claude responded: Yes, your understanding is correct — every request must check and reserve from each bucket it applies to, atomically, before the call goes out.
Analyzed per-request overhead concerns and quantified Redis performance impact
Analyzed per-request overhead concerns and quantified Redis performance impact
Yes, your understanding is correct — every request must check and reserve from each bucket it applies to, atomically, before the call goes out. But the overhead is much smaller than it sounds, and importantly, it's nowhere near your bottleneck.
What "two buckets per request" actually costs
What "two buckets per request" actually costs
Each request makes
one round trip to Redis
— not two — because you fold both bucket checks into a single Lua script that runs atomically server-side:
Copy to clipboard
lua
-- KEYS[1] = burst bucket key (or search)
-- KEYS[2] = daily bucket key
-- ARGV[1] = now (ms) ARGV[2] = window_ms
-- ARGV[3] = bucket_max ARGV[4] = daily_max
-- ARGV[5] = request_id ARGV[6] = daily_ttl
-- Trim sliding window
redis
.
call
(
'ZREMRANGEBYSCORE'
,
KEYS
[
1
]
,
0
,
ARGV
[
1
]
-
ARGV
[
2
]
)
local
burst_used
=
redis
.
call
(
'ZCARD'
,
KEYS
[
1
]
)
local
daily_used...
|
2528
|
NULL
|
NULL
|
NULL
|
|
2576
|
NULL
|
0
|
2026-05-07T11:28:57.747351+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-07/1778 /Users/lukas/.screenpipe/data/data/2026-05-07/1778153337747_m2.jpg...
|
Claude
|
Claude
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Skip to content
Skip to content
Click to collapse
Skip to content
Skip to content
Click to collapse
⌘B
Drag to resize
Open sidebar
Chat
Cowork
Code
New chat ⌘N
New chat
⌘N
Projects
Artifacts
Customize
Pinned
Bulgarian citizenship application process for EU residents
More options for Bulgarian citizenship application process for EU residents
Dawarich location tracking project
More options for Dawarich location tracking project
Recents
View all
HubSpot rate limit implementation strategy
More options for HubSpot rate limit implementation strategy
Screenpipe retention policy code location
More options for Screenpipe retention policy code location
Viewing retention policy in screenpipe
More options for Viewing retention policy in screenpipe
Clean shot x video recording termination issue
More options for Clean shot x video recording termination issue
HubSpot rate limit handling with executeRequest
More options for HubSpot rate limit handling with executeRequest
Untitled
More options
💬 Screen pipe. Is there ability…
More options for 💬 Screen pipe. Is there ability…
SMB mount access inconsistency between Finder and iTerm
More options for SMB mount access inconsistency between Finder and iTerm
💬 What is the best switch I can…
More options for 💬 What is the best switch I can…
Permission denied on screenpipe volume
More options for Permission denied on screenpipe volume
Screenpipe sync database attachment error
More options for Screenpipe sync database attachment error
Last swimming outing with Dani
More options for Last swimming outing with Dani
Definition of incarcerated
More options for Definition of incarcerated
Chromecast remote volume buttons not working
More options for Chromecast remote volume buttons not working
Salesforce API errors with Organization and FieldDefinition queries
More options for Salesforce API errors with Organization and FieldDefinition queries
Daily activity summary from screenpipe data
More options for Daily activity summary from screenpipe data
MacBook unexpected restarts and kanji screen
More options for MacBook unexpected restarts and kanji screen
Security patch review and testing guidance
More options for Security patch review and testing guidance
Food calorie values reference
More options for Food calorie values reference
Tracking location history from last week
More options for Tracking location history from last week
Lukas Pro
Get apps and extensions
HubSpot rate limit implementation strategy, rename chat
HubSpot rate limit implementation strategy
More options for HubSpot rate limit implementation strategy
Open sidebar
Share chat
Claude finished the response
You said: So just a solution for rate limit implementation.
You said: So just a solution for rate limit implementation.
So just a solution for rate limit implementation. The situation currently is that there are some daily and secondary limits for HubSpot. I would like to make sure I never reach a 429 error rate limit. The requests can come from any flow. It can be:
updating activity (engagement, meeting, call, note)
searching for a company or contact
updating deal
patching IDs
Review what the limit is at the moment in the HubSpot documentation and then think of the solution:
where to store it
how to read it
how to work with multiple jobs
how to work with paginated requests Let's consider a situation when there are 600 opportunities to sync. What would be the flow? How would the rate limit be recognized? How would it be handled? What are the potential issues? [API usage guidelines and limits - HubSpot docs](
https://developers.hubspot.com/docs/developer-tooling/platform/usage-guidelines
https://developers.hubspot.com/docs/developer-tooling/platform/usage-guidelines
). Example of such a error Client error:
POST https://api.hubapi.com/crm/v3/objects/contact/search
resulted in a
429 Too Many Requests
response: {"status":"error","message":"You have reached your secondly limit.","errorType":"RATE_LIMIT","correlationId":"019dffc4-4 (truncated...). Think carefully about the implementation and potential issue and bottlenecks.
Show more
10:42
Retry
Edit
Copy
Claude responded: Current HubSpot limits (Apr 2026)
Claude responded: Current HubSpot limits (Apr 2026)
Synthesized HubSpot rate limit architecture with Redis storage and sliding window algorithms
Synthesized HubSpot rate limit architecture with Redis storage and sliding window algorithms
Current HubSpot limits (Apr 2026)
Current HubSpot limits (Apr 2026)
For privately distributed apps (which is what Jiminny presumably uses with HubSpot), the limits are layered: a per-app burst window of 100/10s on Free/Starter, 190/10s on Pro/Enterprise, or 250/10s with the API Limit Increase add-on
, plus a per-account daily cap of 250k / 625k / 1M depending on tier — shared across all private apps in the account
. The burst window is per app; the daily quota is per portal.
hubspot
hubspot
hubspot
hubspot
The Search API is special: five requests per second per account, capped at 200 records per page, with a hard 10,000-result ceiling per query
. That's the limit the 429 in your example is hitting (
secondly limit
on
/crm/v3/objects/contact/search
). It's a separate bucket from the 190/10s, and critically, search responses do not include the
X-HubSpot-RateLimit-*
headers
— you can't read remaining capacity off the response, you have to track it yourself.
hubspot
hubspot
hubspot
hubspot
Non-search endpoints return
X-HubSpot-RateLimit-Remaining
,
-Max
, and
-Interval-Milliseconds
. The daily headers are not returned for OAuth-authenticated calls
, so for those you check the account-info endpoint or maintain your own counter. There's also a soft rule: errors should stay under 5% of total daily requests
— that's enforced for marketplace listing, but it's also a sane operational target.
hubspot
hubspot
hubspot
hubspot
So you have
four buckets
to track at minimum: app-burst (10s sliding), search-secondly (1s sliding), account-daily (24h fixed, midnight in HubSpot's TZ), and per-app daily share (your own budgeting on top of the account cap).
Where to store it
Where to store it
Redis. It's the only realistic option once you have multiple queue workers — DB-backed counters serialize too much, and in-process state can't coordinate across workers. Laravel already speaks Redis natively, and you get atomic
INCR
/
EXPIRE
plus Lua scripting for true CAS semantics.
Key layout I'd use:
Copy to clipboard
hubspot:rl:burst:{portalId}:{appId} ZSET (sliding 10s)
hubspot:rl:search:{portalId} ZSET (sliding 1s)
hubspot:rl:daily:{portalId} STRING + TTL to midnight TZ
hubspot:rl:meta:{portalId} HASH (last seen headers)
The two short-window buckets are sliding-window-log (Redis ZSET, score =
microtime
, member = unique request id). Lua script removes entries older than the window, counts remaining slots, and only adds the new one if there's room — all atomic. Fixed windows are simpler but allow 2× the limit at the boundary, which on a 5/s window is brutal.
The daily bucket is a plain
INCR
with TTL set to seconds-until-midnight in
HubSpot's account timezone
, not yours — Sofia is UTC+2/+3 but your portal might be set to US Eastern. Get this once and cache it.
How to read it
How to read it
Two-phase: optimistic pre-check, authoritative post-update.
Before a call, run the Lua acquire script. If it returns "denied," sleep until a slot frees up (the script can return ms-until-next-slot) or push the job back to the queue with a delay. Don't busy-loop.
After the call, parse
X-HubSpot-RateLimit-Remaining
/
-Max
/
-Interval-Milliseconds
and store them in
hubspot:rl:meta:{portalId}
. This is your reality check — if your local counter says 50 remaining but HubSpot's header says 5, you trust HubSpot and clamp your counter. This handles clock drift, missed accounting (e.g., crashed worker that took a token but never made the request), and other apps in the same account consuming the daily budget invisibly.
For search specifically, since headers don't come back, the local counter
is
the source of truth — meaning if you ever crash mid-flight, you've under-counted. Always release tokens on connection-level failure but
not
on 429 (you really did make that request).
How to work with multiple jobs
How to work with multiple jobs
The queue layer needs to enforce concurrency separately from the rate limiter. Both work together:
Concurrency cap
via
Queue::throttle()
or a Redis semaphore — limits how many sync workers run in parallel against HubSpot. Without this, you can have 50 workers all blocked waiting for tokens, which is wasteful and creates retry storms.
Per-tenant fairness
— if you sync many Jiminny customers into different HubSpot portals, each portal has its own bucket but you still want one slow portal not to starve others. Either separate queues per portal or a fair-share scheduler.
Priority lanes
— webhook-driven updates (user-visible latency) should outrank background batch syncs. Two queues:
hubspot-priority
and
hubspot-bulk
, with priority workers taking 70% of the burst budget and bulk taking 30% (enforce via separate sub-buckets if you really want hard separation, otherwise just pull from priority first).
Backoff on 429
— respect the
Retry-After
header. If absent, exponential with jitter (e.g.,
min(2^attempt * 250ms, 30s) ± 20%
). The jitter is non-negotiable; without it, simultaneous 429s retry in lockstep and you get thundering-herd 429s on retry.
How to work with paginated requests
How to work with paginated requests
The trap is treating "fetch all" as one logical operation. Each page is its own API call and competes for tokens with everything else.
Two practical rules:
Don't hold the worker idle while paginating.
If page N takes 500ms and page N+1 needs to wait 800ms for a token, you've burned 800ms of worker time doing nothing. Instead, fetch page N, dispatch the
processing
of page N as a separate job, and queue a "fetch page N+1" job with a delay equal to the wait time. Each page becomes its own atomic unit.
Always batch where HubSpot offers it.
POST /crm/v3/objects/{type}/batch/{read|update|create}
accepts up to 100 IDs per call. For your "patching IDs" flow this is the difference between 600 calls and 6.
Walkthrough: 600 opportunities
Walkthrough: 600 opportunities
Naive flow (one PATCH per deal): 600 calls. At 190/10s that's ~32s of API time, well under daily. You'd hit burst easily without throttling. Plus likely 1-3 search calls upfront and N association calls.
Sane flow:
Identify deltas
— if you can avoid Search at all, do. Use
lastmodifieddate
filter on a single search if you must, paginate at limit=200. For 600 deals that's 3 search calls @ 5/s = ~600ms naturally throttled.
Batch read
current state —
POST /crm/v3/objects/deals/batch/read
with 100 IDs per call → 6 calls. Burst weight 6.
Compute diff
in your code (no API).
Batch update
—
POST /crm/v3/objects/deals/batch/update
with 100 per call → 6 calls.
Associations
—
POST /crm/v4/associations/{from}/{to}/batch/create
if needed → another few batch calls.
Total: ~15-20 API calls for 600 deals. Burst budget consumed: 20/190 over ~5s. Daily impact: trivial.
Recognition: pre-check denies if
<weight>
slots aren't free; on 429 the response surfaces
policyName
(DAILY/SECONDLY) — log it, push the job back with
Retry-After
delay, increment a metric so you can alarm on sustained 429 rate.
Pitfalls & bottlenecks worth pre-empting
Pitfalls & bottlenecks worth pre-empting
Daily quota is shared across the whole portal
, including any n8n flows, other private apps, marketing automation calling APIs, etc. Budget for ~70-80% of the documented limit, not 100%. Add an internal per-app daily cap so a runaway sync can't starve other apps.
Search is uniquely fragile
: separate 5/s bucket, no headers to read, 10k-result cap per query. If you ever hit 10k+ deals matching a filter, partition by
hs_object_id
ranges or by
lastmodifieddate
windows.
Retry storms after HubSpot incidents
— always jitter, always cap total retries (e.g., 5 attempts, then dead-letter).
Webhook → sync → webhook loops
— when your update fires a HubSpot webhook that triggers another sync. Tag your own writes (e.g., a custom property
jy_last_sync_id
) and ignore webhooks where it just changed.
Token refresh
— OAuth refresh itself counts against burst. Cache the access token in Redis with TTL =
expires_in - 60s
, single-flight the refresh (only one worker refreshes; others wait on a lock).
Search latency for fresh writes
— newly created/updated objects don't appear in search instantly. Don't write-then-search; use returned IDs directly.
Clock skew
— Redis is authoritative. Don't use
time()
from each worker for window scoring; use
redis.call('TIME')
inside the Lua script.
Dead workers with held tokens
— sliding-window-log handles this naturally because tokens expire by score; token-bucket implementations need explicit release-on-crash logic.
The 5% error rule
counts every 429 toward your error budget, even successfully retried ones. If your pre-check is working well, 429s should be near zero — if they're not, your pre-check is wrong, not just slow.
Phantom contention with Laravel
RateLimited
middleware
: it's per-job-class by default, not per-portal. If your
SyncDealJob
and
UpdateActivityJob
are different classes both calling HubSpot, they don't share a Laravel-level limiter — you need a single
HubspotRateLimiter
service that everything routes through.
If you want, I can sketch the Lua script for the sliding-window acquire and the Laravel service wrapper around it.
Copy
Give positive feedback
Give negative feedback
Retry
You said: What will happen if there are two different types of rate limits?
You said: What will happen if there are two different types of rate limits?
What will happen if there are two different types of rate limits?
Search requests that have 5 requests per second
The other rate limit that has, let's say, 100 requests per 10 seconds How do these work together? Is there some conflict? Can I reach the limit with one request and block either as well, or are these separated? Can I still continue making search requests once I hit the normal requests limits?
13:40
Retry
Edit
Copy
Claude responded: They're independent buckets — with one shared bucket on top.
Claude responded: They're independent buckets — with one shared bucket on top.
Analyzed independent rate limit buckets and their practical interactions
Analyzed independent rate limit buckets and their practical interactions
They're independent buckets — with one shared bucket on top.
The three buckets and what each call hits
The three buckets and what each call hits
Copy to clipboard
┌──────────────────┐
Search request ──→ │ Search: 5/sec │ ──┐
└──────────────────┘ │
├──→ ┌─────────────────┐
┌──────────────────┐ │ │ Daily: 250k–1M │
Non-search call ──→ │ Burst: 190/10s │ ──┘ │ (per portal) │
└──────────────────┘ └─────────────────┘
A search call is only metered against the search bucket and the daily bucket. A non-search call (batch read/update, single PATCH, associations, etc.) is only metered against the burst bucket and the daily bucket. The two short-window buckets do not share counters.
What this means practically
What this means practically
Hitting search secondly limit (5/s):
Only further
/search
calls 429. Your batch reads, batch updates, single PATCHes, association calls — all keep working at full burst speed. This is actually useful: if your sync is bottlenecked on Search, you can pivot to using
lastmodifieddate
filters via batch endpoints, or use the IDs you already have to do batch reads, while Search cools off.
Hitting burst limit (190/10s):
Only non-search calls 429. You can still issue Search calls at 5/s. Useful for: continuing to identify deltas for queueing while in-flight updates drain, or refreshing a small set of records via Search even though your write pipeline is paused.
Hitting daily limit:
Everything stops. Search and non-search alike. Doesn't unblock until midnight in your portal's configured timezone — and remember this is shared across every private app in the portal, plus n8n flows, marketing tools, anything else hitting the API with that account.
So can one type of request block the other?
So can one type of request block the other?
Search → Burst:
No.
Saturating Search at 50 calls per 10s leaves your full 190/10s burst untouched.
Burst → Search:
No.
Saturating burst leaves Search's 5/s untouched.
Either → Daily:
Yes
, but only by contributing to the same daily counter. It's volume that kills you here, not the type.
In theory you can sustain ~50 search + ~190 other =
~240 calls per 10 seconds
indefinitely (until daily runs out), because the two buckets bill independently.
Implementation consequence
Implementation consequence
Your rate limiter needs to know which bucket a request hits before it acquires. Cleanest pattern:
Copy to clipboard
php
$limiter
->
acquire
(
'search'
,
$weight
=
1
)
;
// for search endpoints only
$limiter
->
acquire
(
'burst'
,
$weight
=
1
)
;
// for everything else
$limiter
->
acquire
(
'daily'
,
$weight
=
1
)
;
// every call, both kinds
In Redis: three separate keys, three separate Lua acquire scripts (or one script with a bucket parameter). A search call calls
acquire('search')
+
acquire('daily')
. A batch update calls
acquire('burst')
+
acquire('daily')
.
One subtle pitfall: when you backoff on a 429,
inspect
policyName
in the response body
to know which bucket actually fired. If you see
SECONDLY
from a search endpoint, you only need to delay search-bound jobs — burst-bound jobs in the queue can keep running. If you blanket-pause everything on any 429, you waste capacity on the bucket that's still healthy. Two queues (or two throttle keys) make this clean; one global pause is the lazy version.
The other subtlety: the burst response gives you
X-HubSpot-RateLimit-Remaining
to clamp local state against, but search doesn't return those headers. So your search counter is unverified — be slightly more conservative there (e.g., budget 4/s instead of 5) to absorb the unaccounted-for calls.
Copy
Give positive feedback
Give negative feedback
Retry
You said: Ok, so what will happen each time I make a request?
You said: Ok, so what will happen each time I make a request?
Ok, so what will happen each time I make a request? Let's say I have 100,000 requests to make that are instant. Do I need to increment each request based on the type? For example, if there is a search request, I need to increment both the search bucket and also the daily bucket. If it's a burst, then I can go to the daily and burst buckets. If I need to check if it can make a call, do I need to see both the daily and search, or burst, respectively? Isn't that too heavy for the infrastructure, adding additional load to each request?
13:44
Retry
Edit
Copy
Claude responded: Yes, your understanding is correct — every request must check and reserve from each bucket it applies to, atomically, before the call goes out.
Claude responded: Yes, your understanding is correct — every request must check and reserve from each bucket it applies to, atomically, before the call goes out.
Analyzed per-request overhead concerns and quantified Redis performance impact
Analyzed per-request overhead concerns and quantified Redis performance impact
Yes, your understanding is correct — every request must check and reserve from each bucket it applies to, atomically, before the call goes out. But the overhead is much smaller than it sounds, and importantly, it's nowhere near your bottleneck.
What "two buckets per request" actually costs
What "two buckets per request" actually costs
Each request makes
one round trip to Redis
— not two — because you fold both bucket checks into a single Lua script that runs atomically server-side:
Copy to clipboard
lua
-- KEYS[1] = burst bucket key (or search)
-- KEYS[2] = daily bucket key
-- ARGV[1] = now (ms) ARGV[2] = window_ms
-- ARGV[3] = bucket_max ARGV[4] = daily_max
-- ARGV[5] = request_id ARGV[6] = daily_ttl
-- Trim sliding window
redis
.
call
(
'ZREMRANGEBYSCORE'
,
KEYS
[
1
]
,
0
,
ARGV
[
1
]
-
ARGV
[
2...
|
[{"role":"AXLink","text":& [{"role":"AXLink","text":"Skip to content","depth":14,"bounds":{"left":0.029587766,"top":0.03830806,"width":0.0003324468,"height":0.0007980846},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Skip to content","depth":15,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Click to collapse","depth":16,"bounds":{"left":0.10239362,"top":0.06703911,"width":0.030585106,"height":0.011971269},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.10239362,"top":0.06703911,"width":0.0029920214,"height":0.011971269}},{"char_start":1,"char_count":16,"bounds":{"left":0.10538564,"top":0.06703911,"width":0.027925532,"height":0.011971269}}],"role_description":"text"},{"role":"AXStaticText","text":"⌘B","depth":16,"bounds":{"left":0.1349734,"top":0.06703911,"width":0.0063164895,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Drag to resize","depth":16,"bounds":{"left":0.10239362,"top":0.079010375,"width":0.025930852,"height":0.011971269},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.10239362,"top":0.079010375,"width":0.0029920214,"height":0.011971269}},{"char_start":1,"char_count":13,"bounds":{"left":0.10538564,"top":0.079010375,"width":0.022938829,"height":0.011971269}}],"role_description":"text"},{"role":"AXButton","text":"Open sidebar","depth":14,"bounds":{"left":0.029920213,"top":0.02793296,"width":0.00930851,"height":0.022346368},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Chat","depth":16,"bounds":{"left":0.004986702,"top":0.059856344,"width":0.025930852,"height":0.022346368},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Cowork","depth":16,"bounds":{"left":0.03158245,"top":0.059856344,"width":0.03125,"height":0.022346368},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code","depth":16,"bounds":{"left":0.0631649,"top":0.059856344,"width":0.026928192,"height":0.022346368},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"New chat ⌘N","depth":15,"bounds":{"left":0.0043218085,"top":0.08938547,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"New chat","depth":16,"bounds":{"left":0.014295213,"top":0.0933759,"width":0.018949468,"height":0.012769354},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.014295213,"top":0.0933759,"width":0.003656915,"height":0.013567438}},{"char_start":1,"char_count":7,"bounds":{"left":0.01761968,"top":0.0933759,"width":0.015957447,"height":0.013567438}}],"role_description":"text"},{"role":"AXStaticText","text":"⌘N","depth":17,"bounds":{"left":0.08178192,"top":0.0933759,"width":0.006981383,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Projects","depth":15,"bounds":{"left":0.0043218085,"top":0.110135674,"width":0.08643617,"height":0.019952115},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Artifacts","depth":15,"bounds":{"left":0.0043218085,"top":0.1300878,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Customize","depth":15,"bounds":{"left":0.0043218085,"top":0.15003991,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Pinned","depth":16,"bounds":{"left":0.0063164895,"top":0.18914606,"width":0.08377659,"height":0.013567438},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXButton","text":"Bulgarian citizenship application process for EU residents","depth":18,"bounds":{"left":0.0043218085,"top":0.20590582,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Bulgarian citizenship application process for EU residents","depth":19,"bounds":{"left":0.08344415,"top":0.20909816,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Dawarich location tracking project","depth":18,"bounds":{"left":0.0043218085,"top":0.22745411,"width":0.08643617,"height":0.019952115},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Dawarich location tracking project","depth":19,"bounds":{"left":0.08344415,"top":0.22984837,"width":0.005984043,"height":0.015163607},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Recents","depth":16,"bounds":{"left":0.0063164895,"top":0.25698325,"width":0.06349734,"height":0.012769354},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXButton","text":"View all","depth":16,"bounds":{"left":0.07114362,"top":0.25698325,"width":0.018949468,"height":0.012769354},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"HubSpot rate limit implementation strategy","depth":18,"bounds":{"left":0.0043218085,"top":0.27294493,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for HubSpot rate limit implementation strategy","depth":19,"bounds":{"left":0.08344415,"top":0.27613726,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Screenpipe retention policy code location","depth":18,"bounds":{"left":0.0043218085,"top":0.29449323,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Screenpipe retention policy code location","depth":19,"bounds":{"left":0.08344415,"top":0.29768556,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Viewing retention policy in screenpipe","depth":18,"bounds":{"left":0.0043218085,"top":0.31524342,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Viewing retention policy in screenpipe","depth":19,"bounds":{"left":0.08344415,"top":0.31843576,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Clean shot x video recording termination issue","depth":18,"bounds":{"left":0.0043218085,"top":0.3367917,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Clean shot x video recording termination issue","depth":19,"bounds":{"left":0.08344415,"top":0.33998403,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"HubSpot rate limit handling with executeRequest","depth":18,"bounds":{"left":0.0043218085,"top":0.3575419,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for HubSpot rate limit handling with executeRequest","depth":19,"bounds":{"left":0.08344415,"top":0.36073422,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Untitled","depth":18,"bounds":{"left":0.0043218085,"top":0.3790902,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options","depth":19,"bounds":{"left":0.08344415,"top":0.38228253,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"💬 Screen pipe. Is there ability…","depth":18,"bounds":{"left":0.0043218085,"top":0.39984038,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for 💬 Screen pipe. Is there ability…","depth":19,"bounds":{"left":0.08344415,"top":0.40303272,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"SMB mount access inconsistency between Finder and iTerm","depth":18,"bounds":{"left":0.0043218085,"top":0.42138866,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for SMB mount access inconsistency between Finder and iTerm","depth":19,"bounds":{"left":0.08344415,"top":0.4237829,"width":0.005984043,"height":0.015163607},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"💬 What is the best switch I can…","depth":18,"bounds":{"left":0.0043218085,"top":0.44213888,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for 💬 What is the best switch I can…","depth":19,"bounds":{"left":0.08344415,"top":0.44533122,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Permission denied on screenpipe volume","depth":18,"bounds":{"left":0.0043218085,"top":0.46288908,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Permission denied on screenpipe volume","depth":19,"bounds":{"left":0.08344415,"top":0.4660814,"width":0.005984043,"height":0.015163607},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Screenpipe sync database attachment error","depth":18,"bounds":{"left":0.0043218085,"top":0.48443735,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Screenpipe sync database attachment error","depth":19,"bounds":{"left":0.08344415,"top":0.48762968,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Last swimming outing with Dani","depth":18,"bounds":{"left":0.0043218085,"top":0.5051876,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Last swimming outing with Dani","depth":19,"bounds":{"left":0.08344415,"top":0.5083799,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Definition of incarcerated","depth":18,"bounds":{"left":0.0043218085,"top":0.52673584,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Definition of incarcerated","depth":19,"bounds":{"left":0.08344415,"top":0.52992815,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Chromecast remote volume buttons not working","depth":18,"bounds":{"left":0.0043218085,"top":0.547486,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Chromecast remote volume buttons not working","depth":19,"bounds":{"left":0.08344415,"top":0.5506784,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Salesforce API errors with Organization and FieldDefinition queries","depth":18,"bounds":{"left":0.0043218085,"top":0.56903434,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Salesforce API errors with Organization and FieldDefinition queries","depth":19,"bounds":{"left":0.08344415,"top":0.57222664,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Daily activity summary from screenpipe data","depth":18,"bounds":{"left":0.0043218085,"top":0.5897845,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Daily activity summary from screenpipe data","depth":19,"bounds":{"left":0.08344415,"top":0.59297687,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"MacBook unexpected restarts and kanji screen","depth":18,"bounds":{"left":0.0043218085,"top":0.6113328,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for MacBook unexpected restarts and kanji screen","depth":19,"bounds":{"left":0.08344415,"top":0.61452514,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Security patch review and testing guidance","depth":18,"bounds":{"left":0.0043218085,"top":0.632083,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Security patch review and testing guidance","depth":19,"bounds":{"left":0.08344415,"top":0.63527536,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Food calorie values reference","depth":18,"bounds":{"left":0.0043218085,"top":0.65363127,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Food calorie values reference","depth":19,"bounds":{"left":0.08344415,"top":0.65682364,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Tracking location history from last week","depth":18,"bounds":{"left":0.0043218085,"top":0.6743815,"width":0.08643617,"height":0.011173184},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Tracking location history from last week","depth":19,"bounds":{"left":0.08344415,"top":0.6775738,"width":0.005984043,"height":0.007980846},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"Lukas Pro","depth":15,"bounds":{"left":0.0043218085,"top":0.6943336,"width":0.037898935,"height":0.01915403},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Get apps and extensions","depth":15,"bounds":{"left":0.08277926,"top":0.6943336,"width":0.007978723,"height":0.01915403},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"HubSpot rate limit implementation strategy, rename chat","depth":19,"bounds":{"left":0.043218084,"top":0.02793296,"width":0.09773936,"height":0.022346368},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"HubSpot rate limit implementation strategy","depth":21,"bounds":{"left":0.04454787,"top":0.031923383,"width":0.09507979,"height":0.014365523},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.04454787,"top":0.031923383,"width":0.003656915,"height":0.014365523}},{"char_start":1,"char_count":41,"bounds":{"left":0.048204787,"top":0.031923383,"width":0.09142287,"height":0.014365523}}],"role_description":"text"},{"role":"AXPopUpButton","text":"More options for HubSpot rate limit implementation strategy","depth":19,"bounds":{"left":0.14128989,"top":0.02793296,"width":0.0066489363,"height":0.022346368},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Open sidebar","depth":21,"bounds":{"left":0.47340426,"top":0.026336791,"width":0.010638298,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Share chat","depth":21,"bounds":{"left":0.48537233,"top":0.026336791,"width":0.010638298,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Claude finished the response","depth":21,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"You said: So just a solution for rate limit implementation.","depth":20,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"You said: So just a solution for rate limit implementation.","depth":21,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"So just a solution for rate limit implementation. The situation currently is that there are some daily and secondary limits for HubSpot. I would like to make sure I never reach a 429 error rate limit. The requests can come from any flow. It can be:","depth":24,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"updating activity (engagement, meeting, call, note)","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"searching for a company or contact","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"updating deal","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"patching IDs\nReview what the limit is at the moment in the HubSpot documentation and then think of the solution:","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"where to store it","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"how to read it","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"how to work with multiple jobs","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"how to work with paginated requests Let's consider a situation when there are 600 opportunities to sync. What would be the flow? How would the rate limit be recognized? How would it be handled? What are the potential issues? [API usage guidelines and limits - HubSpot docs](","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXLink","text":"https://developers.hubspot.com/docs/developer-tooling/platform/usage-guidelines","depth":25,"on_screen":false,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"https://developers.hubspot.com/docs/developer-tooling/platform/usage-guidelines","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"). Example of such a error Client error:","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"POST https://api.hubapi.com/crm/v3/objects/contact/search","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"resulted in a","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"429 Too Many Requests","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"response: {\"status\":\"error\",\"message\":\"You have reached your secondly limit.\",\"errorType\":\"RATE_LIMIT\",\"correlationId\":\"019dffc4-4 (truncated...). Think carefully about the implementation and potential issue and bottlenecks.","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Show more","depth":22,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:42","depth":22,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Retry","depth":22,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Edit","depth":22,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Copy","depth":22,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXHeading","text":"Claude responded: Current HubSpot limits (Apr 2026)","depth":21,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"Claude responded: Current HubSpot limits (Apr 2026)","depth":22,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Synthesized HubSpot rate limit architecture with Redis storage and sliding window algorithms","depth":22,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Synthesized HubSpot rate limit architecture with Redis storage and sliding window algorithms","depth":23,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"Current HubSpot limits (Apr 2026)","depth":24,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"Current HubSpot limits (Apr 2026)","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"For privately distributed apps (which is what Jiminny presumably uses with HubSpot), the limits are layered: a per-app burst window of 100/10s on Free/Starter, 190/10s on Pro/Enterprise, or 250/10s with the API Limit Increase add-on","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", plus a per-account daily cap of 250k / 625k / 1M depending on tier — shared across all private apps in the account","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":". The burst window is per app; the daily quota is per portal.","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXLink","text":"hubspot","depth":26,"on_screen":false,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"hubspot","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXLink","text":"hubspot","depth":26,"on_screen":false,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"hubspot","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"The Search API is special: five requests per second per account, capped at 200 records per page, with a hard 10,000-result ceiling per query","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":". That's the limit the 429 in your example is hitting (","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"secondly limit","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"on","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/crm/v3/objects/contact/search","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"). It's a separate bucket from the 190/10s, and critically, search responses do not include the","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"X-HubSpot-RateLimit-*","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"headers","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— you can't read remaining capacity off the response, you have to track it yourself.","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXLink","text":"hubspot","depth":26,"on_screen":false,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"hubspot","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXLink","text":"hubspot","depth":26,"on_screen":false,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"hubspot","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Non-search endpoints return","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"X-HubSpot-RateLimit-Remaining","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":",","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"-Max","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", and","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"-Interval-Milliseconds","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":". The daily headers are not returned for OAuth-authenticated calls","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", so for those you check the account-info endpoint or maintain your own counter. There's also a soft rule: errors should stay under 5% of total daily requests","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— that's enforced for marketplace listing, but it's also a sane operational target.","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXLink","text":"hubspot","depth":26,"on_screen":false,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"hubspot","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXLink","text":"hubspot","depth":26,"on_screen":false,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"hubspot","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"So you have","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"four buckets","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"to track at minimum: app-burst (10s sliding), search-secondly (1s sliding), account-daily (24h fixed, midnight in HubSpot's TZ), and per-app daily share (your own budgeting on top of the account cap).","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"Where to store it","depth":24,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"Where to store it","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Redis. It's the only realistic option once you have multiple queue workers — DB-backed counters serialize too much, and in-process state can't coordinate across workers. Laravel already speaks Redis natively, and you get atomic","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"INCR","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"EXPIRE","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"plus Lua scripting for true CAS semantics.","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Key layout I'd use:","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Copy to clipboard","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"hubspot:rl:burst:{portalId}:{appId} ZSET (sliding 10s)","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"hubspot:rl:search:{portalId} ZSET (sliding 1s)","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"hubspot:rl:daily:{portalId} STRING + TTL to midnight TZ","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"hubspot:rl:meta:{portalId} HASH (last seen headers)","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"The two short-window buckets are sliding-window-log (Redis ZSET, score =","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"microtime","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", member = unique request id). Lua script removes entries older than the window, counts remaining slots, and only adds the new one if there's room — all atomic. Fixed windows are simpler but allow 2× the limit at the boundary, which on a 5/s window is brutal.","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"The daily bucket is a plain","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"INCR","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"with TTL set to seconds-until-midnight in","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"HubSpot's account timezone","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", not yours — Sofia is UTC+2/+3 but your portal might be set to US Eastern. Get this once and cache it.","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"How to read it","depth":24,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"How to read it","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Two-phase: optimistic pre-check, authoritative post-update.","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Before a call, run the Lua acquire script. If it returns \"denied,\" sleep until a slot frees up (the script can return ms-until-next-slot) or push the job back to the queue with a delay. Don't busy-loop.","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"After the call, parse","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"X-HubSpot-RateLimit-Remaining","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"-Max","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"-Interval-Milliseconds","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"and store them in","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"hubspot:rl:meta:{portalId}","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":". This is your reality check — if your local counter says 50 remaining but HubSpot's header says 5, you trust HubSpot and clamp your counter. This handles clock drift, missed accounting (e.g., crashed worker that took a token but never made the request), and other apps in the same account consuming the daily budget invisibly.","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"For search specifically, since headers don't come back, the local counter","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"is","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"the source of truth — meaning if you ever crash mid-flight, you've under-counted. Always release tokens on connection-level failure but","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"not","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"on 429 (you really did make that request).","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"How to work with multiple jobs","depth":24,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"How to work with multiple jobs","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"The queue layer needs to enforce concurrency separately from the rate limiter. Both work together:","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Concurrency cap","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"via","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Queue::throttle()","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"or a Redis semaphore — limits how many sync workers run in parallel against HubSpot. Without this, you can have 50 workers all blocked waiting for tokens, which is wasteful and creates retry storms.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Per-tenant fairness","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— if you sync many Jiminny customers into different HubSpot portals, each portal has its own bucket but you still want one slow portal not to starve others. Either separate queues per portal or a fair-share scheduler.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Priority lanes","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— webhook-driven updates (user-visible latency) should outrank background batch syncs. Two queues:","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"hubspot-priority","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"and","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"hubspot-bulk","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", with priority workers taking 70% of the burst budget and bulk taking 30% (enforce via separate sub-buckets if you really want hard separation, otherwise just pull from priority first).","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Backoff on 429","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— respect the","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Retry-After","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"header. If absent, exponential with jitter (e.g.,","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"min(2^attempt * 250ms, 30s) ± 20%","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"). The jitter is non-negotiable; without it, simultaneous 429s retry in lockstep and you get thundering-herd 429s on retry.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"How to work with paginated requests","depth":24,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"How to work with paginated requests","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"The trap is treating \"fetch all\" as one logical operation. Each page is its own API call and competes for tokens with everything else.","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Two practical rules:","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Don't hold the worker idle while paginating.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"If page N takes 500ms and page N+1 needs to wait 800ms for a token, you've burned 800ms of worker time doing nothing. Instead, fetch page N, dispatch the","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"processing","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"of page N as a separate job, and queue a \"fetch page N+1\" job with a delay equal to the wait time. Each page becomes its own atomic unit.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Always batch where HubSpot offers it.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"POST /crm/v3/objects/{type}/batch/{read|update|create}","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"accepts up to 100 IDs per call. For your \"patching IDs\" flow this is the difference between 600 calls and 6.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"Walkthrough: 600 opportunities","depth":24,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"Walkthrough: 600 opportunities","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Naive flow (one PATCH per deal): 600 calls. At 190/10s that's ~32s of API time, well under daily. You'd hit burst easily without throttling. Plus likely 1-3 search calls upfront and N association calls.","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Sane flow:","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Identify deltas","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— if you can avoid Search at all, do. Use","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"lastmodifieddate","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"filter on a single search if you must, paginate at limit=200. For 600 deals that's 3 search calls @ 5/s = ~600ms naturally throttled.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Batch read","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"current state —","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"POST /crm/v3/objects/deals/batch/read","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"with 100 IDs per call → 6 calls. Burst weight 6.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Compute diff","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"in your code (no API).","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Batch update","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"—","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"POST /crm/v3/objects/deals/batch/update","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"with 100 per call → 6 calls.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Associations","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"—","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"POST /crm/v4/associations/{from}/{to}/batch/create","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"if needed → another few batch calls.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Total: ~15-20 API calls for 600 deals. Burst budget consumed: 20/190 over ~5s. Daily impact: trivial.","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Recognition: pre-check denies if","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"<weight>","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"slots aren't free; on 429 the response surfaces","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"policyName","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"(DAILY/SECONDLY) — log it, push the job back with","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Retry-After","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"delay, increment a metric so you can alarm on sustained 429 rate.","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"Pitfalls & bottlenecks worth pre-empting","depth":24,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"Pitfalls & bottlenecks worth pre-empting","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Daily quota is shared across the whole portal","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", including any n8n flows, other private apps, marketing automation calling APIs, etc. Budget for ~70-80% of the documented limit, not 100%. Add an internal per-app daily cap so a runaway sync can't starve other apps.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Search is uniquely fragile","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":": separate 5/s bucket, no headers to read, 10k-result cap per query. If you ever hit 10k+ deals matching a filter, partition by","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"hs_object_id","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"ranges or by","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"lastmodifieddate","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"windows.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Retry storms after HubSpot incidents","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— always jitter, always cap total retries (e.g., 5 attempts, then dead-letter).","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Webhook → sync → webhook loops","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— when your update fires a HubSpot webhook that triggers another sync. Tag your own writes (e.g., a custom property","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"jy_last_sync_id","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":") and ignore webhooks where it just changed.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Token refresh","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— OAuth refresh itself counts against burst. Cache the access token in Redis with TTL =","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"expires_in - 60s","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", single-flight the refresh (only one worker refreshes; others wait on a lock).","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Search latency for fresh writes","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— newly created/updated objects don't appear in search instantly. Don't write-then-search; use returned IDs directly.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Clock skew","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— Redis is authoritative. Don't use","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"time()","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"from each worker for window scoring; use","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"redis.call('TIME')","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"inside the Lua script.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Dead workers with held tokens","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— sliding-window-log handles this naturally because tokens expire by score; token-bucket implementations need explicit release-on-crash logic.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"The 5% error rule","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"counts every 429 toward your error budget, even successfully retried ones. If your pre-check is working well, 429s should be near zero — if they're not, your pre-check is wrong, not just slow.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Phantom contention with Laravel","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"RateLimited","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"middleware","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":": it's per-job-class by default, not per-portal. If your","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"SyncDealJob","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"and","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"UpdateActivityJob","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"are different classes both calling HubSpot, they don't share a Laravel-level limiter — you need a single","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"HubspotRateLimiter","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"service that everything routes through.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"If you want, I can sketch the Lua script for the sliding-window acquire and the Laravel service wrapper around it.","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Copy","depth":22,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Give positive feedback","depth":22,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Give negative feedback","depth":22,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Retry","depth":22,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXHeading","text":"You said: What will happen if there are two different types of rate limits?","depth":20,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"You said: What will happen if there are two different types of rate limits?","depth":21,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"What will happen if there are two different types of rate limits?","depth":24,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Search requests that have 5 requests per second","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"The other rate limit that has, let's say, 100 requests per 10 seconds How do these work together? Is there some conflict? Can I reach the limit with one request and block either as well, or are these separated? Can I still continue making search requests once I hit the normal requests limits?","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"13:40","depth":22,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Retry","depth":22,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Edit","depth":22,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Copy","depth":22,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXHeading","text":"Claude responded: They're independent buckets — with one shared bucket on top.","depth":21,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"Claude responded: They're independent buckets — with one shared bucket on top.","depth":22,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Analyzed independent rate limit buckets and their practical interactions","depth":22,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Analyzed independent rate limit buckets and their practical interactions","depth":23,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"They're independent buckets — with one shared bucket on top.","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"The three buckets and what each call hits","depth":24,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"The three buckets and what each call hits","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Copy to clipboard","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"┌──────────────────┐","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Search request ──→ │ Search: 5/sec │ ──┐","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"└──────────────────┘ │","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"├──→ ┌─────────────────┐","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"┌──────────────────┐ │ │ Daily: 250k–1M │","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Non-search call ──→ │ Burst: 190/10s │ ──┘ │ (per portal) │","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"└──────────────────┘ └─────────────────┘","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"A search call is only metered against the search bucket and the daily bucket. A non-search call (batch read/update, single PATCH, associations, etc.) is only metered against the burst bucket and the daily bucket. The two short-window buckets do not share counters.","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"What this means practically","depth":24,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"What this means practically","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Hitting search secondly limit (5/s):","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Only further","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/search","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"calls 429. Your batch reads, batch updates, single PATCHes, association calls — all keep working at full burst speed. This is actually useful: if your sync is bottlenecked on Search, you can pivot to using","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"lastmodifieddate","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"filters via batch endpoints, or use the IDs you already have to do batch reads, while Search cools off.","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Hitting burst limit (190/10s):","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Only non-search calls 429. You can still issue Search calls at 5/s. Useful for: continuing to identify deltas for queueing while in-flight updates drain, or refreshing a small set of records via Search even though your write pipeline is paused.","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Hitting daily limit:","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Everything stops. Search and non-search alike. Doesn't unblock until midnight in your portal's configured timezone — and remember this is shared across every private app in the portal, plus n8n flows, marketing tools, anything else hitting the API with that account.","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"So can one type of request block the other?","depth":24,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"So can one type of request block the other?","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Search → Burst:","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"No.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Saturating Search at 50 calls per 10s leaves your full 190/10s burst untouched.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Burst → Search:","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"No.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Saturating burst leaves Search's 5/s untouched.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Either → Daily:","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Yes","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", but only by contributing to the same daily counter. It's volume that kills you here, not the type.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"In theory you can sustain ~50 search + ~190 other =","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"~240 calls per 10 seconds","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"indefinitely (until daily runs out), because the two buckets bill independently.","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"Implementation consequence","depth":24,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"Implementation consequence","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Your rate limiter needs to know which bucket a request hits before it acquires. Cleanest pattern:","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Copy to clipboard","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"php","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"$limiter","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"->","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"acquire","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"(","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"'search'","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":",","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"$weight","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"=","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":")","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":";","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"// for search endpoints only","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"$limiter","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"->","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"acquire","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"(","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"'burst'","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":",","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"$weight","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"=","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":")","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":";","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"// for everything else","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"$limiter","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"->","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"acquire","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"(","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"'daily'","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":",","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"$weight","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"=","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":")","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":";","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"// every call, both kinds","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"In Redis: three separate keys, three separate Lua acquire scripts (or one script with a bucket parameter). A search call calls","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"acquire('search')","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"acquire('daily')","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":". A batch update calls","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"acquire('burst')","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"acquire('daily')","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":".","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"One subtle pitfall: when you backoff on a 429,","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"inspect","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"policyName","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"in the response body","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"to know which bucket actually fired. If you see","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"SECONDLY","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"from a search endpoint, you only need to delay search-bound jobs — burst-bound jobs in the queue can keep running. If you blanket-pause everything on any 429, you waste capacity on the bucket that's still healthy. Two queues (or two throttle keys) make this clean; one global pause is the lazy version.","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"The other subtlety: the burst response gives you","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"X-HubSpot-RateLimit-Remaining","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"to clamp local state against, but search doesn't return those headers. So your search counter is unverified — be slightly more conservative there (e.g., budget 4/s instead of 5) to absorb the unaccounted-for calls.","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Copy","depth":22,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Give positive feedback","depth":22,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Give negative feedback","depth":22,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Retry","depth":22,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXHeading","text":"You said: Ok, so what will happen each time I make a request?","depth":20,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"You said: Ok, so what will happen each time I make a request?","depth":21,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Ok, so what will happen each time I make a request? Let's say I have 100,000 requests to make that are instant. Do I need to increment each request based on the type? For example, if there is a search request, I need to increment both the search bucket and also the daily bucket. If it's a burst, then I can go to the daily and burst buckets. If I need to check if it can make a call, do I need to see both the daily and search, or burst, respectively? Isn't that too heavy for the infrastructure, adding additional load to each request?","depth":24,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"13:44","depth":22,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Retry","depth":22,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Edit","depth":22,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Copy","depth":22,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXHeading","text":"Claude responded: Yes, your understanding is correct — every request must check and reserve from each bucket it applies to, atomically, before the call goes out.","depth":21,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"Claude responded: Yes, your understanding is correct — every request must check and reserve from each bucket it applies to, atomically, before the call goes out.","depth":22,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Analyzed per-request overhead concerns and quantified Redis performance impact","depth":22,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Analyzed per-request overhead concerns and quantified Redis performance impact","depth":23,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Yes, your understanding is correct — every request must check and reserve from each bucket it applies to, atomically, before the call goes out. But the overhead is much smaller than it sounds, and importantly, it's nowhere near your bottleneck.","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"What \"two buckets per request\" actually costs","depth":24,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"What \"two buckets per request\" actually costs","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Each request makes","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"one round trip to Redis","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— not two — because you fold both bucket checks into a single Lua script that runs atomically server-side:","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Copy to clipboard","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"lua","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"-- KEYS[1] = burst bucket key (or search)","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"-- KEYS[2] = daily bucket key","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"-- ARGV[1] = now (ms) ARGV[2] = window_ms","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"-- ARGV[3] = bucket_max ARGV[4] = daily_max","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"-- ARGV[5] = request_id ARGV[6] = daily_ttl","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"-- Trim sliding window","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"redis","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":".","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"call","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"(","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"'ZREMRANGEBYSCORE'","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":",","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"KEYS","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"[","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"]","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":",","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"0","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":",","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"ARGV","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"[","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"]","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"-","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"ARGV","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"[","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"2","depth":27,"on_screen":false,"role_description":"text"}]...
|
7146116803105359797
|
-6913325059417482156
|
click
|
accessibility
|
NULL
|
Skip to content
Skip to content
Click to collapse
Skip to content
Skip to content
Click to collapse
⌘B
Drag to resize
Open sidebar
Chat
Cowork
Code
New chat ⌘N
New chat
⌘N
Projects
Artifacts
Customize
Pinned
Bulgarian citizenship application process for EU residents
More options for Bulgarian citizenship application process for EU residents
Dawarich location tracking project
More options for Dawarich location tracking project
Recents
View all
HubSpot rate limit implementation strategy
More options for HubSpot rate limit implementation strategy
Screenpipe retention policy code location
More options for Screenpipe retention policy code location
Viewing retention policy in screenpipe
More options for Viewing retention policy in screenpipe
Clean shot x video recording termination issue
More options for Clean shot x video recording termination issue
HubSpot rate limit handling with executeRequest
More options for HubSpot rate limit handling with executeRequest
Untitled
More options
💬 Screen pipe. Is there ability…
More options for 💬 Screen pipe. Is there ability…
SMB mount access inconsistency between Finder and iTerm
More options for SMB mount access inconsistency between Finder and iTerm
💬 What is the best switch I can…
More options for 💬 What is the best switch I can…
Permission denied on screenpipe volume
More options for Permission denied on screenpipe volume
Screenpipe sync database attachment error
More options for Screenpipe sync database attachment error
Last swimming outing with Dani
More options for Last swimming outing with Dani
Definition of incarcerated
More options for Definition of incarcerated
Chromecast remote volume buttons not working
More options for Chromecast remote volume buttons not working
Salesforce API errors with Organization and FieldDefinition queries
More options for Salesforce API errors with Organization and FieldDefinition queries
Daily activity summary from screenpipe data
More options for Daily activity summary from screenpipe data
MacBook unexpected restarts and kanji screen
More options for MacBook unexpected restarts and kanji screen
Security patch review and testing guidance
More options for Security patch review and testing guidance
Food calorie values reference
More options for Food calorie values reference
Tracking location history from last week
More options for Tracking location history from last week
Lukas Pro
Get apps and extensions
HubSpot rate limit implementation strategy, rename chat
HubSpot rate limit implementation strategy
More options for HubSpot rate limit implementation strategy
Open sidebar
Share chat
Claude finished the response
You said: So just a solution for rate limit implementation.
You said: So just a solution for rate limit implementation.
So just a solution for rate limit implementation. The situation currently is that there are some daily and secondary limits for HubSpot. I would like to make sure I never reach a 429 error rate limit. The requests can come from any flow. It can be:
updating activity (engagement, meeting, call, note)
searching for a company or contact
updating deal
patching IDs
Review what the limit is at the moment in the HubSpot documentation and then think of the solution:
where to store it
how to read it
how to work with multiple jobs
how to work with paginated requests Let's consider a situation when there are 600 opportunities to sync. What would be the flow? How would the rate limit be recognized? How would it be handled? What are the potential issues? [API usage guidelines and limits - HubSpot docs](
https://developers.hubspot.com/docs/developer-tooling/platform/usage-guidelines
https://developers.hubspot.com/docs/developer-tooling/platform/usage-guidelines
). Example of such a error Client error:
POST https://api.hubapi.com/crm/v3/objects/contact/search
resulted in a
429 Too Many Requests
response: {"status":"error","message":"You have reached your secondly limit.","errorType":"RATE_LIMIT","correlationId":"019dffc4-4 (truncated...). Think carefully about the implementation and potential issue and bottlenecks.
Show more
10:42
Retry
Edit
Copy
Claude responded: Current HubSpot limits (Apr 2026)
Claude responded: Current HubSpot limits (Apr 2026)
Synthesized HubSpot rate limit architecture with Redis storage and sliding window algorithms
Synthesized HubSpot rate limit architecture with Redis storage and sliding window algorithms
Current HubSpot limits (Apr 2026)
Current HubSpot limits (Apr 2026)
For privately distributed apps (which is what Jiminny presumably uses with HubSpot), the limits are layered: a per-app burst window of 100/10s on Free/Starter, 190/10s on Pro/Enterprise, or 250/10s with the API Limit Increase add-on
, plus a per-account daily cap of 250k / 625k / 1M depending on tier — shared across all private apps in the account
. The burst window is per app; the daily quota is per portal.
hubspot
hubspot
hubspot
hubspot
The Search API is special: five requests per second per account, capped at 200 records per page, with a hard 10,000-result ceiling per query
. That's the limit the 429 in your example is hitting (
secondly limit
on
/crm/v3/objects/contact/search
). It's a separate bucket from the 190/10s, and critically, search responses do not include the
X-HubSpot-RateLimit-*
headers
— you can't read remaining capacity off the response, you have to track it yourself.
hubspot
hubspot
hubspot
hubspot
Non-search endpoints return
X-HubSpot-RateLimit-Remaining
,
-Max
, and
-Interval-Milliseconds
. The daily headers are not returned for OAuth-authenticated calls
, so for those you check the account-info endpoint or maintain your own counter. There's also a soft rule: errors should stay under 5% of total daily requests
— that's enforced for marketplace listing, but it's also a sane operational target.
hubspot
hubspot
hubspot
hubspot
So you have
four buckets
to track at minimum: app-burst (10s sliding), search-secondly (1s sliding), account-daily (24h fixed, midnight in HubSpot's TZ), and per-app daily share (your own budgeting on top of the account cap).
Where to store it
Where to store it
Redis. It's the only realistic option once you have multiple queue workers — DB-backed counters serialize too much, and in-process state can't coordinate across workers. Laravel already speaks Redis natively, and you get atomic
INCR
/
EXPIRE
plus Lua scripting for true CAS semantics.
Key layout I'd use:
Copy to clipboard
hubspot:rl:burst:{portalId}:{appId} ZSET (sliding 10s)
hubspot:rl:search:{portalId} ZSET (sliding 1s)
hubspot:rl:daily:{portalId} STRING + TTL to midnight TZ
hubspot:rl:meta:{portalId} HASH (last seen headers)
The two short-window buckets are sliding-window-log (Redis ZSET, score =
microtime
, member = unique request id). Lua script removes entries older than the window, counts remaining slots, and only adds the new one if there's room — all atomic. Fixed windows are simpler but allow 2× the limit at the boundary, which on a 5/s window is brutal.
The daily bucket is a plain
INCR
with TTL set to seconds-until-midnight in
HubSpot's account timezone
, not yours — Sofia is UTC+2/+3 but your portal might be set to US Eastern. Get this once and cache it.
How to read it
How to read it
Two-phase: optimistic pre-check, authoritative post-update.
Before a call, run the Lua acquire script. If it returns "denied," sleep until a slot frees up (the script can return ms-until-next-slot) or push the job back to the queue with a delay. Don't busy-loop.
After the call, parse
X-HubSpot-RateLimit-Remaining
/
-Max
/
-Interval-Milliseconds
and store them in
hubspot:rl:meta:{portalId}
. This is your reality check — if your local counter says 50 remaining but HubSpot's header says 5, you trust HubSpot and clamp your counter. This handles clock drift, missed accounting (e.g., crashed worker that took a token but never made the request), and other apps in the same account consuming the daily budget invisibly.
For search specifically, since headers don't come back, the local counter
is
the source of truth — meaning if you ever crash mid-flight, you've under-counted. Always release tokens on connection-level failure but
not
on 429 (you really did make that request).
How to work with multiple jobs
How to work with multiple jobs
The queue layer needs to enforce concurrency separately from the rate limiter. Both work together:
Concurrency cap
via
Queue::throttle()
or a Redis semaphore — limits how many sync workers run in parallel against HubSpot. Without this, you can have 50 workers all blocked waiting for tokens, which is wasteful and creates retry storms.
Per-tenant fairness
— if you sync many Jiminny customers into different HubSpot portals, each portal has its own bucket but you still want one slow portal not to starve others. Either separate queues per portal or a fair-share scheduler.
Priority lanes
— webhook-driven updates (user-visible latency) should outrank background batch syncs. Two queues:
hubspot-priority
and
hubspot-bulk
, with priority workers taking 70% of the burst budget and bulk taking 30% (enforce via separate sub-buckets if you really want hard separation, otherwise just pull from priority first).
Backoff on 429
— respect the
Retry-After
header. If absent, exponential with jitter (e.g.,
min(2^attempt * 250ms, 30s) ± 20%
). The jitter is non-negotiable; without it, simultaneous 429s retry in lockstep and you get thundering-herd 429s on retry.
How to work with paginated requests
How to work with paginated requests
The trap is treating "fetch all" as one logical operation. Each page is its own API call and competes for tokens with everything else.
Two practical rules:
Don't hold the worker idle while paginating.
If page N takes 500ms and page N+1 needs to wait 800ms for a token, you've burned 800ms of worker time doing nothing. Instead, fetch page N, dispatch the
processing
of page N as a separate job, and queue a "fetch page N+1" job with a delay equal to the wait time. Each page becomes its own atomic unit.
Always batch where HubSpot offers it.
POST /crm/v3/objects/{type}/batch/{read|update|create}
accepts up to 100 IDs per call. For your "patching IDs" flow this is the difference between 600 calls and 6.
Walkthrough: 600 opportunities
Walkthrough: 600 opportunities
Naive flow (one PATCH per deal): 600 calls. At 190/10s that's ~32s of API time, well under daily. You'd hit burst easily without throttling. Plus likely 1-3 search calls upfront and N association calls.
Sane flow:
Identify deltas
— if you can avoid Search at all, do. Use
lastmodifieddate
filter on a single search if you must, paginate at limit=200. For 600 deals that's 3 search calls @ 5/s = ~600ms naturally throttled.
Batch read
current state —
POST /crm/v3/objects/deals/batch/read
with 100 IDs per call → 6 calls. Burst weight 6.
Compute diff
in your code (no API).
Batch update
—
POST /crm/v3/objects/deals/batch/update
with 100 per call → 6 calls.
Associations
—
POST /crm/v4/associations/{from}/{to}/batch/create
if needed → another few batch calls.
Total: ~15-20 API calls for 600 deals. Burst budget consumed: 20/190 over ~5s. Daily impact: trivial.
Recognition: pre-check denies if
<weight>
slots aren't free; on 429 the response surfaces
policyName
(DAILY/SECONDLY) — log it, push the job back with
Retry-After
delay, increment a metric so you can alarm on sustained 429 rate.
Pitfalls & bottlenecks worth pre-empting
Pitfalls & bottlenecks worth pre-empting
Daily quota is shared across the whole portal
, including any n8n flows, other private apps, marketing automation calling APIs, etc. Budget for ~70-80% of the documented limit, not 100%. Add an internal per-app daily cap so a runaway sync can't starve other apps.
Search is uniquely fragile
: separate 5/s bucket, no headers to read, 10k-result cap per query. If you ever hit 10k+ deals matching a filter, partition by
hs_object_id
ranges or by
lastmodifieddate
windows.
Retry storms after HubSpot incidents
— always jitter, always cap total retries (e.g., 5 attempts, then dead-letter).
Webhook → sync → webhook loops
— when your update fires a HubSpot webhook that triggers another sync. Tag your own writes (e.g., a custom property
jy_last_sync_id
) and ignore webhooks where it just changed.
Token refresh
— OAuth refresh itself counts against burst. Cache the access token in Redis with TTL =
expires_in - 60s
, single-flight the refresh (only one worker refreshes; others wait on a lock).
Search latency for fresh writes
— newly created/updated objects don't appear in search instantly. Don't write-then-search; use returned IDs directly.
Clock skew
— Redis is authoritative. Don't use
time()
from each worker for window scoring; use
redis.call('TIME')
inside the Lua script.
Dead workers with held tokens
— sliding-window-log handles this naturally because tokens expire by score; token-bucket implementations need explicit release-on-crash logic.
The 5% error rule
counts every 429 toward your error budget, even successfully retried ones. If your pre-check is working well, 429s should be near zero — if they're not, your pre-check is wrong, not just slow.
Phantom contention with Laravel
RateLimited
middleware
: it's per-job-class by default, not per-portal. If your
SyncDealJob
and
UpdateActivityJob
are different classes both calling HubSpot, they don't share a Laravel-level limiter — you need a single
HubspotRateLimiter
service that everything routes through.
If you want, I can sketch the Lua script for the sliding-window acquire and the Laravel service wrapper around it.
Copy
Give positive feedback
Give negative feedback
Retry
You said: What will happen if there are two different types of rate limits?
You said: What will happen if there are two different types of rate limits?
What will happen if there are two different types of rate limits?
Search requests that have 5 requests per second
The other rate limit that has, let's say, 100 requests per 10 seconds How do these work together? Is there some conflict? Can I reach the limit with one request and block either as well, or are these separated? Can I still continue making search requests once I hit the normal requests limits?
13:40
Retry
Edit
Copy
Claude responded: They're independent buckets — with one shared bucket on top.
Claude responded: They're independent buckets — with one shared bucket on top.
Analyzed independent rate limit buckets and their practical interactions
Analyzed independent rate limit buckets and their practical interactions
They're independent buckets — with one shared bucket on top.
The three buckets and what each call hits
The three buckets and what each call hits
Copy to clipboard
┌──────────────────┐
Search request ──→ │ Search: 5/sec │ ──┐
└──────────────────┘ │
├──→ ┌─────────────────┐
┌──────────────────┐ │ │ Daily: 250k–1M │
Non-search call ──→ │ Burst: 190/10s │ ──┘ │ (per portal) │
└──────────────────┘ └─────────────────┘
A search call is only metered against the search bucket and the daily bucket. A non-search call (batch read/update, single PATCH, associations, etc.) is only metered against the burst bucket and the daily bucket. The two short-window buckets do not share counters.
What this means practically
What this means practically
Hitting search secondly limit (5/s):
Only further
/search
calls 429. Your batch reads, batch updates, single PATCHes, association calls — all keep working at full burst speed. This is actually useful: if your sync is bottlenecked on Search, you can pivot to using
lastmodifieddate
filters via batch endpoints, or use the IDs you already have to do batch reads, while Search cools off.
Hitting burst limit (190/10s):
Only non-search calls 429. You can still issue Search calls at 5/s. Useful for: continuing to identify deltas for queueing while in-flight updates drain, or refreshing a small set of records via Search even though your write pipeline is paused.
Hitting daily limit:
Everything stops. Search and non-search alike. Doesn't unblock until midnight in your portal's configured timezone — and remember this is shared across every private app in the portal, plus n8n flows, marketing tools, anything else hitting the API with that account.
So can one type of request block the other?
So can one type of request block the other?
Search → Burst:
No.
Saturating Search at 50 calls per 10s leaves your full 190/10s burst untouched.
Burst → Search:
No.
Saturating burst leaves Search's 5/s untouched.
Either → Daily:
Yes
, but only by contributing to the same daily counter. It's volume that kills you here, not the type.
In theory you can sustain ~50 search + ~190 other =
~240 calls per 10 seconds
indefinitely (until daily runs out), because the two buckets bill independently.
Implementation consequence
Implementation consequence
Your rate limiter needs to know which bucket a request hits before it acquires. Cleanest pattern:
Copy to clipboard
php
$limiter
->
acquire
(
'search'
,
$weight
=
1
)
;
// for search endpoints only
$limiter
->
acquire
(
'burst'
,
$weight
=
1
)
;
// for everything else
$limiter
->
acquire
(
'daily'
,
$weight
=
1
)
;
// every call, both kinds
In Redis: three separate keys, three separate Lua acquire scripts (or one script with a bucket parameter). A search call calls
acquire('search')
+
acquire('daily')
. A batch update calls
acquire('burst')
+
acquire('daily')
.
One subtle pitfall: when you backoff on a 429,
inspect
policyName
in the response body
to know which bucket actually fired. If you see
SECONDLY
from a search endpoint, you only need to delay search-bound jobs — burst-bound jobs in the queue can keep running. If you blanket-pause everything on any 429, you waste capacity on the bucket that's still healthy. Two queues (or two throttle keys) make this clean; one global pause is the lazy version.
The other subtlety: the burst response gives you
X-HubSpot-RateLimit-Remaining
to clamp local state against, but search doesn't return those headers. So your search counter is unverified — be slightly more conservative there (e.g., budget 4/s instead of 5) to absorb the unaccounted-for calls.
Copy
Give positive feedback
Give negative feedback
Retry
You said: Ok, so what will happen each time I make a request?
You said: Ok, so what will happen each time I make a request?
Ok, so what will happen each time I make a request? Let's say I have 100,000 requests to make that are instant. Do I need to increment each request based on the type? For example, if there is a search request, I need to increment both the search bucket and also the daily bucket. If it's a burst, then I can go to the daily and burst buckets. If I need to check if it can make a call, do I need to see both the daily and search, or burst, respectively? Isn't that too heavy for the infrastructure, adding additional load to each request?
13:44
Retry
Edit
Copy
Claude responded: Yes, your understanding is correct — every request must check and reserve from each bucket it applies to, atomically, before the call goes out.
Claude responded: Yes, your understanding is correct — every request must check and reserve from each bucket it applies to, atomically, before the call goes out.
Analyzed per-request overhead concerns and quantified Redis performance impact
Analyzed per-request overhead concerns and quantified Redis performance impact
Yes, your understanding is correct — every request must check and reserve from each bucket it applies to, atomically, before the call goes out. But the overhead is much smaller than it sounds, and importantly, it's nowhere near your bottleneck.
What "two buckets per request" actually costs
What "two buckets per request" actually costs
Each request makes
one round trip to Redis
— not two — because you fold both bucket checks into a single Lua script that runs atomically server-side:
Copy to clipboard
lua
-- KEYS[1] = burst bucket key (or search)
-- KEYS[2] = daily bucket key
-- ARGV[1] = now (ms) ARGV[2] = window_ms
-- ARGV[3] = bucket_max ARGV[4] = daily_max
-- ARGV[5] = request_id ARGV[6] = daily_ttl
-- Trim sliding window
redis
.
call
(
'ZREMRANGEBYSCORE'
,
KEYS
[
1
]
,
0
,
ARGV
[
1
]
-
ARGV
[
2...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
2577
|
NULL
|
0
|
2026-05-07T11:28:57.815021+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-07/1778 /Users/lukas/.screenpipe/data/data/2026-05-07/1778153337815_m1.jpg...
|
Claude
|
Claude
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Skip to content
Skip to content
Click to collapse
Skip to content
Skip to content
Click to collapse
⌘B
Drag to resize
Open sidebar
Chat
Cowork
Code
New chat ⌘N
New chat
⌘N
Projects
Artifacts
Customize
Pinned
Bulgarian citizenship application process for EU residents
More options for Bulgarian citizenship application process for EU residents
Dawarich location tracking project
More options for Dawarich location tracking project
Recents
View all
HubSpot rate limit implementation strategy
More options for HubSpot rate limit implementation strategy
Screenpipe retention policy code location
More options for Screenpipe retention policy code location
Viewing retention policy in screenpipe
More options for Viewing retention policy in screenpipe
Clean shot x video recording termination issue
More options for Clean shot x video recording termination issue
HubSpot rate limit handling with executeRequest
More options for HubSpot rate limit handling with executeRequest
Untitled
More options
💬 Screen pipe. Is there ability…
More options for 💬 Screen pipe. Is there ability…
SMB mount access inconsistency between Finder and iTerm
More options for SMB mount access inconsistency between Finder and iTerm
💬 What is the best switch I can…
More options for 💬 What is the best switch I can…
Permission denied on screenpipe volume
More options for Permission denied on screenpipe volume
Screenpipe sync database attachment error
More options for Screenpipe sync database attachment error
Last swimming outing with Dani
More options for Last swimming outing with Dani
Definition of incarcerated
More options for Definition of incarcerated
Chromecast remote volume buttons not working
More options for Chromecast remote volume buttons not working
Salesforce API errors with Organization and FieldDefinition queries
More options for Salesforce API errors with Organization and FieldDefinition queries
Daily activity summary from screenpipe data
More options for Daily activity summary from screenpipe data
MacBook unexpected restarts and kanji screen
More options for MacBook unexpected restarts and kanji screen
Security patch review and testing guidance
More options for Security patch review and testing guidance
Food calorie values reference
More options for Food calorie values reference
Tracking location history from last week
More options for Tracking location history from last week
Lukas Pro
Get apps and extensions
HubSpot rate limit implementation strategy, rename chat
HubSpot rate limit implementation strategy
More options for HubSpot rate limit implementation strategy
Open sidebar
Share chat
Claude finished the response
You said: So just a solution for rate limit implementation.
You said: So just a solution for rate limit implementation.
So just a solution for rate limit implementation. The situation currently is that there are some daily and secondary limits for HubSpot. I would like to make sure I never reach a 429 error rate limit. The requests can come from any flow. It can be:
updating activity (engagement, meeting, call, note)
searching for a company or contact
updating deal
patching IDs
Review what the limit is at the moment in the HubSpot documentation and then think of the solution:
where to store it
how to read it
how to work with multiple jobs
how to work with paginated requests Let's consider a situation when there are 600 opportunities to sync. What would be the flow? How would the rate limit be recognized? How would it be handled? What are the potential issues? [API usage guidelines and limits - HubSpot docs](
https://developers.hubspot.com/docs/developer-tooling/platform/usage-guidelines
https://developers.hubspot.com/docs/developer-tooling/platform/usage-guidelines
). Example of such a error Client error:
POST https://api.hubapi.com/crm/v3/objects/contact/search
resulted in a
429 Too Many Requests
response: {"status":"error","message":"You have reached your secondly limit.","errorType":"RATE_LIMIT","correlationId":"019dffc4-4 (truncated...). Think carefully about the implementation and potential issue and bottlenecks.
Show more
10:42
Retry
Edit
Copy
Claude responded: Current HubSpot limits (Apr 2026)
Claude responded: Current HubSpot limits (Apr 2026)
Synthesized HubSpot rate limit architecture with Redis storage and sliding window algorithms
Synthesized HubSpot rate limit architecture with Redis storage and sliding window algorithms
Current HubSpot limits (Apr 2026)
Current HubSpot limits (Apr 2026)
For privately distributed apps (which is what Jiminny presumably uses with HubSpot), the limits are layered: a per-app burst window of 100/10s on Free/Starter, 190/10s on Pro/Enterprise, or 250/10s with the API Limit Increase add-on
, plus a per-account daily cap of 250k / 625k / 1M depending on tier — shared across all private apps in the account
. The burst window is per app; the daily quota is per portal.
hubspot
hubspot
hubspot
hubspot
The Search API is special: five requests per second per account, capped at 200 records per page, with a hard 10,000-result ceiling per query
. That's the limit the 429 in your example is hitting (
secondly limit
on
/crm/v3/objects/contact/search
). It's a separate bucket from the 190/10s, and critically, search responses do not include the
X-HubSpot-RateLimit-*
headers
— you can't read remaining capacity off the response, you have to track it yourself.
hubspot
hubspot
hubspot
hubspot
Non-search endpoints return
X-HubSpot-RateLimit-Remaining
,
-Max
, and
-Interval-Milliseconds
. The daily headers are not returned for OAuth-authenticated calls
, so for those you check the account-info endpoint or maintain your own counter. There's also a soft rule: errors should stay under 5% of total daily requests
— that's enforced for marketplace listing, but it's also a sane operational target.
hubspot
hubspot
hubspot
hubspot
So you have
four buckets
to track at minimum: app-burst (10s sliding), search-secondly (1s sliding), account-daily (24h fixed, midnight in HubSpot's TZ), and per-app daily share (your own budgeting on top of the account cap).
Where to store it
Where to store it
Redis. It's the only realistic option once you have multiple queue workers — DB-backed counters serialize too much, and in-process state can't coordinate across workers. Laravel already speaks Redis natively, and you get atomic
INCR
/
EXPIRE
plus Lua scripting for true CAS semantics.
Key layout I'd use:
Copy to clipboard
hubspot:rl:burst:{portalId}:{appId} ZSET (sliding 10s)
hubspot:rl:search:{portalId} ZSET (sliding 1s)
hubspot:rl:daily:{portalId} STRING + TTL to midnight TZ
hubspot:rl:meta:{portalId} HASH (last seen headers)
The two short-window buckets are sliding-window-log (Redis ZSET, score =
microtime
, member = unique request id). Lua script removes entries older than the window, counts remaining slots, and only adds the new one if there's room — all atomic. Fixed windows are simpler but allow 2× the limit at the boundary, which on a 5/s window is brutal.
The daily bucket is a plain
INCR
with TTL set to seconds-until-midnight in
HubSpot's account timezone
, not yours — Sofia is UTC+2/+3 but your portal might be set to US Eastern. Get this once and cache it.
How to read it
How to read it
Two-phase: optimistic pre-check, authoritative post-update.
Before a call, run the Lua acquire script. If it returns "denied," sleep until a slot frees up (the script can return ms-until-next-slot) or push the job back to the queue with a delay. Don't busy-loop.
After the call, parse
X-HubSpot-RateLimit-Remaining
/
-Max
/
-Interval-Milliseconds
and store them in
hubspot:rl:meta:{portalId}
. This is your reality check — if your local counter says 50 remaining but HubSpot's header says 5, you trust HubSpot and clamp your counter. This handles clock drift, missed accounting (e.g., crashed worker that took a token but never made the request), and other apps in the same account consuming the daily budget invisibly.
For search specifically, since headers don't come back, the local counter
is
the source of truth — meaning if you ever crash mid-flight, you've under-counted. Always release tokens on connection-level failure but
not
on 429 (you really did make that request).
How to work with multiple jobs
How to work with multiple jobs
The queue layer needs to enforce concurrency separately from the rate limiter. Both work together:
Concurrency cap
via
Queue::throttle()
or a Redis semaphore — limits how many sync workers run in parallel against HubSpot. Without this, you can have 50 workers all blocked waiting for tokens, which is wasteful and creates retry storms.
Per-tenant fairness
— if you sync many Jiminny customers into different HubSpot portals, each portal has its own bucket but you still want one slow portal not to starve others. Either separate queues per portal or a fair-share scheduler.
Priority lanes
— webhook-driven updates (user-visible latency) should outrank background batch syncs. Two queues:
hubspot-priority
and
hubspot-bulk
, with priority workers taking 70% of the burst budget and bulk taking 30% (enforce via separate sub-buckets if you really want hard separation, otherwise just pull from priority first).
Backoff on 429
— respect the
Retry-After
header. If absent, exponential with jitter (e.g.,
min(2^attempt * 250ms, 30s) ± 20%
). The jitter is non-negotiable; without it, simultaneous 429s retry in lockstep and you get thundering-herd 429s on retry.
How to work with paginated requests
How to work with paginated requests
The trap is treating "fetch all" as one logical operation. Each page is its own API call and competes for tokens with everything else.
Two practical rules:
Don't hold the worker idle while paginating.
If page N takes 500ms and page N+1 needs to wait 800ms for a token, you've burned 800ms of worker time doing nothing. Instead, fetch page N, dispatch the
processing
of page N as a separate job, and queue a "fetch page N+1" job with a delay equal to the wait time. Each page becomes its own atomic unit.
Always batch where HubSpot offers it.
POST /crm/v3/objects/{type}/batch/{read|update|create}
accepts up to 100 IDs per call. For your "patching IDs" flow this is the difference between 600 calls and 6.
Walkthrough: 600 opportunities
Walkthrough: 600 opportunities
Naive flow (one PATCH per deal): 600 calls. At 190/10s that's ~32s of API time, well under daily. You'd hit burst easily without throttling. Plus likely 1-3 search calls upfront and N association calls.
Sane flow:
Identify deltas
— if you can avoid Search at all, do. Use
lastmodifieddate
filter on a single search if you must, paginate at limit=200. For 600 deals that's 3 search calls @ 5/s = ~600ms naturally throttled.
Batch read
current state —
POST /crm/v3/objects/deals/batch/read
with 100 IDs per call → 6 calls. Burst weight 6.
Compute diff
in your code (no API).
Batch update
—
POST /crm/v3/objects/deals/batch/update
with 100 per call → 6 calls.
Associations
—
POST /crm/v4/associations/{from}/{to}/batch/create
if needed → another few batch calls.
Total: ~15-20 API calls for 600 deals. Burst budget consumed: 20/190 over ~5s. Daily impact: trivial.
Recognition: pre-check denies if
<weight>
slots aren't free; on 429 the response surfaces
policyName
(DAILY/SECONDLY) — log it, push the job back with
Retry-After
delay, increment a metric so you can alarm on sustained 429 rate.
Pitfalls & bottlenecks worth pre-empting
Pitfalls & bottlenecks worth pre-empting
Daily quota is shared across the whole portal
, including any n8n flows, other private apps, marketing automation calling APIs, etc. Budget for ~70-80% of the documented limit, not 100%. Add an internal per-app daily cap so a runaway sync can't starve other apps.
Search is uniquely fragile
: separate 5/s bucket, no headers to read, 10k-result cap per query. If you ever hit 10k+ deals matching a filter, partition by
hs_object_id
ranges or by
lastmodifieddate
windows.
Retry storms after HubSpot incidents
— always jitter, always cap total retries (e.g., 5 attempts, then dead-letter).
Webhook → sync → webhook loops
— when your update fires a HubSpot webhook that triggers another sync. Tag your own writes (e.g., a custom property
jy_last_sync_id
) and ignore webhooks where it just changed.
Token refresh
— OAuth refresh itself counts against burst. Cache the access token in Redis with TTL =
expires_in - 60s
, single-flight the refresh (only one worker refreshes; others wait on a lock).
Search latency for fresh writes
— newly created/updated objects don't appear in search instantly. Don't write-then-search; use returned IDs directly.
Clock skew
— Redis is authoritative. Don't use
time()
from each worker for window scoring; use
redis.call('TIME')
inside the Lua script.
Dead workers with held tokens
— sliding-window-log handles this naturally because tokens expire by score; token-bucket implementations need explicit release-on-crash logic.
The 5% error rule
counts every 429 toward your error budget, even successfully retried ones. If your pre-check is working well, 429s should be near zero — if they're not, your pre-check is wrong, not just slow.
Phantom contention with Laravel
RateLimited
middleware
: it's per-job-class by default, not per-portal. If your
SyncDealJob
and
UpdateActivityJob
are different classes both calling HubSpot, they don't share a Laravel-level limiter — you need a single
HubspotRateLimiter
service that everything routes through.
If you want, I can sketch the Lua script for the sliding-window acquire and the Laravel service wrapper around it.
Copy
Give positive feedback
Give negative feedback
Retry
You said: What will happen if there are two different types of rate limits?
You said: What will happen if there are two different types of rate limits?
What will happen if there are two different types of rate limits?
Search requests that have 5 requests per second
The other rate limit that has, let's say, 100 requests per 10 seconds How do these work together? Is there some conflict? Can I reach the limit with one request and block either as well, or are these separated? Can I still continue making search requests once I hit the normal requests limits?
13:40
Retry
Edit
Copy
Claude responded: They're independent buckets — with one shared bucket on top.
Claude responded: They're independent buckets — with one shared bucket on top.
Analyzed independent rate limit buckets and their practical interactions
Analyzed independent rate limit buckets and their practical interactions
They're independent buckets — with one shared bucket on top.
The three buckets and what each call hits
The three buckets and what each call hits
Copy to clipboard
┌──────────────────┐
Search request ──→ │ Search: 5/sec │ ──┐
└──────────────────┘ │
├──→ ┌─────────────────┐
┌──────────────────┐ │ │ Daily: 250k–1M │
Non-search call ──→ │ Burst: 190/10s │ ──┘ │ (per portal) │
└──────────────────┘ └─────────────────┘
A search call is only metered against the search bucket and the daily bucket. A non-search call (batch read/update, single PATCH, associations, etc.) is only metered against the burst bucket and the daily bucket. The two short-window buckets do not share counters.
What this means practically
What this means practically
Hitting search secondly limit (5/s):
Only further
/search
calls 429. Your batch reads, batch updates, single PATCHes, association calls — all keep working at full burst speed. This is actually useful: if your sync is bottlenecked on Search, you can pivot to using
lastmodifieddate
filters via batch endpoints, or use the IDs you already have to do batch reads, while Search cools off.
Hitting burst limit (190/10s):
Only non-search calls 429. You can still issue Search calls at 5/s. Useful for: continuing to identify deltas for queueing while in-flight updates drain, or refreshing a small set of records via Search even though your write pipeline is paused.
Hitting daily limit:
Everything stops. Search and non-search alike. Doesn't unblock until midnight in your portal's configured timezone — and remember this is shared across every private app in the portal, plus n8n flows, marketing tools, anything else hitting the API with that account.
So can one type of request block the other?
So can one type of request block the other?
Search → Burst:
No.
Saturating Search at 50 calls per 10s leaves your full 190/10s burst untouched.
Burst → Search:
No.
Saturating burst leaves Search's 5/s untouched.
Either → Daily:
Yes
, but only by contributing to the same daily counter. It's volume that kills you here, not the type.
In theory you can sustain ~50 search + ~190 other =
~240 calls per 10 seconds
indefinitely (until daily runs out), because the two buckets bill independently.
Implementation consequence
Implementation consequence
Your rate limiter needs to know which bucket a request hits before it acquires. Cleanest pattern:
Copy to clipboard
php
$limiter
->
acquire
(
'search'
,
$weight
=
1
)
;
// for search endpoints only
$limiter
->
acquire
(
'burst'
,
$weight
=
1
)
;
// for everything else
$limiter
->
acquire
(
'daily'
,
$weight
=
1
)
;
// every call, both kinds
In Redis: three separate keys, three separate Lua acquire scripts (or one script with a bucket parameter). A search call calls
acquire('search')
+
acquire('daily')
. A batch update calls
acquire('burst')
+
acquire('daily')
.
One subtle pitfall: when you backoff on a 429,
inspect
policyName
in the response body
to know which bucket actually fired. If you see
SECONDLY
from a search endpoint, you only need to delay search-bound jobs — burst-bound jobs in the queue can keep running. If you blanket-pause everything on any 429, you waste capacity on the bucket that's still healthy. Two queues (or two throttle keys) make this clean; one global pause is the lazy version.
The other subtlety: the burst response gives you
X-HubSpot-RateLimit-Remaining
to clamp local state against, but search doesn't return those headers. So your search counter is unverified — be slightly more conservative there (e.g., budget 4/s instead of 5) to absorb the unaccounted-for calls.
Copy
Give positive feedback
Give negative feedback
Retry
You said: Ok, so what will happen each time I make a request?
You said: Ok, so what will happen each time I make a request?
Ok, so what will happen each time I make a request? Let's say I have 100,000 requests to make that are instant. Do I need to increment each request based on the type? For example, if there is a search request, I need to increment both the search bucket and also the daily bucket. If it's a burst, then I can go to the daily and burst buckets. If I need to check if it can make a call, do I need to see both the daily and search, or burst, respectively? Isn't that too heavy for the infrastructure, adding additional load to each request?
13:44
Retry
Edit
Copy
Claude responded: Yes, your understanding is correct — every request must check and reserve from each bucket it applies to, atomically, before the call goes out.
Claude responded: Yes, your understanding is correct — every request must check and reserve from each bucket it applies to, atomically, before the call goes out.
Analyzed per-request overhead concerns and quantified Redis performance impact
Analyzed per-request overhead concerns and quantified Redis performance impact
Yes, your understanding is correct — every request must check and reserve from each bucket it applies to, atomically, before the call goes out. But the overhead is much smaller than it sounds, and importantly, it's nowhere near your bottleneck.
What "two buckets per request" actually costs
What "two buckets per request" actually costs
Each request makes
one round trip to Redis
— not two — because you fold both bucket checks into a single Lua script that runs atomically server-side:
Copy to clipboard
lua
-- KEYS[1] = burst bucket key (or search)
-- KEYS[2] = daily bucket key
-- ARGV[1] = now (ms) ARGV[2] = window_ms
-- ARGV[3] = bucket_max ARGV[4] = daily_max
-- ARGV[5] = request_id ARGV[6] = daily_ttl
-- Trim sliding window
redis
.
call
(
'ZREMRANGEBYSCORE'
,
KEYS
[
1
]
,
0
,
ARGV
[
1
]
-
ARGV
[
2
]
)
local
burst_used
=
redis
.
call
(
'ZCARD'
,
KEYS
[
1
]
)
local
daily_used
=
tonumber
(
redis
.
call
(
'GET'
,
KEYS
[
2
]
)
or
'0'
)
if
burst_used
>=...
|
[{"role":"AXLink","text":& [{"role":"AXLink","text":"Skip to content","depth":14,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Skip to content","depth":15,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Click to collapse","depth":16,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"⌘B","depth":16,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Drag to resize","depth":16,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Open sidebar","depth":14,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Chat","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Cowork","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"New chat ⌘N","depth":15,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"New chat","depth":16,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"⌘N","depth":17,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Projects","depth":15,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Artifacts","depth":15,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Customize","depth":15,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Pinned","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXButton","text":"Bulgarian citizenship application process for EU residents","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Bulgarian citizenship application process for EU residents","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Dawarich location tracking project","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Dawarich location tracking project","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Recents","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXButton","text":"View all","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"HubSpot rate limit implementation strategy","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for HubSpot rate limit implementation strategy","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Screenpipe retention policy code location","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Screenpipe retention policy code location","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Viewing retention policy in screenpipe","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Viewing retention policy in screenpipe","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Clean shot x video recording termination issue","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Clean shot x video recording termination issue","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"HubSpot rate limit handling with executeRequest","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for HubSpot rate limit handling with executeRequest","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Untitled","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"💬 Screen pipe. Is there ability…","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for 💬 Screen pipe. Is there ability…","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"SMB mount access inconsistency between Finder and iTerm","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for SMB mount access inconsistency between Finder and iTerm","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"💬 What is the best switch I can…","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for 💬 What is the best switch I can…","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Permission denied on screenpipe volume","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Permission denied on screenpipe volume","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Screenpipe sync database attachment error","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Screenpipe sync database attachment error","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Last swimming outing with Dani","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Last swimming outing with Dani","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Definition of incarcerated","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Definition of incarcerated","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Chromecast remote volume buttons not working","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Chromecast remote volume buttons not working","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Salesforce API errors with Organization and FieldDefinition queries","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Salesforce API errors with Organization and FieldDefinition queries","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Daily activity summary from screenpipe data","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Daily activity summary from screenpipe data","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"MacBook unexpected restarts and kanji screen","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for MacBook unexpected restarts and kanji screen","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Security patch review and testing guidance","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Security patch review and testing guidance","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Food calorie values reference","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Food calorie values reference","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Tracking location history from last week","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Tracking location history from last week","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"Lukas Pro","depth":15,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Get apps and extensions","depth":15,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"HubSpot rate limit implementation strategy, rename chat","depth":19,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"HubSpot rate limit implementation strategy","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXPopUpButton","text":"More options for HubSpot rate limit implementation strategy","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Open sidebar","depth":21,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Share chat","depth":21,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Claude finished the response","depth":21,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"You said: So just a solution for rate limit implementation.","depth":20,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"You said: So just a solution for rate limit implementation.","depth":21,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"So just a solution for rate limit implementation. The situation currently is that there are some daily and secondary limits for HubSpot. I would like to make sure I never reach a 429 error rate limit. The requests can come from any flow. It can be:","depth":24,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"updating activity (engagement, meeting, call, note)","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"searching for a company or contact","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"updating deal","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"patching IDs\nReview what the limit is at the moment in the HubSpot documentation and then think of the solution:","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"where to store it","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"how to read it","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"how to work with multiple jobs","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"how to work with paginated requests Let's consider a situation when there are 600 opportunities to sync. What would be the flow? How would the rate limit be recognized? How would it be handled? What are the potential issues? [API usage guidelines and limits - HubSpot docs](","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXLink","text":"https://developers.hubspot.com/docs/developer-tooling/platform/usage-guidelines","depth":25,"on_screen":false,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"https://developers.hubspot.com/docs/developer-tooling/platform/usage-guidelines","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"). Example of such a error Client error:","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"POST https://api.hubapi.com/crm/v3/objects/contact/search","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"resulted in a","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"429 Too Many Requests","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"response: {\"status\":\"error\",\"message\":\"You have reached your secondly limit.\",\"errorType\":\"RATE_LIMIT\",\"correlationId\":\"019dffc4-4 (truncated...). Think carefully about the implementation and potential issue and bottlenecks.","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Show more","depth":22,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:42","depth":22,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Retry","depth":22,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Edit","depth":22,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Copy","depth":22,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXHeading","text":"Claude responded: Current HubSpot limits (Apr 2026)","depth":21,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"Claude responded: Current HubSpot limits (Apr 2026)","depth":22,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Synthesized HubSpot rate limit architecture with Redis storage and sliding window algorithms","depth":22,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Synthesized HubSpot rate limit architecture with Redis storage and sliding window algorithms","depth":23,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"Current HubSpot limits (Apr 2026)","depth":24,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"Current HubSpot limits (Apr 2026)","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"For privately distributed apps (which is what Jiminny presumably uses with HubSpot), the limits are layered: a per-app burst window of 100/10s on Free/Starter, 190/10s on Pro/Enterprise, or 250/10s with the API Limit Increase add-on","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", plus a per-account daily cap of 250k / 625k / 1M depending on tier — shared across all private apps in the account","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":". The burst window is per app; the daily quota is per portal.","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXLink","text":"hubspot","depth":26,"on_screen":false,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"hubspot","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXLink","text":"hubspot","depth":26,"on_screen":false,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"hubspot","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"The Search API is special: five requests per second per account, capped at 200 records per page, with a hard 10,000-result ceiling per query","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":". That's the limit the 429 in your example is hitting (","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"secondly limit","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"on","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/crm/v3/objects/contact/search","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"). It's a separate bucket from the 190/10s, and critically, search responses do not include the","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"X-HubSpot-RateLimit-*","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"headers","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— you can't read remaining capacity off the response, you have to track it yourself.","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXLink","text":"hubspot","depth":26,"on_screen":false,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"hubspot","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXLink","text":"hubspot","depth":26,"on_screen":false,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"hubspot","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Non-search endpoints return","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"X-HubSpot-RateLimit-Remaining","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":",","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"-Max","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", and","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"-Interval-Milliseconds","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":". The daily headers are not returned for OAuth-authenticated calls","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", so for those you check the account-info endpoint or maintain your own counter. There's also a soft rule: errors should stay under 5% of total daily requests","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— that's enforced for marketplace listing, but it's also a sane operational target.","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXLink","text":"hubspot","depth":26,"on_screen":false,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"hubspot","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXLink","text":"hubspot","depth":26,"on_screen":false,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"hubspot","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"So you have","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"four buckets","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"to track at minimum: app-burst (10s sliding), search-secondly (1s sliding), account-daily (24h fixed, midnight in HubSpot's TZ), and per-app daily share (your own budgeting on top of the account cap).","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"Where to store it","depth":24,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"Where to store it","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Redis. It's the only realistic option once you have multiple queue workers — DB-backed counters serialize too much, and in-process state can't coordinate across workers. Laravel already speaks Redis natively, and you get atomic","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"INCR","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"EXPIRE","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"plus Lua scripting for true CAS semantics.","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Key layout I'd use:","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Copy to clipboard","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"hubspot:rl:burst:{portalId}:{appId} ZSET (sliding 10s)","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"hubspot:rl:search:{portalId} ZSET (sliding 1s)","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"hubspot:rl:daily:{portalId} STRING + TTL to midnight TZ","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"hubspot:rl:meta:{portalId} HASH (last seen headers)","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"The two short-window buckets are sliding-window-log (Redis ZSET, score =","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"microtime","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", member = unique request id). Lua script removes entries older than the window, counts remaining slots, and only adds the new one if there's room — all atomic. Fixed windows are simpler but allow 2× the limit at the boundary, which on a 5/s window is brutal.","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"The daily bucket is a plain","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"INCR","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"with TTL set to seconds-until-midnight in","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"HubSpot's account timezone","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", not yours — Sofia is UTC+2/+3 but your portal might be set to US Eastern. Get this once and cache it.","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"How to read it","depth":24,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"How to read it","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Two-phase: optimistic pre-check, authoritative post-update.","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Before a call, run the Lua acquire script. If it returns \"denied,\" sleep until a slot frees up (the script can return ms-until-next-slot) or push the job back to the queue with a delay. Don't busy-loop.","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"After the call, parse","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"X-HubSpot-RateLimit-Remaining","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"-Max","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"-Interval-Milliseconds","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"and store them in","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"hubspot:rl:meta:{portalId}","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":". This is your reality check — if your local counter says 50 remaining but HubSpot's header says 5, you trust HubSpot and clamp your counter. This handles clock drift, missed accounting (e.g., crashed worker that took a token but never made the request), and other apps in the same account consuming the daily budget invisibly.","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"For search specifically, since headers don't come back, the local counter","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"is","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"the source of truth — meaning if you ever crash mid-flight, you've under-counted. Always release tokens on connection-level failure but","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"not","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"on 429 (you really did make that request).","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"How to work with multiple jobs","depth":24,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"How to work with multiple jobs","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"The queue layer needs to enforce concurrency separately from the rate limiter. Both work together:","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Concurrency cap","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"via","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Queue::throttle()","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"or a Redis semaphore — limits how many sync workers run in parallel against HubSpot. Without this, you can have 50 workers all blocked waiting for tokens, which is wasteful and creates retry storms.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Per-tenant fairness","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— if you sync many Jiminny customers into different HubSpot portals, each portal has its own bucket but you still want one slow portal not to starve others. Either separate queues per portal or a fair-share scheduler.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Priority lanes","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— webhook-driven updates (user-visible latency) should outrank background batch syncs. Two queues:","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"hubspot-priority","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"and","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"hubspot-bulk","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", with priority workers taking 70% of the burst budget and bulk taking 30% (enforce via separate sub-buckets if you really want hard separation, otherwise just pull from priority first).","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Backoff on 429","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— respect the","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Retry-After","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"header. If absent, exponential with jitter (e.g.,","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"min(2^attempt * 250ms, 30s) ± 20%","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"). The jitter is non-negotiable; without it, simultaneous 429s retry in lockstep and you get thundering-herd 429s on retry.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"How to work with paginated requests","depth":24,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"How to work with paginated requests","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"The trap is treating \"fetch all\" as one logical operation. Each page is its own API call and competes for tokens with everything else.","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Two practical rules:","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Don't hold the worker idle while paginating.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"If page N takes 500ms and page N+1 needs to wait 800ms for a token, you've burned 800ms of worker time doing nothing. Instead, fetch page N, dispatch the","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"processing","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"of page N as a separate job, and queue a \"fetch page N+1\" job with a delay equal to the wait time. Each page becomes its own atomic unit.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Always batch where HubSpot offers it.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"POST /crm/v3/objects/{type}/batch/{read|update|create}","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"accepts up to 100 IDs per call. For your \"patching IDs\" flow this is the difference between 600 calls and 6.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"Walkthrough: 600 opportunities","depth":24,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"Walkthrough: 600 opportunities","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Naive flow (one PATCH per deal): 600 calls. At 190/10s that's ~32s of API time, well under daily. You'd hit burst easily without throttling. Plus likely 1-3 search calls upfront and N association calls.","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Sane flow:","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Identify deltas","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— if you can avoid Search at all, do. Use","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"lastmodifieddate","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"filter on a single search if you must, paginate at limit=200. For 600 deals that's 3 search calls @ 5/s = ~600ms naturally throttled.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Batch read","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"current state —","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"POST /crm/v3/objects/deals/batch/read","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"with 100 IDs per call → 6 calls. Burst weight 6.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Compute diff","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"in your code (no API).","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Batch update","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"—","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"POST /crm/v3/objects/deals/batch/update","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"with 100 per call → 6 calls.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Associations","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"—","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"POST /crm/v4/associations/{from}/{to}/batch/create","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"if needed → another few batch calls.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Total: ~15-20 API calls for 600 deals. Burst budget consumed: 20/190 over ~5s. Daily impact: trivial.","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Recognition: pre-check denies if","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"<weight>","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"slots aren't free; on 429 the response surfaces","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"policyName","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"(DAILY/SECONDLY) — log it, push the job back with","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Retry-After","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"delay, increment a metric so you can alarm on sustained 429 rate.","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"Pitfalls & bottlenecks worth pre-empting","depth":24,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"Pitfalls & bottlenecks worth pre-empting","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Daily quota is shared across the whole portal","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", including any n8n flows, other private apps, marketing automation calling APIs, etc. Budget for ~70-80% of the documented limit, not 100%. Add an internal per-app daily cap so a runaway sync can't starve other apps.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Search is uniquely fragile","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":": separate 5/s bucket, no headers to read, 10k-result cap per query. If you ever hit 10k+ deals matching a filter, partition by","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"hs_object_id","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"ranges or by","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"lastmodifieddate","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"windows.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Retry storms after HubSpot incidents","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— always jitter, always cap total retries (e.g., 5 attempts, then dead-letter).","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Webhook → sync → webhook loops","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— when your update fires a HubSpot webhook that triggers another sync. Tag your own writes (e.g., a custom property","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"jy_last_sync_id","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":") and ignore webhooks where it just changed.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Token refresh","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— OAuth refresh itself counts against burst. Cache the access token in Redis with TTL =","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"expires_in - 60s","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", single-flight the refresh (only one worker refreshes; others wait on a lock).","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Search latency for fresh writes","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— newly created/updated objects don't appear in search instantly. Don't write-then-search; use returned IDs directly.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Clock skew","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— Redis is authoritative. Don't use","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"time()","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"from each worker for window scoring; use","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"redis.call('TIME')","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"inside the Lua script.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Dead workers with held tokens","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— sliding-window-log handles this naturally because tokens expire by score; token-bucket implementations need explicit release-on-crash logic.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"The 5% error rule","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"counts every 429 toward your error budget, even successfully retried ones. If your pre-check is working well, 429s should be near zero — if they're not, your pre-check is wrong, not just slow.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Phantom contention with Laravel","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"RateLimited","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"middleware","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":": it's per-job-class by default, not per-portal. If your","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"SyncDealJob","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"and","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"UpdateActivityJob","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"are different classes both calling HubSpot, they don't share a Laravel-level limiter — you need a single","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"HubspotRateLimiter","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"service that everything routes through.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"If you want, I can sketch the Lua script for the sliding-window acquire and the Laravel service wrapper around it.","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Copy","depth":22,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Give positive feedback","depth":22,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Give negative feedback","depth":22,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Retry","depth":22,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXHeading","text":"You said: What will happen if there are two different types of rate limits?","depth":20,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"You said: What will happen if there are two different types of rate limits?","depth":21,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"What will happen if there are two different types of rate limits?","depth":24,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Search requests that have 5 requests per second","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"The other rate limit that has, let's say, 100 requests per 10 seconds How do these work together? Is there some conflict? Can I reach the limit with one request and block either as well, or are these separated? Can I still continue making search requests once I hit the normal requests limits?","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"13:40","depth":22,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Retry","depth":22,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Edit","depth":22,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Copy","depth":22,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXHeading","text":"Claude responded: They're independent buckets — with one shared bucket on top.","depth":21,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"Claude responded: They're independent buckets — with one shared bucket on top.","depth":22,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Analyzed independent rate limit buckets and their practical interactions","depth":22,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Analyzed independent rate limit buckets and their practical interactions","depth":23,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"They're independent buckets — with one shared bucket on top.","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"The three buckets and what each call hits","depth":24,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"The three buckets and what each call hits","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Copy to clipboard","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"┌──────────────────┐","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Search request ──→ │ Search: 5/sec │ ──┐","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"└──────────────────┘ │","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"├──→ ┌─────────────────┐","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"┌──────────────────┐ │ │ Daily: 250k–1M │","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Non-search call ──→ │ Burst: 190/10s │ ──┘ │ (per portal) │","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"└──────────────────┘ └─────────────────┘","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"A search call is only metered against the search bucket and the daily bucket. A non-search call (batch read/update, single PATCH, associations, etc.) is only metered against the burst bucket and the daily bucket. The two short-window buckets do not share counters.","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"What this means practically","depth":24,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"What this means practically","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Hitting search secondly limit (5/s):","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Only further","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/search","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"calls 429. Your batch reads, batch updates, single PATCHes, association calls — all keep working at full burst speed. This is actually useful: if your sync is bottlenecked on Search, you can pivot to using","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"lastmodifieddate","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"filters via batch endpoints, or use the IDs you already have to do batch reads, while Search cools off.","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Hitting burst limit (190/10s):","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Only non-search calls 429. You can still issue Search calls at 5/s. Useful for: continuing to identify deltas for queueing while in-flight updates drain, or refreshing a small set of records via Search even though your write pipeline is paused.","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Hitting daily limit:","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Everything stops. Search and non-search alike. Doesn't unblock until midnight in your portal's configured timezone — and remember this is shared across every private app in the portal, plus n8n flows, marketing tools, anything else hitting the API with that account.","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"So can one type of request block the other?","depth":24,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"So can one type of request block the other?","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Search → Burst:","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"No.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Saturating Search at 50 calls per 10s leaves your full 190/10s burst untouched.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Burst → Search:","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"No.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Saturating burst leaves Search's 5/s untouched.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Either → Daily:","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Yes","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", but only by contributing to the same daily counter. It's volume that kills you here, not the type.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"In theory you can sustain ~50 search + ~190 other =","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"~240 calls per 10 seconds","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"indefinitely (until daily runs out), because the two buckets bill independently.","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"Implementation consequence","depth":24,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"Implementation consequence","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Your rate limiter needs to know which bucket a request hits before it acquires. Cleanest pattern:","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Copy to clipboard","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"php","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"$limiter","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"->","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"acquire","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"(","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"'search'","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":",","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"$weight","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"=","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":")","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":";","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"// for search endpoints only","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"$limiter","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"->","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"acquire","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"(","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"'burst'","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":",","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"$weight","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"=","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":")","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":";","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"// for everything else","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"$limiter","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"->","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"acquire","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"(","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"'daily'","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":",","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"$weight","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"=","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":")","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":";","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"// every call, both kinds","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"In Redis: three separate keys, three separate Lua acquire scripts (or one script with a bucket parameter). A search call calls","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"acquire('search')","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"acquire('daily')","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":". A batch update calls","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"acquire('burst')","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"acquire('daily')","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":".","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"One subtle pitfall: when you backoff on a 429,","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"inspect","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"policyName","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"in the response body","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"to know which bucket actually fired. If you see","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"SECONDLY","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"from a search endpoint, you only need to delay search-bound jobs — burst-bound jobs in the queue can keep running. If you blanket-pause everything on any 429, you waste capacity on the bucket that's still healthy. Two queues (or two throttle keys) make this clean; one global pause is the lazy version.","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"The other subtlety: the burst response gives you","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"X-HubSpot-RateLimit-Remaining","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"to clamp local state against, but search doesn't return those headers. So your search counter is unverified — be slightly more conservative there (e.g., budget 4/s instead of 5) to absorb the unaccounted-for calls.","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Copy","depth":22,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Give positive feedback","depth":22,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Give negative feedback","depth":22,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Retry","depth":22,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXHeading","text":"You said: Ok, so what will happen each time I make a request?","depth":20,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"You said: Ok, so what will happen each time I make a request?","depth":21,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Ok, so what will happen each time I make a request? Let's say I have 100,000 requests to make that are instant. Do I need to increment each request based on the type? For example, if there is a search request, I need to increment both the search bucket and also the daily bucket. If it's a burst, then I can go to the daily and burst buckets. If I need to check if it can make a call, do I need to see both the daily and search, or burst, respectively? Isn't that too heavy for the infrastructure, adding additional load to each request?","depth":24,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"13:44","depth":22,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Retry","depth":22,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Edit","depth":22,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Copy","depth":22,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXHeading","text":"Claude responded: Yes, your understanding is correct — every request must check and reserve from each bucket it applies to, atomically, before the call goes out.","depth":21,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"Claude responded: Yes, your understanding is correct — every request must check and reserve from each bucket it applies to, atomically, before the call goes out.","depth":22,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Analyzed per-request overhead concerns and quantified Redis performance impact","depth":22,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Analyzed per-request overhead concerns and quantified Redis performance impact","depth":23,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Yes, your understanding is correct — every request must check and reserve from each bucket it applies to, atomically, before the call goes out. But the overhead is much smaller than it sounds, and importantly, it's nowhere near your bottleneck.","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"What \"two buckets per request\" actually costs","depth":24,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"What \"two buckets per request\" actually costs","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Each request makes","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"one round trip to Redis","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— not two — because you fold both bucket checks into a single Lua script that runs atomically server-side:","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Copy to clipboard","depth":27,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"lua","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"-- KEYS[1] = burst bucket key (or search)","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"-- KEYS[2] = daily bucket key","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"-- ARGV[1] = now (ms) ARGV[2] = window_ms","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"-- ARGV[3] = bucket_max ARGV[4] = daily_max","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"-- ARGV[5] = request_id ARGV[6] = daily_ttl","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"-- Trim sliding window","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"redis","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":".","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"call","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"(","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"'ZREMRANGEBYSCORE'","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":",","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"KEYS","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"[","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"]","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":",","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"0","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":",","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"ARGV","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"[","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"]","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"-","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"ARGV","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"[","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"2","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"]","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":")","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"local","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"burst_used","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"=","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"redis","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":".","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"call","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"(","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"'ZCARD'","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":",","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"KEYS","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"[","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"]","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":")","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"local","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"daily_used","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"=","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"tonumber","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"(","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"redis","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":".","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"call","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"(","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"'GET'","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":",","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"KEYS","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"[","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"2","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"]","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":")","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"or","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"'0'","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":")","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"if","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"burst_used","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":">=","depth":27,"on_screen":false,"role_description":"text"}]...
|
6319888304132539373
|
-6913325059417482148
|
click
|
accessibility
|
NULL
|
Skip to content
Skip to content
Click to collapse
Skip to content
Skip to content
Click to collapse
⌘B
Drag to resize
Open sidebar
Chat
Cowork
Code
New chat ⌘N
New chat
⌘N
Projects
Artifacts
Customize
Pinned
Bulgarian citizenship application process for EU residents
More options for Bulgarian citizenship application process for EU residents
Dawarich location tracking project
More options for Dawarich location tracking project
Recents
View all
HubSpot rate limit implementation strategy
More options for HubSpot rate limit implementation strategy
Screenpipe retention policy code location
More options for Screenpipe retention policy code location
Viewing retention policy in screenpipe
More options for Viewing retention policy in screenpipe
Clean shot x video recording termination issue
More options for Clean shot x video recording termination issue
HubSpot rate limit handling with executeRequest
More options for HubSpot rate limit handling with executeRequest
Untitled
More options
💬 Screen pipe. Is there ability…
More options for 💬 Screen pipe. Is there ability…
SMB mount access inconsistency between Finder and iTerm
More options for SMB mount access inconsistency between Finder and iTerm
💬 What is the best switch I can…
More options for 💬 What is the best switch I can…
Permission denied on screenpipe volume
More options for Permission denied on screenpipe volume
Screenpipe sync database attachment error
More options for Screenpipe sync database attachment error
Last swimming outing with Dani
More options for Last swimming outing with Dani
Definition of incarcerated
More options for Definition of incarcerated
Chromecast remote volume buttons not working
More options for Chromecast remote volume buttons not working
Salesforce API errors with Organization and FieldDefinition queries
More options for Salesforce API errors with Organization and FieldDefinition queries
Daily activity summary from screenpipe data
More options for Daily activity summary from screenpipe data
MacBook unexpected restarts and kanji screen
More options for MacBook unexpected restarts and kanji screen
Security patch review and testing guidance
More options for Security patch review and testing guidance
Food calorie values reference
More options for Food calorie values reference
Tracking location history from last week
More options for Tracking location history from last week
Lukas Pro
Get apps and extensions
HubSpot rate limit implementation strategy, rename chat
HubSpot rate limit implementation strategy
More options for HubSpot rate limit implementation strategy
Open sidebar
Share chat
Claude finished the response
You said: So just a solution for rate limit implementation.
You said: So just a solution for rate limit implementation.
So just a solution for rate limit implementation. The situation currently is that there are some daily and secondary limits for HubSpot. I would like to make sure I never reach a 429 error rate limit. The requests can come from any flow. It can be:
updating activity (engagement, meeting, call, note)
searching for a company or contact
updating deal
patching IDs
Review what the limit is at the moment in the HubSpot documentation and then think of the solution:
where to store it
how to read it
how to work with multiple jobs
how to work with paginated requests Let's consider a situation when there are 600 opportunities to sync. What would be the flow? How would the rate limit be recognized? How would it be handled? What are the potential issues? [API usage guidelines and limits - HubSpot docs](
https://developers.hubspot.com/docs/developer-tooling/platform/usage-guidelines
https://developers.hubspot.com/docs/developer-tooling/platform/usage-guidelines
). Example of such a error Client error:
POST https://api.hubapi.com/crm/v3/objects/contact/search
resulted in a
429 Too Many Requests
response: {"status":"error","message":"You have reached your secondly limit.","errorType":"RATE_LIMIT","correlationId":"019dffc4-4 (truncated...). Think carefully about the implementation and potential issue and bottlenecks.
Show more
10:42
Retry
Edit
Copy
Claude responded: Current HubSpot limits (Apr 2026)
Claude responded: Current HubSpot limits (Apr 2026)
Synthesized HubSpot rate limit architecture with Redis storage and sliding window algorithms
Synthesized HubSpot rate limit architecture with Redis storage and sliding window algorithms
Current HubSpot limits (Apr 2026)
Current HubSpot limits (Apr 2026)
For privately distributed apps (which is what Jiminny presumably uses with HubSpot), the limits are layered: a per-app burst window of 100/10s on Free/Starter, 190/10s on Pro/Enterprise, or 250/10s with the API Limit Increase add-on
, plus a per-account daily cap of 250k / 625k / 1M depending on tier — shared across all private apps in the account
. The burst window is per app; the daily quota is per portal.
hubspot
hubspot
hubspot
hubspot
The Search API is special: five requests per second per account, capped at 200 records per page, with a hard 10,000-result ceiling per query
. That's the limit the 429 in your example is hitting (
secondly limit
on
/crm/v3/objects/contact/search
). It's a separate bucket from the 190/10s, and critically, search responses do not include the
X-HubSpot-RateLimit-*
headers
— you can't read remaining capacity off the response, you have to track it yourself.
hubspot
hubspot
hubspot
hubspot
Non-search endpoints return
X-HubSpot-RateLimit-Remaining
,
-Max
, and
-Interval-Milliseconds
. The daily headers are not returned for OAuth-authenticated calls
, so for those you check the account-info endpoint or maintain your own counter. There's also a soft rule: errors should stay under 5% of total daily requests
— that's enforced for marketplace listing, but it's also a sane operational target.
hubspot
hubspot
hubspot
hubspot
So you have
four buckets
to track at minimum: app-burst (10s sliding), search-secondly (1s sliding), account-daily (24h fixed, midnight in HubSpot's TZ), and per-app daily share (your own budgeting on top of the account cap).
Where to store it
Where to store it
Redis. It's the only realistic option once you have multiple queue workers — DB-backed counters serialize too much, and in-process state can't coordinate across workers. Laravel already speaks Redis natively, and you get atomic
INCR
/
EXPIRE
plus Lua scripting for true CAS semantics.
Key layout I'd use:
Copy to clipboard
hubspot:rl:burst:{portalId}:{appId} ZSET (sliding 10s)
hubspot:rl:search:{portalId} ZSET (sliding 1s)
hubspot:rl:daily:{portalId} STRING + TTL to midnight TZ
hubspot:rl:meta:{portalId} HASH (last seen headers)
The two short-window buckets are sliding-window-log (Redis ZSET, score =
microtime
, member = unique request id). Lua script removes entries older than the window, counts remaining slots, and only adds the new one if there's room — all atomic. Fixed windows are simpler but allow 2× the limit at the boundary, which on a 5/s window is brutal.
The daily bucket is a plain
INCR
with TTL set to seconds-until-midnight in
HubSpot's account timezone
, not yours — Sofia is UTC+2/+3 but your portal might be set to US Eastern. Get this once and cache it.
How to read it
How to read it
Two-phase: optimistic pre-check, authoritative post-update.
Before a call, run the Lua acquire script. If it returns "denied," sleep until a slot frees up (the script can return ms-until-next-slot) or push the job back to the queue with a delay. Don't busy-loop.
After the call, parse
X-HubSpot-RateLimit-Remaining
/
-Max
/
-Interval-Milliseconds
and store them in
hubspot:rl:meta:{portalId}
. This is your reality check — if your local counter says 50 remaining but HubSpot's header says 5, you trust HubSpot and clamp your counter. This handles clock drift, missed accounting (e.g., crashed worker that took a token but never made the request), and other apps in the same account consuming the daily budget invisibly.
For search specifically, since headers don't come back, the local counter
is
the source of truth — meaning if you ever crash mid-flight, you've under-counted. Always release tokens on connection-level failure but
not
on 429 (you really did make that request).
How to work with multiple jobs
How to work with multiple jobs
The queue layer needs to enforce concurrency separately from the rate limiter. Both work together:
Concurrency cap
via
Queue::throttle()
or a Redis semaphore — limits how many sync workers run in parallel against HubSpot. Without this, you can have 50 workers all blocked waiting for tokens, which is wasteful and creates retry storms.
Per-tenant fairness
— if you sync many Jiminny customers into different HubSpot portals, each portal has its own bucket but you still want one slow portal not to starve others. Either separate queues per portal or a fair-share scheduler.
Priority lanes
— webhook-driven updates (user-visible latency) should outrank background batch syncs. Two queues:
hubspot-priority
and
hubspot-bulk
, with priority workers taking 70% of the burst budget and bulk taking 30% (enforce via separate sub-buckets if you really want hard separation, otherwise just pull from priority first).
Backoff on 429
— respect the
Retry-After
header. If absent, exponential with jitter (e.g.,
min(2^attempt * 250ms, 30s) ± 20%
). The jitter is non-negotiable; without it, simultaneous 429s retry in lockstep and you get thundering-herd 429s on retry.
How to work with paginated requests
How to work with paginated requests
The trap is treating "fetch all" as one logical operation. Each page is its own API call and competes for tokens with everything else.
Two practical rules:
Don't hold the worker idle while paginating.
If page N takes 500ms and page N+1 needs to wait 800ms for a token, you've burned 800ms of worker time doing nothing. Instead, fetch page N, dispatch the
processing
of page N as a separate job, and queue a "fetch page N+1" job with a delay equal to the wait time. Each page becomes its own atomic unit.
Always batch where HubSpot offers it.
POST /crm/v3/objects/{type}/batch/{read|update|create}
accepts up to 100 IDs per call. For your "patching IDs" flow this is the difference between 600 calls and 6.
Walkthrough: 600 opportunities
Walkthrough: 600 opportunities
Naive flow (one PATCH per deal): 600 calls. At 190/10s that's ~32s of API time, well under daily. You'd hit burst easily without throttling. Plus likely 1-3 search calls upfront and N association calls.
Sane flow:
Identify deltas
— if you can avoid Search at all, do. Use
lastmodifieddate
filter on a single search if you must, paginate at limit=200. For 600 deals that's 3 search calls @ 5/s = ~600ms naturally throttled.
Batch read
current state —
POST /crm/v3/objects/deals/batch/read
with 100 IDs per call → 6 calls. Burst weight 6.
Compute diff
in your code (no API).
Batch update
—
POST /crm/v3/objects/deals/batch/update
with 100 per call → 6 calls.
Associations
—
POST /crm/v4/associations/{from}/{to}/batch/create
if needed → another few batch calls.
Total: ~15-20 API calls for 600 deals. Burst budget consumed: 20/190 over ~5s. Daily impact: trivial.
Recognition: pre-check denies if
<weight>
slots aren't free; on 429 the response surfaces
policyName
(DAILY/SECONDLY) — log it, push the job back with
Retry-After
delay, increment a metric so you can alarm on sustained 429 rate.
Pitfalls & bottlenecks worth pre-empting
Pitfalls & bottlenecks worth pre-empting
Daily quota is shared across the whole portal
, including any n8n flows, other private apps, marketing automation calling APIs, etc. Budget for ~70-80% of the documented limit, not 100%. Add an internal per-app daily cap so a runaway sync can't starve other apps.
Search is uniquely fragile
: separate 5/s bucket, no headers to read, 10k-result cap per query. If you ever hit 10k+ deals matching a filter, partition by
hs_object_id
ranges or by
lastmodifieddate
windows.
Retry storms after HubSpot incidents
— always jitter, always cap total retries (e.g., 5 attempts, then dead-letter).
Webhook → sync → webhook loops
— when your update fires a HubSpot webhook that triggers another sync. Tag your own writes (e.g., a custom property
jy_last_sync_id
) and ignore webhooks where it just changed.
Token refresh
— OAuth refresh itself counts against burst. Cache the access token in Redis with TTL =
expires_in - 60s
, single-flight the refresh (only one worker refreshes; others wait on a lock).
Search latency for fresh writes
— newly created/updated objects don't appear in search instantly. Don't write-then-search; use returned IDs directly.
Clock skew
— Redis is authoritative. Don't use
time()
from each worker for window scoring; use
redis.call('TIME')
inside the Lua script.
Dead workers with held tokens
— sliding-window-log handles this naturally because tokens expire by score; token-bucket implementations need explicit release-on-crash logic.
The 5% error rule
counts every 429 toward your error budget, even successfully retried ones. If your pre-check is working well, 429s should be near zero — if they're not, your pre-check is wrong, not just slow.
Phantom contention with Laravel
RateLimited
middleware
: it's per-job-class by default, not per-portal. If your
SyncDealJob
and
UpdateActivityJob
are different classes both calling HubSpot, they don't share a Laravel-level limiter — you need a single
HubspotRateLimiter
service that everything routes through.
If you want, I can sketch the Lua script for the sliding-window acquire and the Laravel service wrapper around it.
Copy
Give positive feedback
Give negative feedback
Retry
You said: What will happen if there are two different types of rate limits?
You said: What will happen if there are two different types of rate limits?
What will happen if there are two different types of rate limits?
Search requests that have 5 requests per second
The other rate limit that has, let's say, 100 requests per 10 seconds How do these work together? Is there some conflict? Can I reach the limit with one request and block either as well, or are these separated? Can I still continue making search requests once I hit the normal requests limits?
13:40
Retry
Edit
Copy
Claude responded: They're independent buckets — with one shared bucket on top.
Claude responded: They're independent buckets — with one shared bucket on top.
Analyzed independent rate limit buckets and their practical interactions
Analyzed independent rate limit buckets and their practical interactions
They're independent buckets — with one shared bucket on top.
The three buckets and what each call hits
The three buckets and what each call hits
Copy to clipboard
┌──────────────────┐
Search request ──→ │ Search: 5/sec │ ──┐
└──────────────────┘ │
├──→ ┌─────────────────┐
┌──────────────────┐ │ │ Daily: 250k–1M │
Non-search call ──→ │ Burst: 190/10s │ ──┘ │ (per portal) │
└──────────────────┘ └─────────────────┘
A search call is only metered against the search bucket and the daily bucket. A non-search call (batch read/update, single PATCH, associations, etc.) is only metered against the burst bucket and the daily bucket. The two short-window buckets do not share counters.
What this means practically
What this means practically
Hitting search secondly limit (5/s):
Only further
/search
calls 429. Your batch reads, batch updates, single PATCHes, association calls — all keep working at full burst speed. This is actually useful: if your sync is bottlenecked on Search, you can pivot to using
lastmodifieddate
filters via batch endpoints, or use the IDs you already have to do batch reads, while Search cools off.
Hitting burst limit (190/10s):
Only non-search calls 429. You can still issue Search calls at 5/s. Useful for: continuing to identify deltas for queueing while in-flight updates drain, or refreshing a small set of records via Search even though your write pipeline is paused.
Hitting daily limit:
Everything stops. Search and non-search alike. Doesn't unblock until midnight in your portal's configured timezone — and remember this is shared across every private app in the portal, plus n8n flows, marketing tools, anything else hitting the API with that account.
So can one type of request block the other?
So can one type of request block the other?
Search → Burst:
No.
Saturating Search at 50 calls per 10s leaves your full 190/10s burst untouched.
Burst → Search:
No.
Saturating burst leaves Search's 5/s untouched.
Either → Daily:
Yes
, but only by contributing to the same daily counter. It's volume that kills you here, not the type.
In theory you can sustain ~50 search + ~190 other =
~240 calls per 10 seconds
indefinitely (until daily runs out), because the two buckets bill independently.
Implementation consequence
Implementation consequence
Your rate limiter needs to know which bucket a request hits before it acquires. Cleanest pattern:
Copy to clipboard
php
$limiter
->
acquire
(
'search'
,
$weight
=
1
)
;
// for search endpoints only
$limiter
->
acquire
(
'burst'
,
$weight
=
1
)
;
// for everything else
$limiter
->
acquire
(
'daily'
,
$weight
=
1
)
;
// every call, both kinds
In Redis: three separate keys, three separate Lua acquire scripts (or one script with a bucket parameter). A search call calls
acquire('search')
+
acquire('daily')
. A batch update calls
acquire('burst')
+
acquire('daily')
.
One subtle pitfall: when you backoff on a 429,
inspect
policyName
in the response body
to know which bucket actually fired. If you see
SECONDLY
from a search endpoint, you only need to delay search-bound jobs — burst-bound jobs in the queue can keep running. If you blanket-pause everything on any 429, you waste capacity on the bucket that's still healthy. Two queues (or two throttle keys) make this clean; one global pause is the lazy version.
The other subtlety: the burst response gives you
X-HubSpot-RateLimit-Remaining
to clamp local state against, but search doesn't return those headers. So your search counter is unverified — be slightly more conservative there (e.g., budget 4/s instead of 5) to absorb the unaccounted-for calls.
Copy
Give positive feedback
Give negative feedback
Retry
You said: Ok, so what will happen each time I make a request?
You said: Ok, so what will happen each time I make a request?
Ok, so what will happen each time I make a request? Let's say I have 100,000 requests to make that are instant. Do I need to increment each request based on the type? For example, if there is a search request, I need to increment both the search bucket and also the daily bucket. If it's a burst, then I can go to the daily and burst buckets. If I need to check if it can make a call, do I need to see both the daily and search, or burst, respectively? Isn't that too heavy for the infrastructure, adding additional load to each request?
13:44
Retry
Edit
Copy
Claude responded: Yes, your understanding is correct — every request must check and reserve from each bucket it applies to, atomically, before the call goes out.
Claude responded: Yes, your understanding is correct — every request must check and reserve from each bucket it applies to, atomically, before the call goes out.
Analyzed per-request overhead concerns and quantified Redis performance impact
Analyzed per-request overhead concerns and quantified Redis performance impact
Yes, your understanding is correct — every request must check and reserve from each bucket it applies to, atomically, before the call goes out. But the overhead is much smaller than it sounds, and importantly, it's nowhere near your bottleneck.
What "two buckets per request" actually costs
What "two buckets per request" actually costs
Each request makes
one round trip to Redis
— not two — because you fold both bucket checks into a single Lua script that runs atomically server-side:
Copy to clipboard
lua
-- KEYS[1] = burst bucket key (or search)
-- KEYS[2] = daily bucket key
-- ARGV[1] = now (ms) ARGV[2] = window_ms
-- ARGV[3] = bucket_max ARGV[4] = daily_max
-- ARGV[5] = request_id ARGV[6] = daily_ttl
-- Trim sliding window
redis
.
call
(
'ZREMRANGEBYSCORE'
,
KEYS
[
1
]
,
0
,
ARGV
[
1
]
-
ARGV
[
2
]
)
local
burst_used
=
redis
.
call
(
'ZCARD'
,
KEYS
[
1
]
)
local
daily_used
=
tonumber
(
redis
.
call
(
'GET'
,
KEYS
[
2
]
)
or
'0'
)
if
burst_used
>=...
|
2574
|
NULL
|
NULL
|
NULL
|
|
2655
|
NULL
|
0
|
2026-05-07T11:34:06.743031+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-07/1778 /Users/lukas/.screenpipe/data/data/2026-05-07/1778153646743_m1.jpg...
|
Claude
|
Claude
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Skip to content
Skip to content
Click to collapse
Skip to content
Skip to content
Click to collapse
⌘B
Drag to resize
Open sidebar
Chat
Cowork
Code
New chat ⌘N
New chat
⌘N
Projects
Artifacts
Customize
Pinned
Bulgarian citizenship application process for EU residents
More options for Bulgarian citizenship application process for EU residents
Dawarich location tracking project
More options for Dawarich location tracking project
Recents
View all
HubSpot rate limit implementation strategy
More options for HubSpot rate limit implementation strategy
Screenpipe retention policy code location
More options for Screenpipe retention policy code location
Viewing retention policy in screenpipe
More options for Viewing retention policy in screenpipe
Clean shot x video recording termination issue
More options for Clean shot x video recording termination issue
HubSpot rate limit handling with executeRequest
More options for HubSpot rate limit handling with executeRequest
Untitled
More options
💬 Screen pipe. Is there ability…
More options for 💬 Screen pipe. Is there ability…
SMB mount access inconsistency between Finder and iTerm
More options for SMB mount access inconsistency between Finder and iTerm
💬 What is the best switch I can…
More options for 💬 What is the best switch I can…
Permission denied on screenpipe volume
More options for Permission denied on screenpipe volume
Screenpipe sync database attachment error
More options for Screenpipe sync database attachment error
Last swimming outing with Dani
More options for Last swimming outing with Dani
Definition of incarcerated
More options for Definition of incarcerated
Chromecast remote volume buttons not working
More options for Chromecast remote volume buttons not working
Salesforce API errors with Organization and FieldDefinition queries
More options for Salesforce API errors with Organization and FieldDefinition queries
Daily activity summary from screenpipe data
More options for Daily activity summary from screenpipe data
MacBook unexpected restarts and kanji screen
More options for MacBook unexpected restarts and kanji screen
Security patch review and testing guidance
More options for Security patch review and testing guidance
Food calorie values reference
More options for Food calorie values reference
Tracking location history from last week
More options for Tracking location history from last week
Lukas Pro
Get apps and extensions
HubSpot rate limit implementation strategy, rename chat
HubSpot rate limit implementation strategy
More options for HubSpot rate limit implementation strategy
Close
Share chat
Claude finished the response
You said: So just a solution for rate limit implementation.
You said: So just a solution for rate limit implementation.
So just a solution for rate limit implementation. The situation currently is that there are some daily and secondary limits for HubSpot. I would like to make sure I never reach a 429 error rate limit. The requests can come from any flow. It can be:
updating activity (engagement, meeting, call, note)
searching for a company or contact
updating deal
patching IDs
Review what the limit is at the moment in the HubSpot documentation and then think of the solution:
where to store it
how to read it
how to work with multiple jobs
how to work with paginated requests Let's consider a situation when there are 600 opportunities to sync. What would be the flow? How would the rate limit be recognized? How would it be handled? What are the potential issues? [API usage guidelines and limits - HubSpot docs](
https://developers.hubspot.com/docs/developer-tooling/platform/usage-guidelines
https://developers.hubspot.com/docs/developer-tooling/platform/usage-guidelines
). Example of such a error Client error:
POST https://api.hubapi.com/crm/v3/objects/contact/search
resulted in a
429 Too Many Requests
response: {"status":"error","message":"You have reached your secondly limit.","errorType":"RATE_LIMIT","correlationId":"019dffc4-4 (truncated...). Think carefully about the implementation and potential issue and bottlenecks.
Show more
10:42
Retry
Edit
Copy
Claude responded: Current HubSpot limits (Apr 2026)
Claude responded: Current HubSpot limits (Apr 2026)
Synthesized HubSpot rate limit architecture with Redis storage and sliding window algorithms
Synthesized HubSpot rate limit architecture with Redis storage and sliding window algorithms
Current HubSpot limits (Apr 2026)
Current HubSpot limits (Apr 2026)
For privately distributed apps (which is what Jiminny presumably uses with HubSpot), the limits are layered: a per-app burst window of 100/10s on Free/Starter, 190/10s on Pro/Enterprise, or 250/10s with the API Limit Increase add-on
, plus a per-account daily cap of 250k / 625k / 1M depending on tier — shared across all private apps in the account
. The burst window is per app; the daily quota is per portal.
hubspot
hubspot
hubspot
hubspot
The Search API is special: five requests per second per account, capped at 200 records per page, with a hard 10,000-result ceiling per query
. That's the limit the 429 in your example is hitting (
secondly limit
on
/crm/v3/objects/contact/search
). It's a separate bucket from the 190/10s, and critically, search responses do not include the
X-HubSpot-RateLimit-*
headers
— you can't read remaining capacity off the response, you have to track it yourself.
hubspot
hubspot
hubspot
hubspot
Non-search endpoints return
X-HubSpot-RateLimit-Remaining
,
-Max
, and
-Interval-Milliseconds
. The daily headers are not returned for OAuth-authenticated calls
, so for those you check the account-info endpoint or maintain your own counter. There's also a soft rule: errors should stay under 5% of total daily requests
— that's enforced for marketplace listing, but it's also a sane operational target.
hubspot
hubspot
hubspot
hubspot
So you have
four buckets
to track at minimum: app-burst (10s sliding), search-secondly (1s sliding), account-daily (24h fixed, midnight in HubSpot's TZ), and per-app daily share (your own budgeting on top of the account cap).
Where to store it
Where to store it
Redis. It's the only realistic option once you have multiple queue workers — DB-backed counters serialize too much, and in-process state can't coordinate across workers. Laravel already speaks Redis natively, and you get atomic
INCR
/
EXPIRE
plus Lua scripting for true CAS semantics.
Key layout I'd use:
Copy to clipboard
hubspot:rl:burst:{portalId}:{appId} ZSET (sliding 10s)
hubspot:rl:search:{portalId} ZSET (sliding 1s)
hubspot:rl:daily:{portalId} STRING + TTL to midnight TZ
hubspot:rl:meta:{portalId} HASH (last seen headers)
The two short-window buckets are sliding-window-log (Redis ZSET, score =
microtime
, member = unique request id). Lua script removes entries older than the window, counts remaining slots, and only adds the new one if there's room — all atomic. Fixed windows are simpler but allow 2× the limit at the boundary, which on a 5/s window is brutal.
The daily bucket is a plain
INCR
with TTL set to seconds-until-midnight in
HubSpot's account timezone
, not yours — Sofia is UTC+2/+3 but your portal might be set to US Eastern. Get this once and cache it.
How to read it
How to read it
Two-phase: optimistic pre-check, authoritative post-update.
Before a call, run the Lua acquire script. If it returns "denied," sleep until a slot frees up (the script can return ms-until-next-slot) or push the job back to the queue with a delay. Don't busy-loop.
After the call, parse
X-HubSpot-RateLimit-Remaining
/
-Max
/
-Interval-Milliseconds
and store them in
hubspot:rl:meta:{portalId}
. This is your reality check — if your local counter says 50 remaining but HubSpot's header says 5, you trust HubSpot and clamp your counter. This handles clock drift, missed accounting (e.g., crashed worker that took a token but never made the request), and other apps in the same account consuming the daily budget invisibly.
For search specifically, since headers don't come back, the local counter
is
the source of truth — meaning if you ever crash mid-flight, you've under-counted. Always release tokens on connection-level failure but
not
on 429 (you really did make that request).
How to work with multiple jobs
How to work with multiple jobs
The queue layer needs to enforce concurrency separately from the rate limiter. Both work together:
Concurrency cap
via
Queue::throttle()
or a Redis semaphore — limits how many sync workers run in parallel against HubSpot. Without this, you can have 50 workers all blocked waiting for tokens, which is wasteful and creates retry storms.
Per-tenant fairness
— if you sync many Jiminny customers into different HubSpot portals, each portal has its own bucket but you still want one slow portal not to starve others. Either separate queues per portal or a fair-share scheduler.
Priority lanes
— webhook-driven updates (user-visible latency) should outrank background batch syncs. Two queues:
hubspot-priority
and
hubspot-bulk
, with priority workers taking 70% of the burst budget and bulk taking 30% (enforce via separate sub-buckets if you really want hard separation, otherwise just pull from priority first).
Backoff on 429
— respect the
Retry-After
header. If absent, exponential with jitter (e.g.,
min(2^attempt * 250ms, 30s) ± 20%
). The jitter is non-negotiable; without it, simultaneous 429s retry in lockstep and you get thundering-herd 429s on retry.
How to work with paginated requests
How to work with paginated requests
The trap is treating "fetch all" as one logical operation. Each page is its own API call and competes for tokens with everything else.
Two practical rules:
Don't hold the worker idle while paginating.
If page N takes 500ms and page N+1 needs to wait 800ms for a token, you've burned 800ms of worker time doing nothing. Instead, fetch page N, dispatch the
processing
of page N as a separate job, and queue a "fetch page N+1" job with a delay equal to the wait time. Each page becomes its own atomic unit.
Always batch where HubSpot offers it.
POST /crm/v3/objects/{type}/batch/{read|update|create}
accepts up to 100 IDs per call. For your "patching IDs" flow this is the difference between 600 calls and 6.
Walkthrough: 600 opportunities
Walkthrough: 600 opportunities
Naive flow (one PATCH per deal): 600 calls. At 190/10s that's ~32s of API time, well under daily. You'd hit burst easily without throttling. Plus likely 1-3 search calls upfront and N association calls.
Sane flow:
Identify deltas
— if you can avoid Search at all, do. Use
lastmodifieddate
filter on a single search if you must, paginate at limit=200. For 600 deals that's 3 search calls @ 5/s = ~600ms naturally throttled.
Batch read
current state —
POST /crm/v3/objects/deals/batch/read
with 100 IDs per call → 6 calls. Burst weight 6.
Compute diff
in your code (no API).
Batch update
—
POST /crm/v3/objects/deals/batch/update
with 100 per call → 6 calls.
Associations
—
POST /crm/v4/associations/{from}/{to}/batch/create
if needed → another few batch calls.
Total: ~15-20 API calls for 600 deals. Burst budget consumed: 20/190 over ~5s. Daily impact: trivial.
Recognition: pre-check denies if
<weight>
slots aren't free; on 429 the response surfaces
policyName
(DAILY/SECONDLY) — log it, push the job back with
Retry-After
delay, increment a metric so you can alarm on sustained 429 rate.
Pitfalls & bottlenecks worth pre-empting
Pitfalls & bottlenecks worth pre-empting
Daily quota is shared across the whole portal
, including any n8n flows, other private apps, marketing automation calling APIs, etc. Budget for ~70-80% of the documented limit, not 100%. Add an internal per-app daily cap so a runaway sync can't starve other apps.
Search is uniquely fragile
: separate 5/s bucket, no headers to read, 10k-result cap per query. If you ever hit 10k+ deals matching a filter, partition by
hs_object_id
ranges or by
lastmodifieddate
windows.
Retry storms after HubSpot incidents
— always jitter, always cap total retries (e.g., 5 attempts, then dead-letter).
Webhook → sync → webhook loops
— when your update fires a HubSpot webhook that triggers another sync. Tag your own writes (e.g., a custom property
jy_last_sync_id
) and ignore webhooks where it just changed.
Token refresh
— OAuth refresh itself counts against burst. Cache the access token in Redis with TTL =
expires_in - 60s
, single-flight the refresh (only one worker refreshes; others wait on a lock).
Search latency for fresh writes
— newly created/updated objects don't appear in search instantly. Don't write-then-search; use returned IDs directly.
Clock skew
— Redis is authoritative. Don't use
time()
from each worker for window scoring; use
redis.call('TIME')
inside the Lua script.
Dead workers with held tokens
— sliding-window-log handles this naturally because tokens expire by score; token-bucket implementations need explicit release-on-crash logic.
The 5% error rule
counts every 429 toward your error budget, even successfully retried ones. If your pre-check is working well, 429s should be near zero — if they're not, your pre-check is wrong, not just slow.
Phantom contention with Laravel
RateLimited
middleware
: it's per-job-class by default, not per-portal. If your
SyncDealJob
and
UpdateActivityJob
are different classes both calling HubSpot, they don't share a Laravel-level limiter — you need a single
HubspotRateLimiter
service that everything routes through.
If you want, I can sketch the Lua script for the sliding-window acquire and the Laravel service wrapper around it.
Copy
Give positive feedback
Give negative feedback
Retry
You said: What will happen if there are two different types of rate limits?
You said: What will happen if there are two different types of rate limits?
What will happen if there are two different types of rate limits?
Search requests that have 5 requests per second
The other rate limit that has, let's say, 100 requests per 10 seconds How do these work together? Is there some conflict? Can I reach the limit with one request and block either as well, or are these separated? Can I still continue making search requests once I hit the normal requests limits?
13:40
Retry
Edit
Copy
Claude responded: They're independent buckets — with one shared bucket on top.
Claude responded: They're independent buckets — with one shared bucket on top.
Analyzed independent rate limit buckets and their practical interactions
Analyzed independent rate limit buckets and their practical interactions
They're independent buckets — with one shared bucket on top.
The three buckets and what each call hits
The three buckets and what each call hits
Copy to clipboard
┌──────────────────┐
Search request ──→ │ Search: 5/sec │ ──┐
└──────────────────┘ │
├──→ ┌─────────────────┐
┌──────────────────┐ │ │ Daily: 250k–1M │
Non-search call ──→ │ Burst: 190/10s │ ──┘ │ (per portal) │
└──────────────────┘ └─────────────────┘
A search call is only metered against the search bucket and the daily bucket. A non-search call (batch read/update, single PATCH, associations, etc.) is only metered against the burst bucket and the daily bucket. The two short-window buckets do not share counters.
What this means practically
What this means practically
Hitting search secondly limit (5/s):
Only further
/search
calls 429. Your batch reads, batch updates, single PATCHes, association calls — all keep working at full burst speed. This is actually useful: if your sync is bottlenecked on Search, you can pivot to using
lastmodifieddate
filters via batch endpoints, or use the IDs you already have to do batch reads, while Search cools off.
Hitting burst limit (190/10s):
Only non-search calls 429. You can still issue Search calls at 5/s. Useful for: continuing to identify deltas for queueing while in-flight updates drain, or refreshing a small set of records via Search even though your write pipeline is paused.
Hitting daily limit:
Everything stops. Search and non-search alike. Doesn't unblock until midnight in your portal's configured timezone — and remember this is shared across every private app in the portal, plus n8n flows, marketing tools, anything else hitting the API with that account.
So can one type of request block the other?
So can one type of request block the other?
Search → Burst:
No.
Saturating Search at 50 calls per 10s leaves your full 190/10s burst untouched.
Burst → Search:
No.
Saturating burst leaves Search's 5/s untouched.
Either → Daily:
Yes
, but only by contributing to the same daily counter. It's volume that kills you here, not the type.
In theory you can sustain ~50 search + ~190 other =
~240 calls per 10 seconds
indefinitely (until daily runs out), because the two buckets bill independently.
Implementation consequence
Implementation consequence
Your rate limiter needs to know which bucket a request hits before it acquires. Cleanest pattern:
Copy to clipboard
php
$limiter
->
acquire
(
'search'
,
$weight
=
1
)
;
// for search endpoints only
$limiter
->
acquire
(
'burst'
,
$weight
=
1
)
;
// for everything else
$limiter
->
acquire
(
'daily'
,
$weight
=
1
)
;
// every call, both kinds
In Redis: three separate keys, three separate Lua acquire scripts (or one script with a bucket parameter). A search call calls
acquire('search')
+
acquire('daily')
. A batch update calls
acquire('burst')
+
acquire('daily')
.
One subtle pitfall: when you backoff on a 429,
inspect
policyName
in the response body
to know which bucket actually fired. If you see
SECONDLY
from a search endpoint, you only need to delay search-bound jobs — burst-bound jobs in the queue can keep running. If you blanket-pause everything on any 429, you waste capacity on the bucket that's still healthy. Two queues (or two throttle keys) make this clean; one global pause is the lazy version.
The other subtlety: the burst response gives you
X-HubSpot-RateLimit-Remaining
to clamp local state against, but search doesn't return those headers. So your search counter is unverified — be slightly more conservative there (e.g., budget 4/s instead of 5) to absorb the unaccounted-for calls.
Copy
Give positive feedback
Give negative feedback
Retry
You said: Ok, so what will happen each time I make a request?
You said: Ok, so what will happen each time I make a request?
Ok, so what will happen each time I make a request? Let's say I have 100,000 requests to make that are instant. Do I need to increment each request based on the type? For example, if there is a search request, I need to increment both the search bucket and also the daily bucket. If it's a burst, then I can go to the daily and burst buckets. If I need to check if it can make a call, do I need to see both the daily and search, or burst, respectively? Isn't that too heavy for the infrastructure, adding additional load to each request?
13:44
Retry
Edit
Copy
Claude responded: Yes, your understanding is correct — every request must check and reserve from each bucket it applies to, atomically, before the call goes out.
Claude responded: Yes, your understanding is correct — every request must check and reserve from each bucket it applies to, atomically, before the call goes out.
Analyzed per-request overhead concerns and quantified Redis performance impact
Analyzed per-request overhead concerns and quantified Redis performance impact
Yes, your understanding is correct — every request must check and reserve from each bucket it applies to, atomically, before the call goes out. But the overhead is much smaller than it sounds, and importantly, it's nowhere near your bottleneck.
What "two buckets per request" actually costs
What "two buckets per request" actually costs
Each request makes
one round trip to Redis
— not two — because you fold both bucket checks into a single Lua script that runs atomically server-side:
Copy to clipboard
lua
-- KEYS[1] = burst bucket key (or search)...
|
[{"role":"AXLink","text":& [{"role":"AXLink","text":"Skip to content","depth":14,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Skip to content","depth":15,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Click to collapse","depth":16,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"⌘B","depth":16,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Drag to resize","depth":16,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Open sidebar","depth":14,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Chat","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Cowork","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"New chat ⌘N","depth":15,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"New chat","depth":16,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"⌘N","depth":17,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Projects","depth":15,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Artifacts","depth":15,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Customize","depth":15,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Pinned","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXButton","text":"Bulgarian citizenship application process for EU residents","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Bulgarian citizenship application process for EU residents","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Dawarich location tracking project","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Dawarich location tracking project","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Recents","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXButton","text":"View all","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"HubSpot rate limit implementation strategy","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for HubSpot rate limit implementation strategy","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Screenpipe retention policy code location","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Screenpipe retention policy code location","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Viewing retention policy in screenpipe","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Viewing retention policy in screenpipe","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Clean shot x video recording termination issue","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Clean shot x video recording termination issue","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"HubSpot rate limit handling with executeRequest","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for HubSpot rate limit handling with executeRequest","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Untitled","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"💬 Screen pipe. Is there ability…","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for 💬 Screen pipe. Is there ability…","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"SMB mount access inconsistency between Finder and iTerm","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for SMB mount access inconsistency between Finder and iTerm","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"💬 What is the best switch I can…","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for 💬 What is the best switch I can…","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Permission denied on screenpipe volume","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Permission denied on screenpipe volume","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Screenpipe sync database attachment error","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Screenpipe sync database attachment error","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Last swimming outing with Dani","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Last swimming outing with Dani","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Definition of incarcerated","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Definition of incarcerated","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Chromecast remote volume buttons not working","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Chromecast remote volume buttons not working","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Salesforce API errors with Organization and FieldDefinition queries","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Salesforce API errors with Organization and FieldDefinition queries","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Daily activity summary from screenpipe data","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Daily activity summary from screenpipe data","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"MacBook unexpected restarts and kanji screen","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for MacBook unexpected restarts and kanji screen","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Security patch review and testing guidance","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Security patch review and testing guidance","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Food calorie values reference","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Food calorie values reference","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Tracking location history from last week","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Tracking location history from last week","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"Lukas Pro","depth":15,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Get apps and extensions","depth":15,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"HubSpot rate limit implementation strategy, rename chat","depth":20,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"HubSpot rate limit implementation strategy","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXPopUpButton","text":"More options for HubSpot rate limit implementation strategy","depth":20,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close","depth":22,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Share chat","depth":22,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Claude finished the response","depth":22,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"You said: So just a solution for rate limit implementation.","depth":21,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"You said: So just a solution for rate limit implementation.","depth":22,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"So just a solution for rate limit implementation. The situation currently is that there are some daily and secondary limits for HubSpot. I would like to make sure I never reach a 429 error rate limit. The requests can come from any flow. It can be:","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"updating activity (engagement, meeting, call, note)","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"searching for a company or contact","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"updating deal","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"patching IDs\nReview what the limit is at the moment in the HubSpot documentation and then think of the solution:","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"where to store it","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"how to read it","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"how to work with multiple jobs","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"how to work with paginated requests Let's consider a situation when there are 600 opportunities to sync. What would be the flow? How would the rate limit be recognized? How would it be handled? What are the potential issues? [API usage guidelines and limits - HubSpot docs](","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXLink","text":"https://developers.hubspot.com/docs/developer-tooling/platform/usage-guidelines","depth":26,"on_screen":false,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"https://developers.hubspot.com/docs/developer-tooling/platform/usage-guidelines","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"). Example of such a error Client error:","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"POST https://api.hubapi.com/crm/v3/objects/contact/search","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"resulted in a","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"429 Too Many Requests","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"response: {\"status\":\"error\",\"message\":\"You have reached your secondly limit.\",\"errorType\":\"RATE_LIMIT\",\"correlationId\":\"019dffc4-4 (truncated...). Think carefully about the implementation and potential issue and bottlenecks.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Show more","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:42","depth":23,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Retry","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Edit","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Copy","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXHeading","text":"Claude responded: Current HubSpot limits (Apr 2026)","depth":22,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"Claude responded: Current HubSpot limits (Apr 2026)","depth":23,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Synthesized HubSpot rate limit architecture with Redis storage and sliding window algorithms","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Synthesized HubSpot rate limit architecture with Redis storage and sliding window algorithms","depth":24,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"Current HubSpot limits (Apr 2026)","depth":25,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"Current HubSpot limits (Apr 2026)","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"For privately distributed apps (which is what Jiminny presumably uses with HubSpot), the limits are layered: a per-app burst window of 100/10s on Free/Starter, 190/10s on Pro/Enterprise, or 250/10s with the API Limit Increase add-on","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", plus a per-account daily cap of 250k / 625k / 1M depending on tier — shared across all private apps in the account","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":". The burst window is per app; the daily quota is per portal.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXLink","text":"hubspot","depth":27,"on_screen":false,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"hubspot","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXLink","text":"hubspot","depth":27,"on_screen":false,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"hubspot","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"The Search API is special: five requests per second per account, capped at 200 records per page, with a hard 10,000-result ceiling per query","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":". That's the limit the 429 in your example is hitting (","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"secondly limit","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"on","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/crm/v3/objects/contact/search","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"). It's a separate bucket from the 190/10s, and critically, search responses do not include the","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"X-HubSpot-RateLimit-*","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"headers","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— you can't read remaining capacity off the response, you have to track it yourself.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXLink","text":"hubspot","depth":27,"on_screen":false,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"hubspot","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXLink","text":"hubspot","depth":27,"on_screen":false,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"hubspot","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Non-search endpoints return","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"X-HubSpot-RateLimit-Remaining","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":",","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"-Max","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", and","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"-Interval-Milliseconds","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":". The daily headers are not returned for OAuth-authenticated calls","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", so for those you check the account-info endpoint or maintain your own counter. There's also a soft rule: errors should stay under 5% of total daily requests","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— that's enforced for marketplace listing, but it's also a sane operational target.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXLink","text":"hubspot","depth":27,"on_screen":false,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"hubspot","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXLink","text":"hubspot","depth":27,"on_screen":false,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"hubspot","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"So you have","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"four buckets","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"to track at minimum: app-burst (10s sliding), search-secondly (1s sliding), account-daily (24h fixed, midnight in HubSpot's TZ), and per-app daily share (your own budgeting on top of the account cap).","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"Where to store it","depth":25,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"Where to store it","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Redis. It's the only realistic option once you have multiple queue workers — DB-backed counters serialize too much, and in-process state can't coordinate across workers. Laravel already speaks Redis natively, and you get atomic","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"INCR","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"EXPIRE","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"plus Lua scripting for true CAS semantics.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Key layout I'd use:","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Copy to clipboard","depth":28,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"hubspot:rl:burst:{portalId}:{appId} ZSET (sliding 10s)","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"hubspot:rl:search:{portalId} ZSET (sliding 1s)","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"hubspot:rl:daily:{portalId} STRING + TTL to midnight TZ","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"hubspot:rl:meta:{portalId} HASH (last seen headers)","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"The two short-window buckets are sliding-window-log (Redis ZSET, score =","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"microtime","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", member = unique request id). Lua script removes entries older than the window, counts remaining slots, and only adds the new one if there's room — all atomic. Fixed windows are simpler but allow 2× the limit at the boundary, which on a 5/s window is brutal.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"The daily bucket is a plain","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"INCR","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"with TTL set to seconds-until-midnight in","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"HubSpot's account timezone","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", not yours — Sofia is UTC+2/+3 but your portal might be set to US Eastern. Get this once and cache it.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"How to read it","depth":25,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"How to read it","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Two-phase: optimistic pre-check, authoritative post-update.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Before a call, run the Lua acquire script. If it returns \"denied,\" sleep until a slot frees up (the script can return ms-until-next-slot) or push the job back to the queue with a delay. Don't busy-loop.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"After the call, parse","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"X-HubSpot-RateLimit-Remaining","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"-Max","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"-Interval-Milliseconds","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"and store them in","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"hubspot:rl:meta:{portalId}","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":". This is your reality check — if your local counter says 50 remaining but HubSpot's header says 5, you trust HubSpot and clamp your counter. This handles clock drift, missed accounting (e.g., crashed worker that took a token but never made the request), and other apps in the same account consuming the daily budget invisibly.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"For search specifically, since headers don't come back, the local counter","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"is","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"the source of truth — meaning if you ever crash mid-flight, you've under-counted. Always release tokens on connection-level failure but","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"not","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"on 429 (you really did make that request).","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"How to work with multiple jobs","depth":25,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"How to work with multiple jobs","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"The queue layer needs to enforce concurrency separately from the rate limiter. Both work together:","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Concurrency cap","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"via","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Queue::throttle()","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"or a Redis semaphore — limits how many sync workers run in parallel against HubSpot. Without this, you can have 50 workers all blocked waiting for tokens, which is wasteful and creates retry storms.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Per-tenant fairness","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— if you sync many Jiminny customers into different HubSpot portals, each portal has its own bucket but you still want one slow portal not to starve others. Either separate queues per portal or a fair-share scheduler.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Priority lanes","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— webhook-driven updates (user-visible latency) should outrank background batch syncs. Two queues:","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"hubspot-priority","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"and","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"hubspot-bulk","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", with priority workers taking 70% of the burst budget and bulk taking 30% (enforce via separate sub-buckets if you really want hard separation, otherwise just pull from priority first).","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Backoff on 429","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— respect the","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Retry-After","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"header. If absent, exponential with jitter (e.g.,","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"min(2^attempt * 250ms, 30s) ± 20%","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"). The jitter is non-negotiable; without it, simultaneous 429s retry in lockstep and you get thundering-herd 429s on retry.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"How to work with paginated requests","depth":25,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"How to work with paginated requests","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"The trap is treating \"fetch all\" as one logical operation. Each page is its own API call and competes for tokens with everything else.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Two practical rules:","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Don't hold the worker idle while paginating.","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"If page N takes 500ms and page N+1 needs to wait 800ms for a token, you've burned 800ms of worker time doing nothing. Instead, fetch page N, dispatch the","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"processing","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"of page N as a separate job, and queue a \"fetch page N+1\" job with a delay equal to the wait time. Each page becomes its own atomic unit.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Always batch where HubSpot offers it.","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"POST /crm/v3/objects/{type}/batch/{read|update|create}","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"accepts up to 100 IDs per call. For your \"patching IDs\" flow this is the difference between 600 calls and 6.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"Walkthrough: 600 opportunities","depth":25,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"Walkthrough: 600 opportunities","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Naive flow (one PATCH per deal): 600 calls. At 190/10s that's ~32s of API time, well under daily. You'd hit burst easily without throttling. Plus likely 1-3 search calls upfront and N association calls.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Sane flow:","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Identify deltas","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— if you can avoid Search at all, do. Use","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"lastmodifieddate","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"filter on a single search if you must, paginate at limit=200. For 600 deals that's 3 search calls @ 5/s = ~600ms naturally throttled.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Batch read","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"current state —","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"POST /crm/v3/objects/deals/batch/read","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"with 100 IDs per call → 6 calls. Burst weight 6.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Compute diff","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"in your code (no API).","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Batch update","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"—","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"POST /crm/v3/objects/deals/batch/update","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"with 100 per call → 6 calls.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Associations","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"—","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"POST /crm/v4/associations/{from}/{to}/batch/create","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"if needed → another few batch calls.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Total: ~15-20 API calls for 600 deals. Burst budget consumed: 20/190 over ~5s. Daily impact: trivial.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Recognition: pre-check denies if","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"<weight>","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"slots aren't free; on 429 the response surfaces","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"policyName","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"(DAILY/SECONDLY) — log it, push the job back with","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Retry-After","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"delay, increment a metric so you can alarm on sustained 429 rate.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"Pitfalls & bottlenecks worth pre-empting","depth":25,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"Pitfalls & bottlenecks worth pre-empting","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Daily quota is shared across the whole portal","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", including any n8n flows, other private apps, marketing automation calling APIs, etc. Budget for ~70-80% of the documented limit, not 100%. Add an internal per-app daily cap so a runaway sync can't starve other apps.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Search is uniquely fragile","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":": separate 5/s bucket, no headers to read, 10k-result cap per query. If you ever hit 10k+ deals matching a filter, partition by","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"hs_object_id","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"ranges or by","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"lastmodifieddate","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"windows.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Retry storms after HubSpot incidents","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— always jitter, always cap total retries (e.g., 5 attempts, then dead-letter).","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Webhook → sync → webhook loops","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— when your update fires a HubSpot webhook that triggers another sync. Tag your own writes (e.g., a custom property","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"jy_last_sync_id","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":") and ignore webhooks where it just changed.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Token refresh","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— OAuth refresh itself counts against burst. Cache the access token in Redis with TTL =","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"expires_in - 60s","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", single-flight the refresh (only one worker refreshes; others wait on a lock).","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Search latency for fresh writes","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— newly created/updated objects don't appear in search instantly. Don't write-then-search; use returned IDs directly.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Clock skew","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— Redis is authoritative. Don't use","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"time()","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"from each worker for window scoring; use","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"redis.call('TIME')","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"inside the Lua script.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Dead workers with held tokens","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— sliding-window-log handles this naturally because tokens expire by score; token-bucket implementations need explicit release-on-crash logic.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"The 5% error rule","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"counts every 429 toward your error budget, even successfully retried ones. If your pre-check is working well, 429s should be near zero — if they're not, your pre-check is wrong, not just slow.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Phantom contention with Laravel","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"RateLimited","depth":29,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"middleware","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":": it's per-job-class by default, not per-portal. If your","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"SyncDealJob","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"and","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"UpdateActivityJob","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"are different classes both calling HubSpot, they don't share a Laravel-level limiter — you need a single","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"HubspotRateLimiter","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"service that everything routes through.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"If you want, I can sketch the Lua script for the sliding-window acquire and the Laravel service wrapper around it.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Copy","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Give positive feedback","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Give negative feedback","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Retry","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXHeading","text":"You said: What will happen if there are two different types of rate limits?","depth":21,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"You said: What will happen if there are two different types of rate limits?","depth":22,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"What will happen if there are two different types of rate limits?","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Search requests that have 5 requests per second","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"The other rate limit that has, let's say, 100 requests per 10 seconds How do these work together? Is there some conflict? Can I reach the limit with one request and block either as well, or are these separated? Can I still continue making search requests once I hit the normal requests limits?","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"13:40","depth":23,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Retry","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Edit","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Copy","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXHeading","text":"Claude responded: They're independent buckets — with one shared bucket on top.","depth":22,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"Claude responded: They're independent buckets — with one shared bucket on top.","depth":23,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Analyzed independent rate limit buckets and their practical interactions","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Analyzed independent rate limit buckets and their practical interactions","depth":24,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"They're independent buckets — with one shared bucket on top.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"The three buckets and what each call hits","depth":25,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"The three buckets and what each call hits","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Copy to clipboard","depth":28,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"┌──────────────────┐","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Search request ──→ │ Search: 5/sec │ ──┐","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"└──────────────────┘ │","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"├──→ ┌─────────────────┐","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"┌──────────────────┐ │ │ Daily: 250k–1M │","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Non-search call ──→ │ Burst: 190/10s │ ──┘ │ (per portal) │","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"└──────────────────┘ └─────────────────┘","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"A search call is only metered against the search bucket and the daily bucket. A non-search call (batch read/update, single PATCH, associations, etc.) is only metered against the burst bucket and the daily bucket. The two short-window buckets do not share counters.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"What this means practically","depth":25,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"What this means practically","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Hitting search secondly limit (5/s):","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Only further","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/search","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"calls 429. Your batch reads, batch updates, single PATCHes, association calls — all keep working at full burst speed. This is actually useful: if your sync is bottlenecked on Search, you can pivot to using","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"lastmodifieddate","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"filters via batch endpoints, or use the IDs you already have to do batch reads, while Search cools off.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Hitting burst limit (190/10s):","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Only non-search calls 429. You can still issue Search calls at 5/s. Useful for: continuing to identify deltas for queueing while in-flight updates drain, or refreshing a small set of records via Search even though your write pipeline is paused.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Hitting daily limit:","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Everything stops. Search and non-search alike. Doesn't unblock until midnight in your portal's configured timezone — and remember this is shared across every private app in the portal, plus n8n flows, marketing tools, anything else hitting the API with that account.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"So can one type of request block the other?","depth":25,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"So can one type of request block the other?","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Search → Burst:","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"No.","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Saturating Search at 50 calls per 10s leaves your full 190/10s burst untouched.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Burst → Search:","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"No.","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Saturating burst leaves Search's 5/s untouched.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Either → Daily:","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Yes","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", but only by contributing to the same daily counter. It's volume that kills you here, not the type.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"In theory you can sustain ~50 search + ~190 other =","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"~240 calls per 10 seconds","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"indefinitely (until daily runs out), because the two buckets bill independently.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"Implementation consequence","depth":25,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"Implementation consequence","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Your rate limiter needs to know which bucket a request hits before it acquires. Cleanest pattern:","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Copy to clipboard","depth":28,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"php","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"$limiter","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"->","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"acquire","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"(","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"'search'","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":",","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"$weight","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"=","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":")","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":";","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"// for search endpoints only","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"$limiter","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"->","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"acquire","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"(","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"'burst'","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":",","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"$weight","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"=","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":")","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":";","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"// for everything else","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"$limiter","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"->","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"acquire","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"(","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"'daily'","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":",","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"$weight","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"=","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":")","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":";","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"// every call, both kinds","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"In Redis: three separate keys, three separate Lua acquire scripts (or one script with a bucket parameter). A search call calls","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"acquire('search')","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"acquire('daily')","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":". A batch update calls","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"acquire('burst')","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"acquire('daily')","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":".","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"One subtle pitfall: when you backoff on a 429,","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"inspect","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"policyName","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"in the response body","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"to know which bucket actually fired. If you see","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"SECONDLY","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"from a search endpoint, you only need to delay search-bound jobs — burst-bound jobs in the queue can keep running. If you blanket-pause everything on any 429, you waste capacity on the bucket that's still healthy. Two queues (or two throttle keys) make this clean; one global pause is the lazy version.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"The other subtlety: the burst response gives you","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"X-HubSpot-RateLimit-Remaining","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"to clamp local state against, but search doesn't return those headers. So your search counter is unverified — be slightly more conservative there (e.g., budget 4/s instead of 5) to absorb the unaccounted-for calls.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Copy","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Give positive feedback","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Give negative feedback","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Retry","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXHeading","text":"You said: Ok, so what will happen each time I make a request?","depth":21,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"You said: Ok, so what will happen each time I make a request?","depth":22,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Ok, so what will happen each time I make a request? Let's say I have 100,000 requests to make that are instant. Do I need to increment each request based on the type? For example, if there is a search request, I need to increment both the search bucket and also the daily bucket. If it's a burst, then I can go to the daily and burst buckets. If I need to check if it can make a call, do I need to see both the daily and search, or burst, respectively? Isn't that too heavy for the infrastructure, adding additional load to each request?","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"13:44","depth":23,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Retry","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Edit","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Copy","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXHeading","text":"Claude responded: Yes, your understanding is correct — every request must check and reserve from each bucket it applies to, atomically, before the call goes out.","depth":22,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"Claude responded: Yes, your understanding is correct — every request must check and reserve from each bucket it applies to, atomically, before the call goes out.","depth":23,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Analyzed per-request overhead concerns and quantified Redis performance impact","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Analyzed per-request overhead concerns and quantified Redis performance impact","depth":24,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Yes, your understanding is correct — every request must check and reserve from each bucket it applies to, atomically, before the call goes out. But the overhead is much smaller than it sounds, and importantly, it's nowhere near your bottleneck.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"What \"two buckets per request\" actually costs","depth":25,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"What \"two buckets per request\" actually costs","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Each request makes","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"one round trip to Redis","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— not two — because you fold both bucket checks into a single Lua script that runs atomically server-side:","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Copy to clipboard","depth":28,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"lua","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"-- KEYS[1] = burst bucket key (or search)","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"}]...
|
2756958225225413506
|
-5760403554810635172
|
click
|
accessibility
|
NULL
|
Skip to content
Skip to content
Click to collapse
Skip to content
Skip to content
Click to collapse
⌘B
Drag to resize
Open sidebar
Chat
Cowork
Code
New chat ⌘N
New chat
⌘N
Projects
Artifacts
Customize
Pinned
Bulgarian citizenship application process for EU residents
More options for Bulgarian citizenship application process for EU residents
Dawarich location tracking project
More options for Dawarich location tracking project
Recents
View all
HubSpot rate limit implementation strategy
More options for HubSpot rate limit implementation strategy
Screenpipe retention policy code location
More options for Screenpipe retention policy code location
Viewing retention policy in screenpipe
More options for Viewing retention policy in screenpipe
Clean shot x video recording termination issue
More options for Clean shot x video recording termination issue
HubSpot rate limit handling with executeRequest
More options for HubSpot rate limit handling with executeRequest
Untitled
More options
💬 Screen pipe. Is there ability…
More options for 💬 Screen pipe. Is there ability…
SMB mount access inconsistency between Finder and iTerm
More options for SMB mount access inconsistency between Finder and iTerm
💬 What is the best switch I can…
More options for 💬 What is the best switch I can…
Permission denied on screenpipe volume
More options for Permission denied on screenpipe volume
Screenpipe sync database attachment error
More options for Screenpipe sync database attachment error
Last swimming outing with Dani
More options for Last swimming outing with Dani
Definition of incarcerated
More options for Definition of incarcerated
Chromecast remote volume buttons not working
More options for Chromecast remote volume buttons not working
Salesforce API errors with Organization and FieldDefinition queries
More options for Salesforce API errors with Organization and FieldDefinition queries
Daily activity summary from screenpipe data
More options for Daily activity summary from screenpipe data
MacBook unexpected restarts and kanji screen
More options for MacBook unexpected restarts and kanji screen
Security patch review and testing guidance
More options for Security patch review and testing guidance
Food calorie values reference
More options for Food calorie values reference
Tracking location history from last week
More options for Tracking location history from last week
Lukas Pro
Get apps and extensions
HubSpot rate limit implementation strategy, rename chat
HubSpot rate limit implementation strategy
More options for HubSpot rate limit implementation strategy
Close
Share chat
Claude finished the response
You said: So just a solution for rate limit implementation.
You said: So just a solution for rate limit implementation.
So just a solution for rate limit implementation. The situation currently is that there are some daily and secondary limits for HubSpot. I would like to make sure I never reach a 429 error rate limit. The requests can come from any flow. It can be:
updating activity (engagement, meeting, call, note)
searching for a company or contact
updating deal
patching IDs
Review what the limit is at the moment in the HubSpot documentation and then think of the solution:
where to store it
how to read it
how to work with multiple jobs
how to work with paginated requests Let's consider a situation when there are 600 opportunities to sync. What would be the flow? How would the rate limit be recognized? How would it be handled? What are the potential issues? [API usage guidelines and limits - HubSpot docs](
https://developers.hubspot.com/docs/developer-tooling/platform/usage-guidelines
https://developers.hubspot.com/docs/developer-tooling/platform/usage-guidelines
). Example of such a error Client error:
POST https://api.hubapi.com/crm/v3/objects/contact/search
resulted in a
429 Too Many Requests
response: {"status":"error","message":"You have reached your secondly limit.","errorType":"RATE_LIMIT","correlationId":"019dffc4-4 (truncated...). Think carefully about the implementation and potential issue and bottlenecks.
Show more
10:42
Retry
Edit
Copy
Claude responded: Current HubSpot limits (Apr 2026)
Claude responded: Current HubSpot limits (Apr 2026)
Synthesized HubSpot rate limit architecture with Redis storage and sliding window algorithms
Synthesized HubSpot rate limit architecture with Redis storage and sliding window algorithms
Current HubSpot limits (Apr 2026)
Current HubSpot limits (Apr 2026)
For privately distributed apps (which is what Jiminny presumably uses with HubSpot), the limits are layered: a per-app burst window of 100/10s on Free/Starter, 190/10s on Pro/Enterprise, or 250/10s with the API Limit Increase add-on
, plus a per-account daily cap of 250k / 625k / 1M depending on tier — shared across all private apps in the account
. The burst window is per app; the daily quota is per portal.
hubspot
hubspot
hubspot
hubspot
The Search API is special: five requests per second per account, capped at 200 records per page, with a hard 10,000-result ceiling per query
. That's the limit the 429 in your example is hitting (
secondly limit
on
/crm/v3/objects/contact/search
). It's a separate bucket from the 190/10s, and critically, search responses do not include the
X-HubSpot-RateLimit-*
headers
— you can't read remaining capacity off the response, you have to track it yourself.
hubspot
hubspot
hubspot
hubspot
Non-search endpoints return
X-HubSpot-RateLimit-Remaining
,
-Max
, and
-Interval-Milliseconds
. The daily headers are not returned for OAuth-authenticated calls
, so for those you check the account-info endpoint or maintain your own counter. There's also a soft rule: errors should stay under 5% of total daily requests
— that's enforced for marketplace listing, but it's also a sane operational target.
hubspot
hubspot
hubspot
hubspot
So you have
four buckets
to track at minimum: app-burst (10s sliding), search-secondly (1s sliding), account-daily (24h fixed, midnight in HubSpot's TZ), and per-app daily share (your own budgeting on top of the account cap).
Where to store it
Where to store it
Redis. It's the only realistic option once you have multiple queue workers — DB-backed counters serialize too much, and in-process state can't coordinate across workers. Laravel already speaks Redis natively, and you get atomic
INCR
/
EXPIRE
plus Lua scripting for true CAS semantics.
Key layout I'd use:
Copy to clipboard
hubspot:rl:burst:{portalId}:{appId} ZSET (sliding 10s)
hubspot:rl:search:{portalId} ZSET (sliding 1s)
hubspot:rl:daily:{portalId} STRING + TTL to midnight TZ
hubspot:rl:meta:{portalId} HASH (last seen headers)
The two short-window buckets are sliding-window-log (Redis ZSET, score =
microtime
, member = unique request id). Lua script removes entries older than the window, counts remaining slots, and only adds the new one if there's room — all atomic. Fixed windows are simpler but allow 2× the limit at the boundary, which on a 5/s window is brutal.
The daily bucket is a plain
INCR
with TTL set to seconds-until-midnight in
HubSpot's account timezone
, not yours — Sofia is UTC+2/+3 but your portal might be set to US Eastern. Get this once and cache it.
How to read it
How to read it
Two-phase: optimistic pre-check, authoritative post-update.
Before a call, run the Lua acquire script. If it returns "denied," sleep until a slot frees up (the script can return ms-until-next-slot) or push the job back to the queue with a delay. Don't busy-loop.
After the call, parse
X-HubSpot-RateLimit-Remaining
/
-Max
/
-Interval-Milliseconds
and store them in
hubspot:rl:meta:{portalId}
. This is your reality check — if your local counter says 50 remaining but HubSpot's header says 5, you trust HubSpot and clamp your counter. This handles clock drift, missed accounting (e.g., crashed worker that took a token but never made the request), and other apps in the same account consuming the daily budget invisibly.
For search specifically, since headers don't come back, the local counter
is
the source of truth — meaning if you ever crash mid-flight, you've under-counted. Always release tokens on connection-level failure but
not
on 429 (you really did make that request).
How to work with multiple jobs
How to work with multiple jobs
The queue layer needs to enforce concurrency separately from the rate limiter. Both work together:
Concurrency cap
via
Queue::throttle()
or a Redis semaphore — limits how many sync workers run in parallel against HubSpot. Without this, you can have 50 workers all blocked waiting for tokens, which is wasteful and creates retry storms.
Per-tenant fairness
— if you sync many Jiminny customers into different HubSpot portals, each portal has its own bucket but you still want one slow portal not to starve others. Either separate queues per portal or a fair-share scheduler.
Priority lanes
— webhook-driven updates (user-visible latency) should outrank background batch syncs. Two queues:
hubspot-priority
and
hubspot-bulk
, with priority workers taking 70% of the burst budget and bulk taking 30% (enforce via separate sub-buckets if you really want hard separation, otherwise just pull from priority first).
Backoff on 429
— respect the
Retry-After
header. If absent, exponential with jitter (e.g.,
min(2^attempt * 250ms, 30s) ± 20%
). The jitter is non-negotiable; without it, simultaneous 429s retry in lockstep and you get thundering-herd 429s on retry.
How to work with paginated requests
How to work with paginated requests
The trap is treating "fetch all" as one logical operation. Each page is its own API call and competes for tokens with everything else.
Two practical rules:
Don't hold the worker idle while paginating.
If page N takes 500ms and page N+1 needs to wait 800ms for a token, you've burned 800ms of worker time doing nothing. Instead, fetch page N, dispatch the
processing
of page N as a separate job, and queue a "fetch page N+1" job with a delay equal to the wait time. Each page becomes its own atomic unit.
Always batch where HubSpot offers it.
POST /crm/v3/objects/{type}/batch/{read|update|create}
accepts up to 100 IDs per call. For your "patching IDs" flow this is the difference between 600 calls and 6.
Walkthrough: 600 opportunities
Walkthrough: 600 opportunities
Naive flow (one PATCH per deal): 600 calls. At 190/10s that's ~32s of API time, well under daily. You'd hit burst easily without throttling. Plus likely 1-3 search calls upfront and N association calls.
Sane flow:
Identify deltas
— if you can avoid Search at all, do. Use
lastmodifieddate
filter on a single search if you must, paginate at limit=200. For 600 deals that's 3 search calls @ 5/s = ~600ms naturally throttled.
Batch read
current state —
POST /crm/v3/objects/deals/batch/read
with 100 IDs per call → 6 calls. Burst weight 6.
Compute diff
in your code (no API).
Batch update
—
POST /crm/v3/objects/deals/batch/update
with 100 per call → 6 calls.
Associations
—
POST /crm/v4/associations/{from}/{to}/batch/create
if needed → another few batch calls.
Total: ~15-20 API calls for 600 deals. Burst budget consumed: 20/190 over ~5s. Daily impact: trivial.
Recognition: pre-check denies if
<weight>
slots aren't free; on 429 the response surfaces
policyName
(DAILY/SECONDLY) — log it, push the job back with
Retry-After
delay, increment a metric so you can alarm on sustained 429 rate.
Pitfalls & bottlenecks worth pre-empting
Pitfalls & bottlenecks worth pre-empting
Daily quota is shared across the whole portal
, including any n8n flows, other private apps, marketing automation calling APIs, etc. Budget for ~70-80% of the documented limit, not 100%. Add an internal per-app daily cap so a runaway sync can't starve other apps.
Search is uniquely fragile
: separate 5/s bucket, no headers to read, 10k-result cap per query. If you ever hit 10k+ deals matching a filter, partition by
hs_object_id
ranges or by
lastmodifieddate
windows.
Retry storms after HubSpot incidents
— always jitter, always cap total retries (e.g., 5 attempts, then dead-letter).
Webhook → sync → webhook loops
— when your update fires a HubSpot webhook that triggers another sync. Tag your own writes (e.g., a custom property
jy_last_sync_id
) and ignore webhooks where it just changed.
Token refresh
— OAuth refresh itself counts against burst. Cache the access token in Redis with TTL =
expires_in - 60s
, single-flight the refresh (only one worker refreshes; others wait on a lock).
Search latency for fresh writes
— newly created/updated objects don't appear in search instantly. Don't write-then-search; use returned IDs directly.
Clock skew
— Redis is authoritative. Don't use
time()
from each worker for window scoring; use
redis.call('TIME')
inside the Lua script.
Dead workers with held tokens
— sliding-window-log handles this naturally because tokens expire by score; token-bucket implementations need explicit release-on-crash logic.
The 5% error rule
counts every 429 toward your error budget, even successfully retried ones. If your pre-check is working well, 429s should be near zero — if they're not, your pre-check is wrong, not just slow.
Phantom contention with Laravel
RateLimited
middleware
: it's per-job-class by default, not per-portal. If your
SyncDealJob
and
UpdateActivityJob
are different classes both calling HubSpot, they don't share a Laravel-level limiter — you need a single
HubspotRateLimiter
service that everything routes through.
If you want, I can sketch the Lua script for the sliding-window acquire and the Laravel service wrapper around it.
Copy
Give positive feedback
Give negative feedback
Retry
You said: What will happen if there are two different types of rate limits?
You said: What will happen if there are two different types of rate limits?
What will happen if there are two different types of rate limits?
Search requests that have 5 requests per second
The other rate limit that has, let's say, 100 requests per 10 seconds How do these work together? Is there some conflict? Can I reach the limit with one request and block either as well, or are these separated? Can I still continue making search requests once I hit the normal requests limits?
13:40
Retry
Edit
Copy
Claude responded: They're independent buckets — with one shared bucket on top.
Claude responded: They're independent buckets — with one shared bucket on top.
Analyzed independent rate limit buckets and their practical interactions
Analyzed independent rate limit buckets and their practical interactions
They're independent buckets — with one shared bucket on top.
The three buckets and what each call hits
The three buckets and what each call hits
Copy to clipboard
┌──────────────────┐
Search request ──→ │ Search: 5/sec │ ──┐
└──────────────────┘ │
├──→ ┌─────────────────┐
┌──────────────────┐ │ │ Daily: 250k–1M │
Non-search call ──→ │ Burst: 190/10s │ ──┘ │ (per portal) │
└──────────────────┘ └─────────────────┘
A search call is only metered against the search bucket and the daily bucket. A non-search call (batch read/update, single PATCH, associations, etc.) is only metered against the burst bucket and the daily bucket. The two short-window buckets do not share counters.
What this means practically
What this means practically
Hitting search secondly limit (5/s):
Only further
/search
calls 429. Your batch reads, batch updates, single PATCHes, association calls — all keep working at full burst speed. This is actually useful: if your sync is bottlenecked on Search, you can pivot to using
lastmodifieddate
filters via batch endpoints, or use the IDs you already have to do batch reads, while Search cools off.
Hitting burst limit (190/10s):
Only non-search calls 429. You can still issue Search calls at 5/s. Useful for: continuing to identify deltas for queueing while in-flight updates drain, or refreshing a small set of records via Search even though your write pipeline is paused.
Hitting daily limit:
Everything stops. Search and non-search alike. Doesn't unblock until midnight in your portal's configured timezone — and remember this is shared across every private app in the portal, plus n8n flows, marketing tools, anything else hitting the API with that account.
So can one type of request block the other?
So can one type of request block the other?
Search → Burst:
No.
Saturating Search at 50 calls per 10s leaves your full 190/10s burst untouched.
Burst → Search:
No.
Saturating burst leaves Search's 5/s untouched.
Either → Daily:
Yes
, but only by contributing to the same daily counter. It's volume that kills you here, not the type.
In theory you can sustain ~50 search + ~190 other =
~240 calls per 10 seconds
indefinitely (until daily runs out), because the two buckets bill independently.
Implementation consequence
Implementation consequence
Your rate limiter needs to know which bucket a request hits before it acquires. Cleanest pattern:
Copy to clipboard
php
$limiter
->
acquire
(
'search'
,
$weight
=
1
)
;
// for search endpoints only
$limiter
->
acquire
(
'burst'
,
$weight
=
1
)
;
// for everything else
$limiter
->
acquire
(
'daily'
,
$weight
=
1
)
;
// every call, both kinds
In Redis: three separate keys, three separate Lua acquire scripts (or one script with a bucket parameter). A search call calls
acquire('search')
+
acquire('daily')
. A batch update calls
acquire('burst')
+
acquire('daily')
.
One subtle pitfall: when you backoff on a 429,
inspect
policyName
in the response body
to know which bucket actually fired. If you see
SECONDLY
from a search endpoint, you only need to delay search-bound jobs — burst-bound jobs in the queue can keep running. If you blanket-pause everything on any 429, you waste capacity on the bucket that's still healthy. Two queues (or two throttle keys) make this clean; one global pause is the lazy version.
The other subtlety: the burst response gives you
X-HubSpot-RateLimit-Remaining
to clamp local state against, but search doesn't return those headers. So your search counter is unverified — be slightly more conservative there (e.g., budget 4/s instead of 5) to absorb the unaccounted-for calls.
Copy
Give positive feedback
Give negative feedback
Retry
You said: Ok, so what will happen each time I make a request?
You said: Ok, so what will happen each time I make a request?
Ok, so what will happen each time I make a request? Let's say I have 100,000 requests to make that are instant. Do I need to increment each request based on the type? For example, if there is a search request, I need to increment both the search bucket and also the daily bucket. If it's a burst, then I can go to the daily and burst buckets. If I need to check if it can make a call, do I need to see both the daily and search, or burst, respectively? Isn't that too heavy for the infrastructure, adding additional load to each request?
13:44
Retry
Edit
Copy
Claude responded: Yes, your understanding is correct — every request must check and reserve from each bucket it applies to, atomically, before the call goes out.
Claude responded: Yes, your understanding is correct — every request must check and reserve from each bucket it applies to, atomically, before the call goes out.
Analyzed per-request overhead concerns and quantified Redis performance impact
Analyzed per-request overhead concerns and quantified Redis performance impact
Yes, your understanding is correct — every request must check and reserve from each bucket it applies to, atomically, before the call goes out. But the overhead is much smaller than it sounds, and importantly, it's nowhere near your bottleneck.
What "two buckets per request" actually costs
What "two buckets per request" actually costs
Each request makes
one round trip to Redis
— not two — because you fold both bucket checks into a single Lua script that runs atomically server-side:
Copy to clipboard
lua
-- KEYS[1] = burst bucket key (or search)...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
2656
|
NULL
|
0
|
2026-05-07T11:34:16.623509+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-07/1778 /Users/lukas/.screenpipe/data/data/2026-05-07/1778153656623_m2.jpg...
|
Claude
|
Claude
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Skip to content
Skip to content
Click to collapse
Skip to content
Skip to content
Click to collapse
⌘B
Drag to resize
Open sidebar
Chat
Cowork
Code
New chat ⌘N
New chat
⌘N
Projects
Artifacts
Customize
Pinned
Bulgarian citizenship application process for EU residents
More options for Bulgarian citizenship application process for EU residents
Dawarich location tracking project
More options for Dawarich location tracking project
Recents
View all
HubSpot rate limit implementation strategy
More options for HubSpot rate limit implementation strategy
Screenpipe retention policy code location
More options for Screenpipe retention policy code location
Viewing retention policy in screenpipe
More options for Viewing retention policy in screenpipe
Clean shot x video recording termination issue
More options for Clean shot x video recording termination issue
HubSpot rate limit handling with executeRequest
More options for HubSpot rate limit handling with executeRequest
Untitled
More options
💬 Screen pipe. Is there ability…
More options for 💬 Screen pipe. Is there ability…
SMB mount access inconsistency between Finder and iTerm
More options for SMB mount access inconsistency between Finder and iTerm
💬 What is the best switch I can…
More options for 💬 What is the best switch I can…
Permission denied on screenpipe volume
More options for Permission denied on screenpipe volume
Screenpipe sync database attachment error
More options for Screenpipe sync database attachment error
Last swimming outing with Dani
More options for Last swimming outing with Dani
Definition of incarcerated
More options for Definition of incarcerated
Chromecast remote volume buttons not working
More options for Chromecast remote volume buttons not working
Salesforce API errors with Organization and FieldDefinition queries
More options for Salesforce API errors with Organization and FieldDefinition queries
Daily activity summary from screenpipe data
More options for Daily activity summary from screenpipe data
MacBook unexpected restarts and kanji screen
More options for MacBook unexpected restarts and kanji screen
Security patch review and testing guidance
More options for Security patch review and testing guidance
Food calorie values reference
More options for Food calorie values reference
Tracking location history from last week
More options for Tracking location history from last week
Lukas Pro
Get apps and extensions
HubSpot rate limit implementation strategy, rename chat
HubSpot rate limit implementation strategy
More options for HubSpot rate limit implementation strategy
Close
Share chat
Claude finished the response
You said: So just a solution for rate limit implementation.
You said: So just a solution for rate limit implementation.
So just a solution for rate limit implementation. The situation currently is that there are some daily and secondary limits for HubSpot. I would like to make sure I never reach a 429 error rate limit. The requests can come from any flow. It can be:
updating activity (engagement, meeting, call, note)
searching for a company or contact
updating deal
patching IDs
Review what the limit is at the moment in the HubSpot documentation and then think of the solution:
where to store it
how to read it
how to work with multiple jobs
how to work with paginated requests Let's consider a situation when there are 600 opportunities to sync. What would be the flow? How would the rate limit be recognized? How would it be handled? What are the potential issues? [API usage guidelines and limits - HubSpot docs](
https://developers.hubspot.com/docs/developer-tooling/platform/usage-guidelines
https://developers.hubspot.com/docs/developer-tooling/platform/usage-guidelines
). Example of such a error Client error:
POST https://api.hubapi.com/crm/v3/objects/contact/search
resulted in a
429 Too Many Requests
response: {"status":"error","message":"You have reached your secondly limit.","errorType":"RATE_LIMIT","correlationId":"019dffc4-4 (truncated...). Think carefully about the implementation and potential issue and bottlenecks.
Show more
10:42
Retry
Edit
Copy
Claude responded: Current HubSpot limits (Apr 2026)
Claude responded: Current HubSpot limits (Apr 2026)
Synthesized HubSpot rate limit architecture with Redis storage and sliding window algorithms
Synthesized HubSpot rate limit architecture with Redis storage and sliding window algorithms
Current HubSpot limits (Apr 2026)
Current HubSpot limits (Apr 2026)
For privately distributed apps (which is what Jiminny presumably uses with HubSpot), the limits are layered: a per-app burst window of 100/10s on Free/Starter, 190/10s on Pro/Enterprise, or 250/10s with the API Limit Increase add-on
, plus a per-account daily cap of 250k / 625k / 1M depending on tier — shared across all private apps in the account
. The burst window is per app; the daily quota is per portal.
hubspot
hubspot
hubspot
hubspot
The Search API is special: five requests per second per account, capped at 200 records per page, with a hard 10,000-result ceiling per query
. That's the limit the 429 in your example is hitting (
secondly limit
on
/crm/v3/objects/contact/search
). It's a separate bucket from the 190/10s, and critically, search responses do not include the
X-HubSpot-RateLimit-*
headers
— you can't read remaining capacity off the response, you have to track it yourself.
hubspot
hubspot
hubspot
hubspot
Non-search endpoints return
X-HubSpot-RateLimit-Remaining
,
-Max
, and
-Interval-Milliseconds
. The daily headers are not returned for OAuth-authenticated calls
, so for those you check the account-info endpoint or maintain your own counter. There's also a soft rule: errors should stay under 5% of total daily requests
— that's enforced for marketplace listing, but it's also a sane operational target.
hubspot
hubspot
hubspot
hubspot
So you have
four buckets
to track at minimum: app-burst (10s sliding), search-secondly (1s sliding), account-daily (24h fixed, midnight in HubSpot's TZ), and per-app daily share (your own budgeting on top of the account cap).
Where to store it
Where to store it
Redis. It's the only realistic option once you have multiple queue workers — DB-backed counters serialize too much, and in-process state can't coordinate across workers. Laravel already speaks Redis natively, and you get atomic
INCR
/
EXPIRE
plus Lua scripting for true CAS semantics.
Key layout I'd use:
Copy to clipboard
hubspot:rl:burst:{portalId}:{appId} ZSET (sliding 10s)
hubspot:rl:search:{portalId} ZSET (sliding 1s)
hubspot:rl:daily:{portalId} STRING + TTL to midnight TZ
hubspot:rl:meta:{portalId} HASH (last seen headers)
The two short-window buckets are sliding-window-log (Redis ZSET, score =
microtime
, member = unique request id). Lua script removes entries older than the window, counts remaining slots, and only adds the new one if there's room — all atomic. Fixed windows are simpler but allow 2× the limit at the boundary, which on a 5/s window is brutal.
The daily bucket is a plain
INCR
with TTL set to seconds-until-midnight in
HubSpot's account timezone
, not yours — Sofia is UTC+2/+3 but your portal might be set to US Eastern. Get this once and cache it.
How to read it
How to read it
Two-phase: optimistic pre-check, authoritative post-update.
Before a call, run the Lua acquire script. If it returns "denied," sleep until a slot frees up (the script can return ms-until-next-slot) or push the job back to the queue with a delay. Don't busy-loop.
After the call, parse
X-HubSpot-RateLimit-Remaining
/
-Max
/
-Interval-Milliseconds
and store them in
hubspot:rl:meta:{portalId}
. This is your reality check — if your local counter says 50 remaining but HubSpot's header says 5, you trust HubSpot and clamp your counter. This handles clock drift, missed accounting (e.g., crashed worker that took a token but never made the request), and other apps in the same account consuming the daily budget invisibly.
For search specifically, since headers don't come back, the local counter
is
the source of truth — meaning if you ever crash mid-flight, you've under-counted. Always release tokens on connection-level failure but
not
on 429 (you really did make that request).
How to work with multiple jobs
How to work with multiple jobs
The queue layer needs to enforce concurrency separately from the rate limiter. Both work together:
Concurrency cap
via
Queue::throttle()
or a Redis semaphore — limits how many sync workers run in parallel against HubSpot. Without this, you can have 50 workers all blocked waiting for tokens, which is wasteful and creates retry storms.
Per-tenant fairness
— if you sync many Jiminny customers into different HubSpot portals, each portal has its own bucket but you still want one slow portal not to starve others. Either separate queues per portal or a fair-share scheduler.
Priority lanes
— webhook-driven updates (user-visible latency) should outrank background batch syncs. Two queues:
hubspot-priority
and
hubspot-bulk
, with priority workers taking 70% of the burst budget and bulk taking 30% (enforce via separate sub-buckets if you really want hard separation, otherwise just pull from priority first).
Backoff on 429
— respect the
Retry-After
header. If absent, exponential with jitter (e.g.,
min(2^attempt * 250ms, 30s) ± 20%
). The jitter is non-negotiable; without it, simultaneous 429s retry in lockstep and you get thundering-herd 429s on retry.
How to work with paginated requests
How to work with paginated requests
The trap is treating "fetch all" as one logical operation. Each page is its own API call and competes for tokens with everything else.
Two practical rules:
Don't hold the worker idle while paginating.
If page N takes 500ms and page N+1 needs to wait 800ms for a token, you've burned 800ms of worker time doing nothing. Instead, fetch page N, dispatch the
processing
of page N as a separate job, and queue a "fetch page N+1" job with a delay equal to the wait time. Each page becomes its own atomic unit.
Always batch where HubSpot offers it.
POST /crm/v3/objects/{type}/batch/{read|update|create}
accepts up to 100 IDs per call. For your "patching IDs" flow this is the difference between 600 calls and 6.
Walkthrough: 600 opportunities
Walkthrough: 600 opportunities
Naive flow (one PATCH per deal): 600 calls. At 190/10s that's ~32s of API time, well under daily. You'd hit burst easily without throttling. Plus likely 1-3 search calls upfront and N association calls.
Sane flow:
Identify deltas
— if you can avoid Search at all, do. Use
lastmodifieddate
filter on a single search if you must, paginate at limit=200. For 600 deals that's 3 search calls @ 5/s = ~600ms naturally throttled.
Batch read
current state —
POST /crm/v3/objects/deals/batch/read
with 100 IDs per call → 6 calls. Burst weight 6.
Compute diff
in your code (no API).
Batch update
—
POST /crm/v3/objects/deals/batch/update
with 100 per call → 6 calls.
Associations
—
POST /crm/v4/associations/{from}/{to}/batch/create
if needed → another few batch calls.
Total: ~15-20 API calls for 600 deals. Burst budget consumed: 20/190 over ~5s. Daily impact: trivial.
Recognition: pre-check denies if
<weight>
slots aren't free; on 429 the response surfaces
policyName
(DAILY/SECONDLY) — log it, push the job back with
Retry-After
delay, increment a metric so you can alarm on sustained 429 rate.
Pitfalls & bottlenecks worth pre-empting
Pitfalls & bottlenecks worth pre-empting
Daily quota is shared across the whole portal
, including any n8n flows, other private apps, marketing automation calling APIs, etc. Budget for ~70-80% of the documented limit, not 100%. Add an internal per-app daily cap so a runaway sync can't starve other apps.
Search is uniquely fragile
: separate 5/s bucket, no headers to read, 10k-result cap per query. If you ever hit 10k+ deals matching a filter, partition by
hs_object_id
ranges or by
lastmodifieddate
windows.
Retry storms after HubSpot incidents
— always jitter, always cap total retries (e.g., 5 attempts, then dead-letter).
Webhook → sync → webhook loops
— when your update fires a HubSpot webhook that triggers another sync. Tag your own writes (e.g., a custom property
jy_last_sync_id
) and ignore webhooks where it just changed.
Token refresh
— OAuth refresh itself counts against burst. Cache the access token in Redis with TTL =
expires_in - 60s
, single-flight the refresh (only one worker refreshes; others wait on a lock).
Search latency for fresh writes
— newly created/updated objects don't appear in search instantly. Don't write-then-search; use returned IDs directly.
Clock skew
— Redis is authoritative. Don't use
time()
from each worker for window scoring; use
redis.call('TIME')
inside the Lua script.
Dead workers with held tokens
— sliding-window-log handles this naturally because tokens expire by score; token-bucket implementations need explicit release-on-crash logic.
The 5% error rule
counts every 429 toward your error budget, even successfully retried ones. If your pre-check is working well, 429s should be near zero — if they're not, your pre-check is wrong, not just slow.
Phantom contention with Laravel
RateLimited
middleware
: it's per-job-class by default, not per-portal. If your
SyncDealJob
and
UpdateActivityJob
are different classes both calling HubSpot, they don't share a Laravel-level limiter — you need a single
HubspotRateLimiter
service that everything routes through.
If you want, I can sketch the Lua script for the sliding-window acquire and the Laravel service wrapper around it.
Copy
Give positive feedback
Give negative feedback
Retry
You said: What will happen if there are two different types of rate limits?
You said: What will happen if there are two different types of rate limits?
What will happen if there are two different types of rate limits?
Search requests that have 5 requests per second
The other rate limit that has, let's say, 100 requests per 10 seconds How do these work together? Is there some conflict? Can I reach the limit with one request and block either as well, or are these separated? Can I still continue making search requests once I hit the normal requests limits?
13:40
Retry
Edit
Copy
Claude responded: They're independent buckets — with one shared bucket on top.
Claude responded: They're independent buckets — with one shared bucket on top.
Analyzed independent rate limit buckets and their practical interactions
Analyzed independent rate limit buckets and their practical interactions
They're independent buckets — with one shared bucket on top.
The three buckets and what each call hits
The three buckets and what each call hits
Copy to clipboard
┌──────────────────┐
Search request ──→ │ Search: 5/sec │ ──┐
└──────────────────┘ │
├──→ ┌─────────────────┐
┌──────────────────┐ │ │ Daily: 250k–1M │
Non-search call ──→ │ Burst: 190/10s │ ──┘ │ (per portal) │
└──────────────────┘ └─────────────────┘
A search call is only metered against the search bucket and the daily bucket. A non-search call (batch read/update, single PATCH, associations, etc.) is only metered against the burst bucket and the daily bucket. The two short-window buckets do not share counters.
What this means practically
What this means practically
Hitting search secondly limit (5/s):
Only further
/search
calls 429. Your batch reads, batch updates, single PATCHes, association calls — all keep working at full burst speed. This is actually useful: if your sync is bottlenecked on Search, you can pivot to using
lastmodifieddate
filters via batch endpoints, or use the IDs you already have to do batch reads, while Search cools off.
Hitting burst limit (190/10s):
Only non-search calls 429. You can still issue Search calls at 5/s. Useful for: continuing to identify deltas for queueing while in-flight updates drain, or refreshing a small set of records via Search even though your write pipeline is paused.
Hitting daily limit:
Everything stops. Search and non-search alike. Doesn't unblock until midnight in your portal's configured timezone — and remember this is shared across every private app in the portal, plus n8n flows, marketing tools, anything else hitting the API with that account.
So can one type of request block the other?
So can one type of request block the other?
Search → Burst:
No.
Saturating Search at 50 calls per 10s leaves your full 190/10s burst untouched.
Burst → Search:
No.
Saturating burst leaves Search's 5/s untouched.
Either → Daily:
Yes
, but only by contributing to the same daily counter. It's volume that kills you here, not the type.
In theory you can sustain ~50 search + ~190 other =
~240 calls per 10 seconds
indefinitely (until daily runs out), because the two buckets bill independently.
Implementation consequence
Implementation consequence
Your rate limiter needs to know which bucket a request hits before it acquires. Cleanest pattern:
Copy to clipboard
php
$limiter
->
acquire
(
'search'
,
$weight
=
1
)
;
// for search endpoints only
$limiter
->
acquire
(
'burst'
,
$weight
=
1
)
;
// for everything else
$limiter
->
acquire
(
'daily'
,
$weight
=
1
)
;
// every call, both kinds
In Redis: three separate keys, three separate Lua acquire scripts (or one script with a bucket parameter). A search call calls
acquire('search')
+
acquire('daily')
. A batch update calls
acquire('burst')
+
acquire('daily')
.
One subtle pitfall: when you backoff on a 429,
inspect
policyName
in the response body
to know which bucket actually fired. If you see
SECONDLY
from a search endpoint, you only need to delay search-bound jobs — burst-bound jobs in the queue can keep running. If you blanket-pause everything on any 429, you waste capacity on the bucket that's still healthy. Two queues (or two throttle keys) make this clean; one global pause is the lazy version.
The other subtlety: the burst response gives you
X-HubSpot-RateLimit-Remaining
to clamp local state against, but search doesn't return those headers. So your search counter is unverified — be slightly more conservative there (e.g., budget 4/s instead of 5) to absorb the unaccounted-for calls.
Copy
Give positive feedback
Give negative feedback
Retry
You said: Ok, so what will happen each time I make a request?
You said: Ok, so what will happen each time I make a request?
Ok, so what will happen each time I make a request? Let's say I have 100,000 requests to make that are instant. Do I need to increment each request based on the type? For example, if there is a search request, I need to increment both the search bucket and also the daily bucket. If it's a burst, then I can go to the daily and burst buckets. If I need to check if it can make a call, do I need to see both the daily and search, or burst, respectively? Isn't that too heavy for the infrastructure, adding additional load to each request?
13:44
Retry
Edit
Copy
Claude responded: Yes, your understanding is correct — every request must check and reserve from each bucket it applies to, atomically, before the call goes out.
Claude responded: Yes, your understanding is correct — every request must check and reserve from each bucket it applies to, atomically, before the call goes out.
Analyzed per-request overhead concerns and quantified Redis performance impact
Analyzed per-request overhead concerns and quantified Redis performance impact
Yes, your understanding is correct — every request must check and reserve from each bucket it applies to, atomically, before the call goes out. But the overhead is much smaller than it sounds, and importantly, it's nowhere near your bottleneck.
What "two buckets per request" actually costs
What "two buckets per request" actually costs
Each request makes
one round trip to Redis
— not two — because you fold both bucket checks into a single Lua script that runs atomically server-side:
Copy to clipboard
lua
-- KEYS[1] = burst bucket key (or search)
-- KEYS[2] = daily bucket key
-- ARGV[1] = now (ms) ARGV[2] = window_ms
-- ARGV[3] = bucket_max ARGV[4] = daily_max
-- ARGV[5] = request_id ARGV[6] = daily_ttl...
|
[{"role":"AXLink","text":& [{"role":"AXLink","text":"Skip to content","depth":14,"bounds":{"left":0.029587766,"top":0.03830806,"width":0.0003324468,"height":0.0007980846},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Skip to content","depth":15,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Click to collapse","depth":16,"bounds":{"left":0.10239362,"top":0.06703911,"width":0.030585106,"height":0.011971269},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.10239362,"top":0.06703911,"width":0.0029920214,"height":0.011971269}},{"char_start":1,"char_count":16,"bounds":{"left":0.10538564,"top":0.06703911,"width":0.027925532,"height":0.011971269}}],"role_description":"text"},{"role":"AXStaticText","text":"⌘B","depth":16,"bounds":{"left":0.1349734,"top":0.06703911,"width":0.0063164895,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Drag to resize","depth":16,"bounds":{"left":0.10239362,"top":0.079010375,"width":0.025930852,"height":0.011971269},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.10239362,"top":0.079010375,"width":0.0029920214,"height":0.011971269}},{"char_start":1,"char_count":13,"bounds":{"left":0.10538564,"top":0.079010375,"width":0.022938829,"height":0.011971269}}],"role_description":"text"},{"role":"AXButton","text":"Open sidebar","depth":14,"bounds":{"left":0.029920213,"top":0.02793296,"width":0.00930851,"height":0.022346368},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Chat","depth":16,"bounds":{"left":0.004986702,"top":0.059856344,"width":0.025930852,"height":0.022346368},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Cowork","depth":16,"bounds":{"left":0.03158245,"top":0.059856344,"width":0.03125,"height":0.022346368},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code","depth":16,"bounds":{"left":0.0631649,"top":0.059856344,"width":0.026928192,"height":0.022346368},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"New chat ⌘N","depth":15,"bounds":{"left":0.0043218085,"top":0.08938547,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"New chat","depth":16,"bounds":{"left":0.014295213,"top":0.0933759,"width":0.018949468,"height":0.012769354},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.014295213,"top":0.0933759,"width":0.003656915,"height":0.013567438}},{"char_start":1,"char_count":7,"bounds":{"left":0.01761968,"top":0.0933759,"width":0.015957447,"height":0.013567438}}],"role_description":"text"},{"role":"AXStaticText","text":"⌘N","depth":17,"bounds":{"left":0.08178192,"top":0.0933759,"width":0.006981383,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Projects","depth":15,"bounds":{"left":0.0043218085,"top":0.110135674,"width":0.08643617,"height":0.019952115},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Artifacts","depth":15,"bounds":{"left":0.0043218085,"top":0.1300878,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Customize","depth":15,"bounds":{"left":0.0043218085,"top":0.15003991,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Pinned","depth":16,"bounds":{"left":0.0063164895,"top":0.18914606,"width":0.08377659,"height":0.013567438},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXButton","text":"Bulgarian citizenship application process for EU residents","depth":18,"bounds":{"left":0.0043218085,"top":0.20590582,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Bulgarian citizenship application process for EU residents","depth":19,"bounds":{"left":0.08344415,"top":0.20909816,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Dawarich location tracking project","depth":18,"bounds":{"left":0.0043218085,"top":0.22745411,"width":0.08643617,"height":0.019952115},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Dawarich location tracking project","depth":19,"bounds":{"left":0.08344415,"top":0.22984837,"width":0.005984043,"height":0.015163607},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Recents","depth":16,"bounds":{"left":0.0063164895,"top":0.25698325,"width":0.06349734,"height":0.012769354},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXButton","text":"View all","depth":16,"bounds":{"left":0.07114362,"top":0.25698325,"width":0.018949468,"height":0.012769354},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"HubSpot rate limit implementation strategy","depth":18,"bounds":{"left":0.0043218085,"top":0.27294493,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for HubSpot rate limit implementation strategy","depth":19,"bounds":{"left":0.08344415,"top":0.27613726,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Screenpipe retention policy code location","depth":18,"bounds":{"left":0.0043218085,"top":0.29449323,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Screenpipe retention policy code location","depth":19,"bounds":{"left":0.08344415,"top":0.29768556,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Viewing retention policy in screenpipe","depth":18,"bounds":{"left":0.0043218085,"top":0.31524342,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Viewing retention policy in screenpipe","depth":19,"bounds":{"left":0.08344415,"top":0.31843576,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Clean shot x video recording termination issue","depth":18,"bounds":{"left":0.0043218085,"top":0.3367917,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Clean shot x video recording termination issue","depth":19,"bounds":{"left":0.08344415,"top":0.33998403,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"HubSpot rate limit handling with executeRequest","depth":18,"bounds":{"left":0.0043218085,"top":0.3575419,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for HubSpot rate limit handling with executeRequest","depth":19,"bounds":{"left":0.08344415,"top":0.36073422,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Untitled","depth":18,"bounds":{"left":0.0043218085,"top":0.3790902,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options","depth":19,"bounds":{"left":0.08344415,"top":0.38228253,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"💬 Screen pipe. Is there ability…","depth":18,"bounds":{"left":0.0043218085,"top":0.39984038,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for 💬 Screen pipe. Is there ability…","depth":19,"bounds":{"left":0.08344415,"top":0.40303272,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"SMB mount access inconsistency between Finder and iTerm","depth":18,"bounds":{"left":0.0043218085,"top":0.42138866,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for SMB mount access inconsistency between Finder and iTerm","depth":19,"bounds":{"left":0.08344415,"top":0.4237829,"width":0.005984043,"height":0.015163607},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"💬 What is the best switch I can…","depth":18,"bounds":{"left":0.0043218085,"top":0.44213888,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for 💬 What is the best switch I can…","depth":19,"bounds":{"left":0.08344415,"top":0.44533122,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Permission denied on screenpipe volume","depth":18,"bounds":{"left":0.0043218085,"top":0.46288908,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Permission denied on screenpipe volume","depth":19,"bounds":{"left":0.08344415,"top":0.4660814,"width":0.005984043,"height":0.015163607},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Screenpipe sync database attachment error","depth":18,"bounds":{"left":0.0043218085,"top":0.48443735,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Screenpipe sync database attachment error","depth":19,"bounds":{"left":0.08344415,"top":0.48762968,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Last swimming outing with Dani","depth":18,"bounds":{"left":0.0043218085,"top":0.5051876,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Last swimming outing with Dani","depth":19,"bounds":{"left":0.08344415,"top":0.5083799,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Definition of incarcerated","depth":18,"bounds":{"left":0.0043218085,"top":0.52673584,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Definition of incarcerated","depth":19,"bounds":{"left":0.08344415,"top":0.52992815,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Chromecast remote volume buttons not working","depth":18,"bounds":{"left":0.0043218085,"top":0.547486,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Chromecast remote volume buttons not working","depth":19,"bounds":{"left":0.08344415,"top":0.5506784,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Salesforce API errors with Organization and FieldDefinition queries","depth":18,"bounds":{"left":0.0043218085,"top":0.56903434,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Salesforce API errors with Organization and FieldDefinition queries","depth":19,"bounds":{"left":0.08344415,"top":0.57222664,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Daily activity summary from screenpipe data","depth":18,"bounds":{"left":0.0043218085,"top":0.5897845,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Daily activity summary from screenpipe data","depth":19,"bounds":{"left":0.08344415,"top":0.59297687,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"MacBook unexpected restarts and kanji screen","depth":18,"bounds":{"left":0.0043218085,"top":0.6113328,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for MacBook unexpected restarts and kanji screen","depth":19,"bounds":{"left":0.08344415,"top":0.61452514,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Security patch review and testing guidance","depth":18,"bounds":{"left":0.0043218085,"top":0.632083,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Security patch review and testing guidance","depth":19,"bounds":{"left":0.08344415,"top":0.63527536,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Food calorie values reference","depth":18,"bounds":{"left":0.0043218085,"top":0.65363127,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Food calorie values reference","depth":19,"bounds":{"left":0.08344415,"top":0.65682364,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Tracking location history from last week","depth":18,"bounds":{"left":0.0043218085,"top":0.6743815,"width":0.08643617,"height":0.011173184},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Tracking location history from last week","depth":19,"bounds":{"left":0.08344415,"top":0.6775738,"width":0.005984043,"height":0.007980846},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"Lukas Pro","depth":15,"bounds":{"left":0.0043218085,"top":0.6943336,"width":0.037898935,"height":0.01915403},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Get apps and extensions","depth":15,"bounds":{"left":0.08277926,"top":0.6943336,"width":0.007978723,"height":0.01915403},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"HubSpot rate limit implementation strategy, rename chat","depth":20,"bounds":{"left":0.043218084,"top":0.02793296,"width":0.09773936,"height":0.022346368},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"HubSpot rate limit implementation strategy","depth":22,"bounds":{"left":0.04454787,"top":0.031923383,"width":0.09507979,"height":0.014365523},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.04454787,"top":0.031923383,"width":0.003656915,"height":0.014365523}},{"char_start":1,"char_count":41,"bounds":{"left":0.048204787,"top":0.031923383,"width":0.09142287,"height":0.014365523}}],"role_description":"text"},{"role":"AXPopUpButton","text":"More options for HubSpot rate limit implementation strategy","depth":20,"bounds":{"left":0.14128989,"top":0.02793296,"width":0.0066489363,"height":0.022346368},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close","depth":22,"bounds":{"left":0.22240691,"top":0.026336791,"width":0.010638298,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Share chat","depth":22,"bounds":{"left":0.234375,"top":0.026336791,"width":0.010638298,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Claude finished the response","depth":22,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"You said: So just a solution for rate limit implementation.","depth":21,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"You said: So just a solution for rate limit implementation.","depth":22,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"So just a solution for rate limit implementation. The situation currently is that there are some daily and secondary limits for HubSpot. I would like to make sure I never reach a 429 error rate limit. The requests can come from any flow. It can be:","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"updating activity (engagement, meeting, call, note)","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"searching for a company or contact","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"updating deal","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"patching IDs\nReview what the limit is at the moment in the HubSpot documentation and then think of the solution:","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"where to store it","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"how to read it","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"how to work with multiple jobs","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"how to work with paginated requests Let's consider a situation when there are 600 opportunities to sync. What would be the flow? How would the rate limit be recognized? How would it be handled? What are the potential issues? [API usage guidelines and limits - HubSpot docs](","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXLink","text":"https://developers.hubspot.com/docs/developer-tooling/platform/usage-guidelines","depth":26,"on_screen":false,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"https://developers.hubspot.com/docs/developer-tooling/platform/usage-guidelines","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"). Example of such a error Client error:","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"POST https://api.hubapi.com/crm/v3/objects/contact/search","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"resulted in a","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"429 Too Many Requests","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"response: {\"status\":\"error\",\"message\":\"You have reached your secondly limit.\",\"errorType\":\"RATE_LIMIT\",\"correlationId\":\"019dffc4-4 (truncated...). Think carefully about the implementation and potential issue and bottlenecks.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Show more","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:42","depth":23,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Retry","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Edit","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Copy","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXHeading","text":"Claude responded: Current HubSpot limits (Apr 2026)","depth":22,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"Claude responded: Current HubSpot limits (Apr 2026)","depth":23,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Synthesized HubSpot rate limit architecture with Redis storage and sliding window algorithms","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Synthesized HubSpot rate limit architecture with Redis storage and sliding window algorithms","depth":24,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"Current HubSpot limits (Apr 2026)","depth":25,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"Current HubSpot limits (Apr 2026)","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"For privately distributed apps (which is what Jiminny presumably uses with HubSpot), the limits are layered: a per-app burst window of 100/10s on Free/Starter, 190/10s on Pro/Enterprise, or 250/10s with the API Limit Increase add-on","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", plus a per-account daily cap of 250k / 625k / 1M depending on tier — shared across all private apps in the account","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":". The burst window is per app; the daily quota is per portal.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXLink","text":"hubspot","depth":27,"on_screen":false,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"hubspot","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXLink","text":"hubspot","depth":27,"on_screen":false,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"hubspot","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"The Search API is special: five requests per second per account, capped at 200 records per page, with a hard 10,000-result ceiling per query","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":". That's the limit the 429 in your example is hitting (","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"secondly limit","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"on","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/crm/v3/objects/contact/search","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"). It's a separate bucket from the 190/10s, and critically, search responses do not include the","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"X-HubSpot-RateLimit-*","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"headers","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— you can't read remaining capacity off the response, you have to track it yourself.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXLink","text":"hubspot","depth":27,"on_screen":false,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"hubspot","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXLink","text":"hubspot","depth":27,"on_screen":false,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"hubspot","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Non-search endpoints return","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"X-HubSpot-RateLimit-Remaining","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":",","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"-Max","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", and","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"-Interval-Milliseconds","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":". The daily headers are not returned for OAuth-authenticated calls","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", so for those you check the account-info endpoint or maintain your own counter. There's also a soft rule: errors should stay under 5% of total daily requests","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— that's enforced for marketplace listing, but it's also a sane operational target.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXLink","text":"hubspot","depth":27,"on_screen":false,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"hubspot","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXLink","text":"hubspot","depth":27,"on_screen":false,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"hubspot","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"So you have","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"four buckets","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"to track at minimum: app-burst (10s sliding), search-secondly (1s sliding), account-daily (24h fixed, midnight in HubSpot's TZ), and per-app daily share (your own budgeting on top of the account cap).","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"Where to store it","depth":25,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"Where to store it","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Redis. It's the only realistic option once you have multiple queue workers — DB-backed counters serialize too much, and in-process state can't coordinate across workers. Laravel already speaks Redis natively, and you get atomic","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"INCR","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"EXPIRE","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"plus Lua scripting for true CAS semantics.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Key layout I'd use:","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Copy to clipboard","depth":28,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"hubspot:rl:burst:{portalId}:{appId} ZSET (sliding 10s)","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"hubspot:rl:search:{portalId} ZSET (sliding 1s)","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"hubspot:rl:daily:{portalId} STRING + TTL to midnight TZ","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"hubspot:rl:meta:{portalId} HASH (last seen headers)","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"The two short-window buckets are sliding-window-log (Redis ZSET, score =","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"microtime","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", member = unique request id). Lua script removes entries older than the window, counts remaining slots, and only adds the new one if there's room — all atomic. Fixed windows are simpler but allow 2× the limit at the boundary, which on a 5/s window is brutal.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"The daily bucket is a plain","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"INCR","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"with TTL set to seconds-until-midnight in","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"HubSpot's account timezone","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", not yours — Sofia is UTC+2/+3 but your portal might be set to US Eastern. Get this once and cache it.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"How to read it","depth":25,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"How to read it","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Two-phase: optimistic pre-check, authoritative post-update.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Before a call, run the Lua acquire script. If it returns \"denied,\" sleep until a slot frees up (the script can return ms-until-next-slot) or push the job back to the queue with a delay. Don't busy-loop.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"After the call, parse","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"X-HubSpot-RateLimit-Remaining","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"-Max","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"-Interval-Milliseconds","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"and store them in","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"hubspot:rl:meta:{portalId}","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":". This is your reality check — if your local counter says 50 remaining but HubSpot's header says 5, you trust HubSpot and clamp your counter. This handles clock drift, missed accounting (e.g., crashed worker that took a token but never made the request), and other apps in the same account consuming the daily budget invisibly.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"For search specifically, since headers don't come back, the local counter","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"is","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"the source of truth — meaning if you ever crash mid-flight, you've under-counted. Always release tokens on connection-level failure but","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"not","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"on 429 (you really did make that request).","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"How to work with multiple jobs","depth":25,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"How to work with multiple jobs","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"The queue layer needs to enforce concurrency separately from the rate limiter. Both work together:","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Concurrency cap","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"via","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Queue::throttle()","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"or a Redis semaphore — limits how many sync workers run in parallel against HubSpot. Without this, you can have 50 workers all blocked waiting for tokens, which is wasteful and creates retry storms.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Per-tenant fairness","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— if you sync many Jiminny customers into different HubSpot portals, each portal has its own bucket but you still want one slow portal not to starve others. Either separate queues per portal or a fair-share scheduler.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Priority lanes","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— webhook-driven updates (user-visible latency) should outrank background batch syncs. Two queues:","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"hubspot-priority","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"and","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"hubspot-bulk","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", with priority workers taking 70% of the burst budget and bulk taking 30% (enforce via separate sub-buckets if you really want hard separation, otherwise just pull from priority first).","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Backoff on 429","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— respect the","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Retry-After","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"header. If absent, exponential with jitter (e.g.,","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"min(2^attempt * 250ms, 30s) ± 20%","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"). The jitter is non-negotiable; without it, simultaneous 429s retry in lockstep and you get thundering-herd 429s on retry.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"How to work with paginated requests","depth":25,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"How to work with paginated requests","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"The trap is treating \"fetch all\" as one logical operation. Each page is its own API call and competes for tokens with everything else.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Two practical rules:","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Don't hold the worker idle while paginating.","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"If page N takes 500ms and page N+1 needs to wait 800ms for a token, you've burned 800ms of worker time doing nothing. Instead, fetch page N, dispatch the","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"processing","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"of page N as a separate job, and queue a \"fetch page N+1\" job with a delay equal to the wait time. Each page becomes its own atomic unit.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Always batch where HubSpot offers it.","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"POST /crm/v3/objects/{type}/batch/{read|update|create}","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"accepts up to 100 IDs per call. For your \"patching IDs\" flow this is the difference between 600 calls and 6.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"Walkthrough: 600 opportunities","depth":25,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"Walkthrough: 600 opportunities","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Naive flow (one PATCH per deal): 600 calls. At 190/10s that's ~32s of API time, well under daily. You'd hit burst easily without throttling. Plus likely 1-3 search calls upfront and N association calls.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Sane flow:","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Identify deltas","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— if you can avoid Search at all, do. Use","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"lastmodifieddate","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"filter on a single search if you must, paginate at limit=200. For 600 deals that's 3 search calls @ 5/s = ~600ms naturally throttled.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Batch read","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"current state —","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"POST /crm/v3/objects/deals/batch/read","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"with 100 IDs per call → 6 calls. Burst weight 6.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Compute diff","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"in your code (no API).","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Batch update","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"—","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"POST /crm/v3/objects/deals/batch/update","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"with 100 per call → 6 calls.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Associations","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"—","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"POST /crm/v4/associations/{from}/{to}/batch/create","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"if needed → another few batch calls.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Total: ~15-20 API calls for 600 deals. Burst budget consumed: 20/190 over ~5s. Daily impact: trivial.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Recognition: pre-check denies if","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"<weight>","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"slots aren't free; on 429 the response surfaces","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"policyName","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"(DAILY/SECONDLY) — log it, push the job back with","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Retry-After","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"delay, increment a metric so you can alarm on sustained 429 rate.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"Pitfalls & bottlenecks worth pre-empting","depth":25,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"Pitfalls & bottlenecks worth pre-empting","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Daily quota is shared across the whole portal","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", including any n8n flows, other private apps, marketing automation calling APIs, etc. Budget for ~70-80% of the documented limit, not 100%. Add an internal per-app daily cap so a runaway sync can't starve other apps.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Search is uniquely fragile","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":": separate 5/s bucket, no headers to read, 10k-result cap per query. If you ever hit 10k+ deals matching a filter, partition by","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"hs_object_id","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"ranges or by","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"lastmodifieddate","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"windows.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Retry storms after HubSpot incidents","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— always jitter, always cap total retries (e.g., 5 attempts, then dead-letter).","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Webhook → sync → webhook loops","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— when your update fires a HubSpot webhook that triggers another sync. Tag your own writes (e.g., a custom property","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"jy_last_sync_id","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":") and ignore webhooks where it just changed.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Token refresh","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— OAuth refresh itself counts against burst. Cache the access token in Redis with TTL =","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"expires_in - 60s","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", single-flight the refresh (only one worker refreshes; others wait on a lock).","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Search latency for fresh writes","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— newly created/updated objects don't appear in search instantly. Don't write-then-search; use returned IDs directly.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Clock skew","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— Redis is authoritative. Don't use","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"time()","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"from each worker for window scoring; use","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"redis.call('TIME')","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"inside the Lua script.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Dead workers with held tokens","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— sliding-window-log handles this naturally because tokens expire by score; token-bucket implementations need explicit release-on-crash logic.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"The 5% error rule","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"counts every 429 toward your error budget, even successfully retried ones. If your pre-check is working well, 429s should be near zero — if they're not, your pre-check is wrong, not just slow.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Phantom contention with Laravel","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"RateLimited","depth":29,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"middleware","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":": it's per-job-class by default, not per-portal. If your","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"SyncDealJob","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"and","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"UpdateActivityJob","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"are different classes both calling HubSpot, they don't share a Laravel-level limiter — you need a single","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"HubspotRateLimiter","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"service that everything routes through.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"If you want, I can sketch the Lua script for the sliding-window acquire and the Laravel service wrapper around it.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Copy","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Give positive feedback","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Give negative feedback","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Retry","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXHeading","text":"You said: What will happen if there are two different types of rate limits?","depth":21,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"You said: What will happen if there are two different types of rate limits?","depth":22,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"What will happen if there are two different types of rate limits?","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Search requests that have 5 requests per second","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"The other rate limit that has, let's say, 100 requests per 10 seconds How do these work together? Is there some conflict? Can I reach the limit with one request and block either as well, or are these separated? Can I still continue making search requests once I hit the normal requests limits?","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"13:40","depth":23,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Retry","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Edit","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Copy","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXHeading","text":"Claude responded: They're independent buckets — with one shared bucket on top.","depth":22,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"Claude responded: They're independent buckets — with one shared bucket on top.","depth":23,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Analyzed independent rate limit buckets and their practical interactions","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Analyzed independent rate limit buckets and their practical interactions","depth":24,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"They're independent buckets — with one shared bucket on top.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"The three buckets and what each call hits","depth":25,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"The three buckets and what each call hits","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Copy to clipboard","depth":28,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"┌──────────────────┐","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Search request ──→ │ Search: 5/sec │ ──┐","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"└──────────────────┘ │","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"├──→ ┌─────────────────┐","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"┌──────────────────┐ │ │ Daily: 250k–1M │","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Non-search call ──→ │ Burst: 190/10s │ ──┘ │ (per portal) │","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"└──────────────────┘ └─────────────────┘","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"A search call is only metered against the search bucket and the daily bucket. A non-search call (batch read/update, single PATCH, associations, etc.) is only metered against the burst bucket and the daily bucket. The two short-window buckets do not share counters.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"What this means practically","depth":25,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"What this means practically","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Hitting search secondly limit (5/s):","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Only further","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/search","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"calls 429. Your batch reads, batch updates, single PATCHes, association calls — all keep working at full burst speed. This is actually useful: if your sync is bottlenecked on Search, you can pivot to using","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"lastmodifieddate","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"filters via batch endpoints, or use the IDs you already have to do batch reads, while Search cools off.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Hitting burst limit (190/10s):","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Only non-search calls 429. You can still issue Search calls at 5/s. Useful for: continuing to identify deltas for queueing while in-flight updates drain, or refreshing a small set of records via Search even though your write pipeline is paused.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Hitting daily limit:","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Everything stops. Search and non-search alike. Doesn't unblock until midnight in your portal's configured timezone — and remember this is shared across every private app in the portal, plus n8n flows, marketing tools, anything else hitting the API with that account.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"So can one type of request block the other?","depth":25,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"So can one type of request block the other?","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Search → Burst:","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"No.","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Saturating Search at 50 calls per 10s leaves your full 190/10s burst untouched.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Burst → Search:","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"No.","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Saturating burst leaves Search's 5/s untouched.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Either → Daily:","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Yes","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", but only by contributing to the same daily counter. It's volume that kills you here, not the type.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"In theory you can sustain ~50 search + ~190 other =","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"~240 calls per 10 seconds","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"indefinitely (until daily runs out), because the two buckets bill independently.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"Implementation consequence","depth":25,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"Implementation consequence","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Your rate limiter needs to know which bucket a request hits before it acquires. Cleanest pattern:","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Copy to clipboard","depth":28,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"php","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"$limiter","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"->","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"acquire","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"(","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"'search'","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":",","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"$weight","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"=","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":")","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":";","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"// for search endpoints only","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"$limiter","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"->","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"acquire","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"(","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"'burst'","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":",","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"$weight","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"=","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":")","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":";","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"// for everything else","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"$limiter","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"->","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"acquire","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"(","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"'daily'","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":",","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"$weight","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"=","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":")","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":";","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"// every call, both kinds","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"In Redis: three separate keys, three separate Lua acquire scripts (or one script with a bucket parameter). A search call calls","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"acquire('search')","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"acquire('daily')","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":". A batch update calls","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"acquire('burst')","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"acquire('daily')","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":".","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"One subtle pitfall: when you backoff on a 429,","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"inspect","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"policyName","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"in the response body","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"to know which bucket actually fired. If you see","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"SECONDLY","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"from a search endpoint, you only need to delay search-bound jobs — burst-bound jobs in the queue can keep running. If you blanket-pause everything on any 429, you waste capacity on the bucket that's still healthy. Two queues (or two throttle keys) make this clean; one global pause is the lazy version.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"The other subtlety: the burst response gives you","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"X-HubSpot-RateLimit-Remaining","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"to clamp local state against, but search doesn't return those headers. So your search counter is unverified — be slightly more conservative there (e.g., budget 4/s instead of 5) to absorb the unaccounted-for calls.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Copy","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Give positive feedback","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Give negative feedback","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Retry","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXHeading","text":"You said: Ok, so what will happen each time I make a request?","depth":21,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"You said: Ok, so what will happen each time I make a request?","depth":22,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Ok, so what will happen each time I make a request? Let's say I have 100,000 requests to make that are instant. Do I need to increment each request based on the type? For example, if there is a search request, I need to increment both the search bucket and also the daily bucket. If it's a burst, then I can go to the daily and burst buckets. If I need to check if it can make a call, do I need to see both the daily and search, or burst, respectively? Isn't that too heavy for the infrastructure, adding additional load to each request?","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"13:44","depth":23,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Retry","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Edit","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Copy","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXHeading","text":"Claude responded: Yes, your understanding is correct — every request must check and reserve from each bucket it applies to, atomically, before the call goes out.","depth":22,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"Claude responded: Yes, your understanding is correct — every request must check and reserve from each bucket it applies to, atomically, before the call goes out.","depth":23,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Analyzed per-request overhead concerns and quantified Redis performance impact","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Analyzed per-request overhead concerns and quantified Redis performance impact","depth":24,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Yes, your understanding is correct — every request must check and reserve from each bucket it applies to, atomically, before the call goes out. But the overhead is much smaller than it sounds, and importantly, it's nowhere near your bottleneck.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"What \"two buckets per request\" actually costs","depth":25,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"What \"two buckets per request\" actually costs","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Each request makes","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"one round trip to Redis","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— not two — because you fold both bucket checks into a single Lua script that runs atomically server-side:","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Copy to clipboard","depth":28,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"lua","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"-- KEYS[1] = burst bucket key (or search)","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"-- KEYS[2] = daily bucket key","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"-- ARGV[1] = now (ms) ARGV[2] = window_ms","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"-- ARGV[3] = bucket_max ARGV[4] = daily_max","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"-- ARGV[5] = request_id ARGV[6] = daily_ttl","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"}]...
|
-1581891141589719667
|
-6913325059417482148
|
visual_change
|
accessibility
|
NULL
|
Skip to content
Skip to content
Click to collapse
Skip to content
Skip to content
Click to collapse
⌘B
Drag to resize
Open sidebar
Chat
Cowork
Code
New chat ⌘N
New chat
⌘N
Projects
Artifacts
Customize
Pinned
Bulgarian citizenship application process for EU residents
More options for Bulgarian citizenship application process for EU residents
Dawarich location tracking project
More options for Dawarich location tracking project
Recents
View all
HubSpot rate limit implementation strategy
More options for HubSpot rate limit implementation strategy
Screenpipe retention policy code location
More options for Screenpipe retention policy code location
Viewing retention policy in screenpipe
More options for Viewing retention policy in screenpipe
Clean shot x video recording termination issue
More options for Clean shot x video recording termination issue
HubSpot rate limit handling with executeRequest
More options for HubSpot rate limit handling with executeRequest
Untitled
More options
💬 Screen pipe. Is there ability…
More options for 💬 Screen pipe. Is there ability…
SMB mount access inconsistency between Finder and iTerm
More options for SMB mount access inconsistency between Finder and iTerm
💬 What is the best switch I can…
More options for 💬 What is the best switch I can…
Permission denied on screenpipe volume
More options for Permission denied on screenpipe volume
Screenpipe sync database attachment error
More options for Screenpipe sync database attachment error
Last swimming outing with Dani
More options for Last swimming outing with Dani
Definition of incarcerated
More options for Definition of incarcerated
Chromecast remote volume buttons not working
More options for Chromecast remote volume buttons not working
Salesforce API errors with Organization and FieldDefinition queries
More options for Salesforce API errors with Organization and FieldDefinition queries
Daily activity summary from screenpipe data
More options for Daily activity summary from screenpipe data
MacBook unexpected restarts and kanji screen
More options for MacBook unexpected restarts and kanji screen
Security patch review and testing guidance
More options for Security patch review and testing guidance
Food calorie values reference
More options for Food calorie values reference
Tracking location history from last week
More options for Tracking location history from last week
Lukas Pro
Get apps and extensions
HubSpot rate limit implementation strategy, rename chat
HubSpot rate limit implementation strategy
More options for HubSpot rate limit implementation strategy
Close
Share chat
Claude finished the response
You said: So just a solution for rate limit implementation.
You said: So just a solution for rate limit implementation.
So just a solution for rate limit implementation. The situation currently is that there are some daily and secondary limits for HubSpot. I would like to make sure I never reach a 429 error rate limit. The requests can come from any flow. It can be:
updating activity (engagement, meeting, call, note)
searching for a company or contact
updating deal
patching IDs
Review what the limit is at the moment in the HubSpot documentation and then think of the solution:
where to store it
how to read it
how to work with multiple jobs
how to work with paginated requests Let's consider a situation when there are 600 opportunities to sync. What would be the flow? How would the rate limit be recognized? How would it be handled? What are the potential issues? [API usage guidelines and limits - HubSpot docs](
https://developers.hubspot.com/docs/developer-tooling/platform/usage-guidelines
https://developers.hubspot.com/docs/developer-tooling/platform/usage-guidelines
). Example of such a error Client error:
POST https://api.hubapi.com/crm/v3/objects/contact/search
resulted in a
429 Too Many Requests
response: {"status":"error","message":"You have reached your secondly limit.","errorType":"RATE_LIMIT","correlationId":"019dffc4-4 (truncated...). Think carefully about the implementation and potential issue and bottlenecks.
Show more
10:42
Retry
Edit
Copy
Claude responded: Current HubSpot limits (Apr 2026)
Claude responded: Current HubSpot limits (Apr 2026)
Synthesized HubSpot rate limit architecture with Redis storage and sliding window algorithms
Synthesized HubSpot rate limit architecture with Redis storage and sliding window algorithms
Current HubSpot limits (Apr 2026)
Current HubSpot limits (Apr 2026)
For privately distributed apps (which is what Jiminny presumably uses with HubSpot), the limits are layered: a per-app burst window of 100/10s on Free/Starter, 190/10s on Pro/Enterprise, or 250/10s with the API Limit Increase add-on
, plus a per-account daily cap of 250k / 625k / 1M depending on tier — shared across all private apps in the account
. The burst window is per app; the daily quota is per portal.
hubspot
hubspot
hubspot
hubspot
The Search API is special: five requests per second per account, capped at 200 records per page, with a hard 10,000-result ceiling per query
. That's the limit the 429 in your example is hitting (
secondly limit
on
/crm/v3/objects/contact/search
). It's a separate bucket from the 190/10s, and critically, search responses do not include the
X-HubSpot-RateLimit-*
headers
— you can't read remaining capacity off the response, you have to track it yourself.
hubspot
hubspot
hubspot
hubspot
Non-search endpoints return
X-HubSpot-RateLimit-Remaining
,
-Max
, and
-Interval-Milliseconds
. The daily headers are not returned for OAuth-authenticated calls
, so for those you check the account-info endpoint or maintain your own counter. There's also a soft rule: errors should stay under 5% of total daily requests
— that's enforced for marketplace listing, but it's also a sane operational target.
hubspot
hubspot
hubspot
hubspot
So you have
four buckets
to track at minimum: app-burst (10s sliding), search-secondly (1s sliding), account-daily (24h fixed, midnight in HubSpot's TZ), and per-app daily share (your own budgeting on top of the account cap).
Where to store it
Where to store it
Redis. It's the only realistic option once you have multiple queue workers — DB-backed counters serialize too much, and in-process state can't coordinate across workers. Laravel already speaks Redis natively, and you get atomic
INCR
/
EXPIRE
plus Lua scripting for true CAS semantics.
Key layout I'd use:
Copy to clipboard
hubspot:rl:burst:{portalId}:{appId} ZSET (sliding 10s)
hubspot:rl:search:{portalId} ZSET (sliding 1s)
hubspot:rl:daily:{portalId} STRING + TTL to midnight TZ
hubspot:rl:meta:{portalId} HASH (last seen headers)
The two short-window buckets are sliding-window-log (Redis ZSET, score =
microtime
, member = unique request id). Lua script removes entries older than the window, counts remaining slots, and only adds the new one if there's room — all atomic. Fixed windows are simpler but allow 2× the limit at the boundary, which on a 5/s window is brutal.
The daily bucket is a plain
INCR
with TTL set to seconds-until-midnight in
HubSpot's account timezone
, not yours — Sofia is UTC+2/+3 but your portal might be set to US Eastern. Get this once and cache it.
How to read it
How to read it
Two-phase: optimistic pre-check, authoritative post-update.
Before a call, run the Lua acquire script. If it returns "denied," sleep until a slot frees up (the script can return ms-until-next-slot) or push the job back to the queue with a delay. Don't busy-loop.
After the call, parse
X-HubSpot-RateLimit-Remaining
/
-Max
/
-Interval-Milliseconds
and store them in
hubspot:rl:meta:{portalId}
. This is your reality check — if your local counter says 50 remaining but HubSpot's header says 5, you trust HubSpot and clamp your counter. This handles clock drift, missed accounting (e.g., crashed worker that took a token but never made the request), and other apps in the same account consuming the daily budget invisibly.
For search specifically, since headers don't come back, the local counter
is
the source of truth — meaning if you ever crash mid-flight, you've under-counted. Always release tokens on connection-level failure but
not
on 429 (you really did make that request).
How to work with multiple jobs
How to work with multiple jobs
The queue layer needs to enforce concurrency separately from the rate limiter. Both work together:
Concurrency cap
via
Queue::throttle()
or a Redis semaphore — limits how many sync workers run in parallel against HubSpot. Without this, you can have 50 workers all blocked waiting for tokens, which is wasteful and creates retry storms.
Per-tenant fairness
— if you sync many Jiminny customers into different HubSpot portals, each portal has its own bucket but you still want one slow portal not to starve others. Either separate queues per portal or a fair-share scheduler.
Priority lanes
— webhook-driven updates (user-visible latency) should outrank background batch syncs. Two queues:
hubspot-priority
and
hubspot-bulk
, with priority workers taking 70% of the burst budget and bulk taking 30% (enforce via separate sub-buckets if you really want hard separation, otherwise just pull from priority first).
Backoff on 429
— respect the
Retry-After
header. If absent, exponential with jitter (e.g.,
min(2^attempt * 250ms, 30s) ± 20%
). The jitter is non-negotiable; without it, simultaneous 429s retry in lockstep and you get thundering-herd 429s on retry.
How to work with paginated requests
How to work with paginated requests
The trap is treating "fetch all" as one logical operation. Each page is its own API call and competes for tokens with everything else.
Two practical rules:
Don't hold the worker idle while paginating.
If page N takes 500ms and page N+1 needs to wait 800ms for a token, you've burned 800ms of worker time doing nothing. Instead, fetch page N, dispatch the
processing
of page N as a separate job, and queue a "fetch page N+1" job with a delay equal to the wait time. Each page becomes its own atomic unit.
Always batch where HubSpot offers it.
POST /crm/v3/objects/{type}/batch/{read|update|create}
accepts up to 100 IDs per call. For your "patching IDs" flow this is the difference between 600 calls and 6.
Walkthrough: 600 opportunities
Walkthrough: 600 opportunities
Naive flow (one PATCH per deal): 600 calls. At 190/10s that's ~32s of API time, well under daily. You'd hit burst easily without throttling. Plus likely 1-3 search calls upfront and N association calls.
Sane flow:
Identify deltas
— if you can avoid Search at all, do. Use
lastmodifieddate
filter on a single search if you must, paginate at limit=200. For 600 deals that's 3 search calls @ 5/s = ~600ms naturally throttled.
Batch read
current state —
POST /crm/v3/objects/deals/batch/read
with 100 IDs per call → 6 calls. Burst weight 6.
Compute diff
in your code (no API).
Batch update
—
POST /crm/v3/objects/deals/batch/update
with 100 per call → 6 calls.
Associations
—
POST /crm/v4/associations/{from}/{to}/batch/create
if needed → another few batch calls.
Total: ~15-20 API calls for 600 deals. Burst budget consumed: 20/190 over ~5s. Daily impact: trivial.
Recognition: pre-check denies if
<weight>
slots aren't free; on 429 the response surfaces
policyName
(DAILY/SECONDLY) — log it, push the job back with
Retry-After
delay, increment a metric so you can alarm on sustained 429 rate.
Pitfalls & bottlenecks worth pre-empting
Pitfalls & bottlenecks worth pre-empting
Daily quota is shared across the whole portal
, including any n8n flows, other private apps, marketing automation calling APIs, etc. Budget for ~70-80% of the documented limit, not 100%. Add an internal per-app daily cap so a runaway sync can't starve other apps.
Search is uniquely fragile
: separate 5/s bucket, no headers to read, 10k-result cap per query. If you ever hit 10k+ deals matching a filter, partition by
hs_object_id
ranges or by
lastmodifieddate
windows.
Retry storms after HubSpot incidents
— always jitter, always cap total retries (e.g., 5 attempts, then dead-letter).
Webhook → sync → webhook loops
— when your update fires a HubSpot webhook that triggers another sync. Tag your own writes (e.g., a custom property
jy_last_sync_id
) and ignore webhooks where it just changed.
Token refresh
— OAuth refresh itself counts against burst. Cache the access token in Redis with TTL =
expires_in - 60s
, single-flight the refresh (only one worker refreshes; others wait on a lock).
Search latency for fresh writes
— newly created/updated objects don't appear in search instantly. Don't write-then-search; use returned IDs directly.
Clock skew
— Redis is authoritative. Don't use
time()
from each worker for window scoring; use
redis.call('TIME')
inside the Lua script.
Dead workers with held tokens
— sliding-window-log handles this naturally because tokens expire by score; token-bucket implementations need explicit release-on-crash logic.
The 5% error rule
counts every 429 toward your error budget, even successfully retried ones. If your pre-check is working well, 429s should be near zero — if they're not, your pre-check is wrong, not just slow.
Phantom contention with Laravel
RateLimited
middleware
: it's per-job-class by default, not per-portal. If your
SyncDealJob
and
UpdateActivityJob
are different classes both calling HubSpot, they don't share a Laravel-level limiter — you need a single
HubspotRateLimiter
service that everything routes through.
If you want, I can sketch the Lua script for the sliding-window acquire and the Laravel service wrapper around it.
Copy
Give positive feedback
Give negative feedback
Retry
You said: What will happen if there are two different types of rate limits?
You said: What will happen if there are two different types of rate limits?
What will happen if there are two different types of rate limits?
Search requests that have 5 requests per second
The other rate limit that has, let's say, 100 requests per 10 seconds How do these work together? Is there some conflict? Can I reach the limit with one request and block either as well, or are these separated? Can I still continue making search requests once I hit the normal requests limits?
13:40
Retry
Edit
Copy
Claude responded: They're independent buckets — with one shared bucket on top.
Claude responded: They're independent buckets — with one shared bucket on top.
Analyzed independent rate limit buckets and their practical interactions
Analyzed independent rate limit buckets and their practical interactions
They're independent buckets — with one shared bucket on top.
The three buckets and what each call hits
The three buckets and what each call hits
Copy to clipboard
┌──────────────────┐
Search request ──→ │ Search: 5/sec │ ──┐
└──────────────────┘ │
├──→ ┌─────────────────┐
┌──────────────────┐ │ │ Daily: 250k–1M │
Non-search call ──→ │ Burst: 190/10s │ ──┘ │ (per portal) │
└──────────────────┘ └─────────────────┘
A search call is only metered against the search bucket and the daily bucket. A non-search call (batch read/update, single PATCH, associations, etc.) is only metered against the burst bucket and the daily bucket. The two short-window buckets do not share counters.
What this means practically
What this means practically
Hitting search secondly limit (5/s):
Only further
/search
calls 429. Your batch reads, batch updates, single PATCHes, association calls — all keep working at full burst speed. This is actually useful: if your sync is bottlenecked on Search, you can pivot to using
lastmodifieddate
filters via batch endpoints, or use the IDs you already have to do batch reads, while Search cools off.
Hitting burst limit (190/10s):
Only non-search calls 429. You can still issue Search calls at 5/s. Useful for: continuing to identify deltas for queueing while in-flight updates drain, or refreshing a small set of records via Search even though your write pipeline is paused.
Hitting daily limit:
Everything stops. Search and non-search alike. Doesn't unblock until midnight in your portal's configured timezone — and remember this is shared across every private app in the portal, plus n8n flows, marketing tools, anything else hitting the API with that account.
So can one type of request block the other?
So can one type of request block the other?
Search → Burst:
No.
Saturating Search at 50 calls per 10s leaves your full 190/10s burst untouched.
Burst → Search:
No.
Saturating burst leaves Search's 5/s untouched.
Either → Daily:
Yes
, but only by contributing to the same daily counter. It's volume that kills you here, not the type.
In theory you can sustain ~50 search + ~190 other =
~240 calls per 10 seconds
indefinitely (until daily runs out), because the two buckets bill independently.
Implementation consequence
Implementation consequence
Your rate limiter needs to know which bucket a request hits before it acquires. Cleanest pattern:
Copy to clipboard
php
$limiter
->
acquire
(
'search'
,
$weight
=
1
)
;
// for search endpoints only
$limiter
->
acquire
(
'burst'
,
$weight
=
1
)
;
// for everything else
$limiter
->
acquire
(
'daily'
,
$weight
=
1
)
;
// every call, both kinds
In Redis: three separate keys, three separate Lua acquire scripts (or one script with a bucket parameter). A search call calls
acquire('search')
+
acquire('daily')
. A batch update calls
acquire('burst')
+
acquire('daily')
.
One subtle pitfall: when you backoff on a 429,
inspect
policyName
in the response body
to know which bucket actually fired. If you see
SECONDLY
from a search endpoint, you only need to delay search-bound jobs — burst-bound jobs in the queue can keep running. If you blanket-pause everything on any 429, you waste capacity on the bucket that's still healthy. Two queues (or two throttle keys) make this clean; one global pause is the lazy version.
The other subtlety: the burst response gives you
X-HubSpot-RateLimit-Remaining
to clamp local state against, but search doesn't return those headers. So your search counter is unverified — be slightly more conservative there (e.g., budget 4/s instead of 5) to absorb the unaccounted-for calls.
Copy
Give positive feedback
Give negative feedback
Retry
You said: Ok, so what will happen each time I make a request?
You said: Ok, so what will happen each time I make a request?
Ok, so what will happen each time I make a request? Let's say I have 100,000 requests to make that are instant. Do I need to increment each request based on the type? For example, if there is a search request, I need to increment both the search bucket and also the daily bucket. If it's a burst, then I can go to the daily and burst buckets. If I need to check if it can make a call, do I need to see both the daily and search, or burst, respectively? Isn't that too heavy for the infrastructure, adding additional load to each request?
13:44
Retry
Edit
Copy
Claude responded: Yes, your understanding is correct — every request must check and reserve from each bucket it applies to, atomically, before the call goes out.
Claude responded: Yes, your understanding is correct — every request must check and reserve from each bucket it applies to, atomically, before the call goes out.
Analyzed per-request overhead concerns and quantified Redis performance impact
Analyzed per-request overhead concerns and quantified Redis performance impact
Yes, your understanding is correct — every request must check and reserve from each bucket it applies to, atomically, before the call goes out. But the overhead is much smaller than it sounds, and importantly, it's nowhere near your bottleneck.
What "two buckets per request" actually costs
What "two buckets per request" actually costs
Each request makes
one round trip to Redis
— not two — because you fold both bucket checks into a single Lua script that runs atomically server-side:
Copy to clipboard
lua
-- KEYS[1] = burst bucket key (or search)
-- KEYS[2] = daily bucket key
-- ARGV[1] = now (ms) ARGV[2] = window_ms
-- ARGV[3] = bucket_max ARGV[4] = daily_max
-- ARGV[5] = request_id ARGV[6] = daily_ttl...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
2766
|
NULL
|
0
|
2026-05-07T11:39:20.423462+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-07/1778 /Users/lukas/.screenpipe/data/data/2026-05-07/1778153960423_m2.jpg...
|
PhpStorm
|
faVsco.js – HubspotWebhookBatchSyncStrategy.php
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
master, menu
Start Listen Project: faVsco.js, menu
master, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
Editor for custom.log
Sync Changes
Hide This Notification
Code changed:
Hide
4
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Services\Crm\Hubspot\OpportunitySyncStrategy;
use Illuminate\Support\Facades\Log;
use Jiminny\Services\Crm\Hubspot\Client;
use Jiminny\Services\Crm\Hubspot\OpportunitySyncStrategy\Concerns\ValidatesParameters;
use Jiminny\Services\Crm\Hubspot\WebhookSyncBatchProcessor;
/**
* Webhook-driven batch sync strategy for HubSpot deals (opportunities).
*
* This strategy processes opportunities collected from webhook property change and
* association change events. Deal CRM IDs are accumulated in Redis sets and processed
* in batches via ImportOpportunityBatch jobs.
*
* Unlike traditional sync strategies that fetch deals from HubSpot API based on
* modification dates or other filters, this strategy only processes deals that have
* been explicitly flagged for sync via webhook events.
*
* Webhook Event Flow:
* 1. Webhook event received (deal.propertyChange or deal.associationChange)
* 2. Change Handler validates and collects deal ID
* 3. Deal ID added to Redis set: batch_sync_deal:{configId}:all
* 4. This strategy drains Redis set during SyncObjects cycle
* 5. ImportOpportunityBatch jobs dispatched to process deals in batches of 100
*
* Benefits:
* - Near real-time sync (processes only changed deals)
* - Reduced API calls (no polling for all deals)
* - Automatic deduplication via Redis sets
* - Resilient failure handling (failed IDs requeued to Redis)
*
* Usage:
* - Automatically invoked during SyncObjects cycle for teams configured with this strategy
* - Can be manually triggered via ProcessHubspotObjectsSyncBatches command
*/
class HubspotWebhookBatchSyncStrategy extends HubspotSyncStrategyBase
{
use ValidatesParameters;
public function __construct(Client $client, private WebhookSyncBatchProcessor $batchProcessor)
{
parent::__construct($client);
}
/**
* Process webhook-collected deal batches.
*
* Drains Redis sets containing deal CRM IDs and dispatches ImportOpportunityBatch jobs.
* Returns empty generator as deals are processed via jobs, not yielded directly.
*
* @param array $params Must contain 'config' key with Configuration instance
* @param int $total Output parameter - set to number of deal IDs dispatched
* @param string|null $lastRecordId Not used in webhook strategy
*
* @return \Generator Empty generator (deals processed via jobs)
*/
public function fetchOpportunities(
array $params,
int &$total = 0,
?string &$lastRecordId = null
): \Generator {
$this->validateParameters($params);
$configId = $params['config']->getId();
$count = $this->batchProcessor->processBatchesForObjectType(
WebhookSyncBatchProcessor::OBJECT_TYPE_DEAL,
$configId
);
$total = $count;
Log::info('[HubspotWebhookBatchSyncStrategy] Deal batches processed', [
'config_id' => $configId,
'total_dispatched' => $total,
]);
yield from [];
}
public function validateParameters(array $params): bool
{
$this->validateBaseParameters($params);
return true;
}
protected function buildQuery(array $params, array $fields): array
{
return [];
}
}
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide
app ~/jiminny/app, folder
.circleci, folder
.cursor, folder
.github
.sonarlint, folder
.vscode, folder
.windsurf, folder
app, sources root
Actions, folder
Component, folder
Acl, folder
ActionItems, folder
Activity, folder
ActivityAnalytics, folder
ActivitySearch, folder
AiActivityType, folder
AiAutomation, folder
AiCallScoring, folder
AskAnything, folder
Dtos, folder
Events, folder
AskAnythingPromptService.php
HistoryService.php
AskJiminnyAi, folder
AWS, folder
BillingManagement, folder
Cache, folder
CoachingFeedback, folder
Country, folder
CustomerApi, folder
Database, folder
Datadog, folder
DateTime, folder
DealInsights, folder
DealRisks, folder
ElasticSearch
Eloquent
Encoding
Encryption
ES
Faker
FeatureFlags
FFMpeg
FileSystem
Gecko
Gong
GuzzleHttp
KeyPoints
Kiosk
LanguageDetection
LiveFeed
Locks
Math
MediaPipeline
MeetingBot, folder
MobileSettings, folder
Model, folder
Notification, folder
Nudge, folder
ParagraphBreaker, folder
ParticipantSpeech, folder
PartitionedCookie, folder
PlaybackPage, folder
Playlist, folder
Prophet, folder
ProphetAi, folder
ProsperWorks, folder
Queue, folder
Job, folder
RateLimitAware.php, abstract class
RateLimitAwareWrapper.php, class
BotsQueueConstants.php
Constants.php
ProcessingQueueConstants.php
Router, folder
Saml2, folder
SCIM, folder
Seeder, folder
Sentry, folder
Serializer, folder
Settings, folder
Sidekick, folder
Slack, folder
TeamInsights, folder
TimeMemoryMapper, folder
Transcription, folder
TranscriptionSummary, folder
Twilio, folder
Uploader, folder
UrlGenerator, folder
Utility, folder
Exceptions, folder
Service, folder
BaseRateLimiter.php, class
EfficientJsonParser.php, class
ProviderRateLimiter.php, class
RateLimiterInstance.php, class
Uuid, folder
Waveform, folder
Webhooks, folder
Workflow, folder
Configuration, folder
Console, folder...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"bounds":{"left":0.025930852,"top":0.019952115,"width":0.03856383,"height":0.025538707},"on_screen":true,"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"master, menu","depth":5,"bounds":{"left":0.064494684,"top":0.019952115,"width":0.034242023,"height":0.025538707},"on_screen":true,"help_text":"Git Branch: master","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Start Listening for PHP Debug Connections","depth":5,"bounds":{"left":0.8081782,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"AskJiminnyReportActivityServiceTest","depth":6,"bounds":{"left":0.8234708,"top":0.019952115,"width":0.09208777,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'AskJiminnyReportActivityServiceTest'","depth":6,"bounds":{"left":0.9155585,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'AskJiminnyReportActivityServiceTest'","depth":6,"bounds":{"left":0.9268617,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More Actions","depth":6,"bounds":{"left":0.9381649,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JetBrains AI","depth":5,"bounds":{"left":0.96609044,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Search Everywhere","depth":5,"bounds":{"left":0.9773936,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"IDE and Project Settings","depth":5,"bounds":{"left":0.9886968,"top":0.019952115,"width":0.011303186,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.042220745,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"Editor for custom.log","depth":4,"bounds":{"left":0.5475399,"top":0.0726257,"width":0.44082448,"height":0.9066241},"on_screen":true,"role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.042220745,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"4","depth":4,"bounds":{"left":0.5043218,"top":0.17478053,"width":0.007978723,"height":0.015163607},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"bounds":{"left":0.51396275,"top":0.17318435,"width":0.00731383,"height":0.018355945},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Highlighted Error","depth":4,"bounds":{"left":0.5212766,"top":0.17318435,"width":0.006981383,"height":0.018355945},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Services\\Crm\\Hubspot\\OpportunitySyncStrategy;\n\nuse Illuminate\\Support\\Facades\\Log;\nuse Jiminny\\Services\\Crm\\Hubspot\\Client;\nuse Jiminny\\Services\\Crm\\Hubspot\\OpportunitySyncStrategy\\Concerns\\ValidatesParameters;\nuse Jiminny\\Services\\Crm\\Hubspot\\WebhookSyncBatchProcessor;\n\n/**\n * Webhook-driven batch sync strategy for HubSpot deals (opportunities).\n *\n * This strategy processes opportunities collected from webhook property change and\n * association change events. Deal CRM IDs are accumulated in Redis sets and processed\n * in batches via ImportOpportunityBatch jobs.\n *\n * Unlike traditional sync strategies that fetch deals from HubSpot API based on\n * modification dates or other filters, this strategy only processes deals that have\n * been explicitly flagged for sync via webhook events.\n *\n * Webhook Event Flow:\n * 1. Webhook event received (deal.propertyChange or deal.associationChange)\n * 2. Change Handler validates and collects deal ID\n * 3. Deal ID added to Redis set: batch_sync_deal:{configId}:all\n * 4. This strategy drains Redis set during SyncObjects cycle\n * 5. ImportOpportunityBatch jobs dispatched to process deals in batches of 100\n *\n * Benefits:\n * - Near real-time sync (processes only changed deals)\n * - Reduced API calls (no polling for all deals)\n * - Automatic deduplication via Redis sets\n * - Resilient failure handling (failed IDs requeued to Redis)\n *\n * Usage:\n * - Automatically invoked during SyncObjects cycle for teams configured with this strategy\n * - Can be manually triggered via ProcessHubspotObjectsSyncBatches command\n */\nclass HubspotWebhookBatchSyncStrategy extends HubspotSyncStrategyBase\n{\n use ValidatesParameters;\n\n public function __construct(Client $client, private WebhookSyncBatchProcessor $batchProcessor)\n {\n parent::__construct($client);\n }\n\n /**\n * Process webhook-collected deal batches.\n *\n * Drains Redis sets containing deal CRM IDs and dispatches ImportOpportunityBatch jobs.\n * Returns empty generator as deals are processed via jobs, not yielded directly.\n *\n * @param array $params Must contain 'config' key with Configuration instance\n * @param int $total Output parameter - set to number of deal IDs dispatched\n * @param string|null $lastRecordId Not used in webhook strategy\n *\n * @return \\Generator Empty generator (deals processed via jobs)\n */\n public function fetchOpportunities(\n array $params,\n int &$total = 0,\n ?string &$lastRecordId = null\n ): \\Generator {\n $this->validateParameters($params);\n\n $configId = $params['config']->getId();\n $count = $this->batchProcessor->processBatchesForObjectType(\n WebhookSyncBatchProcessor::OBJECT_TYPE_DEAL,\n $configId\n );\n\n $total = $count;\n\n Log::info('[HubspotWebhookBatchSyncStrategy] Deal batches processed', [\n 'config_id' => $configId,\n 'total_dispatched' => $total,\n ]);\n\n yield from [];\n }\n\n public function validateParameters(array $params): bool\n {\n $this->validateBaseParameters($params);\n\n return true;\n }\n\n protected function buildQuery(array $params, array $fields): array\n {\n return [];\n }\n}","depth":4,"on_screen":true,"value":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Services\\Crm\\Hubspot\\OpportunitySyncStrategy;\n\nuse Illuminate\\Support\\Facades\\Log;\nuse Jiminny\\Services\\Crm\\Hubspot\\Client;\nuse Jiminny\\Services\\Crm\\Hubspot\\OpportunitySyncStrategy\\Concerns\\ValidatesParameters;\nuse Jiminny\\Services\\Crm\\Hubspot\\WebhookSyncBatchProcessor;\n\n/**\n * Webhook-driven batch sync strategy for HubSpot deals (opportunities).\n *\n * This strategy processes opportunities collected from webhook property change and\n * association change events. Deal CRM IDs are accumulated in Redis sets and processed\n * in batches via ImportOpportunityBatch jobs.\n *\n * Unlike traditional sync strategies that fetch deals from HubSpot API based on\n * modification dates or other filters, this strategy only processes deals that have\n * been explicitly flagged for sync via webhook events.\n *\n * Webhook Event Flow:\n * 1. Webhook event received (deal.propertyChange or deal.associationChange)\n * 2. Change Handler validates and collects deal ID\n * 3. Deal ID added to Redis set: batch_sync_deal:{configId}:all\n * 4. This strategy drains Redis set during SyncObjects cycle\n * 5. ImportOpportunityBatch jobs dispatched to process deals in batches of 100\n *\n * Benefits:\n * - Near real-time sync (processes only changed deals)\n * - Reduced API calls (no polling for all deals)\n * - Automatic deduplication via Redis sets\n * - Resilient failure handling (failed IDs requeued to Redis)\n *\n * Usage:\n * - Automatically invoked during SyncObjects cycle for teams configured with this strategy\n * - Can be manually triggered via ProcessHubspotObjectsSyncBatches command\n */\nclass HubspotWebhookBatchSyncStrategy extends HubspotSyncStrategyBase\n{\n use ValidatesParameters;\n\n public function __construct(Client $client, private WebhookSyncBatchProcessor $batchProcessor)\n {\n parent::__construct($client);\n }\n\n /**\n * Process webhook-collected deal batches.\n *\n * Drains Redis sets containing deal CRM IDs and dispatches ImportOpportunityBatch jobs.\n * Returns empty generator as deals are processed via jobs, not yielded directly.\n *\n * @param array $params Must contain 'config' key with Configuration instance\n * @param int $total Output parameter - set to number of deal IDs dispatched\n * @param string|null $lastRecordId Not used in webhook strategy\n *\n * @return \\Generator Empty generator (deals processed via jobs)\n */\n public function fetchOpportunities(\n array $params,\n int &$total = 0,\n ?string &$lastRecordId = null\n ): \\Generator {\n $this->validateParameters($params);\n\n $configId = $params['config']->getId();\n $count = $this->batchProcessor->processBatchesForObjectType(\n WebhookSyncBatchProcessor::OBJECT_TYPE_DEAL,\n $configId\n );\n\n $total = $count;\n\n Log::info('[HubspotWebhookBatchSyncStrategy] Deal batches processed', [\n 'config_id' => $configId,\n 'total_dispatched' => $total,\n ]);\n\n yield from [];\n }\n\n public function validateParameters(array $params): bool\n {\n $this->validateBaseParameters($params);\n\n return true;\n }\n\n protected function buildQuery(array $params, array $fields): array\n {\n return [];\n }\n}","role_description":"text entry area","is_enabled":true,"is_focused":true,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Project","depth":3,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Project","depth":3,"bounds":{"left":0.011968086,"top":0.047885075,"width":0.024268618,"height":0.024740623},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"New File or Directory…","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Expand Selected","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Collapse All","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Options","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"app ~/jiminny/app, folder","depth":6,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":".circleci, folder","depth":7,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":".cursor, folder","depth":7,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":".github","depth":7,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":".sonarlint, folder","depth":7,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":".vscode, folder","depth":7,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":".windsurf, folder","depth":7,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"app, sources root","depth":7,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Actions, folder","depth":8,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Component, folder","depth":8,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Acl, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"ActionItems, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Activity, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"ActivityAnalytics, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"ActivitySearch, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"AiActivityType, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"AiAutomation, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"AiCallScoring, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"AskAnything, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Dtos, folder","depth":10,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Events, folder","depth":10,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"AskAnythingPromptService.php","depth":10,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"HistoryService.php","depth":10,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"AskJiminnyAi, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"AWS, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"BillingManagement, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Cache, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"CoachingFeedback, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Country, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"CustomerApi, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Database, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Datadog, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"DateTime, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"DealInsights, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"DealRisks, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"ElasticSearch","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Eloquent","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Encoding","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Encryption","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"ES","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Faker","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"FeatureFlags","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"FFMpeg","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"FileSystem","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Gecko","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Gong","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"GuzzleHttp","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"KeyPoints","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Kiosk","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"LanguageDetection","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"LiveFeed","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Locks","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Math","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"MediaPipeline","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"MeetingBot, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"MobileSettings, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Model, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Notification, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Nudge, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"ParagraphBreaker, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"ParticipantSpeech, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"PartitionedCookie, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"PlaybackPage, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Playlist, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Prophet, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"ProphetAi, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"ProsperWorks, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Queue, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Job, folder","depth":10,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"RateLimitAware.php, abstract class","depth":11,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"RateLimitAwareWrapper.php, class","depth":11,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"BotsQueueConstants.php","depth":10,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Constants.php","depth":10,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"ProcessingQueueConstants.php","depth":10,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Router, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Saml2, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"SCIM, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Seeder, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Sentry, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Serializer, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Settings, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Sidekick, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Slack, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"TeamInsights, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"TimeMemoryMapper, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Transcription, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"TranscriptionSummary, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Twilio, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Uploader, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"UrlGenerator, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Utility, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Exceptions, folder","depth":10,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Service, folder","depth":10,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"BaseRateLimiter.php, class","depth":11,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"EfficientJsonParser.php, class","depth":11,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"ProviderRateLimiter.php, class","depth":11,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"RateLimiterInstance.php, class","depth":11,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Uuid, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Waveform, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Webhooks, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Workflow, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Configuration, folder","depth":8,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Console, folder","depth":8,"on_screen":false,"role_description":"text"}]...
|
-6981432070831370319
|
-7159563288362488500
|
click
|
accessibility
|
NULL
|
Project: faVsco.js, menu
master, menu
Start Listen Project: faVsco.js, menu
master, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
Editor for custom.log
Sync Changes
Hide This Notification
Code changed:
Hide
4
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Services\Crm\Hubspot\OpportunitySyncStrategy;
use Illuminate\Support\Facades\Log;
use Jiminny\Services\Crm\Hubspot\Client;
use Jiminny\Services\Crm\Hubspot\OpportunitySyncStrategy\Concerns\ValidatesParameters;
use Jiminny\Services\Crm\Hubspot\WebhookSyncBatchProcessor;
/**
* Webhook-driven batch sync strategy for HubSpot deals (opportunities).
*
* This strategy processes opportunities collected from webhook property change and
* association change events. Deal CRM IDs are accumulated in Redis sets and processed
* in batches via ImportOpportunityBatch jobs.
*
* Unlike traditional sync strategies that fetch deals from HubSpot API based on
* modification dates or other filters, this strategy only processes deals that have
* been explicitly flagged for sync via webhook events.
*
* Webhook Event Flow:
* 1. Webhook event received (deal.propertyChange or deal.associationChange)
* 2. Change Handler validates and collects deal ID
* 3. Deal ID added to Redis set: batch_sync_deal:{configId}:all
* 4. This strategy drains Redis set during SyncObjects cycle
* 5. ImportOpportunityBatch jobs dispatched to process deals in batches of 100
*
* Benefits:
* - Near real-time sync (processes only changed deals)
* - Reduced API calls (no polling for all deals)
* - Automatic deduplication via Redis sets
* - Resilient failure handling (failed IDs requeued to Redis)
*
* Usage:
* - Automatically invoked during SyncObjects cycle for teams configured with this strategy
* - Can be manually triggered via ProcessHubspotObjectsSyncBatches command
*/
class HubspotWebhookBatchSyncStrategy extends HubspotSyncStrategyBase
{
use ValidatesParameters;
public function __construct(Client $client, private WebhookSyncBatchProcessor $batchProcessor)
{
parent::__construct($client);
}
/**
* Process webhook-collected deal batches.
*
* Drains Redis sets containing deal CRM IDs and dispatches ImportOpportunityBatch jobs.
* Returns empty generator as deals are processed via jobs, not yielded directly.
*
* @param array $params Must contain 'config' key with Configuration instance
* @param int $total Output parameter - set to number of deal IDs dispatched
* @param string|null $lastRecordId Not used in webhook strategy
*
* @return \Generator Empty generator (deals processed via jobs)
*/
public function fetchOpportunities(
array $params,
int &$total = 0,
?string &$lastRecordId = null
): \Generator {
$this->validateParameters($params);
$configId = $params['config']->getId();
$count = $this->batchProcessor->processBatchesForObjectType(
WebhookSyncBatchProcessor::OBJECT_TYPE_DEAL,
$configId
);
$total = $count;
Log::info('[HubspotWebhookBatchSyncStrategy] Deal batches processed', [
'config_id' => $configId,
'total_dispatched' => $total,
]);
yield from [];
}
public function validateParameters(array $params): bool
{
$this->validateBaseParameters($params);
return true;
}
protected function buildQuery(array $params, array $fields): array
{
return [];
}
}
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide
app ~/jiminny/app, folder
.circleci, folder
.cursor, folder
.github
.sonarlint, folder
.vscode, folder
.windsurf, folder
app, sources root
Actions, folder
Component, folder
Acl, folder
ActionItems, folder
Activity, folder
ActivityAnalytics, folder
ActivitySearch, folder
AiActivityType, folder
AiAutomation, folder
AiCallScoring, folder
AskAnything, folder
Dtos, folder
Events, folder
AskAnythingPromptService.php
HistoryService.php
AskJiminnyAi, folder
AWS, folder
BillingManagement, folder
Cache, folder
CoachingFeedback, folder
Country, folder
CustomerApi, folder
Database, folder
Datadog, folder
DateTime, folder
DealInsights, folder
DealRisks, folder
ElasticSearch
Eloquent
Encoding
Encryption
ES
Faker
FeatureFlags
FFMpeg
FileSystem
Gecko
Gong
GuzzleHttp
KeyPoints
Kiosk
LanguageDetection
LiveFeed
Locks
Math
MediaPipeline
MeetingBot, folder
MobileSettings, folder
Model, folder
Notification, folder
Nudge, folder
ParagraphBreaker, folder
ParticipantSpeech, folder
PartitionedCookie, folder
PlaybackPage, folder
Playlist, folder
Prophet, folder
ProphetAi, folder
ProsperWorks, folder
Queue, folder
Job, folder
RateLimitAware.php, abstract class
RateLimitAwareWrapper.php, class
BotsQueueConstants.php
Constants.php
ProcessingQueueConstants.php
Router, folder
Saml2, folder
SCIM, folder
Seeder, folder
Sentry, folder
Serializer, folder
Settings, folder
Sidekick, folder
Slack, folder
TeamInsights, folder
TimeMemoryMapper, folder
Transcription, folder
TranscriptionSummary, folder
Twilio, folder
Uploader, folder
UrlGenerator, folder
Utility, folder
Exceptions, folder
Service, folder
BaseRateLimiter.php, class
EfficientJsonParser.php, class
ProviderRateLimiter.php, class
RateLimiterInstance.php, class
Uuid, folder
Waveform, folder
Webhooks, folder
Workflow, folder
Configuration, folder
Console, folder...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
2767
|
NULL
|
0
|
2026-05-07T11:39:20.561518+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-07/1778 /Users/lukas/.screenpipe/data/data/2026-05-07/1778153960561_m1.jpg...
|
PhpStorm
|
faVsco.js – HubspotWebhookBatchSyncStrategy.php
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
master, menu
Start Listen Project: faVsco.js, menu
master, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
Editor for custom.log
Sync Changes
Hide This Notification
Code changed:
Hide
4
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Services\Crm\Hubspot\OpportunitySyncStrategy;
use Illuminate\Support\Facades\Log;
use Jiminny\Services\Crm\Hubspot\Client;
use Jiminny\Services\Crm\Hubspot\OpportunitySyncStrategy\Concerns\ValidatesParameters;
use Jiminny\Services\Crm\Hubspot\WebhookSyncBatchProcessor;
/**
* Webhook-driven batch sync strategy for HubSpot deals (opportunities).
*
* This strategy processes opportunities collected from webhook property change and
* association change events. Deal CRM IDs are accumulated in Redis sets and processed
* in batches via ImportOpportunityBatch jobs.
*
* Unlike traditional sync strategies that fetch deals from HubSpot API based on
* modification dates or other filters, this strategy only processes deals that have
* been explicitly flagged for sync via webhook events.
*
* Webhook Event Flow:
* 1. Webhook event received (deal.propertyChange or deal.associationChange)
* 2. Change Handler validates and collects deal ID
* 3. Deal ID added to Redis set: batch_sync_deal:{configId}:all
* 4. This strategy drains Redis set during SyncObjects cycle
* 5. ImportOpportunityBatch jobs dispatched to process deals in batches of 100
*
* Benefits:
* - Near real-time sync (processes only changed deals)
* - Reduced API calls (no polling for all deals)
* - Automatic deduplication via Redis sets
* - Resilient failure handling (failed IDs requeued to Redis)
*
* Usage:
* - Automatically invoked during SyncObjects cycle for teams configured with this strategy
* - Can be manually triggered via ProcessHubspotObjectsSyncBatches command
*/
class HubspotWebhookBatchSyncStrategy extends HubspotSyncStrategyBase
{
use ValidatesParameters;
public function __construct(Client $client, private WebhookSyncBatchProcessor $batchProcessor)
{
parent::__construct($client);
}
/**
* Process webhook-collected deal batches.
*
* Drains Redis sets containing deal CRM IDs and dispatches ImportOpportunityBatch jobs.
* Returns empty generator as deals are processed via jobs, not yielded directly.
*
* @param array $params Must contain 'config' key with Configuration instance
* @param int $total Output parameter - set to number of deal IDs dispatched
* @param string|null $lastRecordId Not used in webhook strategy
*
* @return \Generator Empty generator (deals processed via jobs)
*/
public function fetchOpportunities(
array $params,
int &$total = 0,
?string &$lastRecordId = null
): \Generator {
$this->validateParameters($params);
$configId = $params['config']->getId();
$count = $this->batchProcessor->processBatchesForObjectType(
WebhookSyncBatchProcessor::OBJECT_TYPE_DEAL,
$configId
);
$total = $count;
Log::info('[HubspotWebhookBatchSyncStrategy] Deal batches processed', [
'config_id' => $configId,
'total_dispatched' => $total,
]);
yield from [];
}
public function validateParameters(array $params): bool
{
$this->validateBaseParameters($params);
return true;
}
protected function buildQuery(array $params, array $fields): array
{
return [];
}
}
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide
app ~/jiminny/app, folder
.circleci, folder
.cursor, folder
.github
.sonarlint, folder
.vscode, folder
.windsurf, folder
app, sources root
Actions, folder
Component, folder
Acl, folder
ActionItems, folder
Activity, folder
ActivityAnalytics, folder
ActivitySearch, folder
AiActivityType, folder
AiAutomation, folder
AiCallScoring, folder
AskAnything, folder
Dtos, folder
Events, folder
AskAnythingPromptService.php
HistoryService.php
AskJiminnyAi, folder
AWS, folder
BillingManagement, folder
Cache, folder
CoachingFeedback, folder
Country, folder
CustomerApi, folder
Database, folder
Datadog, folder
DateTime, folder
DealInsights, folder
DealRisks, folder
ElasticSearch
Eloquent
Encoding
Encryption
ES
Faker
FeatureFlags
FFMpeg
FileSystem
Gecko
Gong
GuzzleHttp
KeyPoints
Kiosk
LanguageDetection
LiveFeed
Locks
Math
MediaPipeline
MeetingBot, folder
MobileSettings, folder
Model, folder
Notification, folder
Nudge, folder
ParagraphBreaker, folder
ParticipantSpeech, folder
PartitionedCookie, folder
PlaybackPage, folder
Playlist, folder
Prophet, folder
ProphetAi, folder
ProsperWorks, folder
Queue, folder
Job, folder
RateLimitAware.php, abstract class
RateLimitAwareWrapper.php, class
BotsQueueConstants.php
Constants.php
ProcessingQueueConstants.php
Router, folder
Saml2, folder
SCIM, folder
Seeder, folder
Sentry, folder
Serializer, folder
Settings, folder
Sidekick, folder
Slack, folder
TeamInsights, folder
TimeMemoryMapper, folder
Transcription, folder
TranscriptionSummary, folder
Twilio, folder
Uploader, folder
UrlGenerator, folder
Utility, folder
Exceptions, folder
Service, folder
BaseRateLimiter.php, class
EfficientJsonParser.php, class
ProviderRateLimiter.php, class
RateLimiterInstance.php, class
Uuid, folder
Waveform, folder
Webhooks, folder...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"on_screen":true,"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"master, menu","depth":5,"on_screen":true,"help_text":"Git Branch: master","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Start Listening for PHP Debug Connections","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"AskJiminnyReportActivityServiceTest","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'AskJiminnyReportActivityServiceTest'","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'AskJiminnyReportActivityServiceTest'","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More Actions","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JetBrains AI","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Search Everywhere","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"IDE and Project Settings","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.088194445,"height":0.027777778},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"Editor for custom.log","depth":4,"on_screen":true,"role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.088194445,"height":0.027777778},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"4","depth":4,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Highlighted Error","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Services\\Crm\\Hubspot\\OpportunitySyncStrategy;\n\nuse Illuminate\\Support\\Facades\\Log;\nuse Jiminny\\Services\\Crm\\Hubspot\\Client;\nuse Jiminny\\Services\\Crm\\Hubspot\\OpportunitySyncStrategy\\Concerns\\ValidatesParameters;\nuse Jiminny\\Services\\Crm\\Hubspot\\WebhookSyncBatchProcessor;\n\n/**\n * Webhook-driven batch sync strategy for HubSpot deals (opportunities).\n *\n * This strategy processes opportunities collected from webhook property change and\n * association change events. Deal CRM IDs are accumulated in Redis sets and processed\n * in batches via ImportOpportunityBatch jobs.\n *\n * Unlike traditional sync strategies that fetch deals from HubSpot API based on\n * modification dates or other filters, this strategy only processes deals that have\n * been explicitly flagged for sync via webhook events.\n *\n * Webhook Event Flow:\n * 1. Webhook event received (deal.propertyChange or deal.associationChange)\n * 2. Change Handler validates and collects deal ID\n * 3. Deal ID added to Redis set: batch_sync_deal:{configId}:all\n * 4. This strategy drains Redis set during SyncObjects cycle\n * 5. ImportOpportunityBatch jobs dispatched to process deals in batches of 100\n *\n * Benefits:\n * - Near real-time sync (processes only changed deals)\n * - Reduced API calls (no polling for all deals)\n * - Automatic deduplication via Redis sets\n * - Resilient failure handling (failed IDs requeued to Redis)\n *\n * Usage:\n * - Automatically invoked during SyncObjects cycle for teams configured with this strategy\n * - Can be manually triggered via ProcessHubspotObjectsSyncBatches command\n */\nclass HubspotWebhookBatchSyncStrategy extends HubspotSyncStrategyBase\n{\n use ValidatesParameters;\n\n public function __construct(Client $client, private WebhookSyncBatchProcessor $batchProcessor)\n {\n parent::__construct($client);\n }\n\n /**\n * Process webhook-collected deal batches.\n *\n * Drains Redis sets containing deal CRM IDs and dispatches ImportOpportunityBatch jobs.\n * Returns empty generator as deals are processed via jobs, not yielded directly.\n *\n * @param array $params Must contain 'config' key with Configuration instance\n * @param int $total Output parameter - set to number of deal IDs dispatched\n * @param string|null $lastRecordId Not used in webhook strategy\n *\n * @return \\Generator Empty generator (deals processed via jobs)\n */\n public function fetchOpportunities(\n array $params,\n int &$total = 0,\n ?string &$lastRecordId = null\n ): \\Generator {\n $this->validateParameters($params);\n\n $configId = $params['config']->getId();\n $count = $this->batchProcessor->processBatchesForObjectType(\n WebhookSyncBatchProcessor::OBJECT_TYPE_DEAL,\n $configId\n );\n\n $total = $count;\n\n Log::info('[HubspotWebhookBatchSyncStrategy] Deal batches processed', [\n 'config_id' => $configId,\n 'total_dispatched' => $total,\n ]);\n\n yield from [];\n }\n\n public function validateParameters(array $params): bool\n {\n $this->validateBaseParameters($params);\n\n return true;\n }\n\n protected function buildQuery(array $params, array $fields): array\n {\n return [];\n }\n}","depth":4,"on_screen":true,"value":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Services\\Crm\\Hubspot\\OpportunitySyncStrategy;\n\nuse Illuminate\\Support\\Facades\\Log;\nuse Jiminny\\Services\\Crm\\Hubspot\\Client;\nuse Jiminny\\Services\\Crm\\Hubspot\\OpportunitySyncStrategy\\Concerns\\ValidatesParameters;\nuse Jiminny\\Services\\Crm\\Hubspot\\WebhookSyncBatchProcessor;\n\n/**\n * Webhook-driven batch sync strategy for HubSpot deals (opportunities).\n *\n * This strategy processes opportunities collected from webhook property change and\n * association change events. Deal CRM IDs are accumulated in Redis sets and processed\n * in batches via ImportOpportunityBatch jobs.\n *\n * Unlike traditional sync strategies that fetch deals from HubSpot API based on\n * modification dates or other filters, this strategy only processes deals that have\n * been explicitly flagged for sync via webhook events.\n *\n * Webhook Event Flow:\n * 1. Webhook event received (deal.propertyChange or deal.associationChange)\n * 2. Change Handler validates and collects deal ID\n * 3. Deal ID added to Redis set: batch_sync_deal:{configId}:all\n * 4. This strategy drains Redis set during SyncObjects cycle\n * 5. ImportOpportunityBatch jobs dispatched to process deals in batches of 100\n *\n * Benefits:\n * - Near real-time sync (processes only changed deals)\n * - Reduced API calls (no polling for all deals)\n * - Automatic deduplication via Redis sets\n * - Resilient failure handling (failed IDs requeued to Redis)\n *\n * Usage:\n * - Automatically invoked during SyncObjects cycle for teams configured with this strategy\n * - Can be manually triggered via ProcessHubspotObjectsSyncBatches command\n */\nclass HubspotWebhookBatchSyncStrategy extends HubspotSyncStrategyBase\n{\n use ValidatesParameters;\n\n public function __construct(Client $client, private WebhookSyncBatchProcessor $batchProcessor)\n {\n parent::__construct($client);\n }\n\n /**\n * Process webhook-collected deal batches.\n *\n * Drains Redis sets containing deal CRM IDs and dispatches ImportOpportunityBatch jobs.\n * Returns empty generator as deals are processed via jobs, not yielded directly.\n *\n * @param array $params Must contain 'config' key with Configuration instance\n * @param int $total Output parameter - set to number of deal IDs dispatched\n * @param string|null $lastRecordId Not used in webhook strategy\n *\n * @return \\Generator Empty generator (deals processed via jobs)\n */\n public function fetchOpportunities(\n array $params,\n int &$total = 0,\n ?string &$lastRecordId = null\n ): \\Generator {\n $this->validateParameters($params);\n\n $configId = $params['config']->getId();\n $count = $this->batchProcessor->processBatchesForObjectType(\n WebhookSyncBatchProcessor::OBJECT_TYPE_DEAL,\n $configId\n );\n\n $total = $count;\n\n Log::info('[HubspotWebhookBatchSyncStrategy] Deal batches processed', [\n 'config_id' => $configId,\n 'total_dispatched' => $total,\n ]);\n\n yield from [];\n }\n\n public function validateParameters(array $params): bool\n {\n $this->validateBaseParameters($params);\n\n return true;\n }\n\n protected function buildQuery(array $params, array $fields): array\n {\n return [];\n }\n}","role_description":"text entry area","is_enabled":true,"is_focused":true,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Project","depth":3,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Project","depth":3,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"New File or Directory…","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Expand Selected","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Collapse All","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Options","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"app ~/jiminny/app, folder","depth":6,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":".circleci, folder","depth":7,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":".cursor, folder","depth":7,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":".github","depth":7,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":".sonarlint, folder","depth":7,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":".vscode, folder","depth":7,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":".windsurf, folder","depth":7,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"app, sources root","depth":7,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Actions, folder","depth":8,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Component, folder","depth":8,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Acl, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"ActionItems, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Activity, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"ActivityAnalytics, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"ActivitySearch, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"AiActivityType, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"AiAutomation, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"AiCallScoring, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"AskAnything, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Dtos, folder","depth":10,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Events, folder","depth":10,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"AskAnythingPromptService.php","depth":10,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"HistoryService.php","depth":10,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"AskJiminnyAi, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"AWS, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"BillingManagement, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Cache, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"CoachingFeedback, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Country, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"CustomerApi, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Database, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Datadog, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"DateTime, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"DealInsights, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"DealRisks, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"ElasticSearch","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Eloquent","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Encoding","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Encryption","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"ES","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Faker","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"FeatureFlags","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"FFMpeg","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"FileSystem","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Gecko","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Gong","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"GuzzleHttp","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"KeyPoints","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Kiosk","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"LanguageDetection","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"LiveFeed","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Locks","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Math","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"MediaPipeline","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"MeetingBot, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"MobileSettings, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Model, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Notification, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Nudge, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"ParagraphBreaker, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"ParticipantSpeech, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"PartitionedCookie, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"PlaybackPage, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Playlist, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Prophet, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"ProphetAi, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"ProsperWorks, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Queue, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Job, folder","depth":10,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"RateLimitAware.php, abstract class","depth":11,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"RateLimitAwareWrapper.php, class","depth":11,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"BotsQueueConstants.php","depth":10,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Constants.php","depth":10,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"ProcessingQueueConstants.php","depth":10,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Router, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Saml2, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"SCIM, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Seeder, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Sentry, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Serializer, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Settings, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Sidekick, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Slack, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"TeamInsights, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"TimeMemoryMapper, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Transcription, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"TranscriptionSummary, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Twilio, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Uploader, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"UrlGenerator, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Utility, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Exceptions, folder","depth":10,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Service, folder","depth":10,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"BaseRateLimiter.php, class","depth":11,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"EfficientJsonParser.php, class","depth":11,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"ProviderRateLimiter.php, class","depth":11,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"RateLimiterInstance.php, class","depth":11,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Uuid, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Waveform, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Webhooks, folder","depth":9,"on_screen":false,"role_description":"text"}]...
|
-735214132139826859
|
-7159563288362488500
|
click
|
accessibility
|
NULL
|
Project: faVsco.js, menu
master, menu
Start Listen Project: faVsco.js, menu
master, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
Editor for custom.log
Sync Changes
Hide This Notification
Code changed:
Hide
4
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Services\Crm\Hubspot\OpportunitySyncStrategy;
use Illuminate\Support\Facades\Log;
use Jiminny\Services\Crm\Hubspot\Client;
use Jiminny\Services\Crm\Hubspot\OpportunitySyncStrategy\Concerns\ValidatesParameters;
use Jiminny\Services\Crm\Hubspot\WebhookSyncBatchProcessor;
/**
* Webhook-driven batch sync strategy for HubSpot deals (opportunities).
*
* This strategy processes opportunities collected from webhook property change and
* association change events. Deal CRM IDs are accumulated in Redis sets and processed
* in batches via ImportOpportunityBatch jobs.
*
* Unlike traditional sync strategies that fetch deals from HubSpot API based on
* modification dates or other filters, this strategy only processes deals that have
* been explicitly flagged for sync via webhook events.
*
* Webhook Event Flow:
* 1. Webhook event received (deal.propertyChange or deal.associationChange)
* 2. Change Handler validates and collects deal ID
* 3. Deal ID added to Redis set: batch_sync_deal:{configId}:all
* 4. This strategy drains Redis set during SyncObjects cycle
* 5. ImportOpportunityBatch jobs dispatched to process deals in batches of 100
*
* Benefits:
* - Near real-time sync (processes only changed deals)
* - Reduced API calls (no polling for all deals)
* - Automatic deduplication via Redis sets
* - Resilient failure handling (failed IDs requeued to Redis)
*
* Usage:
* - Automatically invoked during SyncObjects cycle for teams configured with this strategy
* - Can be manually triggered via ProcessHubspotObjectsSyncBatches command
*/
class HubspotWebhookBatchSyncStrategy extends HubspotSyncStrategyBase
{
use ValidatesParameters;
public function __construct(Client $client, private WebhookSyncBatchProcessor $batchProcessor)
{
parent::__construct($client);
}
/**
* Process webhook-collected deal batches.
*
* Drains Redis sets containing deal CRM IDs and dispatches ImportOpportunityBatch jobs.
* Returns empty generator as deals are processed via jobs, not yielded directly.
*
* @param array $params Must contain 'config' key with Configuration instance
* @param int $total Output parameter - set to number of deal IDs dispatched
* @param string|null $lastRecordId Not used in webhook strategy
*
* @return \Generator Empty generator (deals processed via jobs)
*/
public function fetchOpportunities(
array $params,
int &$total = 0,
?string &$lastRecordId = null
): \Generator {
$this->validateParameters($params);
$configId = $params['config']->getId();
$count = $this->batchProcessor->processBatchesForObjectType(
WebhookSyncBatchProcessor::OBJECT_TYPE_DEAL,
$configId
);
$total = $count;
Log::info('[HubspotWebhookBatchSyncStrategy] Deal batches processed', [
'config_id' => $configId,
'total_dispatched' => $total,
]);
yield from [];
}
public function validateParameters(array $params): bool
{
$this->validateBaseParameters($params);
return true;
}
protected function buildQuery(array $params, array $fields): array
{
return [];
}
}
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide
app ~/jiminny/app, folder
.circleci, folder
.cursor, folder
.github
.sonarlint, folder
.vscode, folder
.windsurf, folder
app, sources root
Actions, folder
Component, folder
Acl, folder
ActionItems, folder
Activity, folder
ActivityAnalytics, folder
ActivitySearch, folder
AiActivityType, folder
AiAutomation, folder
AiCallScoring, folder
AskAnything, folder
Dtos, folder
Events, folder
AskAnythingPromptService.php
HistoryService.php
AskJiminnyAi, folder
AWS, folder
BillingManagement, folder
Cache, folder
CoachingFeedback, folder
Country, folder
CustomerApi, folder
Database, folder
Datadog, folder
DateTime, folder
DealInsights, folder
DealRisks, folder
ElasticSearch
Eloquent
Encoding
Encryption
ES
Faker
FeatureFlags
FFMpeg
FileSystem
Gecko
Gong
GuzzleHttp
KeyPoints
Kiosk
LanguageDetection
LiveFeed
Locks
Math
MediaPipeline
MeetingBot, folder
MobileSettings, folder
Model, folder
Notification, folder
Nudge, folder
ParagraphBreaker, folder
ParticipantSpeech, folder
PartitionedCookie, folder
PlaybackPage, folder
Playlist, folder
Prophet, folder
ProphetAi, folder
ProsperWorks, folder
Queue, folder
Job, folder
RateLimitAware.php, abstract class
RateLimitAwareWrapper.php, class
BotsQueueConstants.php
Constants.php
ProcessingQueueConstants.php
Router, folder
Saml2, folder
SCIM, folder
Seeder, folder
Sentry, folder
Serializer, folder
Settings, folder
Sidekick, folder
Slack, folder
TeamInsights, folder
TimeMemoryMapper, folder
Transcription, folder
TranscriptionSummary, folder
Twilio, folder
Uploader, folder
UrlGenerator, folder
Utility, folder
Exceptions, folder
Service, folder
BaseRateLimiter.php, class
EfficientJsonParser.php, class
ProviderRateLimiter.php, class
RateLimiterInstance.php, class
Uuid, folder
Waveform, folder
Webhooks, folder...
|
2764
|
NULL
|
NULL
|
NULL
|
|
2870
|
NULL
|
0
|
2026-05-07T11:44:22.040879+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-07/1778 /Users/lukas/.screenpipe/data/data/2026-05-07/1778154262040_m2.jpg...
|
PhpStorm
|
faVsco.js – Hubspot/Client.php
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
master, menu
Start Listen Project: faVsco.js, menu
master, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
Editor for custom.log
Sync Changes
Hide This Notification
Code changed:
Hide
2
60
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Services\Crm\Hubspot;
use HubSpot\Client\Crm\Deals\ApiException as DealApiException;
use HubSpot\Client\Crm\Contacts\ApiException as ContactApiException;
use HubSpot\Client\Crm\Companies\ApiException as CompanyApiException;
use HubSpot\Client\Crm\Contacts\Model\SimplePublicObjectWithAssociations as ContactsWithAssociations;
use HubSpot\Client\Crm\Companies\Model\SimplePublicObjectWithAssociations as CompaniesWithAssociations;
use HubSpot\Client\Crm\Deals\Model\SimplePublicObjectWithAssociations as DealWithAssociations;
use HubSpot\Client\Crm\Objects\Model\SimplePublicObjectInput;
use HubSpot\Client\Crm\Objects\Model\SimplePublicObjectWithAssociations as ObjectWithAssociations;
use HubSpot\Client\Crm\Pipelines\Model\Error;
use HubSpot\Client\Crm\Pipelines\Model\PipelineStage;
use HubSpot\Client\Crm\Properties\Model\Property;
use HubSpot\Discovery\Discovery;
use Jiminny\Component\Utility\Service\ProviderRateLimiter;
use Jiminny\Exceptions\CrmException;
use Jiminny\Exceptions\RateLimitException;
use Jiminny\Exceptions\SocialAccountTokenInvalidException;
use Jiminny\Jobs\Crm\NoteObject;
use Jiminny\Models\Crm\Field;
use Jiminny\Services\Crm\BaseClient;
use Jiminny\Services\Crm\Hubspot\DTO\Response\Owner;
use Jiminny\Services\SocialAccountService;
use SevenShores\Hubspot\Exceptions\BadRequest;
use SevenShores\Hubspot\Exceptions\HubspotException;
use SevenShores\Hubspot\Factory;
use SevenShores\Hubspot\Http\Response;
use Jiminny\Services\Crm\Hubspot\Pagination\HubspotPaginationService;
use Throwable;
/**
* @phpstan-type CrmFieldOption array{id:string, label:string, value?:string}
*/
class Client extends BaseClient implements HubspotClientInterface
{
public const string MIN_API_VERSION = '2';
public const string BASE_URL = '[URL_WITH_CREDENTIALS] T
* @param callable(): T $apiCall
* @return T
*
* @throws RateLimitException
*/
private function executeRequest(callable $apiCall)
{
if (! $this->rateLimiter->canMakeRequest($this->config)) {
$retryAfter = $this->rateLimiter->requestAvailableIn($this->config);
$this->log->warning('[Hubspot] Rate limit exceeded, deferring request', [
'team_id' => $this->config->team_id,
'config_id' => $this->config->getId(),
'retry_after' => $retryAfter,
]);
throw new RateLimitException(
'Hubspot rate limit reached for configuration ' . $this->config->getId(),
$retryAfter,
);
}
$this->rateLimiter->incrementRequestCount($this->config);
try {
return $apiCall();
} catch (Throwable $e) {
if ($this->isHubspotRateLimit($e)) {
$retryAfter = $this->parseRetryAfter($e);
$this->log->warning('[Hubspot] Received 429 from API', [
'team_id' => $this->config->team_id,
'config_id' => $this->config->getId(),
'retry_after' => $retryAfter,
'reason' => $e->getMessage(),
]);
throw new RateLimitException('Hubspot returned 429', $retryAfter, $e);
}
throw $e;
}
}
private function isHubspotRateLimit(Throwable $e): bool
{
return method_exists($e, 'getCode') && (int) $e->getCode() === 429;
}
private function parseRetryAfter(Throwable $e): int
{
if (method_exists($e, 'getResponseHeaders')) {
$headers = $e->getResponseHeaders() ?: [];
$value = $headers['Retry-After'] ?? $headers['retry-after'] ?? null;
if (is_array($value)) {
$value = $value[0] ?? null;
}
if (is_numeric($value)) {
return (int) $value;
}
}
return 10;
}
public function getMinimumApiVersion(): string
{
return self::MIN_API_VERSION;
}
public function getInstance(): Factory
{
return new Factory([
'key' => $this->accessToken,
'oauth2' => true,
'base_url' => $this->baseUrl,
]);
}
public function getNewInstance(): Discovery
{
return \HubSpot\Factory::createWithAccessToken($this->accessToken);
}
/**
* Secondly and daily limits for Hubspot API
*
* Product Tier: Free & Starter | Professional & Enterprise | API add-on (any tier)
* Burst: 100/10 seconds | 150/10 seconds | 200/10 seconds
* Daily: 250,000 | 500,000 | 1,000,000
*
* Official documentation states: The search endpoints are rate limited to five requests per second.
* Since with 5 RPS were still hitting secondly rate limits we lowered it to 4
*/
public function getPaginatedData(array $payload, string $type, int $offset = 0): array
{
$total = 0;
$lastId = null;
$rows = [];
foreach ($this->getPaginatedDataGenerator($payload, $type, $offset, $total, $lastId) as $row) {
$rows[] = $row;
}
return ['results' => $rows, 'total' => $total, 'last_record' => $lastId];
}
/**
* @throws HubspotException
* @throws SocialAccountTokenInvalidException
* @throws BadRequest
*/
public function getPaginatedDataGenerator(
array $payload,
string $type,
int $offset = 0,
int &$total = 0,
?string &$lastRecordId = null
): \Generator {
return $this->paginationService->getPaginatedDataGenerator(
$this,
$payload,
$type,
$offset,
$total,
$lastRecordId
);
}
/**
* @throws DealApiException
* @throws CrmException
*/
public function getOpportunityById(string $crmId, array $fields): array
{
try {
$deal = $this->executeRequest(fn () => $this->getNewInstance()->crm()->deals()->basicApi()->getById(
$crmId,
implode(',', $fields),
'companies,contacts'
));
} catch (DealApiException $e) {
$this->log->info('[Hubspot] Failed to fetch opportunity', [
'crm_id' => $crmId,
'reason' => $e->getMessage(),
]);
throw $e;
}
if (! $deal instanceof DealWithAssociations) {
throw new CrmException('Deal not found');
}
return [
'id' => $deal->getId(),
'properties' => $deal->getProperties(),
'associations' => $deal->getAssociations(),
];
}
/**
* Generic batch read method for HubSpot objects
*
* @param string $objectType The object type ('deals', 'companies', 'contacts')
* @param array<string> $crmIds Array of HubSpot object IDs (max 100)
* @param array<string> $fields Array of property names to fetch
*
* @return array<string, array> Array keyed by CRM ID with object data
*/
private function batchReadObjects(string $objectType, array $crmIds, array $fields): array
{
if (empty($crmIds)) {
return [];
}
$this->validateBatchSize($objectType, $crmIds);
$this->ensureValidToken();
try {
$batchConfig = $this->createBatchConfiguration($objectType);
$batchReadRequest = $this->prepareBatchRequest($batchConfig, $crmIds, $fields);
$response = $batchConfig['api']->read($batchReadRequest);
$this->validateApiResponse($response, $objectType);
$results = $this->processApiResults($response);
$this->logBatchResults($objectType, $crmIds, $results);
return $results;
} catch (\Throwable $e) {
$this->handleBatchError($e, $objectType, $crmIds);
}
}
private function validateBatchSize(string $objectType, array $crmIds): void
{
if (count($crmIds) > 100) {
throw new \InvalidArgumentException("Batch size cannot exceed 100 {$objectType}");
}
}
private function createBatchConfiguration(string $objectType): array
{
$configurations = [
'deals' => [
'batchReadRequest' => new \HubSpot\Client\Crm\Deals\Model\BatchReadInputSimplePublicObjectId(),
'inputClass' => \HubSpot\Client\Crm\Deals\Model\SimplePublicObjectId::class,
'api' => $this->getNewInstance()->crm()->deals()->batchApi(),
],
'companies' => [
'batchReadRequest' => new \HubSpot\Client\Crm\Companies\Model\BatchReadInputSimplePublicObjectId(),
'inputClass' => \HubSpot\Client\Crm\Companies\Model\SimplePublicObjectId::class,
'api' => $this->getNewInstance()->crm()->companies()->batchApi(),
],
'contacts' => [
'batchReadRequest' => new \HubSpot\Client\Crm\Contacts\Model\BatchReadInputSimplePublicObjectId(),
'inputClass' => \HubSpot\Client\Crm\Contacts\Model\SimplePublicObjectId::class,
'api' => $this->getNewInstance()->crm()->contacts()->batchApi(),
],
];
if (! isset($configurations[$objectType])) {
throw new \InvalidArgumentException("Unsupported object type: {$objectType}");
}
return $configurations[$objectType];
}
private function prepareBatchRequest(array $batchConfig, array $crmIds, array $fields): object
{
$batchReadRequest = $batchConfig['batchReadRequest'];
$inputClass = $batchConfig['inputClass'];
$inputs = array_map(function ($crmId) use ($inputClass) {
$input = new $inputClass();
$input->setId($crmId);
return $input;
}, $crmIds);
$batchReadRequest->setInputs($inputs);
$batchReadRequest->setProperties($fields);
return $batchReadRequest;
}
private function validateApiResponse($response, string $objectType): void
{
if (! $response) {
throw new CrmException("HubSpot API returned null response for {$objectType} batch read");
}
}
private function processApiResults($response): array
{
$results = [];
$responseResults = $response->getResults();
if ($responseResults) {
foreach ($responseResults as $object) {
if ($object && $object->getId()) {
$results[$object->getId()] = [
'id' => $object->getId(),
'properties' => $object->getProperties() ?: [],
];
}
}
}
return $results;
}
private function logBatchResults(string $objectType, array $crmIds, array $results): void
{
$this->log->info("[HubSpot] Batch fetched {$objectType}", [
'requested_count' => count($crmIds),
'returned_count' => count($results),
'crm_ids' => $crmIds,
]);
}
private function handleBatchError(\Throwable $e, string $objectType, array $crmIds): void
{
$errorMessage = $e->getMessage() ?: 'Unknown error';
$errorTrace = $e->getTraceAsString() ?: 'No trace available';
$this->log->error("[HubSpot] Failed to batch fetch {$objectType}", [
'crm_ids' => $crmIds,
'error' => $errorMessage,
'trace' => $errorTrace,
]);
throw new CrmException("Failed to batch fetch {$objectType}: " . $errorMessage);
}
/**
* Batch read multiple opportunities by their CRM IDs
*
* @param array<string> $crmIds Array of HubSpot deal IDs (max 100)
* @param array<string> $fields Array of property names to fetch
*
* @return array<string, array> Array keyed by CRM ID with opportunity data
*/
public function getOpportunitiesByIds(array $crmIds, array $fields): array
{
return $this->batchReadObjects('deals', $crmIds, $fields);
}
/**
* Batch read multiple companies by their CRM IDs
*
* @param array<string> $crmIds Array of HubSpot company IDs (max 100)
* @param array<string> $fields Array of property names to fetch
*
* @return array<string, array> Array keyed by CRM ID with company data
*/
public function getCompaniesByIds(array $crmIds, array $fields): array
{
return $this->batchReadObjects('companies', $crmIds, $fields);
}
/**
* Batch read multiple contacts by their CRM IDs
*
* @param array<string> $crmIds Array of HubSpot contact IDs (max 100)
* @param array<string> $fields Array of property names to fetch
*
* @return array<string, array> Array keyed by CRM ID with contact data
*/
public function getContactsByIds(array $crmIds, array $fields): array
{
return $this->batchReadObjects('contacts', $crmIds, $fields);
}
/**
* @throws CompanyApiException
* @throws CrmException
*/
public function getAccountById(string $crmId, array $fields): array
{
try {
$company = $this->getNewInstance()->crm()->companies()->basicApi()->getById(
$crmId,
implode(',', $fields),
);
} catch (CompanyApiException $e) {
$this->log->info('[Hubspot] Failed to fetch account', [
'crm_id' => $crmId,
'reason' => $e->getMessage(),
]);
throw $e;
}
if (! $company instanceof CompaniesWithAssociations) {
throw new CrmException('Account not found');
}
return [
'id' => $company->getId(),
'properties' => $company->getProperties(),
];
}
/**
* @throws ContactApiException
* @throws CrmException
*/
public function getContactById(string $crmId, array $fields): array
{
try {
$contact = $this->getNewInstance()->crm()->contacts()->basicApi()->getById(
$crmId,
implode(',', $fields)
);
} catch (ContactApiException $e) {
$this->log->info('[Hubspot] Failed to fetch contact', [
'crm_id' => $crmId,
'reason' => $e->getMessage(),
]);
throw $e;
}
if (! $contact instanceof ContactsWithAssociations) {
throw new CrmException('Contact not found');
}
return [
'id' => $contact->getId(),
'properties' => $contact->getProperties(),
];
}
/**
* This is email search request that Hubspot offers as GET (more generous quota)
*/
public function getContactByEmail(string $email, array $fields = []): array
{
try {
$contact = $this->getNewInstance()->crm()->contacts()->basicApi()->getById(
$email,
implode(',', $fields),
null,
false,
'email'
);
return [
'id' => $contact->getId(),
'properties' => $contact->getProperties(),
];
} catch (ContactApiException $e) {
$this->log->info('[Hubspot] Failed to fetch contact', [
'email' => $email,
'reason' => $e->getMessage(),
]);
return [];
}
}
/**
* @throws CrmException
*/
public function fetchProperty(string $objectType, string $propertyId): Property
{
$result = $this->getNewInstance()->crm()->properties()->coreApi()->getByName($objectType, $propertyId);
if (! $result instanceof Property) {
$this->log->error('[Hubspot] Failed to fetch property', [
'object_type' => $objectType,
'property_id' => $propertyId,
'reason' => $result->getMessage(),
]);
throw new CrmException('Failed to fetch property');
}
return $result;
}
/**
* @return array<CrmFieldOption>
*/
public function fetchPropertyOptions(string $objectType, string $propertyId): array
{
/** @var array<CrmFieldOption> */
return $this->fetchProperty($objectType, $propertyId)->getOptions();
}
/**
* @return array<array{id:string, label:string, deleted:bool}>
*/
public function fetchCallDispositions(): array
{
/** @var Response $response */
$response = $this->getInstance()->engagements()->getCallDispositions();
/**
* @var array<array{
* id:string,
* label:string,
* deleted: bool
* }>
*/
return $response->toArray();
}
/**
* @return array<CrmFieldOption>
*/
public function fetchOpportunityPipelineStages(): array
{
$stages = [];
$apiResponse = $this->getNewInstance()->crm()->pipelines()->pipelinesApi()->getAll('deals');
if ($apiResponse instanceof Error) {
$this->log->error('[Hubspot] Failed to fetch opportunity pipelines', [
'reason' => $apiResponse->getMessage(),
]);
return [];
}
foreach ($apiResponse->getResults() as $pipeline) {
$pipelineStages = array_map(
static function (PipelineStage $stage) {
return [
'id' => $stage->getId(),
'label' => $stage->getLabel(),
];
},
$pipeline->getStages()
);
$stages = array_merge($stages, $pipelineStages);
}
return $stages;
}
public function fetchOpportunityPipelines(): array
{
$pipelines = [];
try {
$apiResponse = $this->makeRequest('/crm/v3/pipelines/deals');
} catch (\Exception $e) {
$this->log->info('[Hubspot] Failed to fetch opportunity pipelines', [
'reason' => $e->getMessage(),
]);
return [];
}
$response = $apiResponse->toArray();
foreach ($response['results'] as $pipeline) {
$pipelines[] = [
'id' => $pipeline['id'],
'label' => $pipeline['label'],
];
}
return $pipelines;
}
/**
* @return array<CrmFieldOption>
*/
public function fetchMeetingOutcomeFieldOptions(Field $field): array
{
return $field->getCrmProviderId() === 'meetingOutcome'
? $this->fetchMeetingOutcomeTypes()
: $this->fetchCallActivityTypes();
}
public function fetchMeetingOutcomeTypes(): array
{
return $this->extractMeetingTypeOptions(
'[URL_WITH_CREDENTIALS] Response $response */
$response = $this->getInstance()
->getClient()
->request('GET', $endpoint);
/**
* @var array<array{
* value: string,
* label: string,
* displayOrder: int
* }> $optionData
*/
$optionData = $response->toArray()['options'] ?? [];
$options = [];
foreach ($optionData as $item) {
$options[] = [
'id' => $item['value'],
'value' => $item['value'],
'label' => $item['label'],
'display_order' => $item['displayOrder'],
];
}
return $options;
}
/**
* @return array<CrmFieldOption>
*/
public function fetchDispositionFieldOptions(): array
{
$options = [];
$dispositions = $this->fetchCallDispositions();
foreach ($dispositions as $disposition) {
if ($disposition['deleted'] !== false) {
continue;
}
$option['value'] = $disposition['id'];
$option['id'] = $disposition['id'];
$option['label'] = $disposition['label'];
$options[] = $option;
}
return $options;
}
/**
* @return array<CrmFieldOption>
*/
public function fetchOpportunityFieldOptions(Field $field): array
{
if ($field->isStageField()) {
return $this->fetchOpportunityPipelineStages();
}
if ($field->isPipelineField()) {
return $this->fetchOpportunityPipelines();
}
return $this->fetchPropertyOptions('deals', $field->getCrmProviderId());
}
/**
* @throws BadRequest
* @throws HubspotException
*/
public function makeRequest(string $endpoint, $method = 'GET', $payload = [], ?string $queryString = null)
{
$endpoint = self::BASE_URL . $endpoint;
if ($method === 'GET') {
$response = $this->getInstance()->getClient()?->request(
method: $method,
endpoint: $endpoint,
query_string: $queryString
);
} else {
$response = $this->getInstance()->getClient()->request($method, $endpoint, [
'json' => ($payload),
]);
}
$max = $response->getHeaderLine('X-HubSpot-RateLimit-Max'); // "110"
$remaining = $response->getHeaderLine('X-HubSpot-RateLimit-Remaining'); // "109"
$interval = $response->getHeaderLine('X-HubSpot-RateLimit-Interval-Milliseconds'); // "10000"
$body = json_decode((string) $response->getBody(), true);
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$max ' . PHP_EOL . print_r($max, true));
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$remaining ' . PHP_EOL . print_r($remaining, true));
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$interval ' . PHP_EOL . print_r($interval, true));
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$body ' . PHP_EOL . print_r($body, true));
return $response;
}
/**
* @throws BadRequest
* @throws HubspotException
*/
public function createMeeting(array $payload): Response
{
$endpoint = '/crm/v3/objects/meetings';
return $this->makeRequest($endpoint, 'POST', $payload);
}
/**
* @throws BadRequest
* @throws HubspotException
*/
public function updateMeeting(string $meetingId, array $payload): Response
{
$endpoint = '/crm/v3/objects/meetings/' . $meetingId;
return $this->makeRequest($endpoint, 'PATCH', $payload);
}
/**
* @throws \Exception
*/
public function createNote(
string $body,
string $ownerId,
int $timestamp,
string $objectId,
NoteObject $noteObject
): ?string {
try {
$noteInput = new SimplePublicObjectInput([
'properties' => [
'hs_note_body' => $body,
'hubspot_owner_id' => $ownerId,
'hs_timestamp' => $timestamp,
],
]);
// Create note
$note = $this->getNewInstance()->crm()->objects()->basicApi()->create('note', $noteInput);
$this->getNewInstance()->crm()->objects()->associationsApi()->create(
'note',
$note->getId(),
$this->getNoteObject($noteObject),
$objectId,
$this->getNoteAssociationType($noteObject),
);
return $note->getId();
} catch (\Exception $e) {
$this->log->error('[Hubspot] Failed to create note', [
'objectId' => $objectId,
'noteObject' => $noteObject->getObjectType(),
'reason' => $e->getMessage(),
]);
\Sentry::captureException($e);
}
return null;
}
public function updateEngagement(string $objectId, array $engagement, array $metadata): void
{
$this->getInstance()->engagements()->update($objectId, $engagement, $metadata);
}
public function getEngagementData(string $engagementId): array
{
$engagement = $this->getInstance()->engagements()->get($engagementId);
return $engagement->toArray();
}
public function createEngagement(array $engagement, array $associations, array $metadata): Response
{
return $this->getInstance()
->engagements()
->create($engagement, $associations, $metadata);
}
public function isUnauthorizedException(\Exception $e): bool
{
// Check for specific HubSpot API exception types first
if ($e instanceof BadRequest) {
// BadRequest can contain 401 status codes
return $e->getCode() === 401;
}
// Check for HTTP client exceptions with status codes
if ($e instanceof \GuzzleHttp\Exception\RequestException && $e->hasResponse()) {
$response = $e->getResponse();
if ($response !== null) {
return $response->getStatusCode() === 401;
}
}
// Check for Guzzle HTTP exceptions
if ($e instanceof \GuzzleHttp\Exception\ClientException) {
return $e->getCode() === 401;
}
// Fallback to string matching as last resort, but be more specific
$message = strtolower($e->getMessage());
return str_contains($message, '401 unauthorized') ||
str_contains($message, 'http 401') ||
str_contains($message, 'status code 401') ||
(preg_match('/\b401\b/', $message) && str_contains($message, 'unauthorized'));
}
/**
* Validates and refreshes the access token if needed before API requests.
* This ensures long-running processes don't fail due to token expiration.
*
* @throws SocialAccountTokenInvalidException
*/
public function ensureValidToken(): void
{
if ($this->oauthAccount === null) {
return;
}
$newToken = $this->tokenManager->ensureValidToken($this->oauthAccount);
if ($newToken !== null) {
$this->accessToken = $newToken;
}
}
public function getConfig()
{
return $this->config;
}
// returns only active (archived=false)
public function getOwners(): array
{
return $this->getNewInstance()->crm()->owners()->getAll();
}
/**
* @param bool $archived
*
* @return array<Owner>|[]
*/
public function getOwnersArchived(bool $archived = true): array
{
$endpoint = '/crm/v3/owners';
$queryParams = [
'archived' => $archived ? 'true' : 'false',
];
$queryString = http_build_query($queryParams);
$owners = [];
try {
$response = $this->makeRequest(endpoint: $endpoint, queryString: $queryString);
$responseData = $response?->toArray();
foreach ($responseData['results'] as $result) {
try {
$owners[] = Owner::create($result);
} catch (Throwable $e) {
$this->log->error('[HubSpot] Failed to process owner data', [
'result' => $result,
'error' => $e->getMessage(),
]);
continue;
}
}
} catch (Throwable $e) {
$this->log->error('HubSpot] Failed to fetch owners', [
'archived' => $archived,
'error' => $e->getMessage(),
]);
return [];
}
return $owners;
}
public function getMeeting(string $engagementId): ObjectWithAssociations
{
return $this->getNewInstance()->crm()->objects()->basicApi()
->getById('meeting', $engagementId, null, 'contact,company,deal');
}
public function deleteEngagement(string $engagementId): void
{
$this->getInstance()->engagements()->delete((int) $engagementId);
}
public function getAssociationsData(array $ids, string $fromObject, string $toObject): array
{
$associationData = [];
$idChunks = array_chunk($ids, self::ASSOCIATIONS_BATCH_SIZE_LIMIT);
foreach ($idChunks as $idChunk) {
try {
$batchInput = new \HubSpot\Client\Crm\Associations\Model\BatchInputPublicObjectId();
$batchInput->setInputs(array_map(function ($id) {
$publicObjectId = new \HubSpot\Client\Crm\Associations\Model\PublicObjectId();
$publicObjectId->setId($id);
return $publicObjectId;
}, $idChunk));
$associatedObjectsData = $this
->getNewInstance()
->crm()
->associations()
->batchApi()
->read($fromObject, $toObject, $batchInput);
if ($associatedObjectsData instanceof \HubSpot\Client\Crm\Associations\Model\BatchResponsePublicAssociationMulti) {
foreach ($associatedObjectsData->getResults() as $association) {
$from = $association->getFrom()->getId();
$toAssociations = $association->getTo();
if (! empty($toAssociations)) {
$associationData[$from] = array_map(function ($item) {
return $item->getId();
}, $toAssociations);
}
}
}
} catch (\Exception $e) {
$this->log->error('[Hubspot] Failed to fetch associations', [
'from_object' => $fromObject,
'to_object' => $toObject,
'reason' => $e->getMessage(),
]);
}
}
return $associationData;
}
/**
* @throws \Exception
*/
private function getNoteAssociationType(NoteObject $noteObject): string
{
return match($noteObject) {
NoteObject::Opportunity => 'note_to_deal',
NoteObject::Lead, NoteObject::Contact => 'note_to_contact', // or 'note_to_lead' if your portal supports it
NoteObject::Account => 'note_to_company',
NoteObject::Call, NoteObject::Event => throw new \Exception('Not supported'),
};
}
/**
* @throws \Exception
*/
private function getNoteObject(NoteObject $noteObject): string
{
return match($noteObject) {
NoteObject::Opportunity => 'deal',
NoteObject::Lead, NoteObject::Contact => 'contact',
NoteObject::Account => 'company',
NoteObject::Call, NoteObject::Event => throw new \Exception('Not supported'),
};
}
public function addAssociations(string $objectType, string $associationType, array $payload): Response
{
$endpoint = "/crm/v4/associations/$objectType/$associationType/batch/create";
return $this->makeRequest($endpoint, 'POST', $payload);
}
public function removeAssociations(string $objectType, string $associationType, array $payload): Response
{
$endpoint = "/crm/v4/associations/$objectType/$associationType/batch/archive";
return $this->makeRequest($endpoint, 'POST', $payload);
}
}
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"bounds":{"left":0.025930852,"top":0.019952115,"width":0.03856383,"height":0.025538707},"on_screen":true,"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"master, menu","depth":5,"bounds":{"left":0.064494684,"top":0.019952115,"width":0.034242023,"height":0.025538707},"on_screen":true,"help_text":"Git Branch: master","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Start Listening for PHP Debug Connections","depth":5,"bounds":{"left":0.8081782,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"AskJiminnyReportActivityServiceTest","depth":6,"bounds":{"left":0.8234708,"top":0.019952115,"width":0.09208777,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'AskJiminnyReportActivityServiceTest'","depth":6,"bounds":{"left":0.9155585,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'AskJiminnyReportActivityServiceTest'","depth":6,"bounds":{"left":0.9268617,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More Actions","depth":6,"bounds":{"left":0.9381649,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JetBrains AI","depth":5,"bounds":{"left":0.96609044,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Search Everywhere","depth":5,"bounds":{"left":0.9773936,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"IDE and Project Settings","depth":5,"bounds":{"left":0.9886968,"top":0.019952115,"width":0.011303186,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.042220745,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"Editor for custom.log","depth":4,"bounds":{"left":0.5475399,"top":0.0726257,"width":0.44082448,"height":0.9066241},"on_screen":true,"role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.042220745,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.007978723,"height":0.0},"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"60","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.010305851,"height":0.0},"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.00731383,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Highlighted Error","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.006981383,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Services\\Crm\\Hubspot;\n\nuse HubSpot\\Client\\Crm\\Deals\\ApiException as DealApiException;\nuse HubSpot\\Client\\Crm\\Contacts\\ApiException as ContactApiException;\nuse HubSpot\\Client\\Crm\\Companies\\ApiException as CompanyApiException;\nuse HubSpot\\Client\\Crm\\Contacts\\Model\\SimplePublicObjectWithAssociations as ContactsWithAssociations;\nuse HubSpot\\Client\\Crm\\Companies\\Model\\SimplePublicObjectWithAssociations as CompaniesWithAssociations;\nuse HubSpot\\Client\\Crm\\Deals\\Model\\SimplePublicObjectWithAssociations as DealWithAssociations;\nuse HubSpot\\Client\\Crm\\Objects\\Model\\SimplePublicObjectInput;\nuse HubSpot\\Client\\Crm\\Objects\\Model\\SimplePublicObjectWithAssociations as ObjectWithAssociations;\nuse HubSpot\\Client\\Crm\\Pipelines\\Model\\Error;\nuse HubSpot\\Client\\Crm\\Pipelines\\Model\\PipelineStage;\nuse HubSpot\\Client\\Crm\\Properties\\Model\\Property;\nuse HubSpot\\Discovery\\Discovery;\nuse Jiminny\\Component\\Utility\\Service\\ProviderRateLimiter;\nuse Jiminny\\Exceptions\\CrmException;\nuse Jiminny\\Exceptions\\RateLimitException;\nuse Jiminny\\Exceptions\\SocialAccountTokenInvalidException;\nuse Jiminny\\Jobs\\Crm\\NoteObject;\nuse Jiminny\\Models\\Crm\\Field;\nuse Jiminny\\Services\\Crm\\BaseClient;\nuse Jiminny\\Services\\Crm\\Hubspot\\DTO\\Response\\Owner;\nuse Jiminny\\Services\\SocialAccountService;\nuse SevenShores\\Hubspot\\Exceptions\\BadRequest;\nuse SevenShores\\Hubspot\\Exceptions\\HubspotException;\nuse SevenShores\\Hubspot\\Factory;\nuse SevenShores\\Hubspot\\Http\\Response;\nuse Jiminny\\Services\\Crm\\Hubspot\\Pagination\\HubspotPaginationService;\nuse Throwable;\n\n/**\n * @phpstan-type CrmFieldOption array{id:string, label:string, value?:string}\n */\nclass Client extends BaseClient implements HubspotClientInterface\n{\n public const string MIN_API_VERSION = '2';\n\n public const string BASE_URL = 'https://api.hubapi.com';\n\n public const int ASSOCIATIONS_BATCH_SIZE_LIMIT = 1000;\n\n private HubspotPaginationService $paginationService;\n private HubspotTokenManager $tokenManager;\n private ProviderRateLimiter $rateLimiter;\n\n public function __construct(\n SocialAccountService $socialAccountService,\n HubspotPaginationService $paginationService,\n HubspotTokenManager $tokenManager,\n ProviderRateLimiter $rateLimiter,\n ) {\n parent::__construct($socialAccountService);\n $this->paginationService = $paginationService;\n $this->tokenManager = $tokenManager;\n $this->rateLimiter = $rateLimiter;\n\n $this->setBaseUrl(self::BASE_URL);\n $this->setVersion(self::MIN_API_VERSION);\n }\n\n /**\n * Single entry point for every HubSpot API call. Enforces the per-portal\n * rate limit configured in the rate_limits table (morphed to the current\n * Configuration) and reacts to a real 429 from HubSpot by translating it\n * into a RateLimitException carrying Retry-After.\n *\n * Wrap any outbound HubSpot call (SDK or raw HTTP) like:\n *\n * $this->executeRequest(fn () => $this->getNewInstance()->crm()->...);\n *\n * @template T\n * @param callable(): T $apiCall\n * @return T\n *\n * @throws RateLimitException\n */\n private function executeRequest(callable $apiCall)\n {\n if (! $this->rateLimiter->canMakeRequest($this->config)) {\n $retryAfter = $this->rateLimiter->requestAvailableIn($this->config);\n\n $this->log->warning('[Hubspot] Rate limit exceeded, deferring request', [\n 'team_id' => $this->config->team_id,\n 'config_id' => $this->config->getId(),\n 'retry_after' => $retryAfter,\n ]);\n\n throw new RateLimitException(\n 'Hubspot rate limit reached for configuration ' . $this->config->getId(),\n $retryAfter,\n );\n }\n\n $this->rateLimiter->incrementRequestCount($this->config);\n\n try {\n return $apiCall();\n } catch (Throwable $e) {\n if ($this->isHubspotRateLimit($e)) {\n $retryAfter = $this->parseRetryAfter($e);\n\n $this->log->warning('[Hubspot] Received 429 from API', [\n 'team_id' => $this->config->team_id,\n 'config_id' => $this->config->getId(),\n 'retry_after' => $retryAfter,\n 'reason' => $e->getMessage(),\n ]);\n\n throw new RateLimitException('Hubspot returned 429', $retryAfter, $e);\n }\n\n throw $e;\n }\n }\n\n private function isHubspotRateLimit(Throwable $e): bool\n {\n return method_exists($e, 'getCode') && (int) $e->getCode() === 429;\n }\n\n private function parseRetryAfter(Throwable $e): int\n {\n if (method_exists($e, 'getResponseHeaders')) {\n $headers = $e->getResponseHeaders() ?: [];\n $value = $headers['Retry-After'] ?? $headers['retry-after'] ?? null;\n if (is_array($value)) {\n $value = $value[0] ?? null;\n }\n if (is_numeric($value)) {\n return (int) $value;\n }\n }\n\n return 10;\n }\n\n public function getMinimumApiVersion(): string\n {\n return self::MIN_API_VERSION;\n }\n\n public function getInstance(): Factory\n {\n return new Factory([\n 'key' => $this->accessToken,\n 'oauth2' => true,\n 'base_url' => $this->baseUrl,\n ]);\n }\n\n public function getNewInstance(): Discovery\n {\n return \\HubSpot\\Factory::createWithAccessToken($this->accessToken);\n }\n\n /**\n * Secondly and daily limits for Hubspot API\n *\n * Product Tier: Free & Starter | Professional & Enterprise | API add-on (any tier)\n * Burst: 100/10 seconds | 150/10 seconds | 200/10 seconds\n * Daily: 250,000 | 500,000 | 1,000,000\n *\n * Official documentation states: The search endpoints are rate limited to five requests per second.\n * Since with 5 RPS were still hitting secondly rate limits we lowered it to 4\n */\n public function getPaginatedData(array $payload, string $type, int $offset = 0): array\n {\n $total = 0;\n $lastId = null;\n $rows = [];\n foreach ($this->getPaginatedDataGenerator($payload, $type, $offset, $total, $lastId) as $row) {\n $rows[] = $row;\n }\n\n return ['results' => $rows, 'total' => $total, 'last_record' => $lastId];\n }\n\n /**\n * @throws HubspotException\n * @throws SocialAccountTokenInvalidException\n * @throws BadRequest\n */\n public function getPaginatedDataGenerator(\n array $payload,\n string $type,\n int $offset = 0,\n int &$total = 0,\n ?string &$lastRecordId = null\n ): \\Generator {\n return $this->paginationService->getPaginatedDataGenerator(\n $this,\n $payload,\n $type,\n $offset,\n $total,\n $lastRecordId\n );\n }\n\n /**\n * @throws DealApiException\n * @throws CrmException\n */\n public function getOpportunityById(string $crmId, array $fields): array\n {\n try {\n $deal = $this->executeRequest(fn () => $this->getNewInstance()->crm()->deals()->basicApi()->getById(\n $crmId,\n implode(',', $fields),\n 'companies,contacts'\n ));\n } catch (DealApiException $e) {\n $this->log->info('[Hubspot] Failed to fetch opportunity', [\n 'crm_id' => $crmId,\n 'reason' => $e->getMessage(),\n ]);\n\n throw $e;\n }\n\n if (! $deal instanceof DealWithAssociations) {\n throw new CrmException('Deal not found');\n }\n\n return [\n 'id' => $deal->getId(),\n 'properties' => $deal->getProperties(),\n 'associations' => $deal->getAssociations(),\n ];\n }\n\n /**\n * Generic batch read method for HubSpot objects\n *\n * @param string $objectType The object type ('deals', 'companies', 'contacts')\n * @param array<string> $crmIds Array of HubSpot object IDs (max 100)\n * @param array<string> $fields Array of property names to fetch\n *\n * @return array<string, array> Array keyed by CRM ID with object data\n */\n private function batchReadObjects(string $objectType, array $crmIds, array $fields): array\n {\n if (empty($crmIds)) {\n return [];\n }\n\n $this->validateBatchSize($objectType, $crmIds);\n $this->ensureValidToken();\n\n try {\n $batchConfig = $this->createBatchConfiguration($objectType);\n $batchReadRequest = $this->prepareBatchRequest($batchConfig, $crmIds, $fields);\n $response = $batchConfig['api']->read($batchReadRequest);\n\n $this->validateApiResponse($response, $objectType);\n\n $results = $this->processApiResults($response);\n $this->logBatchResults($objectType, $crmIds, $results);\n\n return $results;\n } catch (\\Throwable $e) {\n $this->handleBatchError($e, $objectType, $crmIds);\n }\n }\n\n private function validateBatchSize(string $objectType, array $crmIds): void\n {\n if (count($crmIds) > 100) {\n throw new \\InvalidArgumentException(\"Batch size cannot exceed 100 {$objectType}\");\n }\n }\n\n private function createBatchConfiguration(string $objectType): array\n {\n $configurations = [\n 'deals' => [\n 'batchReadRequest' => new \\HubSpot\\Client\\Crm\\Deals\\Model\\BatchReadInputSimplePublicObjectId(),\n 'inputClass' => \\HubSpot\\Client\\Crm\\Deals\\Model\\SimplePublicObjectId::class,\n 'api' => $this->getNewInstance()->crm()->deals()->batchApi(),\n ],\n 'companies' => [\n 'batchReadRequest' => new \\HubSpot\\Client\\Crm\\Companies\\Model\\BatchReadInputSimplePublicObjectId(),\n 'inputClass' => \\HubSpot\\Client\\Crm\\Companies\\Model\\SimplePublicObjectId::class,\n 'api' => $this->getNewInstance()->crm()->companies()->batchApi(),\n ],\n 'contacts' => [\n 'batchReadRequest' => new \\HubSpot\\Client\\Crm\\Contacts\\Model\\BatchReadInputSimplePublicObjectId(),\n 'inputClass' => \\HubSpot\\Client\\Crm\\Contacts\\Model\\SimplePublicObjectId::class,\n 'api' => $this->getNewInstance()->crm()->contacts()->batchApi(),\n ],\n ];\n\n if (! isset($configurations[$objectType])) {\n throw new \\InvalidArgumentException(\"Unsupported object type: {$objectType}\");\n }\n\n return $configurations[$objectType];\n }\n\n private function prepareBatchRequest(array $batchConfig, array $crmIds, array $fields): object\n {\n $batchReadRequest = $batchConfig['batchReadRequest'];\n $inputClass = $batchConfig['inputClass'];\n\n $inputs = array_map(function ($crmId) use ($inputClass) {\n $input = new $inputClass();\n $input->setId($crmId);\n\n return $input;\n }, $crmIds);\n\n $batchReadRequest->setInputs($inputs);\n $batchReadRequest->setProperties($fields);\n\n return $batchReadRequest;\n }\n\n private function validateApiResponse($response, string $objectType): void\n {\n if (! $response) {\n throw new CrmException(\"HubSpot API returned null response for {$objectType} batch read\");\n }\n }\n\n private function processApiResults($response): array\n {\n $results = [];\n $responseResults = $response->getResults();\n\n if ($responseResults) {\n foreach ($responseResults as $object) {\n if ($object && $object->getId()) {\n $results[$object->getId()] = [\n 'id' => $object->getId(),\n 'properties' => $object->getProperties() ?: [],\n ];\n }\n }\n }\n\n return $results;\n }\n\n private function logBatchResults(string $objectType, array $crmIds, array $results): void\n {\n $this->log->info(\"[HubSpot] Batch fetched {$objectType}\", [\n 'requested_count' => count($crmIds),\n 'returned_count' => count($results),\n 'crm_ids' => $crmIds,\n ]);\n }\n\n private function handleBatchError(\\Throwable $e, string $objectType, array $crmIds): void\n {\n $errorMessage = $e->getMessage() ?: 'Unknown error';\n $errorTrace = $e->getTraceAsString() ?: 'No trace available';\n\n $this->log->error(\"[HubSpot] Failed to batch fetch {$objectType}\", [\n 'crm_ids' => $crmIds,\n 'error' => $errorMessage,\n 'trace' => $errorTrace,\n ]);\n\n throw new CrmException(\"Failed to batch fetch {$objectType}: \" . $errorMessage);\n }\n\n /**\n * Batch read multiple opportunities by their CRM IDs\n *\n * @param array<string> $crmIds Array of HubSpot deal IDs (max 100)\n * @param array<string> $fields Array of property names to fetch\n *\n * @return array<string, array> Array keyed by CRM ID with opportunity data\n */\n public function getOpportunitiesByIds(array $crmIds, array $fields): array\n {\n return $this->batchReadObjects('deals', $crmIds, $fields);\n }\n\n /**\n * Batch read multiple companies by their CRM IDs\n *\n * @param array<string> $crmIds Array of HubSpot company IDs (max 100)\n * @param array<string> $fields Array of property names to fetch\n *\n * @return array<string, array> Array keyed by CRM ID with company data\n */\n public function getCompaniesByIds(array $crmIds, array $fields): array\n {\n return $this->batchReadObjects('companies', $crmIds, $fields);\n }\n\n /**\n * Batch read multiple contacts by their CRM IDs\n *\n * @param array<string> $crmIds Array of HubSpot contact IDs (max 100)\n * @param array<string> $fields Array of property names to fetch\n *\n * @return array<string, array> Array keyed by CRM ID with contact data\n */\n public function getContactsByIds(array $crmIds, array $fields): array\n {\n return $this->batchReadObjects('contacts', $crmIds, $fields);\n }\n\n /**\n * @throws CompanyApiException\n * @throws CrmException\n */\n public function getAccountById(string $crmId, array $fields): array\n {\n try {\n $company = $this->getNewInstance()->crm()->companies()->basicApi()->getById(\n $crmId,\n implode(',', $fields),\n );\n } catch (CompanyApiException $e) {\n $this->log->info('[Hubspot] Failed to fetch account', [\n 'crm_id' => $crmId,\n 'reason' => $e->getMessage(),\n ]);\n\n throw $e;\n }\n\n if (! $company instanceof CompaniesWithAssociations) {\n throw new CrmException('Account not found');\n }\n\n return [\n 'id' => $company->getId(),\n 'properties' => $company->getProperties(),\n ];\n }\n\n /**\n * @throws ContactApiException\n * @throws CrmException\n */\n public function getContactById(string $crmId, array $fields): array\n {\n try {\n $contact = $this->getNewInstance()->crm()->contacts()->basicApi()->getById(\n $crmId,\n implode(',', $fields)\n );\n } catch (ContactApiException $e) {\n $this->log->info('[Hubspot] Failed to fetch contact', [\n 'crm_id' => $crmId,\n 'reason' => $e->getMessage(),\n ]);\n\n throw $e;\n }\n\n if (! $contact instanceof ContactsWithAssociations) {\n throw new CrmException('Contact not found');\n }\n\n return [\n 'id' => $contact->getId(),\n 'properties' => $contact->getProperties(),\n ];\n }\n\n /**\n * This is email search request that Hubspot offers as GET (more generous quota)\n */\n public function getContactByEmail(string $email, array $fields = []): array\n {\n try {\n $contact = $this->getNewInstance()->crm()->contacts()->basicApi()->getById(\n $email,\n implode(',', $fields),\n null,\n false,\n 'email'\n );\n\n return [\n 'id' => $contact->getId(),\n 'properties' => $contact->getProperties(),\n ];\n } catch (ContactApiException $e) {\n $this->log->info('[Hubspot] Failed to fetch contact', [\n 'email' => $email,\n 'reason' => $e->getMessage(),\n ]);\n\n return [];\n }\n }\n\n /**\n * @throws CrmException\n */\n public function fetchProperty(string $objectType, string $propertyId): Property\n {\n $result = $this->getNewInstance()->crm()->properties()->coreApi()->getByName($objectType, $propertyId);\n\n if (! $result instanceof Property) {\n $this->log->error('[Hubspot] Failed to fetch property', [\n 'object_type' => $objectType,\n 'property_id' => $propertyId,\n 'reason' => $result->getMessage(),\n ]);\n\n throw new CrmException('Failed to fetch property');\n }\n\n return $result;\n }\n\n /**\n * @return array<CrmFieldOption>\n */\n public function fetchPropertyOptions(string $objectType, string $propertyId): array\n {\n /** @var array<CrmFieldOption> */\n return $this->fetchProperty($objectType, $propertyId)->getOptions();\n }\n\n /**\n * @return array<array{id:string, label:string, deleted:bool}>\n */\n public function fetchCallDispositions(): array\n {\n /** @var Response $response */\n $response = $this->getInstance()->engagements()->getCallDispositions();\n\n /**\n * @var array<array{\n * id:string,\n * label:string,\n * deleted: bool\n * }>\n */\n return $response->toArray();\n }\n\n /**\n * @return array<CrmFieldOption>\n */\n public function fetchOpportunityPipelineStages(): array\n {\n $stages = [];\n $apiResponse = $this->getNewInstance()->crm()->pipelines()->pipelinesApi()->getAll('deals');\n\n if ($apiResponse instanceof Error) {\n $this->log->error('[Hubspot] Failed to fetch opportunity pipelines', [\n 'reason' => $apiResponse->getMessage(),\n ]);\n\n return [];\n }\n\n foreach ($apiResponse->getResults() as $pipeline) {\n $pipelineStages = array_map(\n static function (PipelineStage $stage) {\n return [\n 'id' => $stage->getId(),\n 'label' => $stage->getLabel(),\n ];\n },\n $pipeline->getStages()\n );\n\n $stages = array_merge($stages, $pipelineStages);\n }\n\n return $stages;\n }\n\n public function fetchOpportunityPipelines(): array\n {\n $pipelines = [];\n\n try {\n $apiResponse = $this->makeRequest('/crm/v3/pipelines/deals');\n } catch (\\Exception $e) {\n $this->log->info('[Hubspot] Failed to fetch opportunity pipelines', [\n 'reason' => $e->getMessage(),\n ]);\n\n return [];\n }\n\n $response = $apiResponse->toArray();\n\n foreach ($response['results'] as $pipeline) {\n $pipelines[] = [\n 'id' => $pipeline['id'],\n 'label' => $pipeline['label'],\n ];\n }\n\n return $pipelines;\n }\n\n /**\n * @return array<CrmFieldOption>\n */\n public function fetchMeetingOutcomeFieldOptions(Field $field): array\n {\n return $field->getCrmProviderId() === 'meetingOutcome'\n ? $this->fetchMeetingOutcomeTypes()\n : $this->fetchCallActivityTypes();\n }\n\n public function fetchMeetingOutcomeTypes(): array\n {\n return $this->extractMeetingTypeOptions(\n 'https://api.hubapi.com/crm/v3/properties/meeting/hs_meeting_outcome'\n );\n }\n\n public function fetchCallActivityTypes(): array\n {\n return $this->extractMeetingTypeOptions(\n 'https://api.hubapi.com/crm/v3/properties/call/hs_activity_type'\n );\n }\n\n private function extractMeetingTypeOptions(string $endpoint): array\n {\n /** @var Response $response */\n $response = $this->getInstance()\n ->getClient()\n ->request('GET', $endpoint);\n\n /**\n * @var array<array{\n * value: string,\n * label: string,\n * displayOrder: int\n * }> $optionData\n */\n $optionData = $response->toArray()['options'] ?? [];\n\n $options = [];\n foreach ($optionData as $item) {\n $options[] = [\n 'id' => $item['value'],\n 'value' => $item['value'],\n 'label' => $item['label'],\n 'display_order' => $item['displayOrder'],\n ];\n }\n\n return $options;\n }\n\n /**\n * @return array<CrmFieldOption>\n */\n public function fetchDispositionFieldOptions(): array\n {\n $options = [];\n\n $dispositions = $this->fetchCallDispositions();\n\n foreach ($dispositions as $disposition) {\n if ($disposition['deleted'] !== false) {\n continue;\n }\n\n $option['value'] = $disposition['id'];\n $option['id'] = $disposition['id'];\n $option['label'] = $disposition['label'];\n\n $options[] = $option;\n }\n\n return $options;\n }\n\n /**\n * @return array<CrmFieldOption>\n */\n public function fetchOpportunityFieldOptions(Field $field): array\n {\n if ($field->isStageField()) {\n return $this->fetchOpportunityPipelineStages();\n }\n\n if ($field->isPipelineField()) {\n return $this->fetchOpportunityPipelines();\n }\n\n return $this->fetchPropertyOptions('deals', $field->getCrmProviderId());\n }\n\n /**\n * @throws BadRequest\n * @throws HubspotException\n */\n public function makeRequest(string $endpoint, $method = 'GET', $payload = [], ?string $queryString = null)\n {\n $endpoint = self::BASE_URL . $endpoint;\n\n if ($method === 'GET') {\n $response = $this->getInstance()->getClient()?->request(\n method: $method,\n endpoint: $endpoint,\n query_string: $queryString\n );\n } else {\n $response = $this->getInstance()->getClient()->request($method, $endpoint, [\n 'json' => ($payload),\n ]);\n }\n\n $max = $response->getHeaderLine('X-HubSpot-RateLimit-Max'); // \"110\"\n $remaining = $response->getHeaderLine('X-HubSpot-RateLimit-Remaining'); // \"109\"\n $interval = $response->getHeaderLine('X-HubSpot-RateLimit-Interval-Milliseconds'); // \"10000\"\n $body = json_decode((string) $response->getBody(), true);\n\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$max ' . PHP_EOL . print_r($max, true));\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$remaining ' . PHP_EOL . print_r($remaining, true));\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$interval ' . PHP_EOL . print_r($interval, true));\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$body ' . PHP_EOL . print_r($body, true));\n\n return $response;\n }\n\n /**\n * @throws BadRequest\n * @throws HubspotException\n */\n public function createMeeting(array $payload): Response\n {\n $endpoint = '/crm/v3/objects/meetings';\n\n return $this->makeRequest($endpoint, 'POST', $payload);\n }\n\n /**\n * @throws BadRequest\n * @throws HubspotException\n */\n public function updateMeeting(string $meetingId, array $payload): Response\n {\n $endpoint = '/crm/v3/objects/meetings/' . $meetingId;\n\n return $this->makeRequest($endpoint, 'PATCH', $payload);\n }\n\n /**\n * @throws \\Exception\n */\n public function createNote(\n string $body,\n string $ownerId,\n int $timestamp,\n string $objectId,\n NoteObject $noteObject\n ): ?string {\n try {\n $noteInput = new SimplePublicObjectInput([\n 'properties' => [\n 'hs_note_body' => $body,\n 'hubspot_owner_id' => $ownerId,\n 'hs_timestamp' => $timestamp,\n ],\n ]);\n\n // Create note\n $note = $this->getNewInstance()->crm()->objects()->basicApi()->create('note', $noteInput);\n\n $this->getNewInstance()->crm()->objects()->associationsApi()->create(\n 'note',\n $note->getId(),\n $this->getNoteObject($noteObject),\n $objectId,\n $this->getNoteAssociationType($noteObject),\n );\n\n return $note->getId();\n } catch (\\Exception $e) {\n $this->log->error('[Hubspot] Failed to create note', [\n 'objectId' => $objectId,\n 'noteObject' => $noteObject->getObjectType(),\n 'reason' => $e->getMessage(),\n ]);\n\n \\Sentry::captureException($e);\n }\n\n return null;\n }\n\n public function updateEngagement(string $objectId, array $engagement, array $metadata): void\n {\n $this->getInstance()->engagements()->update($objectId, $engagement, $metadata);\n }\n\n public function getEngagementData(string $engagementId): array\n {\n $engagement = $this->getInstance()->engagements()->get($engagementId);\n\n return $engagement->toArray();\n }\n\n public function createEngagement(array $engagement, array $associations, array $metadata): Response\n {\n return $this->getInstance()\n ->engagements()\n ->create($engagement, $associations, $metadata);\n }\n\n public function isUnauthorizedException(\\Exception $e): bool\n {\n // Check for specific HubSpot API exception types first\n if ($e instanceof BadRequest) {\n // BadRequest can contain 401 status codes\n return $e->getCode() === 401;\n }\n\n // Check for HTTP client exceptions with status codes\n if ($e instanceof \\GuzzleHttp\\Exception\\RequestException && $e->hasResponse()) {\n $response = $e->getResponse();\n if ($response !== null) {\n return $response->getStatusCode() === 401;\n }\n }\n\n // Check for Guzzle HTTP exceptions\n if ($e instanceof \\GuzzleHttp\\Exception\\ClientException) {\n return $e->getCode() === 401;\n }\n\n // Fallback to string matching as last resort, but be more specific\n $message = strtolower($e->getMessage());\n\n return str_contains($message, '401 unauthorized') ||\n str_contains($message, 'http 401') ||\n str_contains($message, 'status code 401') ||\n (preg_match('/\\b401\\b/', $message) && str_contains($message, 'unauthorized'));\n }\n\n /**\n * Validates and refreshes the access token if needed before API requests.\n * This ensures long-running processes don't fail due to token expiration.\n *\n * @throws SocialAccountTokenInvalidException\n */\n public function ensureValidToken(): void\n {\n if ($this->oauthAccount === null) {\n return;\n }\n\n $newToken = $this->tokenManager->ensureValidToken($this->oauthAccount);\n if ($newToken !== null) {\n $this->accessToken = $newToken;\n }\n }\n\n public function getConfig()\n {\n return $this->config;\n }\n\n // returns only active (archived=false)\n public function getOwners(): array\n {\n return $this->getNewInstance()->crm()->owners()->getAll();\n }\n\n /**\n * @param bool $archived\n *\n * @return array<Owner>|[]\n */\n public function getOwnersArchived(bool $archived = true): array\n {\n $endpoint = '/crm/v3/owners';\n $queryParams = [\n 'archived' => $archived ? 'true' : 'false',\n ];\n $queryString = http_build_query($queryParams);\n\n $owners = [];\n\n try {\n $response = $this->makeRequest(endpoint: $endpoint, queryString: $queryString);\n $responseData = $response?->toArray();\n\n foreach ($responseData['results'] as $result) {\n try {\n $owners[] = Owner::create($result);\n } catch (Throwable $e) {\n $this->log->error('[HubSpot] Failed to process owner data', [\n 'result' => $result,\n 'error' => $e->getMessage(),\n ]);\n\n continue;\n }\n }\n } catch (Throwable $e) {\n $this->log->error('HubSpot] Failed to fetch owners', [\n 'archived' => $archived,\n 'error' => $e->getMessage(),\n ]);\n\n return [];\n }\n\n return $owners;\n }\n\n public function getMeeting(string $engagementId): ObjectWithAssociations\n {\n return $this->getNewInstance()->crm()->objects()->basicApi()\n ->getById('meeting', $engagementId, null, 'contact,company,deal');\n }\n\n public function deleteEngagement(string $engagementId): void\n {\n $this->getInstance()->engagements()->delete((int) $engagementId);\n }\n\n public function getAssociationsData(array $ids, string $fromObject, string $toObject): array\n {\n $associationData = [];\n $idChunks = array_chunk($ids, self::ASSOCIATIONS_BATCH_SIZE_LIMIT);\n\n foreach ($idChunks as $idChunk) {\n try {\n $batchInput = new \\HubSpot\\Client\\Crm\\Associations\\Model\\BatchInputPublicObjectId();\n $batchInput->setInputs(array_map(function ($id) {\n $publicObjectId = new \\HubSpot\\Client\\Crm\\Associations\\Model\\PublicObjectId();\n $publicObjectId->setId($id);\n\n return $publicObjectId;\n }, $idChunk));\n\n $associatedObjectsData = $this\n ->getNewInstance()\n ->crm()\n ->associations()\n ->batchApi()\n ->read($fromObject, $toObject, $batchInput);\n\n if ($associatedObjectsData instanceof \\HubSpot\\Client\\Crm\\Associations\\Model\\BatchResponsePublicAssociationMulti) {\n foreach ($associatedObjectsData->getResults() as $association) {\n $from = $association->getFrom()->getId();\n $toAssociations = $association->getTo();\n\n if (! empty($toAssociations)) {\n $associationData[$from] = array_map(function ($item) {\n return $item->getId();\n }, $toAssociations);\n }\n }\n }\n } catch (\\Exception $e) {\n $this->log->error('[Hubspot] Failed to fetch associations', [\n 'from_object' => $fromObject,\n 'to_object' => $toObject,\n 'reason' => $e->getMessage(),\n ]);\n }\n }\n\n return $associationData;\n }\n\n /**\n * @throws \\Exception\n */\n private function getNoteAssociationType(NoteObject $noteObject): string\n {\n return match($noteObject) {\n NoteObject::Opportunity => 'note_to_deal',\n NoteObject::Lead, NoteObject::Contact => 'note_to_contact', // or 'note_to_lead' if your portal supports it\n NoteObject::Account => 'note_to_company',\n NoteObject::Call, NoteObject::Event => throw new \\Exception('Not supported'),\n };\n }\n\n /**\n * @throws \\Exception\n */\n private function getNoteObject(NoteObject $noteObject): string\n {\n return match($noteObject) {\n NoteObject::Opportunity => 'deal',\n NoteObject::Lead, NoteObject::Contact => 'contact',\n NoteObject::Account => 'company',\n NoteObject::Call, NoteObject::Event => throw new \\Exception('Not supported'),\n };\n }\n\n public function addAssociations(string $objectType, string $associationType, array $payload): Response\n {\n $endpoint = \"/crm/v4/associations/$objectType/$associationType/batch/create\";\n\n return $this->makeRequest($endpoint, 'POST', $payload);\n }\n\n public function removeAssociations(string $objectType, string $associationType, array $payload): Response\n {\n $endpoint = \"/crm/v4/associations/$objectType/$associationType/batch/archive\";\n\n return $this->makeRequest($endpoint, 'POST', $payload);\n }\n}","depth":4,"on_screen":true,"value":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Services\\Crm\\Hubspot;\n\nuse HubSpot\\Client\\Crm\\Deals\\ApiException as DealApiException;\nuse HubSpot\\Client\\Crm\\Contacts\\ApiException as ContactApiException;\nuse HubSpot\\Client\\Crm\\Companies\\ApiException as CompanyApiException;\nuse HubSpot\\Client\\Crm\\Contacts\\Model\\SimplePublicObjectWithAssociations as ContactsWithAssociations;\nuse HubSpot\\Client\\Crm\\Companies\\Model\\SimplePublicObjectWithAssociations as CompaniesWithAssociations;\nuse HubSpot\\Client\\Crm\\Deals\\Model\\SimplePublicObjectWithAssociations as DealWithAssociations;\nuse HubSpot\\Client\\Crm\\Objects\\Model\\SimplePublicObjectInput;\nuse HubSpot\\Client\\Crm\\Objects\\Model\\SimplePublicObjectWithAssociations as ObjectWithAssociations;\nuse HubSpot\\Client\\Crm\\Pipelines\\Model\\Error;\nuse HubSpot\\Client\\Crm\\Pipelines\\Model\\PipelineStage;\nuse HubSpot\\Client\\Crm\\Properties\\Model\\Property;\nuse HubSpot\\Discovery\\Discovery;\nuse Jiminny\\Component\\Utility\\Service\\ProviderRateLimiter;\nuse Jiminny\\Exceptions\\CrmException;\nuse Jiminny\\Exceptions\\RateLimitException;\nuse Jiminny\\Exceptions\\SocialAccountTokenInvalidException;\nuse Jiminny\\Jobs\\Crm\\NoteObject;\nuse Jiminny\\Models\\Crm\\Field;\nuse Jiminny\\Services\\Crm\\BaseClient;\nuse Jiminny\\Services\\Crm\\Hubspot\\DTO\\Response\\Owner;\nuse Jiminny\\Services\\SocialAccountService;\nuse SevenShores\\Hubspot\\Exceptions\\BadRequest;\nuse SevenShores\\Hubspot\\Exceptions\\HubspotException;\nuse SevenShores\\Hubspot\\Factory;\nuse SevenShores\\Hubspot\\Http\\Response;\nuse Jiminny\\Services\\Crm\\Hubspot\\Pagination\\HubspotPaginationService;\nuse Throwable;\n\n/**\n * @phpstan-type CrmFieldOption array{id:string, label:string, value?:string}\n */\nclass Client extends BaseClient implements HubspotClientInterface\n{\n public const string MIN_API_VERSION = '2';\n\n public const string BASE_URL = 'https://api.hubapi.com';\n\n public const int ASSOCIATIONS_BATCH_SIZE_LIMIT = 1000;\n\n private HubspotPaginationService $paginationService;\n private HubspotTokenManager $tokenManager;\n private ProviderRateLimiter $rateLimiter;\n\n public function __construct(\n SocialAccountService $socialAccountService,\n HubspotPaginationService $paginationService,\n HubspotTokenManager $tokenManager,\n ProviderRateLimiter $rateLimiter,\n ) {\n parent::__construct($socialAccountService);\n $this->paginationService = $paginationService;\n $this->tokenManager = $tokenManager;\n $this->rateLimiter = $rateLimiter;\n\n $this->setBaseUrl(self::BASE_URL);\n $this->setVersion(self::MIN_API_VERSION);\n }\n\n /**\n * Single entry point for every HubSpot API call. Enforces the per-portal\n * rate limit configured in the rate_limits table (morphed to the current\n * Configuration) and reacts to a real 429 from HubSpot by translating it\n * into a RateLimitException carrying Retry-After.\n *\n * Wrap any outbound HubSpot call (SDK or raw HTTP) like:\n *\n * $this->executeRequest(fn () => $this->getNewInstance()->crm()->...);\n *\n * @template T\n * @param callable(): T $apiCall\n * @return T\n *\n * @throws RateLimitException\n */\n private function executeRequest(callable $apiCall)\n {\n if (! $this->rateLimiter->canMakeRequest($this->config)) {\n $retryAfter = $this->rateLimiter->requestAvailableIn($this->config);\n\n $this->log->warning('[Hubspot] Rate limit exceeded, deferring request', [\n 'team_id' => $this->config->team_id,\n 'config_id' => $this->config->getId(),\n 'retry_after' => $retryAfter,\n ]);\n\n throw new RateLimitException(\n 'Hubspot rate limit reached for configuration ' . $this->config->getId(),\n $retryAfter,\n );\n }\n\n $this->rateLimiter->incrementRequestCount($this->config);\n\n try {\n return $apiCall();\n } catch (Throwable $e) {\n if ($this->isHubspotRateLimit($e)) {\n $retryAfter = $this->parseRetryAfter($e);\n\n $this->log->warning('[Hubspot] Received 429 from API', [\n 'team_id' => $this->config->team_id,\n 'config_id' => $this->config->getId(),\n 'retry_after' => $retryAfter,\n 'reason' => $e->getMessage(),\n ]);\n\n throw new RateLimitException('Hubspot returned 429', $retryAfter, $e);\n }\n\n throw $e;\n }\n }\n\n private function isHubspotRateLimit(Throwable $e): bool\n {\n return method_exists($e, 'getCode') && (int) $e->getCode() === 429;\n }\n\n private function parseRetryAfter(Throwable $e): int\n {\n if (method_exists($e, 'getResponseHeaders')) {\n $headers = $e->getResponseHeaders() ?: [];\n $value = $headers['Retry-After'] ?? $headers['retry-after'] ?? null;\n if (is_array($value)) {\n $value = $value[0] ?? null;\n }\n if (is_numeric($value)) {\n return (int) $value;\n }\n }\n\n return 10;\n }\n\n public function getMinimumApiVersion(): string\n {\n return self::MIN_API_VERSION;\n }\n\n public function getInstance(): Factory\n {\n return new Factory([\n 'key' => $this->accessToken,\n 'oauth2' => true,\n 'base_url' => $this->baseUrl,\n ]);\n }\n\n public function getNewInstance(): Discovery\n {\n return \\HubSpot\\Factory::createWithAccessToken($this->accessToken);\n }\n\n /**\n * Secondly and daily limits for Hubspot API\n *\n * Product Tier: Free & Starter | Professional & Enterprise | API add-on (any tier)\n * Burst: 100/10 seconds | 150/10 seconds | 200/10 seconds\n * Daily: 250,000 | 500,000 | 1,000,000\n *\n * Official documentation states: The search endpoints are rate limited to five requests per second.\n * Since with 5 RPS were still hitting secondly rate limits we lowered it to 4\n */\n public function getPaginatedData(array $payload, string $type, int $offset = 0): array\n {\n $total = 0;\n $lastId = null;\n $rows = [];\n foreach ($this->getPaginatedDataGenerator($payload, $type, $offset, $total, $lastId) as $row) {\n $rows[] = $row;\n }\n\n return ['results' => $rows, 'total' => $total, 'last_record' => $lastId];\n }\n\n /**\n * @throws HubspotException\n * @throws SocialAccountTokenInvalidException\n * @throws BadRequest\n */\n public function getPaginatedDataGenerator(\n array $payload,\n string $type,\n int $offset = 0,\n int &$total = 0,\n ?string &$lastRecordId = null\n ): \\Generator {\n return $this->paginationService->getPaginatedDataGenerator(\n $this,\n $payload,\n $type,\n $offset,\n $total,\n $lastRecordId\n );\n }\n\n /**\n * @throws DealApiException\n * @throws CrmException\n */\n public function getOpportunityById(string $crmId, array $fields): array\n {\n try {\n $deal = $this->executeRequest(fn () => $this->getNewInstance()->crm()->deals()->basicApi()->getById(\n $crmId,\n implode(',', $fields),\n 'companies,contacts'\n ));\n } catch (DealApiException $e) {\n $this->log->info('[Hubspot] Failed to fetch opportunity', [\n 'crm_id' => $crmId,\n 'reason' => $e->getMessage(),\n ]);\n\n throw $e;\n }\n\n if (! $deal instanceof DealWithAssociations) {\n throw new CrmException('Deal not found');\n }\n\n return [\n 'id' => $deal->getId(),\n 'properties' => $deal->getProperties(),\n 'associations' => $deal->getAssociations(),\n ];\n }\n\n /**\n * Generic batch read method for HubSpot objects\n *\n * @param string $objectType The object type ('deals', 'companies', 'contacts')\n * @param array<string> $crmIds Array of HubSpot object IDs (max 100)\n * @param array<string> $fields Array of property names to fetch\n *\n * @return array<string, array> Array keyed by CRM ID with object data\n */\n private function batchReadObjects(string $objectType, array $crmIds, array $fields): array\n {\n if (empty($crmIds)) {\n return [];\n }\n\n $this->validateBatchSize($objectType, $crmIds);\n $this->ensureValidToken();\n\n try {\n $batchConfig = $this->createBatchConfiguration($objectType);\n $batchReadRequest = $this->prepareBatchRequest($batchConfig, $crmIds, $fields);\n $response = $batchConfig['api']->read($batchReadRequest);\n\n $this->validateApiResponse($response, $objectType);\n\n $results = $this->processApiResults($response);\n $this->logBatchResults($objectType, $crmIds, $results);\n\n return $results;\n } catch (\\Throwable $e) {\n $this->handleBatchError($e, $objectType, $crmIds);\n }\n }\n\n private function validateBatchSize(string $objectType, array $crmIds): void\n {\n if (count($crmIds) > 100) {\n throw new \\InvalidArgumentException(\"Batch size cannot exceed 100 {$objectType}\");\n }\n }\n\n private function createBatchConfiguration(string $objectType): array\n {\n $configurations = [\n 'deals' => [\n 'batchReadRequest' => new \\HubSpot\\Client\\Crm\\Deals\\Model\\BatchReadInputSimplePublicObjectId(),\n 'inputClass' => \\HubSpot\\Client\\Crm\\Deals\\Model\\SimplePublicObjectId::class,\n 'api' => $this->getNewInstance()->crm()->deals()->batchApi(),\n ],\n 'companies' => [\n 'batchReadRequest' => new \\HubSpot\\Client\\Crm\\Companies\\Model\\BatchReadInputSimplePublicObjectId(),\n 'inputClass' => \\HubSpot\\Client\\Crm\\Companies\\Model\\SimplePublicObjectId::class,\n 'api' => $this->getNewInstance()->crm()->companies()->batchApi(),\n ],\n 'contacts' => [\n 'batchReadRequest' => new \\HubSpot\\Client\\Crm\\Contacts\\Model\\BatchReadInputSimplePublicObjectId(),\n 'inputClass' => \\HubSpot\\Client\\Crm\\Contacts\\Model\\SimplePublicObjectId::class,\n 'api' => $this->getNewInstance()->crm()->contacts()->batchApi(),\n ],\n ];\n\n if (! isset($configurations[$objectType])) {\n throw new \\InvalidArgumentException(\"Unsupported object type: {$objectType}\");\n }\n\n return $configurations[$objectType];\n }\n\n private function prepareBatchRequest(array $batchConfig, array $crmIds, array $fields): object\n {\n $batchReadRequest = $batchConfig['batchReadRequest'];\n $inputClass = $batchConfig['inputClass'];\n\n $inputs = array_map(function ($crmId) use ($inputClass) {\n $input = new $inputClass();\n $input->setId($crmId);\n\n return $input;\n }, $crmIds);\n\n $batchReadRequest->setInputs($inputs);\n $batchReadRequest->setProperties($fields);\n\n return $batchReadRequest;\n }\n\n private function validateApiResponse($response, string $objectType): void\n {\n if (! $response) {\n throw new CrmException(\"HubSpot API returned null response for {$objectType} batch read\");\n }\n }\n\n private function processApiResults($response): array\n {\n $results = [];\n $responseResults = $response->getResults();\n\n if ($responseResults) {\n foreach ($responseResults as $object) {\n if ($object && $object->getId()) {\n $results[$object->getId()] = [\n 'id' => $object->getId(),\n 'properties' => $object->getProperties() ?: [],\n ];\n }\n }\n }\n\n return $results;\n }\n\n private function logBatchResults(string $objectType, array $crmIds, array $results): void\n {\n $this->log->info(\"[HubSpot] Batch fetched {$objectType}\", [\n 'requested_count' => count($crmIds),\n 'returned_count' => count($results),\n 'crm_ids' => $crmIds,\n ]);\n }\n\n private function handleBatchError(\\Throwable $e, string $objectType, array $crmIds): void\n {\n $errorMessage = $e->getMessage() ?: 'Unknown error';\n $errorTrace = $e->getTraceAsString() ?: 'No trace available';\n\n $this->log->error(\"[HubSpot] Failed to batch fetch {$objectType}\", [\n 'crm_ids' => $crmIds,\n 'error' => $errorMessage,\n 'trace' => $errorTrace,\n ]);\n\n throw new CrmException(\"Failed to batch fetch {$objectType}: \" . $errorMessage);\n }\n\n /**\n * Batch read multiple opportunities by their CRM IDs\n *\n * @param array<string> $crmIds Array of HubSpot deal IDs (max 100)\n * @param array<string> $fields Array of property names to fetch\n *\n * @return array<string, array> Array keyed by CRM ID with opportunity data\n */\n public function getOpportunitiesByIds(array $crmIds, array $fields): array\n {\n return $this->batchReadObjects('deals', $crmIds, $fields);\n }\n\n /**\n * Batch read multiple companies by their CRM IDs\n *\n * @param array<string> $crmIds Array of HubSpot company IDs (max 100)\n * @param array<string> $fields Array of property names to fetch\n *\n * @return array<string, array> Array keyed by CRM ID with company data\n */\n public function getCompaniesByIds(array $crmIds, array $fields): array\n {\n return $this->batchReadObjects('companies', $crmIds, $fields);\n }\n\n /**\n * Batch read multiple contacts by their CRM IDs\n *\n * @param array<string> $crmIds Array of HubSpot contact IDs (max 100)\n * @param array<string> $fields Array of property names to fetch\n *\n * @return array<string, array> Array keyed by CRM ID with contact data\n */\n public function getContactsByIds(array $crmIds, array $fields): array\n {\n return $this->batchReadObjects('contacts', $crmIds, $fields);\n }\n\n /**\n * @throws CompanyApiException\n * @throws CrmException\n */\n public function getAccountById(string $crmId, array $fields): array\n {\n try {\n $company = $this->getNewInstance()->crm()->companies()->basicApi()->getById(\n $crmId,\n implode(',', $fields),\n );\n } catch (CompanyApiException $e) {\n $this->log->info('[Hubspot] Failed to fetch account', [\n 'crm_id' => $crmId,\n 'reason' => $e->getMessage(),\n ]);\n\n throw $e;\n }\n\n if (! $company instanceof CompaniesWithAssociations) {\n throw new CrmException('Account not found');\n }\n\n return [\n 'id' => $company->getId(),\n 'properties' => $company->getProperties(),\n ];\n }\n\n /**\n * @throws ContactApiException\n * @throws CrmException\n */\n public function getContactById(string $crmId, array $fields): array\n {\n try {\n $contact = $this->getNewInstance()->crm()->contacts()->basicApi()->getById(\n $crmId,\n implode(',', $fields)\n );\n } catch (ContactApiException $e) {\n $this->log->info('[Hubspot] Failed to fetch contact', [\n 'crm_id' => $crmId,\n 'reason' => $e->getMessage(),\n ]);\n\n throw $e;\n }\n\n if (! $contact instanceof ContactsWithAssociations) {\n throw new CrmException('Contact not found');\n }\n\n return [\n 'id' => $contact->getId(),\n 'properties' => $contact->getProperties(),\n ];\n }\n\n /**\n * This is email search request that Hubspot offers as GET (more generous quota)\n */\n public function getContactByEmail(string $email, array $fields = []): array\n {\n try {\n $contact = $this->getNewInstance()->crm()->contacts()->basicApi()->getById(\n $email,\n implode(',', $fields),\n null,\n false,\n 'email'\n );\n\n return [\n 'id' => $contact->getId(),\n 'properties' => $contact->getProperties(),\n ];\n } catch (ContactApiException $e) {\n $this->log->info('[Hubspot] Failed to fetch contact', [\n 'email' => $email,\n 'reason' => $e->getMessage(),\n ]);\n\n return [];\n }\n }\n\n /**\n * @throws CrmException\n */\n public function fetchProperty(string $objectType, string $propertyId): Property\n {\n $result = $this->getNewInstance()->crm()->properties()->coreApi()->getByName($objectType, $propertyId);\n\n if (! $result instanceof Property) {\n $this->log->error('[Hubspot] Failed to fetch property', [\n 'object_type' => $objectType,\n 'property_id' => $propertyId,\n 'reason' => $result->getMessage(),\n ]);\n\n throw new CrmException('Failed to fetch property');\n }\n\n return $result;\n }\n\n /**\n * @return array<CrmFieldOption>\n */\n public function fetchPropertyOptions(string $objectType, string $propertyId): array\n {\n /** @var array<CrmFieldOption> */\n return $this->fetchProperty($objectType, $propertyId)->getOptions();\n }\n\n /**\n * @return array<array{id:string, label:string, deleted:bool}>\n */\n public function fetchCallDispositions(): array\n {\n /** @var Response $response */\n $response = $this->getInstance()->engagements()->getCallDispositions();\n\n /**\n * @var array<array{\n * id:string,\n * label:string,\n * deleted: bool\n * }>\n */\n return $response->toArray();\n }\n\n /**\n * @return array<CrmFieldOption>\n */\n public function fetchOpportunityPipelineStages(): array\n {\n $stages = [];\n $apiResponse = $this->getNewInstance()->crm()->pipelines()->pipelinesApi()->getAll('deals');\n\n if ($apiResponse instanceof Error) {\n $this->log->error('[Hubspot] Failed to fetch opportunity pipelines', [\n 'reason' => $apiResponse->getMessage(),\n ]);\n\n return [];\n }\n\n foreach ($apiResponse->getResults() as $pipeline) {\n $pipelineStages = array_map(\n static function (PipelineStage $stage) {\n return [\n 'id' => $stage->getId(),\n 'label' => $stage->getLabel(),\n ];\n },\n $pipeline->getStages()\n );\n\n $stages = array_merge($stages, $pipelineStages);\n }\n\n return $stages;\n }\n\n public function fetchOpportunityPipelines(): array\n {\n $pipelines = [];\n\n try {\n $apiResponse = $this->makeRequest('/crm/v3/pipelines/deals');\n } catch (\\Exception $e) {\n $this->log->info('[Hubspot] Failed to fetch opportunity pipelines', [\n 'reason' => $e->getMessage(),\n ]);\n\n return [];\n }\n\n $response = $apiResponse->toArray();\n\n foreach ($response['results'] as $pipeline) {\n $pipelines[] = [\n 'id' => $pipeline['id'],\n 'label' => $pipeline['label'],\n ];\n }\n\n return $pipelines;\n }\n\n /**\n * @return array<CrmFieldOption>\n */\n public function fetchMeetingOutcomeFieldOptions(Field $field): array\n {\n return $field->getCrmProviderId() === 'meetingOutcome'\n ? $this->fetchMeetingOutcomeTypes()\n : $this->fetchCallActivityTypes();\n }\n\n public function fetchMeetingOutcomeTypes(): array\n {\n return $this->extractMeetingTypeOptions(\n 'https://api.hubapi.com/crm/v3/properties/meeting/hs_meeting_outcome'\n );\n }\n\n public function fetchCallActivityTypes(): array\n {\n return $this->extractMeetingTypeOptions(\n 'https://api.hubapi.com/crm/v3/properties/call/hs_activity_type'\n );\n }\n\n private function extractMeetingTypeOptions(string $endpoint): array\n {\n /** @var Response $response */\n $response = $this->getInstance()\n ->getClient()\n ->request('GET', $endpoint);\n\n /**\n * @var array<array{\n * value: string,\n * label: string,\n * displayOrder: int\n * }> $optionData\n */\n $optionData = $response->toArray()['options'] ?? [];\n\n $options = [];\n foreach ($optionData as $item) {\n $options[] = [\n 'id' => $item['value'],\n 'value' => $item['value'],\n 'label' => $item['label'],\n 'display_order' => $item['displayOrder'],\n ];\n }\n\n return $options;\n }\n\n /**\n * @return array<CrmFieldOption>\n */\n public function fetchDispositionFieldOptions(): array\n {\n $options = [];\n\n $dispositions = $this->fetchCallDispositions();\n\n foreach ($dispositions as $disposition) {\n if ($disposition['deleted'] !== false) {\n continue;\n }\n\n $option['value'] = $disposition['id'];\n $option['id'] = $disposition['id'];\n $option['label'] = $disposition['label'];\n\n $options[] = $option;\n }\n\n return $options;\n }\n\n /**\n * @return array<CrmFieldOption>\n */\n public function fetchOpportunityFieldOptions(Field $field): array\n {\n if ($field->isStageField()) {\n return $this->fetchOpportunityPipelineStages();\n }\n\n if ($field->isPipelineField()) {\n return $this->fetchOpportunityPipelines();\n }\n\n return $this->fetchPropertyOptions('deals', $field->getCrmProviderId());\n }\n\n /**\n * @throws BadRequest\n * @throws HubspotException\n */\n public function makeRequest(string $endpoint, $method = 'GET', $payload = [], ?string $queryString = null)\n {\n $endpoint = self::BASE_URL . $endpoint;\n\n if ($method === 'GET') {\n $response = $this->getInstance()->getClient()?->request(\n method: $method,\n endpoint: $endpoint,\n query_string: $queryString\n );\n } else {\n $response = $this->getInstance()->getClient()->request($method, $endpoint, [\n 'json' => ($payload),\n ]);\n }\n\n $max = $response->getHeaderLine('X-HubSpot-RateLimit-Max'); // \"110\"\n $remaining = $response->getHeaderLine('X-HubSpot-RateLimit-Remaining'); // \"109\"\n $interval = $response->getHeaderLine('X-HubSpot-RateLimit-Interval-Milliseconds'); // \"10000\"\n $body = json_decode((string) $response->getBody(), true);\n\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$max ' . PHP_EOL . print_r($max, true));\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$remaining ' . PHP_EOL . print_r($remaining, true));\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$interval ' . PHP_EOL . print_r($interval, true));\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$body ' . PHP_EOL . print_r($body, true));\n\n return $response;\n }\n\n /**\n * @throws BadRequest\n * @throws HubspotException\n */\n public function createMeeting(array $payload): Response\n {\n $endpoint = '/crm/v3/objects/meetings';\n\n return $this->makeRequest($endpoint, 'POST', $payload);\n }\n\n /**\n * @throws BadRequest\n * @throws HubspotException\n */\n public function updateMeeting(string $meetingId, array $payload): Response\n {\n $endpoint = '/crm/v3/objects/meetings/' . $meetingId;\n\n return $this->makeRequest($endpoint, 'PATCH', $payload);\n }\n\n /**\n * @throws \\Exception\n */\n public function createNote(\n string $body,\n string $ownerId,\n int $timestamp,\n string $objectId,\n NoteObject $noteObject\n ): ?string {\n try {\n $noteInput = new SimplePublicObjectInput([\n 'properties' => [\n 'hs_note_body' => $body,\n 'hubspot_owner_id' => $ownerId,\n 'hs_timestamp' => $timestamp,\n ],\n ]);\n\n // Create note\n $note = $this->getNewInstance()->crm()->objects()->basicApi()->create('note', $noteInput);\n\n $this->getNewInstance()->crm()->objects()->associationsApi()->create(\n 'note',\n $note->getId(),\n $this->getNoteObject($noteObject),\n $objectId,\n $this->getNoteAssociationType($noteObject),\n );\n\n return $note->getId();\n } catch (\\Exception $e) {\n $this->log->error('[Hubspot] Failed to create note', [\n 'objectId' => $objectId,\n 'noteObject' => $noteObject->getObjectType(),\n 'reason' => $e->getMessage(),\n ]);\n\n \\Sentry::captureException($e);\n }\n\n return null;\n }\n\n public function updateEngagement(string $objectId, array $engagement, array $metadata): void\n {\n $this->getInstance()->engagements()->update($objectId, $engagement, $metadata);\n }\n\n public function getEngagementData(string $engagementId): array\n {\n $engagement = $this->getInstance()->engagements()->get($engagementId);\n\n return $engagement->toArray();\n }\n\n public function createEngagement(array $engagement, array $associations, array $metadata): Response\n {\n return $this->getInstance()\n ->engagements()\n ->create($engagement, $associations, $metadata);\n }\n\n public function isUnauthorizedException(\\Exception $e): bool\n {\n // Check for specific HubSpot API exception types first\n if ($e instanceof BadRequest) {\n // BadRequest can contain 401 status codes\n return $e->getCode() === 401;\n }\n\n // Check for HTTP client exceptions with status codes\n if ($e instanceof \\GuzzleHttp\\Exception\\RequestException && $e->hasResponse()) {\n $response = $e->getResponse();\n if ($response !== null) {\n return $response->getStatusCode() === 401;\n }\n }\n\n // Check for Guzzle HTTP exceptions\n if ($e instanceof \\GuzzleHttp\\Exception\\ClientException) {\n return $e->getCode() === 401;\n }\n\n // Fallback to string matching as last resort, but be more specific\n $message = strtolower($e->getMessage());\n\n return str_contains($message, '401 unauthorized') ||\n str_contains($message, 'http 401') ||\n str_contains($message, 'status code 401') ||\n (preg_match('/\\b401\\b/', $message) && str_contains($message, 'unauthorized'));\n }\n\n /**\n * Validates and refreshes the access token if needed before API requests.\n * This ensures long-running processes don't fail due to token expiration.\n *\n * @throws SocialAccountTokenInvalidException\n */\n public function ensureValidToken(): void\n {\n if ($this->oauthAccount === null) {\n return;\n }\n\n $newToken = $this->tokenManager->ensureValidToken($this->oauthAccount);\n if ($newToken !== null) {\n $this->accessToken = $newToken;\n }\n }\n\n public function getConfig()\n {\n return $this->config;\n }\n\n // returns only active (archived=false)\n public function getOwners(): array\n {\n return $this->getNewInstance()->crm()->owners()->getAll();\n }\n\n /**\n * @param bool $archived\n *\n * @return array<Owner>|[]\n */\n public function getOwnersArchived(bool $archived = true): array\n {\n $endpoint = '/crm/v3/owners';\n $queryParams = [\n 'archived' => $archived ? 'true' : 'false',\n ];\n $queryString = http_build_query($queryParams);\n\n $owners = [];\n\n try {\n $response = $this->makeRequest(endpoint: $endpoint, queryString: $queryString);\n $responseData = $response?->toArray();\n\n foreach ($responseData['results'] as $result) {\n try {\n $owners[] = Owner::create($result);\n } catch (Throwable $e) {\n $this->log->error('[HubSpot] Failed to process owner data', [\n 'result' => $result,\n 'error' => $e->getMessage(),\n ]);\n\n continue;\n }\n }\n } catch (Throwable $e) {\n $this->log->error('HubSpot] Failed to fetch owners', [\n 'archived' => $archived,\n 'error' => $e->getMessage(),\n ]);\n\n return [];\n }\n\n return $owners;\n }\n\n public function getMeeting(string $engagementId): ObjectWithAssociations\n {\n return $this->getNewInstance()->crm()->objects()->basicApi()\n ->getById('meeting', $engagementId, null, 'contact,company,deal');\n }\n\n public function deleteEngagement(string $engagementId): void\n {\n $this->getInstance()->engagements()->delete((int) $engagementId);\n }\n\n public function getAssociationsData(array $ids, string $fromObject, string $toObject): array\n {\n $associationData = [];\n $idChunks = array_chunk($ids, self::ASSOCIATIONS_BATCH_SIZE_LIMIT);\n\n foreach ($idChunks as $idChunk) {\n try {\n $batchInput = new \\HubSpot\\Client\\Crm\\Associations\\Model\\BatchInputPublicObjectId();\n $batchInput->setInputs(array_map(function ($id) {\n $publicObjectId = new \\HubSpot\\Client\\Crm\\Associations\\Model\\PublicObjectId();\n $publicObjectId->setId($id);\n\n return $publicObjectId;\n }, $idChunk));\n\n $associatedObjectsData = $this\n ->getNewInstance()\n ->crm()\n ->associations()\n ->batchApi()\n ->read($fromObject, $toObject, $batchInput);\n\n if ($associatedObjectsData instanceof \\HubSpot\\Client\\Crm\\Associations\\Model\\BatchResponsePublicAssociationMulti) {\n foreach ($associatedObjectsData->getResults() as $association) {\n $from = $association->getFrom()->getId();\n $toAssociations = $association->getTo();\n\n if (! empty($toAssociations)) {\n $associationData[$from] = array_map(function ($item) {\n return $item->getId();\n }, $toAssociations);\n }\n }\n }\n } catch (\\Exception $e) {\n $this->log->error('[Hubspot] Failed to fetch associations', [\n 'from_object' => $fromObject,\n 'to_object' => $toObject,\n 'reason' => $e->getMessage(),\n ]);\n }\n }\n\n return $associationData;\n }\n\n /**\n * @throws \\Exception\n */\n private function getNoteAssociationType(NoteObject $noteObject): string\n {\n return match($noteObject) {\n NoteObject::Opportunity => 'note_to_deal',\n NoteObject::Lead, NoteObject::Contact => 'note_to_contact', // or 'note_to_lead' if your portal supports it\n NoteObject::Account => 'note_to_company',\n NoteObject::Call, NoteObject::Event => throw new \\Exception('Not supported'),\n };\n }\n\n /**\n * @throws \\Exception\n */\n private function getNoteObject(NoteObject $noteObject): string\n {\n return match($noteObject) {\n NoteObject::Opportunity => 'deal',\n NoteObject::Lead, NoteObject::Contact => 'contact',\n NoteObject::Account => 'company',\n NoteObject::Call, NoteObject::Event => throw new \\Exception('Not supported'),\n };\n }\n\n public function addAssociations(string $objectType, string $associationType, array $payload): Response\n {\n $endpoint = \"/crm/v4/associations/$objectType/$associationType/batch/create\";\n\n return $this->makeRequest($endpoint, 'POST', $payload);\n }\n\n public function removeAssociations(string $objectType, string $associationType, array $payload): Response\n {\n $endpoint = \"/crm/v4/associations/$objectType/$associationType/batch/archive\";\n\n return $this->makeRequest($endpoint, 'POST', $payload);\n }\n}","role_description":"text entry area","is_enabled":true,"is_focused":true,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Project","depth":3,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Project","depth":3,"bounds":{"left":0.011968086,"top":0.047885075,"width":0.024268618,"height":0.024740623},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"New File or Directory…","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Expand Selected","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Collapse All","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Options","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
-188086479456983350
|
6378757184196315236
|
visual_change
|
accessibility
|
NULL
|
Project: faVsco.js, menu
master, menu
Start Listen Project: faVsco.js, menu
master, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
Editor for custom.log
Sync Changes
Hide This Notification
Code changed:
Hide
2
60
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Services\Crm\Hubspot;
use HubSpot\Client\Crm\Deals\ApiException as DealApiException;
use HubSpot\Client\Crm\Contacts\ApiException as ContactApiException;
use HubSpot\Client\Crm\Companies\ApiException as CompanyApiException;
use HubSpot\Client\Crm\Contacts\Model\SimplePublicObjectWithAssociations as ContactsWithAssociations;
use HubSpot\Client\Crm\Companies\Model\SimplePublicObjectWithAssociations as CompaniesWithAssociations;
use HubSpot\Client\Crm\Deals\Model\SimplePublicObjectWithAssociations as DealWithAssociations;
use HubSpot\Client\Crm\Objects\Model\SimplePublicObjectInput;
use HubSpot\Client\Crm\Objects\Model\SimplePublicObjectWithAssociations as ObjectWithAssociations;
use HubSpot\Client\Crm\Pipelines\Model\Error;
use HubSpot\Client\Crm\Pipelines\Model\PipelineStage;
use HubSpot\Client\Crm\Properties\Model\Property;
use HubSpot\Discovery\Discovery;
use Jiminny\Component\Utility\Service\ProviderRateLimiter;
use Jiminny\Exceptions\CrmException;
use Jiminny\Exceptions\RateLimitException;
use Jiminny\Exceptions\SocialAccountTokenInvalidException;
use Jiminny\Jobs\Crm\NoteObject;
use Jiminny\Models\Crm\Field;
use Jiminny\Services\Crm\BaseClient;
use Jiminny\Services\Crm\Hubspot\DTO\Response\Owner;
use Jiminny\Services\SocialAccountService;
use SevenShores\Hubspot\Exceptions\BadRequest;
use SevenShores\Hubspot\Exceptions\HubspotException;
use SevenShores\Hubspot\Factory;
use SevenShores\Hubspot\Http\Response;
use Jiminny\Services\Crm\Hubspot\Pagination\HubspotPaginationService;
use Throwable;
/**
* @phpstan-type CrmFieldOption array{id:string, label:string, value?:string}
*/
class Client extends BaseClient implements HubspotClientInterface
{
public const string MIN_API_VERSION = '2';
public const string BASE_URL = '[URL_WITH_CREDENTIALS] T
* @param callable(): T $apiCall
* @return T
*
* @throws RateLimitException
*/
private function executeRequest(callable $apiCall)
{
if (! $this->rateLimiter->canMakeRequest($this->config)) {
$retryAfter = $this->rateLimiter->requestAvailableIn($this->config);
$this->log->warning('[Hubspot] Rate limit exceeded, deferring request', [
'team_id' => $this->config->team_id,
'config_id' => $this->config->getId(),
'retry_after' => $retryAfter,
]);
throw new RateLimitException(
'Hubspot rate limit reached for configuration ' . $this->config->getId(),
$retryAfter,
);
}
$this->rateLimiter->incrementRequestCount($this->config);
try {
return $apiCall();
} catch (Throwable $e) {
if ($this->isHubspotRateLimit($e)) {
$retryAfter = $this->parseRetryAfter($e);
$this->log->warning('[Hubspot] Received 429 from API', [
'team_id' => $this->config->team_id,
'config_id' => $this->config->getId(),
'retry_after' => $retryAfter,
'reason' => $e->getMessage(),
]);
throw new RateLimitException('Hubspot returned 429', $retryAfter, $e);
}
throw $e;
}
}
private function isHubspotRateLimit(Throwable $e): bool
{
return method_exists($e, 'getCode') && (int) $e->getCode() === 429;
}
private function parseRetryAfter(Throwable $e): int
{
if (method_exists($e, 'getResponseHeaders')) {
$headers = $e->getResponseHeaders() ?: [];
$value = $headers['Retry-After'] ?? $headers['retry-after'] ?? null;
if (is_array($value)) {
$value = $value[0] ?? null;
}
if (is_numeric($value)) {
return (int) $value;
}
}
return 10;
}
public function getMinimumApiVersion(): string
{
return self::MIN_API_VERSION;
}
public function getInstance(): Factory
{
return new Factory([
'key' => $this->accessToken,
'oauth2' => true,
'base_url' => $this->baseUrl,
]);
}
public function getNewInstance(): Discovery
{
return \HubSpot\Factory::createWithAccessToken($this->accessToken);
}
/**
* Secondly and daily limits for Hubspot API
*
* Product Tier: Free & Starter | Professional & Enterprise | API add-on (any tier)
* Burst: 100/10 seconds | 150/10 seconds | 200/10 seconds
* Daily: 250,000 | 500,000 | 1,000,000
*
* Official documentation states: The search endpoints are rate limited to five requests per second.
* Since with 5 RPS were still hitting secondly rate limits we lowered it to 4
*/
public function getPaginatedData(array $payload, string $type, int $offset = 0): array
{
$total = 0;
$lastId = null;
$rows = [];
foreach ($this->getPaginatedDataGenerator($payload, $type, $offset, $total, $lastId) as $row) {
$rows[] = $row;
}
return ['results' => $rows, 'total' => $total, 'last_record' => $lastId];
}
/**
* @throws HubspotException
* @throws SocialAccountTokenInvalidException
* @throws BadRequest
*/
public function getPaginatedDataGenerator(
array $payload,
string $type,
int $offset = 0,
int &$total = 0,
?string &$lastRecordId = null
): \Generator {
return $this->paginationService->getPaginatedDataGenerator(
$this,
$payload,
$type,
$offset,
$total,
$lastRecordId
);
}
/**
* @throws DealApiException
* @throws CrmException
*/
public function getOpportunityById(string $crmId, array $fields): array
{
try {
$deal = $this->executeRequest(fn () => $this->getNewInstance()->crm()->deals()->basicApi()->getById(
$crmId,
implode(',', $fields),
'companies,contacts'
));
} catch (DealApiException $e) {
$this->log->info('[Hubspot] Failed to fetch opportunity', [
'crm_id' => $crmId,
'reason' => $e->getMessage(),
]);
throw $e;
}
if (! $deal instanceof DealWithAssociations) {
throw new CrmException('Deal not found');
}
return [
'id' => $deal->getId(),
'properties' => $deal->getProperties(),
'associations' => $deal->getAssociations(),
];
}
/**
* Generic batch read method for HubSpot objects
*
* @param string $objectType The object type ('deals', 'companies', 'contacts')
* @param array<string> $crmIds Array of HubSpot object IDs (max 100)
* @param array<string> $fields Array of property names to fetch
*
* @return array<string, array> Array keyed by CRM ID with object data
*/
private function batchReadObjects(string $objectType, array $crmIds, array $fields): array
{
if (empty($crmIds)) {
return [];
}
$this->validateBatchSize($objectType, $crmIds);
$this->ensureValidToken();
try {
$batchConfig = $this->createBatchConfiguration($objectType);
$batchReadRequest = $this->prepareBatchRequest($batchConfig, $crmIds, $fields);
$response = $batchConfig['api']->read($batchReadRequest);
$this->validateApiResponse($response, $objectType);
$results = $this->processApiResults($response);
$this->logBatchResults($objectType, $crmIds, $results);
return $results;
} catch (\Throwable $e) {
$this->handleBatchError($e, $objectType, $crmIds);
}
}
private function validateBatchSize(string $objectType, array $crmIds): void
{
if (count($crmIds) > 100) {
throw new \InvalidArgumentException("Batch size cannot exceed 100 {$objectType}");
}
}
private function createBatchConfiguration(string $objectType): array
{
$configurations = [
'deals' => [
'batchReadRequest' => new \HubSpot\Client\Crm\Deals\Model\BatchReadInputSimplePublicObjectId(),
'inputClass' => \HubSpot\Client\Crm\Deals\Model\SimplePublicObjectId::class,
'api' => $this->getNewInstance()->crm()->deals()->batchApi(),
],
'companies' => [
'batchReadRequest' => new \HubSpot\Client\Crm\Companies\Model\BatchReadInputSimplePublicObjectId(),
'inputClass' => \HubSpot\Client\Crm\Companies\Model\SimplePublicObjectId::class,
'api' => $this->getNewInstance()->crm()->companies()->batchApi(),
],
'contacts' => [
'batchReadRequest' => new \HubSpot\Client\Crm\Contacts\Model\BatchReadInputSimplePublicObjectId(),
'inputClass' => \HubSpot\Client\Crm\Contacts\Model\SimplePublicObjectId::class,
'api' => $this->getNewInstance()->crm()->contacts()->batchApi(),
],
];
if (! isset($configurations[$objectType])) {
throw new \InvalidArgumentException("Unsupported object type: {$objectType}");
}
return $configurations[$objectType];
}
private function prepareBatchRequest(array $batchConfig, array $crmIds, array $fields): object
{
$batchReadRequest = $batchConfig['batchReadRequest'];
$inputClass = $batchConfig['inputClass'];
$inputs = array_map(function ($crmId) use ($inputClass) {
$input = new $inputClass();
$input->setId($crmId);
return $input;
}, $crmIds);
$batchReadRequest->setInputs($inputs);
$batchReadRequest->setProperties($fields);
return $batchReadRequest;
}
private function validateApiResponse($response, string $objectType): void
{
if (! $response) {
throw new CrmException("HubSpot API returned null response for {$objectType} batch read");
}
}
private function processApiResults($response): array
{
$results = [];
$responseResults = $response->getResults();
if ($responseResults) {
foreach ($responseResults as $object) {
if ($object && $object->getId()) {
$results[$object->getId()] = [
'id' => $object->getId(),
'properties' => $object->getProperties() ?: [],
];
}
}
}
return $results;
}
private function logBatchResults(string $objectType, array $crmIds, array $results): void
{
$this->log->info("[HubSpot] Batch fetched {$objectType}", [
'requested_count' => count($crmIds),
'returned_count' => count($results),
'crm_ids' => $crmIds,
]);
}
private function handleBatchError(\Throwable $e, string $objectType, array $crmIds): void
{
$errorMessage = $e->getMessage() ?: 'Unknown error';
$errorTrace = $e->getTraceAsString() ?: 'No trace available';
$this->log->error("[HubSpot] Failed to batch fetch {$objectType}", [
'crm_ids' => $crmIds,
'error' => $errorMessage,
'trace' => $errorTrace,
]);
throw new CrmException("Failed to batch fetch {$objectType}: " . $errorMessage);
}
/**
* Batch read multiple opportunities by their CRM IDs
*
* @param array<string> $crmIds Array of HubSpot deal IDs (max 100)
* @param array<string> $fields Array of property names to fetch
*
* @return array<string, array> Array keyed by CRM ID with opportunity data
*/
public function getOpportunitiesByIds(array $crmIds, array $fields): array
{
return $this->batchReadObjects('deals', $crmIds, $fields);
}
/**
* Batch read multiple companies by their CRM IDs
*
* @param array<string> $crmIds Array of HubSpot company IDs (max 100)
* @param array<string> $fields Array of property names to fetch
*
* @return array<string, array> Array keyed by CRM ID with company data
*/
public function getCompaniesByIds(array $crmIds, array $fields): array
{
return $this->batchReadObjects('companies', $crmIds, $fields);
}
/**
* Batch read multiple contacts by their CRM IDs
*
* @param array<string> $crmIds Array of HubSpot contact IDs (max 100)
* @param array<string> $fields Array of property names to fetch
*
* @return array<string, array> Array keyed by CRM ID with contact data
*/
public function getContactsByIds(array $crmIds, array $fields): array
{
return $this->batchReadObjects('contacts', $crmIds, $fields);
}
/**
* @throws CompanyApiException
* @throws CrmException
*/
public function getAccountById(string $crmId, array $fields): array
{
try {
$company = $this->getNewInstance()->crm()->companies()->basicApi()->getById(
$crmId,
implode(',', $fields),
);
} catch (CompanyApiException $e) {
$this->log->info('[Hubspot] Failed to fetch account', [
'crm_id' => $crmId,
'reason' => $e->getMessage(),
]);
throw $e;
}
if (! $company instanceof CompaniesWithAssociations) {
throw new CrmException('Account not found');
}
return [
'id' => $company->getId(),
'properties' => $company->getProperties(),
];
}
/**
* @throws ContactApiException
* @throws CrmException
*/
public function getContactById(string $crmId, array $fields): array
{
try {
$contact = $this->getNewInstance()->crm()->contacts()->basicApi()->getById(
$crmId,
implode(',', $fields)
);
} catch (ContactApiException $e) {
$this->log->info('[Hubspot] Failed to fetch contact', [
'crm_id' => $crmId,
'reason' => $e->getMessage(),
]);
throw $e;
}
if (! $contact instanceof ContactsWithAssociations) {
throw new CrmException('Contact not found');
}
return [
'id' => $contact->getId(),
'properties' => $contact->getProperties(),
];
}
/**
* This is email search request that Hubspot offers as GET (more generous quota)
*/
public function getContactByEmail(string $email, array $fields = []): array
{
try {
$contact = $this->getNewInstance()->crm()->contacts()->basicApi()->getById(
$email,
implode(',', $fields),
null,
false,
'email'
);
return [
'id' => $contact->getId(),
'properties' => $contact->getProperties(),
];
} catch (ContactApiException $e) {
$this->log->info('[Hubspot] Failed to fetch contact', [
'email' => $email,
'reason' => $e->getMessage(),
]);
return [];
}
}
/**
* @throws CrmException
*/
public function fetchProperty(string $objectType, string $propertyId): Property
{
$result = $this->getNewInstance()->crm()->properties()->coreApi()->getByName($objectType, $propertyId);
if (! $result instanceof Property) {
$this->log->error('[Hubspot] Failed to fetch property', [
'object_type' => $objectType,
'property_id' => $propertyId,
'reason' => $result->getMessage(),
]);
throw new CrmException('Failed to fetch property');
}
return $result;
}
/**
* @return array<CrmFieldOption>
*/
public function fetchPropertyOptions(string $objectType, string $propertyId): array
{
/** @var array<CrmFieldOption> */
return $this->fetchProperty($objectType, $propertyId)->getOptions();
}
/**
* @return array<array{id:string, label:string, deleted:bool}>
*/
public function fetchCallDispositions(): array
{
/** @var Response $response */
$response = $this->getInstance()->engagements()->getCallDispositions();
/**
* @var array<array{
* id:string,
* label:string,
* deleted: bool
* }>
*/
return $response->toArray();
}
/**
* @return array<CrmFieldOption>
*/
public function fetchOpportunityPipelineStages(): array
{
$stages = [];
$apiResponse = $this->getNewInstance()->crm()->pipelines()->pipelinesApi()->getAll('deals');
if ($apiResponse instanceof Error) {
$this->log->error('[Hubspot] Failed to fetch opportunity pipelines', [
'reason' => $apiResponse->getMessage(),
]);
return [];
}
foreach ($apiResponse->getResults() as $pipeline) {
$pipelineStages = array_map(
static function (PipelineStage $stage) {
return [
'id' => $stage->getId(),
'label' => $stage->getLabel(),
];
},
$pipeline->getStages()
);
$stages = array_merge($stages, $pipelineStages);
}
return $stages;
}
public function fetchOpportunityPipelines(): array
{
$pipelines = [];
try {
$apiResponse = $this->makeRequest('/crm/v3/pipelines/deals');
} catch (\Exception $e) {
$this->log->info('[Hubspot] Failed to fetch opportunity pipelines', [
'reason' => $e->getMessage(),
]);
return [];
}
$response = $apiResponse->toArray();
foreach ($response['results'] as $pipeline) {
$pipelines[] = [
'id' => $pipeline['id'],
'label' => $pipeline['label'],
];
}
return $pipelines;
}
/**
* @return array<CrmFieldOption>
*/
public function fetchMeetingOutcomeFieldOptions(Field $field): array
{
return $field->getCrmProviderId() === 'meetingOutcome'
? $this->fetchMeetingOutcomeTypes()
: $this->fetchCallActivityTypes();
}
public function fetchMeetingOutcomeTypes(): array
{
return $this->extractMeetingTypeOptions(
'[URL_WITH_CREDENTIALS] Response $response */
$response = $this->getInstance()
->getClient()
->request('GET', $endpoint);
/**
* @var array<array{
* value: string,
* label: string,
* displayOrder: int
* }> $optionData
*/
$optionData = $response->toArray()['options'] ?? [];
$options = [];
foreach ($optionData as $item) {
$options[] = [
'id' => $item['value'],
'value' => $item['value'],
'label' => $item['label'],
'display_order' => $item['displayOrder'],
];
}
return $options;
}
/**
* @return array<CrmFieldOption>
*/
public function fetchDispositionFieldOptions(): array
{
$options = [];
$dispositions = $this->fetchCallDispositions();
foreach ($dispositions as $disposition) {
if ($disposition['deleted'] !== false) {
continue;
}
$option['value'] = $disposition['id'];
$option['id'] = $disposition['id'];
$option['label'] = $disposition['label'];
$options[] = $option;
}
return $options;
}
/**
* @return array<CrmFieldOption>
*/
public function fetchOpportunityFieldOptions(Field $field): array
{
if ($field->isStageField()) {
return $this->fetchOpportunityPipelineStages();
}
if ($field->isPipelineField()) {
return $this->fetchOpportunityPipelines();
}
return $this->fetchPropertyOptions('deals', $field->getCrmProviderId());
}
/**
* @throws BadRequest
* @throws HubspotException
*/
public function makeRequest(string $endpoint, $method = 'GET', $payload = [], ?string $queryString = null)
{
$endpoint = self::BASE_URL . $endpoint;
if ($method === 'GET') {
$response = $this->getInstance()->getClient()?->request(
method: $method,
endpoint: $endpoint,
query_string: $queryString
);
} else {
$response = $this->getInstance()->getClient()->request($method, $endpoint, [
'json' => ($payload),
]);
}
$max = $response->getHeaderLine('X-HubSpot-RateLimit-Max'); // "110"
$remaining = $response->getHeaderLine('X-HubSpot-RateLimit-Remaining'); // "109"
$interval = $response->getHeaderLine('X-HubSpot-RateLimit-Interval-Milliseconds'); // "10000"
$body = json_decode((string) $response->getBody(), true);
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$max ' . PHP_EOL . print_r($max, true));
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$remaining ' . PHP_EOL . print_r($remaining, true));
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$interval ' . PHP_EOL . print_r($interval, true));
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$body ' . PHP_EOL . print_r($body, true));
return $response;
}
/**
* @throws BadRequest
* @throws HubspotException
*/
public function createMeeting(array $payload): Response
{
$endpoint = '/crm/v3/objects/meetings';
return $this->makeRequest($endpoint, 'POST', $payload);
}
/**
* @throws BadRequest
* @throws HubspotException
*/
public function updateMeeting(string $meetingId, array $payload): Response
{
$endpoint = '/crm/v3/objects/meetings/' . $meetingId;
return $this->makeRequest($endpoint, 'PATCH', $payload);
}
/**
* @throws \Exception
*/
public function createNote(
string $body,
string $ownerId,
int $timestamp,
string $objectId,
NoteObject $noteObject
): ?string {
try {
$noteInput = new SimplePublicObjectInput([
'properties' => [
'hs_note_body' => $body,
'hubspot_owner_id' => $ownerId,
'hs_timestamp' => $timestamp,
],
]);
// Create note
$note = $this->getNewInstance()->crm()->objects()->basicApi()->create('note', $noteInput);
$this->getNewInstance()->crm()->objects()->associationsApi()->create(
'note',
$note->getId(),
$this->getNoteObject($noteObject),
$objectId,
$this->getNoteAssociationType($noteObject),
);
return $note->getId();
} catch (\Exception $e) {
$this->log->error('[Hubspot] Failed to create note', [
'objectId' => $objectId,
'noteObject' => $noteObject->getObjectType(),
'reason' => $e->getMessage(),
]);
\Sentry::captureException($e);
}
return null;
}
public function updateEngagement(string $objectId, array $engagement, array $metadata): void
{
$this->getInstance()->engagements()->update($objectId, $engagement, $metadata);
}
public function getEngagementData(string $engagementId): array
{
$engagement = $this->getInstance()->engagements()->get($engagementId);
return $engagement->toArray();
}
public function createEngagement(array $engagement, array $associations, array $metadata): Response
{
return $this->getInstance()
->engagements()
->create($engagement, $associations, $metadata);
}
public function isUnauthorizedException(\Exception $e): bool
{
// Check for specific HubSpot API exception types first
if ($e instanceof BadRequest) {
// BadRequest can contain 401 status codes
return $e->getCode() === 401;
}
// Check for HTTP client exceptions with status codes
if ($e instanceof \GuzzleHttp\Exception\RequestException && $e->hasResponse()) {
$response = $e->getResponse();
if ($response !== null) {
return $response->getStatusCode() === 401;
}
}
// Check for Guzzle HTTP exceptions
if ($e instanceof \GuzzleHttp\Exception\ClientException) {
return $e->getCode() === 401;
}
// Fallback to string matching as last resort, but be more specific
$message = strtolower($e->getMessage());
return str_contains($message, '401 unauthorized') ||
str_contains($message, 'http 401') ||
str_contains($message, 'status code 401') ||
(preg_match('/\b401\b/', $message) && str_contains($message, 'unauthorized'));
}
/**
* Validates and refreshes the access token if needed before API requests.
* This ensures long-running processes don't fail due to token expiration.
*
* @throws SocialAccountTokenInvalidException
*/
public function ensureValidToken(): void
{
if ($this->oauthAccount === null) {
return;
}
$newToken = $this->tokenManager->ensureValidToken($this->oauthAccount);
if ($newToken !== null) {
$this->accessToken = $newToken;
}
}
public function getConfig()
{
return $this->config;
}
// returns only active (archived=false)
public function getOwners(): array
{
return $this->getNewInstance()->crm()->owners()->getAll();
}
/**
* @param bool $archived
*
* @return array<Owner>|[]
*/
public function getOwnersArchived(bool $archived = true): array
{
$endpoint = '/crm/v3/owners';
$queryParams = [
'archived' => $archived ? 'true' : 'false',
];
$queryString = http_build_query($queryParams);
$owners = [];
try {
$response = $this->makeRequest(endpoint: $endpoint, queryString: $queryString);
$responseData = $response?->toArray();
foreach ($responseData['results'] as $result) {
try {
$owners[] = Owner::create($result);
} catch (Throwable $e) {
$this->log->error('[HubSpot] Failed to process owner data', [
'result' => $result,
'error' => $e->getMessage(),
]);
continue;
}
}
} catch (Throwable $e) {
$this->log->error('HubSpot] Failed to fetch owners', [
'archived' => $archived,
'error' => $e->getMessage(),
]);
return [];
}
return $owners;
}
public function getMeeting(string $engagementId): ObjectWithAssociations
{
return $this->getNewInstance()->crm()->objects()->basicApi()
->getById('meeting', $engagementId, null, 'contact,company,deal');
}
public function deleteEngagement(string $engagementId): void
{
$this->getInstance()->engagements()->delete((int) $engagementId);
}
public function getAssociationsData(array $ids, string $fromObject, string $toObject): array
{
$associationData = [];
$idChunks = array_chunk($ids, self::ASSOCIATIONS_BATCH_SIZE_LIMIT);
foreach ($idChunks as $idChunk) {
try {
$batchInput = new \HubSpot\Client\Crm\Associations\Model\BatchInputPublicObjectId();
$batchInput->setInputs(array_map(function ($id) {
$publicObjectId = new \HubSpot\Client\Crm\Associations\Model\PublicObjectId();
$publicObjectId->setId($id);
return $publicObjectId;
}, $idChunk));
$associatedObjectsData = $this
->getNewInstance()
->crm()
->associations()
->batchApi()
->read($fromObject, $toObject, $batchInput);
if ($associatedObjectsData instanceof \HubSpot\Client\Crm\Associations\Model\BatchResponsePublicAssociationMulti) {
foreach ($associatedObjectsData->getResults() as $association) {
$from = $association->getFrom()->getId();
$toAssociations = $association->getTo();
if (! empty($toAssociations)) {
$associationData[$from] = array_map(function ($item) {
return $item->getId();
}, $toAssociations);
}
}
}
} catch (\Exception $e) {
$this->log->error('[Hubspot] Failed to fetch associations', [
'from_object' => $fromObject,
'to_object' => $toObject,
'reason' => $e->getMessage(),
]);
}
}
return $associationData;
}
/**
* @throws \Exception
*/
private function getNoteAssociationType(NoteObject $noteObject): string
{
return match($noteObject) {
NoteObject::Opportunity => 'note_to_deal',
NoteObject::Lead, NoteObject::Contact => 'note_to_contact', // or 'note_to_lead' if your portal supports it
NoteObject::Account => 'note_to_company',
NoteObject::Call, NoteObject::Event => throw new \Exception('Not supported'),
};
}
/**
* @throws \Exception
*/
private function getNoteObject(NoteObject $noteObject): string
{
return match($noteObject) {
NoteObject::Opportunity => 'deal',
NoteObject::Lead, NoteObject::Contact => 'contact',
NoteObject::Account => 'company',
NoteObject::Call, NoteObject::Event => throw new \Exception('Not supported'),
};
}
public function addAssociations(string $objectType, string $associationType, array $payload): Response
{
$endpoint = "/crm/v4/associations/$objectType/$associationType/batch/create";
return $this->makeRequest($endpoint, 'POST', $payload);
}
public function removeAssociations(string $objectType, string $associationType, array $payload): Response
{
$endpoint = "/crm/v4/associations/$objectType/$associationType/batch/archive";
return $this->makeRequest($endpoint, 'POST', $payload);
}
}
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
2871
|
NULL
|
0
|
2026-05-07T11:44:25.222220+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-07/1778 /Users/lukas/.screenpipe/data/data/2026-05-07/1778154265222_m1.jpg...
|
PhpStorm
|
faVsco.js – Hubspot/Client.php
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
master, menu
Start Listen Project: faVsco.js, menu
master, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
Editor for custom.log
Sync Changes
Hide This Notification
Code changed:
Hide
2
60
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Services\Crm\Hubspot;
use HubSpot\Client\Crm\Deals\ApiException as DealApiException;
use HubSpot\Client\Crm\Contacts\ApiException as ContactApiException;
use HubSpot\Client\Crm\Companies\ApiException as CompanyApiException;
use HubSpot\Client\Crm\Contacts\Model\SimplePublicObjectWithAssociations as ContactsWithAssociations;
use HubSpot\Client\Crm\Companies\Model\SimplePublicObjectWithAssociations as CompaniesWithAssociations;
use HubSpot\Client\Crm\Deals\Model\SimplePublicObjectWithAssociations as DealWithAssociations;
use HubSpot\Client\Crm\Objects\Model\SimplePublicObjectInput;
use HubSpot\Client\Crm\Objects\Model\SimplePublicObjectWithAssociations as ObjectWithAssociations;
use HubSpot\Client\Crm\Pipelines\Model\Error;
use HubSpot\Client\Crm\Pipelines\Model\PipelineStage;
use HubSpot\Client\Crm\Properties\Model\Property;
use HubSpot\Discovery\Discovery;
use Jiminny\Component\Utility\Service\ProviderRateLimiter;
use Jiminny\Exceptions\CrmException;
use Jiminny\Exceptions\RateLimitException;
use Jiminny\Exceptions\SocialAccountTokenInvalidException;
use Jiminny\Jobs\Crm\NoteObject;
use Jiminny\Models\Crm\Field;
use Jiminny\Services\Crm\BaseClient;
use Jiminny\Services\Crm\Hubspot\DTO\Response\Owner;
use Jiminny\Services\SocialAccountService;
use SevenShores\Hubspot\Exceptions\BadRequest;
use SevenShores\Hubspot\Exceptions\HubspotException;
use SevenShores\Hubspot\Factory;
use SevenShores\Hubspot\Http\Response;
use Jiminny\Services\Crm\Hubspot\Pagination\HubspotPaginationService;
use Throwable;
/**
* @phpstan-type CrmFieldOption array{id:string, label:string, value?:string}
*/
class Client extends BaseClient implements HubspotClientInterface
{
public const string MIN_API_VERSION = '2';
public const string BASE_URL = '[URL_WITH_CREDENTIALS] T
* @param callable(): T $apiCall
* @return T
*
* @throws RateLimitException
*/
private function executeRequest(callable $apiCall)
{
if (! $this->rateLimiter->canMakeRequest($this->config)) {
$retryAfter = $this->rateLimiter->requestAvailableIn($this->config);
$this->log->warning('[Hubspot] Rate limit exceeded, deferring request', [
'team_id' => $this->config->team_id,
'config_id' => $this->config->getId(),
'retry_after' => $retryAfter,
]);
throw new RateLimitException(
'Hubspot rate limit reached for configuration ' . $this->config->getId(),
$retryAfter,
);
}
$this->rateLimiter->incrementRequestCount($this->config);
try {
return $apiCall();
} catch (Throwable $e) {
if ($this->isHubspotRateLimit($e)) {
$retryAfter = $this->parseRetryAfter($e);
$this->log->warning('[Hubspot] Received 429 from API', [
'team_id' => $this->config->team_id,
'config_id' => $this->config->getId(),
'retry_after' => $retryAfter,
'reason' => $e->getMessage(),
]);
throw new RateLimitException('Hubspot returned 429', $retryAfter, $e);
}
throw $e;
}
}
private function isHubspotRateLimit(Throwable $e): bool
{
return method_exists($e, 'getCode') && (int) $e->getCode() === 429;
}
private function parseRetryAfter(Throwable $e): int
{
if (method_exists($e, 'getResponseHeaders')) {
$headers = $e->getResponseHeaders() ?: [];
$value = $headers['Retry-After'] ?? $headers['retry-after'] ?? null;
if (is_array($value)) {
$value = $value[0] ?? null;
}
if (is_numeric($value)) {
return (int) $value;
}
}
return 10;
}
public function getMinimumApiVersion(): string
{
return self::MIN_API_VERSION;
}
public function getInstance(): Factory
{
return new Factory([
'key' => $this->accessToken,
'oauth2' => true,
'base_url' => $this->baseUrl,
]);
}
public function getNewInstance(): Discovery
{
return \HubSpot\Factory::createWithAccessToken($this->accessToken);
}
/**
* Secondly and daily limits for Hubspot API
*
* Product Tier: Free & Starter | Professional & Enterprise | API add-on (any tier)
* Burst: 100/10 seconds | 150/10 seconds | 200/10 seconds
* Daily: 250,000 | 500,000 | 1,000,000
*
* Official documentation states: The search endpoints are rate limited to five requests per second.
* Since with 5 RPS were still hitting secondly rate limits we lowered it to 4
*/
public function getPaginatedData(array $payload, string $type, int $offset = 0): array
{
$total = 0;
$lastId = null;
$rows = [];
foreach ($this->getPaginatedDataGenerator($payload, $type, $offset, $total, $lastId) as $row) {
$rows[] = $row;
}
return ['results' => $rows, 'total' => $total, 'last_record' => $lastId];
}
/**
* @throws HubspotException
* @throws SocialAccountTokenInvalidException
* @throws BadRequest
*/
public function getPaginatedDataGenerator(
array $payload,
string $type,
int $offset = 0,
int &$total = 0,
?string &$lastRecordId = null
): \Generator {
return $this->paginationService->getPaginatedDataGenerator(
$this,
$payload,
$type,
$offset,
$total,
$lastRecordId
);
}
/**
* @throws DealApiException
* @throws CrmException
*/
public function getOpportunityById(string $crmId, array $fields): array
{
try {
$deal = $this->executeRequest(fn () => $this->getNewInstance()->crm()->deals()->basicApi()->getById(
$crmId,
implode(',', $fields),
'companies,contacts'
));
} catch (DealApiException $e) {
$this->log->info('[Hubspot] Failed to fetch opportunity', [
'crm_id' => $crmId,
'reason' => $e->getMessage(),
]);
throw $e;
}
if (! $deal instanceof DealWithAssociations) {
throw new CrmException('Deal not found');
}
return [
'id' => $deal->getId(),
'properties' => $deal->getProperties(),
'associations' => $deal->getAssociations(),
];
}
/**
* Generic batch read method for HubSpot objects
*
* @param string $objectType The object type ('deals', 'companies', 'contacts')
* @param array<string> $crmIds Array of HubSpot object IDs (max 100)
* @param array<string> $fields Array of property names to fetch
*
* @return array<string, array> Array keyed by CRM ID with object data
*/
private function batchReadObjects(string $objectType, array $crmIds, array $fields): array
{
if (empty($crmIds)) {
return [];
}
$this->validateBatchSize($objectType, $crmIds);
$this->ensureValidToken();
try {
$batchConfig = $this->createBatchConfiguration($objectType);
$batchReadRequest = $this->prepareBatchRequest($batchConfig, $crmIds, $fields);
$response = $batchConfig['api']->read($batchReadRequest);
$this->validateApiResponse($response, $objectType);
$results = $this->processApiResults($response);
$this->logBatchResults($objectType, $crmIds, $results);
return $results;
} catch (\Throwable $e) {
$this->handleBatchError($e, $objectType, $crmIds);
}
}
private function validateBatchSize(string $objectType, array $crmIds): void
{
if (count($crmIds) > 100) {
throw new \InvalidArgumentException("Batch size cannot exceed 100 {$objectType}");
}
}
private function createBatchConfiguration(string $objectType): array
{
$configurations = [
'deals' => [
'batchReadRequest' => new \HubSpot\Client\Crm\Deals\Model\BatchReadInputSimplePublicObjectId(),
'inputClass' => \HubSpot\Client\Crm\Deals\Model\SimplePublicObjectId::class,
'api' => $this->getNewInstance()->crm()->deals()->batchApi(),
],
'companies' => [
'batchReadRequest' => new \HubSpot\Client\Crm\Companies\Model\BatchReadInputSimplePublicObjectId(),
'inputClass' => \HubSpot\Client\Crm\Companies\Model\SimplePublicObjectId::class,
'api' => $this->getNewInstance()->crm()->companies()->batchApi(),
],
'contacts' => [
'batchReadRequest' => new \HubSpot\Client\Crm\Contacts\Model\BatchReadInputSimplePublicObjectId(),
'inputClass' => \HubSpot\Client\Crm\Contacts\Model\SimplePublicObjectId::class,
'api' => $this->getNewInstance()->crm()->contacts()->batchApi(),
],
];
if (! isset($configurations[$objectType])) {
throw new \InvalidArgumentException("Unsupported object type: {$objectType}");
}
return $configurations[$objectType];
}
private function prepareBatchRequest(array $batchConfig, array $crmIds, array $fields): object
{
$batchReadRequest = $batchConfig['batchReadRequest'];
$inputClass = $batchConfig['inputClass'];
$inputs = array_map(function ($crmId) use ($inputClass) {
$input = new $inputClass();
$input->setId($crmId);
return $input;
}, $crmIds);
$batchReadRequest->setInputs($inputs);
$batchReadRequest->setProperties($fields);
return $batchReadRequest;
}
private function validateApiResponse($response, string $objectType): void
{
if (! $response) {
throw new CrmException("HubSpot API returned null response for {$objectType} batch read");
}
}
private function processApiResults($response): array
{
$results = [];
$responseResults = $response->getResults();
if ($responseResults) {
foreach ($responseResults as $object) {
if ($object && $object->getId()) {
$results[$object->getId()] = [
'id' => $object->getId(),
'properties' => $object->getProperties() ?: [],
];
}
}
}
return $results;
}
private function logBatchResults(string $objectType, array $crmIds, array $results): void
{
$this->log->info("[HubSpot] Batch fetched {$objectType}", [
'requested_count' => count($crmIds),
'returned_count' => count($results),
'crm_ids' => $crmIds,
]);
}
private function handleBatchError(\Throwable $e, string $objectType, array $crmIds): void
{
$errorMessage = $e->getMessage() ?: 'Unknown error';
$errorTrace = $e->getTraceAsString() ?: 'No trace available';
$this->log->error("[HubSpot] Failed to batch fetch {$objectType}", [
'crm_ids' => $crmIds,
'error' => $errorMessage,
'trace' => $errorTrace,
]);
throw new CrmException("Failed to batch fetch {$objectType}: " . $errorMessage);
}
/**
* Batch read multiple opportunities by their CRM IDs
*
* @param array<string> $crmIds Array of HubSpot deal IDs (max 100)
* @param array<string> $fields Array of property names to fetch
*
* @return array<string, array> Array keyed by CRM ID with opportunity data
*/
public function getOpportunitiesByIds(array $crmIds, array $fields): array
{
return $this->batchReadObjects('deals', $crmIds, $fields);
}
/**
* Batch read multiple companies by their CRM IDs
*
* @param array<string> $crmIds Array of HubSpot company IDs (max 100)
* @param array<string> $fields Array of property names to fetch
*
* @return array<string, array> Array keyed by CRM ID with company data
*/
public function getCompaniesByIds(array $crmIds, array $fields): array
{
return $this->batchReadObjects('companies', $crmIds, $fields);
}
/**
* Batch read multiple contacts by their CRM IDs
*
* @param array<string> $crmIds Array of HubSpot contact IDs (max 100)
* @param array<string> $fields Array of property names to fetch
*
* @return array<string, array> Array keyed by CRM ID with contact data
*/
public function getContactsByIds(array $crmIds, array $fields): array
{
return $this->batchReadObjects('contacts', $crmIds, $fields);
}
/**
* @throws CompanyApiException
* @throws CrmException
*/
public function getAccountById(string $crmId, array $fields): array
{
try {
$company = $this->getNewInstance()->crm()->companies()->basicApi()->getById(
$crmId,
implode(',', $fields),
);
} catch (CompanyApiException $e) {
$this->log->info('[Hubspot] Failed to fetch account', [
'crm_id' => $crmId,
'reason' => $e->getMessage(),
]);
throw $e;
}
if (! $company instanceof CompaniesWithAssociations) {
throw new CrmException('Account not found');
}
return [
'id' => $company->getId(),
'properties' => $company->getProperties(),
];
}
/**
* @throws ContactApiException
* @throws CrmException
*/
public function getContactById(string $crmId, array $fields): array
{
try {
$contact = $this->getNewInstance()->crm()->contacts()->basicApi()->getById(
$crmId,
implode(',', $fields)
);
} catch (ContactApiException $e) {
$this->log->info('[Hubspot] Failed to fetch contact', [
'crm_id' => $crmId,
'reason' => $e->getMessage(),
]);
throw $e;
}
if (! $contact instanceof ContactsWithAssociations) {
throw new CrmException('Contact not found');
}
return [
'id' => $contact->getId(),
'properties' => $contact->getProperties(),
];
}
/**
* This is email search request that Hubspot offers as GET (more generous quota)
*/
public function getContactByEmail(string $email, array $fields = []): array
{
try {
$contact = $this->getNewInstance()->crm()->contacts()->basicApi()->getById(
$email,
implode(',', $fields),
null,
false,
'email'
);
return [
'id' => $contact->getId(),
'properties' => $contact->getProperties(),
];
} catch (ContactApiException $e) {
$this->log->info('[Hubspot] Failed to fetch contact', [
'email' => $email,
'reason' => $e->getMessage(),
]);
return [];
}
}
/**
* @throws CrmException
*/
public function fetchProperty(string $objectType, string $propertyId): Property
{
$result = $this->getNewInstance()->crm()->properties()->coreApi()->getByName($objectType, $propertyId);
if (! $result instanceof Property) {
$this->log->error('[Hubspot] Failed to fetch property', [
'object_type' => $objectType,
'property_id' => $propertyId,
'reason' => $result->getMessage(),
]);
throw new CrmException('Failed to fetch property');
}
return $result;
}
/**
* @return array<CrmFieldOption>
*/
public function fetchPropertyOptions(string $objectType, string $propertyId): array
{
/** @var array<CrmFieldOption> */
return $this->fetchProperty($objectType, $propertyId)->getOptions();
}
/**
* @return array<array{id:string, label:string, deleted:bool}>
*/
public function fetchCallDispositions(): array
{
/** @var Response $response */
$response = $this->getInstance()->engagements()->getCallDispositions();
/**
* @var array<array{
* id:string,
* label:string,
* deleted: bool
* }>
*/
return $response->toArray();
}
/**
* @return array<CrmFieldOption>
*/
public function fetchOpportunityPipelineStages(): array
{
$stages = [];
$apiResponse = $this->getNewInstance()->crm()->pipelines()->pipelinesApi()->getAll('deals');
if ($apiResponse instanceof Error) {
$this->log->error('[Hubspot] Failed to fetch opportunity pipelines', [
'reason' => $apiResponse->getMessage(),
]);
return [];
}
foreach ($apiResponse->getResults() as $pipeline) {
$pipelineStages = array_map(
static function (PipelineStage $stage) {
return [
'id' => $stage->getId(),
'label' => $stage->getLabel(),
];
},
$pipeline->getStages()
);
$stages = array_merge($stages, $pipelineStages);
}
return $stages;
}
public function fetchOpportunityPipelines(): array
{
$pipelines = [];
try {
$apiResponse = $this->makeRequest('/crm/v3/pipelines/deals');
} catch (\Exception $e) {
$this->log->info('[Hubspot] Failed to fetch opportunity pipelines', [
'reason' => $e->getMessage(),
]);
return [];
}
$response = $apiResponse->toArray();
foreach ($response['results'] as $pipeline) {
$pipelines[] = [
'id' => $pipeline['id'],
'label' => $pipeline['label'],
];
}
return $pipelines;
}
/**
* @return array<CrmFieldOption>
*/
public function fetchMeetingOutcomeFieldOptions(Field $field): array
{
return $field->getCrmProviderId() === 'meetingOutcome'
? $this->fetchMeetingOutcomeTypes()
: $this->fetchCallActivityTypes();
}
public function fetchMeetingOutcomeTypes(): array
{
return $this->extractMeetingTypeOptions(
'[URL_WITH_CREDENTIALS] Response $response */
$response = $this->getInstance()
->getClient()
->request('GET', $endpoint);
/**
* @var array<array{
* value: string,
* label: string,
* displayOrder: int
* }> $optionData
*/
$optionData = $response->toArray()['options'] ?? [];
$options = [];
foreach ($optionData as $item) {
$options[] = [
'id' => $item['value'],
'value' => $item['value'],
'label' => $item['label'],
'display_order' => $item['displayOrder'],
];
}
return $options;
}
/**
* @return array<CrmFieldOption>
*/
public function fetchDispositionFieldOptions(): array
{
$options = [];
$dispositions = $this->fetchCallDispositions();
foreach ($dispositions as $disposition) {
if ($disposition['deleted'] !== false) {
continue;
}
$option['value'] = $disposition['id'];
$option['id'] = $disposition['id'];
$option['label'] = $disposition['label'];
$options[] = $option;
}
return $options;
}
/**
* @return array<CrmFieldOption>
*/
public function fetchOpportunityFieldOptions(Field $field): array
{
if ($field->isStageField()) {
return $this->fetchOpportunityPipelineStages();
}
if ($field->isPipelineField()) {
return $this->fetchOpportunityPipelines();
}
return $this->fetchPropertyOptions('deals', $field->getCrmProviderId());
}
/**
* @throws BadRequest
* @throws HubspotException
*/
public function makeRequest(string $endpoint, $method = 'GET', $payload = [], ?string $queryString = null)
{
$endpoint = self::BASE_URL . $endpoint;
if ($method === 'GET') {
$response = $this->getInstance()->getClient()?->request(
method: $method,
endpoint: $endpoint,
query_string: $queryString
);
} else {
$response = $this->getInstance()->getClient()->request($method, $endpoint, [
'json' => ($payload),
]);
}
$max = $response->getHeaderLine('X-HubSpot-RateLimit-Max'); // "110"
$remaining = $response->getHeaderLine('X-HubSpot-RateLimit-Remaining'); // "109"
$interval = $response->getHeaderLine('X-HubSpot-RateLimit-Interval-Milliseconds'); // "10000"
$body = json_decode((string) $response->getBody(), true);
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$max ' . PHP_EOL . print_r($max, true));
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$remaining ' . PHP_EOL . print_r($remaining, true));
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$interval ' . PHP_EOL . print_r($interval, true));
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$body ' . PHP_EOL . print_r($body, true));
return $response;
}
/**
* @throws BadRequest
* @throws HubspotException
*/
public function createMeeting(array $payload): Response
{
$endpoint = '/crm/v3/objects/meetings';
return $this->makeRequest($endpoint, 'POST', $payload);
}
/**
* @throws BadRequest
* @throws HubspotException
*/
public function updateMeeting(string $meetingId, array $payload): Response
{
$endpoint = '/crm/v3/objects/meetings/' . $meetingId;
return $this->makeRequest($endpoint, 'PATCH', $payload);
}
/**
* @throws \Exception
*/
public function createNote(
string $body,
string $ownerId,
int $timestamp,
string $objectId,
NoteObject $noteObject
): ?string {
try {
$noteInput = new SimplePublicObjectInput([
'properties' => [
'hs_note_body' => $body,
'hubspot_owner_id' => $ownerId,
'hs_timestamp' => $timestamp,
],
]);
// Create note
$note = $this->getNewInstance()->crm()->objects()->basicApi()->create('note', $noteInput);
$this->getNewInstance()->crm()->objects()->associationsApi()->create(
'note',
$note->getId(),
$this->getNoteObject($noteObject),
$objectId,
$this->getNoteAssociationType($noteObject),
);
return $note->getId();
} catch (\Exception $e) {
$this->log->error('[Hubspot] Failed to create note', [
'objectId' => $objectId,
'noteObject' => $noteObject->getObjectType(),
'reason' => $e->getMessage(),
]);
\Sentry::captureException($e);
}
return null;
}
public function updateEngagement(string $objectId, array $engagement, array $metadata): void
{
$this->getInstance()->engagements()->update($objectId, $engagement, $metadata);
}
public function getEngagementData(string $engagementId): array
{
$engagement = $this->getInstance()->engagements()->get($engagementId);
return $engagement->toArray();
}
public function createEngagement(array $engagement, array $associations, array $metadata): Response
{
return $this->getInstance()
->engagements()
->create($engagement, $associations, $metadata);
}
public function isUnauthorizedException(\Exception $e): bool
{
// Check for specific HubSpot API exception types first
if ($e instanceof BadRequest) {
// BadRequest can contain 401 status codes
return $e->getCode() === 401;
}
// Check for HTTP client exceptions with status codes
if ($e instanceof \GuzzleHttp\Exception\RequestException && $e->hasResponse()) {
$response = $e->getResponse();
if ($response !== null) {
return $response->getStatusCode() === 401;
}
}
// Check for Guzzle HTTP exceptions
if ($e instanceof \GuzzleHttp\Exception\ClientException) {
return $e->getCode() === 401;
}
// Fallback to string matching as last resort, but be more specific
$message = strtolower($e->getMessage());
return str_contains($message, '401 unauthorized') ||
str_contains($message, 'http 401') ||
str_contains($message, 'status code 401') ||
(preg_match('/\b401\b/', $message) && str_contains($message, 'unauthorized'));
}
/**
* Validates and refreshes the access token if needed before API requests.
* This ensures long-running processes don't fail due to token expiration.
*
* @throws SocialAccountTokenInvalidException
*/
public function ensureValidToken(): void
{
if ($this->oauthAccount === null) {
return;
}
$newToken = $this->tokenManager->ensureValidToken($this->oauthAccount);
if ($newToken !== null) {
$this->accessToken = $newToken;
}
}
public function getConfig()
{
return $this->config;
}
// returns only active (archived=false)
public function getOwners(): array
{
return $this->getNewInstance()->crm()->owners()->getAll();
}
/**
* @param bool $archived
*
* @return array<Owner>|[]
*/
public function getOwnersArchived(bool $archived = true): array
{
$endpoint = '/crm/v3/owners';
$queryParams = [
'archived' => $archived ? 'true' : 'false',
];
$queryString = http_build_query($queryParams);
$owners = [];
try {
$response = $this->makeRequest(endpoint: $endpoint, queryString: $queryString);
$responseData = $response?->toArray();
foreach ($responseData['results'] as $result) {
try {
$owners[] = Owner::create($result);
} catch (Throwable $e) {
$this->log->error('[HubSpot] Failed to process owner data', [
'result' => $result,
'error' => $e->getMessage(),
]);
continue;
}
}
} catch (Throwable $e) {
$this->log->error('HubSpot] Failed to fetch owners', [
'archived' => $archived,
'error' => $e->getMessage(),
]);
return [];
}
return $owners;
}
public function getMeeting(string $engagementId): ObjectWithAssociations
{
return $this->getNewInstance()->crm()->objects()->basicApi()
->getById('meeting', $engagementId, null, 'contact,company,deal');
}
public function deleteEngagement(string $engagementId): void
{
$this->getInstance()->engagements()->delete((int) $engagementId);
}
public function getAssociationsData(array $ids, string $fromObject, string $toObject): array
{
$associationData = [];
$idChunks = array_chunk($ids, self::ASSOCIATIONS_BATCH_SIZE_LIMIT);
foreach ($idChunks as $idChunk) {
try {
$batchInput = new \HubSpot\Client\Crm\Associations\Model\BatchInputPublicObjectId();
$batchInput->setInputs(array_map(function ($id) {
$publicObjectId = new \HubSpot\Client\Crm\Associations\Model\PublicObjectId();
$publicObjectId->setId($id);
return $publicObjectId;
}, $idChunk));
$associatedObjectsData = $this
->getNewInstance()
->crm()
->associations()
->batchApi()
->read($fromObject, $toObject, $batchInput);
if ($associatedObjectsData instanceof \HubSpot\Client\Crm\Associations\Model\BatchResponsePublicAssociationMulti) {
foreach ($associatedObjectsData->getResults() as $association) {
$from = $association->getFrom()->getId();
$toAssociations = $association->getTo();
if (! empty($toAssociations)) {
$associationData[$from] = array_map(function ($item) {
return $item->getId();
}, $toAssociations);
}
}
}
} catch (\Exception $e) {
$this->log->error('[Hubspot] Failed to fetch associations', [
'from_object' => $fromObject,
'to_object' => $toObject,
'reason' => $e->getMessage(),
]);
}
}
return $associationData;
}
/**
* @throws \Exception
*/
private function getNoteAssociationType(NoteObject $noteObject): string
{
return match($noteObject) {
NoteObject::Opportunity => 'note_to_deal',
NoteObject::Lead, NoteObject::Contact => 'note_to_contact', // or 'note_to_lead' if your portal supports it
NoteObject::Account => 'note_to_company',
NoteObject::Call, NoteObject::Event => throw new \Exception('Not supported'),
};
}
/**
* @throws \Exception
*/
private function getNoteObject(NoteObject $noteObject): string
{
return match($noteObject) {
NoteObject::Opportunity => 'deal',
NoteObject::Lead, NoteObject::Contact => 'contact',
NoteObject::Account => 'company',
NoteObject::Call, NoteObject::Event => throw new \Exception('Not supported'),
};
}
public function addAssociations(string $objectType, string $associationType, array $payload): Response
{
$endpoint = "/crm/v4/associations/$objectType/$associationType/batch/create";
return $this->makeRequest($endpoint, 'POST', $payload);
}
public function removeAssociations(string $objectType, string $associationType, array $payload): Response
{
$endpoint = "/crm/v4/associations/$objectType/$associationType/batch/archive";
return $this->makeRequest($endpoint, 'POST', $payload);
}
}
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"on_screen":true,"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"master, menu","depth":5,"on_screen":true,"help_text":"Git Branch: master","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Start Listening for PHP Debug Connections","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"AskJiminnyReportActivityServiceTest","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'AskJiminnyReportActivityServiceTest'","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'AskJiminnyReportActivityServiceTest'","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More Actions","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JetBrains AI","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Search Everywhere","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"IDE and Project Settings","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.088194445,"height":0.027777778},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"Editor for custom.log","depth":4,"on_screen":true,"role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.088194445,"height":0.027777778},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.016666668,"height":0.02111111},"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"60","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.021527778,"height":0.02111111},"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.015277778,"height":0.025555555},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Highlighted Error","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.014583333,"height":0.025555555},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Services\\Crm\\Hubspot;\n\nuse HubSpot\\Client\\Crm\\Deals\\ApiException as DealApiException;\nuse HubSpot\\Client\\Crm\\Contacts\\ApiException as ContactApiException;\nuse HubSpot\\Client\\Crm\\Companies\\ApiException as CompanyApiException;\nuse HubSpot\\Client\\Crm\\Contacts\\Model\\SimplePublicObjectWithAssociations as ContactsWithAssociations;\nuse HubSpot\\Client\\Crm\\Companies\\Model\\SimplePublicObjectWithAssociations as CompaniesWithAssociations;\nuse HubSpot\\Client\\Crm\\Deals\\Model\\SimplePublicObjectWithAssociations as DealWithAssociations;\nuse HubSpot\\Client\\Crm\\Objects\\Model\\SimplePublicObjectInput;\nuse HubSpot\\Client\\Crm\\Objects\\Model\\SimplePublicObjectWithAssociations as ObjectWithAssociations;\nuse HubSpot\\Client\\Crm\\Pipelines\\Model\\Error;\nuse HubSpot\\Client\\Crm\\Pipelines\\Model\\PipelineStage;\nuse HubSpot\\Client\\Crm\\Properties\\Model\\Property;\nuse HubSpot\\Discovery\\Discovery;\nuse Jiminny\\Component\\Utility\\Service\\ProviderRateLimiter;\nuse Jiminny\\Exceptions\\CrmException;\nuse Jiminny\\Exceptions\\RateLimitException;\nuse Jiminny\\Exceptions\\SocialAccountTokenInvalidException;\nuse Jiminny\\Jobs\\Crm\\NoteObject;\nuse Jiminny\\Models\\Crm\\Field;\nuse Jiminny\\Services\\Crm\\BaseClient;\nuse Jiminny\\Services\\Crm\\Hubspot\\DTO\\Response\\Owner;\nuse Jiminny\\Services\\SocialAccountService;\nuse SevenShores\\Hubspot\\Exceptions\\BadRequest;\nuse SevenShores\\Hubspot\\Exceptions\\HubspotException;\nuse SevenShores\\Hubspot\\Factory;\nuse SevenShores\\Hubspot\\Http\\Response;\nuse Jiminny\\Services\\Crm\\Hubspot\\Pagination\\HubspotPaginationService;\nuse Throwable;\n\n/**\n * @phpstan-type CrmFieldOption array{id:string, label:string, value?:string}\n */\nclass Client extends BaseClient implements HubspotClientInterface\n{\n public const string MIN_API_VERSION = '2';\n\n public const string BASE_URL = 'https://api.hubapi.com';\n\n public const int ASSOCIATIONS_BATCH_SIZE_LIMIT = 1000;\n\n private HubspotPaginationService $paginationService;\n private HubspotTokenManager $tokenManager;\n private ProviderRateLimiter $rateLimiter;\n\n public function __construct(\n SocialAccountService $socialAccountService,\n HubspotPaginationService $paginationService,\n HubspotTokenManager $tokenManager,\n ProviderRateLimiter $rateLimiter,\n ) {\n parent::__construct($socialAccountService);\n $this->paginationService = $paginationService;\n $this->tokenManager = $tokenManager;\n $this->rateLimiter = $rateLimiter;\n\n $this->setBaseUrl(self::BASE_URL);\n $this->setVersion(self::MIN_API_VERSION);\n }\n\n /**\n * Single entry point for every HubSpot API call. Enforces the per-portal\n * rate limit configured in the rate_limits table (morphed to the current\n * Configuration) and reacts to a real 429 from HubSpot by translating it\n * into a RateLimitException carrying Retry-After.\n *\n * Wrap any outbound HubSpot call (SDK or raw HTTP) like:\n *\n * $this->executeRequest(fn () => $this->getNewInstance()->crm()->...);\n *\n * @template T\n * @param callable(): T $apiCall\n * @return T\n *\n * @throws RateLimitException\n */\n private function executeRequest(callable $apiCall)\n {\n if (! $this->rateLimiter->canMakeRequest($this->config)) {\n $retryAfter = $this->rateLimiter->requestAvailableIn($this->config);\n\n $this->log->warning('[Hubspot] Rate limit exceeded, deferring request', [\n 'team_id' => $this->config->team_id,\n 'config_id' => $this->config->getId(),\n 'retry_after' => $retryAfter,\n ]);\n\n throw new RateLimitException(\n 'Hubspot rate limit reached for configuration ' . $this->config->getId(),\n $retryAfter,\n );\n }\n\n $this->rateLimiter->incrementRequestCount($this->config);\n\n try {\n return $apiCall();\n } catch (Throwable $e) {\n if ($this->isHubspotRateLimit($e)) {\n $retryAfter = $this->parseRetryAfter($e);\n\n $this->log->warning('[Hubspot] Received 429 from API', [\n 'team_id' => $this->config->team_id,\n 'config_id' => $this->config->getId(),\n 'retry_after' => $retryAfter,\n 'reason' => $e->getMessage(),\n ]);\n\n throw new RateLimitException('Hubspot returned 429', $retryAfter, $e);\n }\n\n throw $e;\n }\n }\n\n private function isHubspotRateLimit(Throwable $e): bool\n {\n return method_exists($e, 'getCode') && (int) $e->getCode() === 429;\n }\n\n private function parseRetryAfter(Throwable $e): int\n {\n if (method_exists($e, 'getResponseHeaders')) {\n $headers = $e->getResponseHeaders() ?: [];\n $value = $headers['Retry-After'] ?? $headers['retry-after'] ?? null;\n if (is_array($value)) {\n $value = $value[0] ?? null;\n }\n if (is_numeric($value)) {\n return (int) $value;\n }\n }\n\n return 10;\n }\n\n public function getMinimumApiVersion(): string\n {\n return self::MIN_API_VERSION;\n }\n\n public function getInstance(): Factory\n {\n return new Factory([\n 'key' => $this->accessToken,\n 'oauth2' => true,\n 'base_url' => $this->baseUrl,\n ]);\n }\n\n public function getNewInstance(): Discovery\n {\n return \\HubSpot\\Factory::createWithAccessToken($this->accessToken);\n }\n\n /**\n * Secondly and daily limits for Hubspot API\n *\n * Product Tier: Free & Starter | Professional & Enterprise | API add-on (any tier)\n * Burst: 100/10 seconds | 150/10 seconds | 200/10 seconds\n * Daily: 250,000 | 500,000 | 1,000,000\n *\n * Official documentation states: The search endpoints are rate limited to five requests per second.\n * Since with 5 RPS were still hitting secondly rate limits we lowered it to 4\n */\n public function getPaginatedData(array $payload, string $type, int $offset = 0): array\n {\n $total = 0;\n $lastId = null;\n $rows = [];\n foreach ($this->getPaginatedDataGenerator($payload, $type, $offset, $total, $lastId) as $row) {\n $rows[] = $row;\n }\n\n return ['results' => $rows, 'total' => $total, 'last_record' => $lastId];\n }\n\n /**\n * @throws HubspotException\n * @throws SocialAccountTokenInvalidException\n * @throws BadRequest\n */\n public function getPaginatedDataGenerator(\n array $payload,\n string $type,\n int $offset = 0,\n int &$total = 0,\n ?string &$lastRecordId = null\n ): \\Generator {\n return $this->paginationService->getPaginatedDataGenerator(\n $this,\n $payload,\n $type,\n $offset,\n $total,\n $lastRecordId\n );\n }\n\n /**\n * @throws DealApiException\n * @throws CrmException\n */\n public function getOpportunityById(string $crmId, array $fields): array\n {\n try {\n $deal = $this->executeRequest(fn () => $this->getNewInstance()->crm()->deals()->basicApi()->getById(\n $crmId,\n implode(',', $fields),\n 'companies,contacts'\n ));\n } catch (DealApiException $e) {\n $this->log->info('[Hubspot] Failed to fetch opportunity', [\n 'crm_id' => $crmId,\n 'reason' => $e->getMessage(),\n ]);\n\n throw $e;\n }\n\n if (! $deal instanceof DealWithAssociations) {\n throw new CrmException('Deal not found');\n }\n\n return [\n 'id' => $deal->getId(),\n 'properties' => $deal->getProperties(),\n 'associations' => $deal->getAssociations(),\n ];\n }\n\n /**\n * Generic batch read method for HubSpot objects\n *\n * @param string $objectType The object type ('deals', 'companies', 'contacts')\n * @param array<string> $crmIds Array of HubSpot object IDs (max 100)\n * @param array<string> $fields Array of property names to fetch\n *\n * @return array<string, array> Array keyed by CRM ID with object data\n */\n private function batchReadObjects(string $objectType, array $crmIds, array $fields): array\n {\n if (empty($crmIds)) {\n return [];\n }\n\n $this->validateBatchSize($objectType, $crmIds);\n $this->ensureValidToken();\n\n try {\n $batchConfig = $this->createBatchConfiguration($objectType);\n $batchReadRequest = $this->prepareBatchRequest($batchConfig, $crmIds, $fields);\n $response = $batchConfig['api']->read($batchReadRequest);\n\n $this->validateApiResponse($response, $objectType);\n\n $results = $this->processApiResults($response);\n $this->logBatchResults($objectType, $crmIds, $results);\n\n return $results;\n } catch (\\Throwable $e) {\n $this->handleBatchError($e, $objectType, $crmIds);\n }\n }\n\n private function validateBatchSize(string $objectType, array $crmIds): void\n {\n if (count($crmIds) > 100) {\n throw new \\InvalidArgumentException(\"Batch size cannot exceed 100 {$objectType}\");\n }\n }\n\n private function createBatchConfiguration(string $objectType): array\n {\n $configurations = [\n 'deals' => [\n 'batchReadRequest' => new \\HubSpot\\Client\\Crm\\Deals\\Model\\BatchReadInputSimplePublicObjectId(),\n 'inputClass' => \\HubSpot\\Client\\Crm\\Deals\\Model\\SimplePublicObjectId::class,\n 'api' => $this->getNewInstance()->crm()->deals()->batchApi(),\n ],\n 'companies' => [\n 'batchReadRequest' => new \\HubSpot\\Client\\Crm\\Companies\\Model\\BatchReadInputSimplePublicObjectId(),\n 'inputClass' => \\HubSpot\\Client\\Crm\\Companies\\Model\\SimplePublicObjectId::class,\n 'api' => $this->getNewInstance()->crm()->companies()->batchApi(),\n ],\n 'contacts' => [\n 'batchReadRequest' => new \\HubSpot\\Client\\Crm\\Contacts\\Model\\BatchReadInputSimplePublicObjectId(),\n 'inputClass' => \\HubSpot\\Client\\Crm\\Contacts\\Model\\SimplePublicObjectId::class,\n 'api' => $this->getNewInstance()->crm()->contacts()->batchApi(),\n ],\n ];\n\n if (! isset($configurations[$objectType])) {\n throw new \\InvalidArgumentException(\"Unsupported object type: {$objectType}\");\n }\n\n return $configurations[$objectType];\n }\n\n private function prepareBatchRequest(array $batchConfig, array $crmIds, array $fields): object\n {\n $batchReadRequest = $batchConfig['batchReadRequest'];\n $inputClass = $batchConfig['inputClass'];\n\n $inputs = array_map(function ($crmId) use ($inputClass) {\n $input = new $inputClass();\n $input->setId($crmId);\n\n return $input;\n }, $crmIds);\n\n $batchReadRequest->setInputs($inputs);\n $batchReadRequest->setProperties($fields);\n\n return $batchReadRequest;\n }\n\n private function validateApiResponse($response, string $objectType): void\n {\n if (! $response) {\n throw new CrmException(\"HubSpot API returned null response for {$objectType} batch read\");\n }\n }\n\n private function processApiResults($response): array\n {\n $results = [];\n $responseResults = $response->getResults();\n\n if ($responseResults) {\n foreach ($responseResults as $object) {\n if ($object && $object->getId()) {\n $results[$object->getId()] = [\n 'id' => $object->getId(),\n 'properties' => $object->getProperties() ?: [],\n ];\n }\n }\n }\n\n return $results;\n }\n\n private function logBatchResults(string $objectType, array $crmIds, array $results): void\n {\n $this->log->info(\"[HubSpot] Batch fetched {$objectType}\", [\n 'requested_count' => count($crmIds),\n 'returned_count' => count($results),\n 'crm_ids' => $crmIds,\n ]);\n }\n\n private function handleBatchError(\\Throwable $e, string $objectType, array $crmIds): void\n {\n $errorMessage = $e->getMessage() ?: 'Unknown error';\n $errorTrace = $e->getTraceAsString() ?: 'No trace available';\n\n $this->log->error(\"[HubSpot] Failed to batch fetch {$objectType}\", [\n 'crm_ids' => $crmIds,\n 'error' => $errorMessage,\n 'trace' => $errorTrace,\n ]);\n\n throw new CrmException(\"Failed to batch fetch {$objectType}: \" . $errorMessage);\n }\n\n /**\n * Batch read multiple opportunities by their CRM IDs\n *\n * @param array<string> $crmIds Array of HubSpot deal IDs (max 100)\n * @param array<string> $fields Array of property names to fetch\n *\n * @return array<string, array> Array keyed by CRM ID with opportunity data\n */\n public function getOpportunitiesByIds(array $crmIds, array $fields): array\n {\n return $this->batchReadObjects('deals', $crmIds, $fields);\n }\n\n /**\n * Batch read multiple companies by their CRM IDs\n *\n * @param array<string> $crmIds Array of HubSpot company IDs (max 100)\n * @param array<string> $fields Array of property names to fetch\n *\n * @return array<string, array> Array keyed by CRM ID with company data\n */\n public function getCompaniesByIds(array $crmIds, array $fields): array\n {\n return $this->batchReadObjects('companies', $crmIds, $fields);\n }\n\n /**\n * Batch read multiple contacts by their CRM IDs\n *\n * @param array<string> $crmIds Array of HubSpot contact IDs (max 100)\n * @param array<string> $fields Array of property names to fetch\n *\n * @return array<string, array> Array keyed by CRM ID with contact data\n */\n public function getContactsByIds(array $crmIds, array $fields): array\n {\n return $this->batchReadObjects('contacts', $crmIds, $fields);\n }\n\n /**\n * @throws CompanyApiException\n * @throws CrmException\n */\n public function getAccountById(string $crmId, array $fields): array\n {\n try {\n $company = $this->getNewInstance()->crm()->companies()->basicApi()->getById(\n $crmId,\n implode(',', $fields),\n );\n } catch (CompanyApiException $e) {\n $this->log->info('[Hubspot] Failed to fetch account', [\n 'crm_id' => $crmId,\n 'reason' => $e->getMessage(),\n ]);\n\n throw $e;\n }\n\n if (! $company instanceof CompaniesWithAssociations) {\n throw new CrmException('Account not found');\n }\n\n return [\n 'id' => $company->getId(),\n 'properties' => $company->getProperties(),\n ];\n }\n\n /**\n * @throws ContactApiException\n * @throws CrmException\n */\n public function getContactById(string $crmId, array $fields): array\n {\n try {\n $contact = $this->getNewInstance()->crm()->contacts()->basicApi()->getById(\n $crmId,\n implode(',', $fields)\n );\n } catch (ContactApiException $e) {\n $this->log->info('[Hubspot] Failed to fetch contact', [\n 'crm_id' => $crmId,\n 'reason' => $e->getMessage(),\n ]);\n\n throw $e;\n }\n\n if (! $contact instanceof ContactsWithAssociations) {\n throw new CrmException('Contact not found');\n }\n\n return [\n 'id' => $contact->getId(),\n 'properties' => $contact->getProperties(),\n ];\n }\n\n /**\n * This is email search request that Hubspot offers as GET (more generous quota)\n */\n public function getContactByEmail(string $email, array $fields = []): array\n {\n try {\n $contact = $this->getNewInstance()->crm()->contacts()->basicApi()->getById(\n $email,\n implode(',', $fields),\n null,\n false,\n 'email'\n );\n\n return [\n 'id' => $contact->getId(),\n 'properties' => $contact->getProperties(),\n ];\n } catch (ContactApiException $e) {\n $this->log->info('[Hubspot] Failed to fetch contact', [\n 'email' => $email,\n 'reason' => $e->getMessage(),\n ]);\n\n return [];\n }\n }\n\n /**\n * @throws CrmException\n */\n public function fetchProperty(string $objectType, string $propertyId): Property\n {\n $result = $this->getNewInstance()->crm()->properties()->coreApi()->getByName($objectType, $propertyId);\n\n if (! $result instanceof Property) {\n $this->log->error('[Hubspot] Failed to fetch property', [\n 'object_type' => $objectType,\n 'property_id' => $propertyId,\n 'reason' => $result->getMessage(),\n ]);\n\n throw new CrmException('Failed to fetch property');\n }\n\n return $result;\n }\n\n /**\n * @return array<CrmFieldOption>\n */\n public function fetchPropertyOptions(string $objectType, string $propertyId): array\n {\n /** @var array<CrmFieldOption> */\n return $this->fetchProperty($objectType, $propertyId)->getOptions();\n }\n\n /**\n * @return array<array{id:string, label:string, deleted:bool}>\n */\n public function fetchCallDispositions(): array\n {\n /** @var Response $response */\n $response = $this->getInstance()->engagements()->getCallDispositions();\n\n /**\n * @var array<array{\n * id:string,\n * label:string,\n * deleted: bool\n * }>\n */\n return $response->toArray();\n }\n\n /**\n * @return array<CrmFieldOption>\n */\n public function fetchOpportunityPipelineStages(): array\n {\n $stages = [];\n $apiResponse = $this->getNewInstance()->crm()->pipelines()->pipelinesApi()->getAll('deals');\n\n if ($apiResponse instanceof Error) {\n $this->log->error('[Hubspot] Failed to fetch opportunity pipelines', [\n 'reason' => $apiResponse->getMessage(),\n ]);\n\n return [];\n }\n\n foreach ($apiResponse->getResults() as $pipeline) {\n $pipelineStages = array_map(\n static function (PipelineStage $stage) {\n return [\n 'id' => $stage->getId(),\n 'label' => $stage->getLabel(),\n ];\n },\n $pipeline->getStages()\n );\n\n $stages = array_merge($stages, $pipelineStages);\n }\n\n return $stages;\n }\n\n public function fetchOpportunityPipelines(): array\n {\n $pipelines = [];\n\n try {\n $apiResponse = $this->makeRequest('/crm/v3/pipelines/deals');\n } catch (\\Exception $e) {\n $this->log->info('[Hubspot] Failed to fetch opportunity pipelines', [\n 'reason' => $e->getMessage(),\n ]);\n\n return [];\n }\n\n $response = $apiResponse->toArray();\n\n foreach ($response['results'] as $pipeline) {\n $pipelines[] = [\n 'id' => $pipeline['id'],\n 'label' => $pipeline['label'],\n ];\n }\n\n return $pipelines;\n }\n\n /**\n * @return array<CrmFieldOption>\n */\n public function fetchMeetingOutcomeFieldOptions(Field $field): array\n {\n return $field->getCrmProviderId() === 'meetingOutcome'\n ? $this->fetchMeetingOutcomeTypes()\n : $this->fetchCallActivityTypes();\n }\n\n public function fetchMeetingOutcomeTypes(): array\n {\n return $this->extractMeetingTypeOptions(\n 'https://api.hubapi.com/crm/v3/properties/meeting/hs_meeting_outcome'\n );\n }\n\n public function fetchCallActivityTypes(): array\n {\n return $this->extractMeetingTypeOptions(\n 'https://api.hubapi.com/crm/v3/properties/call/hs_activity_type'\n );\n }\n\n private function extractMeetingTypeOptions(string $endpoint): array\n {\n /** @var Response $response */\n $response = $this->getInstance()\n ->getClient()\n ->request('GET', $endpoint);\n\n /**\n * @var array<array{\n * value: string,\n * label: string,\n * displayOrder: int\n * }> $optionData\n */\n $optionData = $response->toArray()['options'] ?? [];\n\n $options = [];\n foreach ($optionData as $item) {\n $options[] = [\n 'id' => $item['value'],\n 'value' => $item['value'],\n 'label' => $item['label'],\n 'display_order' => $item['displayOrder'],\n ];\n }\n\n return $options;\n }\n\n /**\n * @return array<CrmFieldOption>\n */\n public function fetchDispositionFieldOptions(): array\n {\n $options = [];\n\n $dispositions = $this->fetchCallDispositions();\n\n foreach ($dispositions as $disposition) {\n if ($disposition['deleted'] !== false) {\n continue;\n }\n\n $option['value'] = $disposition['id'];\n $option['id'] = $disposition['id'];\n $option['label'] = $disposition['label'];\n\n $options[] = $option;\n }\n\n return $options;\n }\n\n /**\n * @return array<CrmFieldOption>\n */\n public function fetchOpportunityFieldOptions(Field $field): array\n {\n if ($field->isStageField()) {\n return $this->fetchOpportunityPipelineStages();\n }\n\n if ($field->isPipelineField()) {\n return $this->fetchOpportunityPipelines();\n }\n\n return $this->fetchPropertyOptions('deals', $field->getCrmProviderId());\n }\n\n /**\n * @throws BadRequest\n * @throws HubspotException\n */\n public function makeRequest(string $endpoint, $method = 'GET', $payload = [], ?string $queryString = null)\n {\n $endpoint = self::BASE_URL . $endpoint;\n\n if ($method === 'GET') {\n $response = $this->getInstance()->getClient()?->request(\n method: $method,\n endpoint: $endpoint,\n query_string: $queryString\n );\n } else {\n $response = $this->getInstance()->getClient()->request($method, $endpoint, [\n 'json' => ($payload),\n ]);\n }\n\n $max = $response->getHeaderLine('X-HubSpot-RateLimit-Max'); // \"110\"\n $remaining = $response->getHeaderLine('X-HubSpot-RateLimit-Remaining'); // \"109\"\n $interval = $response->getHeaderLine('X-HubSpot-RateLimit-Interval-Milliseconds'); // \"10000\"\n $body = json_decode((string) $response->getBody(), true);\n\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$max ' . PHP_EOL . print_r($max, true));\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$remaining ' . PHP_EOL . print_r($remaining, true));\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$interval ' . PHP_EOL . print_r($interval, true));\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$body ' . PHP_EOL . print_r($body, true));\n\n return $response;\n }\n\n /**\n * @throws BadRequest\n * @throws HubspotException\n */\n public function createMeeting(array $payload): Response\n {\n $endpoint = '/crm/v3/objects/meetings';\n\n return $this->makeRequest($endpoint, 'POST', $payload);\n }\n\n /**\n * @throws BadRequest\n * @throws HubspotException\n */\n public function updateMeeting(string $meetingId, array $payload): Response\n {\n $endpoint = '/crm/v3/objects/meetings/' . $meetingId;\n\n return $this->makeRequest($endpoint, 'PATCH', $payload);\n }\n\n /**\n * @throws \\Exception\n */\n public function createNote(\n string $body,\n string $ownerId,\n int $timestamp,\n string $objectId,\n NoteObject $noteObject\n ): ?string {\n try {\n $noteInput = new SimplePublicObjectInput([\n 'properties' => [\n 'hs_note_body' => $body,\n 'hubspot_owner_id' => $ownerId,\n 'hs_timestamp' => $timestamp,\n ],\n ]);\n\n // Create note\n $note = $this->getNewInstance()->crm()->objects()->basicApi()->create('note', $noteInput);\n\n $this->getNewInstance()->crm()->objects()->associationsApi()->create(\n 'note',\n $note->getId(),\n $this->getNoteObject($noteObject),\n $objectId,\n $this->getNoteAssociationType($noteObject),\n );\n\n return $note->getId();\n } catch (\\Exception $e) {\n $this->log->error('[Hubspot] Failed to create note', [\n 'objectId' => $objectId,\n 'noteObject' => $noteObject->getObjectType(),\n 'reason' => $e->getMessage(),\n ]);\n\n \\Sentry::captureException($e);\n }\n\n return null;\n }\n\n public function updateEngagement(string $objectId, array $engagement, array $metadata): void\n {\n $this->getInstance()->engagements()->update($objectId, $engagement, $metadata);\n }\n\n public function getEngagementData(string $engagementId): array\n {\n $engagement = $this->getInstance()->engagements()->get($engagementId);\n\n return $engagement->toArray();\n }\n\n public function createEngagement(array $engagement, array $associations, array $metadata): Response\n {\n return $this->getInstance()\n ->engagements()\n ->create($engagement, $associations, $metadata);\n }\n\n public function isUnauthorizedException(\\Exception $e): bool\n {\n // Check for specific HubSpot API exception types first\n if ($e instanceof BadRequest) {\n // BadRequest can contain 401 status codes\n return $e->getCode() === 401;\n }\n\n // Check for HTTP client exceptions with status codes\n if ($e instanceof \\GuzzleHttp\\Exception\\RequestException && $e->hasResponse()) {\n $response = $e->getResponse();\n if ($response !== null) {\n return $response->getStatusCode() === 401;\n }\n }\n\n // Check for Guzzle HTTP exceptions\n if ($e instanceof \\GuzzleHttp\\Exception\\ClientException) {\n return $e->getCode() === 401;\n }\n\n // Fallback to string matching as last resort, but be more specific\n $message = strtolower($e->getMessage());\n\n return str_contains($message, '401 unauthorized') ||\n str_contains($message, 'http 401') ||\n str_contains($message, 'status code 401') ||\n (preg_match('/\\b401\\b/', $message) && str_contains($message, 'unauthorized'));\n }\n\n /**\n * Validates and refreshes the access token if needed before API requests.\n * This ensures long-running processes don't fail due to token expiration.\n *\n * @throws SocialAccountTokenInvalidException\n */\n public function ensureValidToken(): void\n {\n if ($this->oauthAccount === null) {\n return;\n }\n\n $newToken = $this->tokenManager->ensureValidToken($this->oauthAccount);\n if ($newToken !== null) {\n $this->accessToken = $newToken;\n }\n }\n\n public function getConfig()\n {\n return $this->config;\n }\n\n // returns only active (archived=false)\n public function getOwners(): array\n {\n return $this->getNewInstance()->crm()->owners()->getAll();\n }\n\n /**\n * @param bool $archived\n *\n * @return array<Owner>|[]\n */\n public function getOwnersArchived(bool $archived = true): array\n {\n $endpoint = '/crm/v3/owners';\n $queryParams = [\n 'archived' => $archived ? 'true' : 'false',\n ];\n $queryString = http_build_query($queryParams);\n\n $owners = [];\n\n try {\n $response = $this->makeRequest(endpoint: $endpoint, queryString: $queryString);\n $responseData = $response?->toArray();\n\n foreach ($responseData['results'] as $result) {\n try {\n $owners[] = Owner::create($result);\n } catch (Throwable $e) {\n $this->log->error('[HubSpot] Failed to process owner data', [\n 'result' => $result,\n 'error' => $e->getMessage(),\n ]);\n\n continue;\n }\n }\n } catch (Throwable $e) {\n $this->log->error('HubSpot] Failed to fetch owners', [\n 'archived' => $archived,\n 'error' => $e->getMessage(),\n ]);\n\n return [];\n }\n\n return $owners;\n }\n\n public function getMeeting(string $engagementId): ObjectWithAssociations\n {\n return $this->getNewInstance()->crm()->objects()->basicApi()\n ->getById('meeting', $engagementId, null, 'contact,company,deal');\n }\n\n public function deleteEngagement(string $engagementId): void\n {\n $this->getInstance()->engagements()->delete((int) $engagementId);\n }\n\n public function getAssociationsData(array $ids, string $fromObject, string $toObject): array\n {\n $associationData = [];\n $idChunks = array_chunk($ids, self::ASSOCIATIONS_BATCH_SIZE_LIMIT);\n\n foreach ($idChunks as $idChunk) {\n try {\n $batchInput = new \\HubSpot\\Client\\Crm\\Associations\\Model\\BatchInputPublicObjectId();\n $batchInput->setInputs(array_map(function ($id) {\n $publicObjectId = new \\HubSpot\\Client\\Crm\\Associations\\Model\\PublicObjectId();\n $publicObjectId->setId($id);\n\n return $publicObjectId;\n }, $idChunk));\n\n $associatedObjectsData = $this\n ->getNewInstance()\n ->crm()\n ->associations()\n ->batchApi()\n ->read($fromObject, $toObject, $batchInput);\n\n if ($associatedObjectsData instanceof \\HubSpot\\Client\\Crm\\Associations\\Model\\BatchResponsePublicAssociationMulti) {\n foreach ($associatedObjectsData->getResults() as $association) {\n $from = $association->getFrom()->getId();\n $toAssociations = $association->getTo();\n\n if (! empty($toAssociations)) {\n $associationData[$from] = array_map(function ($item) {\n return $item->getId();\n }, $toAssociations);\n }\n }\n }\n } catch (\\Exception $e) {\n $this->log->error('[Hubspot] Failed to fetch associations', [\n 'from_object' => $fromObject,\n 'to_object' => $toObject,\n 'reason' => $e->getMessage(),\n ]);\n }\n }\n\n return $associationData;\n }\n\n /**\n * @throws \\Exception\n */\n private function getNoteAssociationType(NoteObject $noteObject): string\n {\n return match($noteObject) {\n NoteObject::Opportunity => 'note_to_deal',\n NoteObject::Lead, NoteObject::Contact => 'note_to_contact', // or 'note_to_lead' if your portal supports it\n NoteObject::Account => 'note_to_company',\n NoteObject::Call, NoteObject::Event => throw new \\Exception('Not supported'),\n };\n }\n\n /**\n * @throws \\Exception\n */\n private function getNoteObject(NoteObject $noteObject): string\n {\n return match($noteObject) {\n NoteObject::Opportunity => 'deal',\n NoteObject::Lead, NoteObject::Contact => 'contact',\n NoteObject::Account => 'company',\n NoteObject::Call, NoteObject::Event => throw new \\Exception('Not supported'),\n };\n }\n\n public function addAssociations(string $objectType, string $associationType, array $payload): Response\n {\n $endpoint = \"/crm/v4/associations/$objectType/$associationType/batch/create\";\n\n return $this->makeRequest($endpoint, 'POST', $payload);\n }\n\n public function removeAssociations(string $objectType, string $associationType, array $payload): Response\n {\n $endpoint = \"/crm/v4/associations/$objectType/$associationType/batch/archive\";\n\n return $this->makeRequest($endpoint, 'POST', $payload);\n }\n}","depth":4,"on_screen":true,"value":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Services\\Crm\\Hubspot;\n\nuse HubSpot\\Client\\Crm\\Deals\\ApiException as DealApiException;\nuse HubSpot\\Client\\Crm\\Contacts\\ApiException as ContactApiException;\nuse HubSpot\\Client\\Crm\\Companies\\ApiException as CompanyApiException;\nuse HubSpot\\Client\\Crm\\Contacts\\Model\\SimplePublicObjectWithAssociations as ContactsWithAssociations;\nuse HubSpot\\Client\\Crm\\Companies\\Model\\SimplePublicObjectWithAssociations as CompaniesWithAssociations;\nuse HubSpot\\Client\\Crm\\Deals\\Model\\SimplePublicObjectWithAssociations as DealWithAssociations;\nuse HubSpot\\Client\\Crm\\Objects\\Model\\SimplePublicObjectInput;\nuse HubSpot\\Client\\Crm\\Objects\\Model\\SimplePublicObjectWithAssociations as ObjectWithAssociations;\nuse HubSpot\\Client\\Crm\\Pipelines\\Model\\Error;\nuse HubSpot\\Client\\Crm\\Pipelines\\Model\\PipelineStage;\nuse HubSpot\\Client\\Crm\\Properties\\Model\\Property;\nuse HubSpot\\Discovery\\Discovery;\nuse Jiminny\\Component\\Utility\\Service\\ProviderRateLimiter;\nuse Jiminny\\Exceptions\\CrmException;\nuse Jiminny\\Exceptions\\RateLimitException;\nuse Jiminny\\Exceptions\\SocialAccountTokenInvalidException;\nuse Jiminny\\Jobs\\Crm\\NoteObject;\nuse Jiminny\\Models\\Crm\\Field;\nuse Jiminny\\Services\\Crm\\BaseClient;\nuse Jiminny\\Services\\Crm\\Hubspot\\DTO\\Response\\Owner;\nuse Jiminny\\Services\\SocialAccountService;\nuse SevenShores\\Hubspot\\Exceptions\\BadRequest;\nuse SevenShores\\Hubspot\\Exceptions\\HubspotException;\nuse SevenShores\\Hubspot\\Factory;\nuse SevenShores\\Hubspot\\Http\\Response;\nuse Jiminny\\Services\\Crm\\Hubspot\\Pagination\\HubspotPaginationService;\nuse Throwable;\n\n/**\n * @phpstan-type CrmFieldOption array{id:string, label:string, value?:string}\n */\nclass Client extends BaseClient implements HubspotClientInterface\n{\n public const string MIN_API_VERSION = '2';\n\n public const string BASE_URL = 'https://api.hubapi.com';\n\n public const int ASSOCIATIONS_BATCH_SIZE_LIMIT = 1000;\n\n private HubspotPaginationService $paginationService;\n private HubspotTokenManager $tokenManager;\n private ProviderRateLimiter $rateLimiter;\n\n public function __construct(\n SocialAccountService $socialAccountService,\n HubspotPaginationService $paginationService,\n HubspotTokenManager $tokenManager,\n ProviderRateLimiter $rateLimiter,\n ) {\n parent::__construct($socialAccountService);\n $this->paginationService = $paginationService;\n $this->tokenManager = $tokenManager;\n $this->rateLimiter = $rateLimiter;\n\n $this->setBaseUrl(self::BASE_URL);\n $this->setVersion(self::MIN_API_VERSION);\n }\n\n /**\n * Single entry point for every HubSpot API call. Enforces the per-portal\n * rate limit configured in the rate_limits table (morphed to the current\n * Configuration) and reacts to a real 429 from HubSpot by translating it\n * into a RateLimitException carrying Retry-After.\n *\n * Wrap any outbound HubSpot call (SDK or raw HTTP) like:\n *\n * $this->executeRequest(fn () => $this->getNewInstance()->crm()->...);\n *\n * @template T\n * @param callable(): T $apiCall\n * @return T\n *\n * @throws RateLimitException\n */\n private function executeRequest(callable $apiCall)\n {\n if (! $this->rateLimiter->canMakeRequest($this->config)) {\n $retryAfter = $this->rateLimiter->requestAvailableIn($this->config);\n\n $this->log->warning('[Hubspot] Rate limit exceeded, deferring request', [\n 'team_id' => $this->config->team_id,\n 'config_id' => $this->config->getId(),\n 'retry_after' => $retryAfter,\n ]);\n\n throw new RateLimitException(\n 'Hubspot rate limit reached for configuration ' . $this->config->getId(),\n $retryAfter,\n );\n }\n\n $this->rateLimiter->incrementRequestCount($this->config);\n\n try {\n return $apiCall();\n } catch (Throwable $e) {\n if ($this->isHubspotRateLimit($e)) {\n $retryAfter = $this->parseRetryAfter($e);\n\n $this->log->warning('[Hubspot] Received 429 from API', [\n 'team_id' => $this->config->team_id,\n 'config_id' => $this->config->getId(),\n 'retry_after' => $retryAfter,\n 'reason' => $e->getMessage(),\n ]);\n\n throw new RateLimitException('Hubspot returned 429', $retryAfter, $e);\n }\n\n throw $e;\n }\n }\n\n private function isHubspotRateLimit(Throwable $e): bool\n {\n return method_exists($e, 'getCode') && (int) $e->getCode() === 429;\n }\n\n private function parseRetryAfter(Throwable $e): int\n {\n if (method_exists($e, 'getResponseHeaders')) {\n $headers = $e->getResponseHeaders() ?: [];\n $value = $headers['Retry-After'] ?? $headers['retry-after'] ?? null;\n if (is_array($value)) {\n $value = $value[0] ?? null;\n }\n if (is_numeric($value)) {\n return (int) $value;\n }\n }\n\n return 10;\n }\n\n public function getMinimumApiVersion(): string\n {\n return self::MIN_API_VERSION;\n }\n\n public function getInstance(): Factory\n {\n return new Factory([\n 'key' => $this->accessToken,\n 'oauth2' => true,\n 'base_url' => $this->baseUrl,\n ]);\n }\n\n public function getNewInstance(): Discovery\n {\n return \\HubSpot\\Factory::createWithAccessToken($this->accessToken);\n }\n\n /**\n * Secondly and daily limits for Hubspot API\n *\n * Product Tier: Free & Starter | Professional & Enterprise | API add-on (any tier)\n * Burst: 100/10 seconds | 150/10 seconds | 200/10 seconds\n * Daily: 250,000 | 500,000 | 1,000,000\n *\n * Official documentation states: The search endpoints are rate limited to five requests per second.\n * Since with 5 RPS were still hitting secondly rate limits we lowered it to 4\n */\n public function getPaginatedData(array $payload, string $type, int $offset = 0): array\n {\n $total = 0;\n $lastId = null;\n $rows = [];\n foreach ($this->getPaginatedDataGenerator($payload, $type, $offset, $total, $lastId) as $row) {\n $rows[] = $row;\n }\n\n return ['results' => $rows, 'total' => $total, 'last_record' => $lastId];\n }\n\n /**\n * @throws HubspotException\n * @throws SocialAccountTokenInvalidException\n * @throws BadRequest\n */\n public function getPaginatedDataGenerator(\n array $payload,\n string $type,\n int $offset = 0,\n int &$total = 0,\n ?string &$lastRecordId = null\n ): \\Generator {\n return $this->paginationService->getPaginatedDataGenerator(\n $this,\n $payload,\n $type,\n $offset,\n $total,\n $lastRecordId\n );\n }\n\n /**\n * @throws DealApiException\n * @throws CrmException\n */\n public function getOpportunityById(string $crmId, array $fields): array\n {\n try {\n $deal = $this->executeRequest(fn () => $this->getNewInstance()->crm()->deals()->basicApi()->getById(\n $crmId,\n implode(',', $fields),\n 'companies,contacts'\n ));\n } catch (DealApiException $e) {\n $this->log->info('[Hubspot] Failed to fetch opportunity', [\n 'crm_id' => $crmId,\n 'reason' => $e->getMessage(),\n ]);\n\n throw $e;\n }\n\n if (! $deal instanceof DealWithAssociations) {\n throw new CrmException('Deal not found');\n }\n\n return [\n 'id' => $deal->getId(),\n 'properties' => $deal->getProperties(),\n 'associations' => $deal->getAssociations(),\n ];\n }\n\n /**\n * Generic batch read method for HubSpot objects\n *\n * @param string $objectType The object type ('deals', 'companies', 'contacts')\n * @param array<string> $crmIds Array of HubSpot object IDs (max 100)\n * @param array<string> $fields Array of property names to fetch\n *\n * @return array<string, array> Array keyed by CRM ID with object data\n */\n private function batchReadObjects(string $objectType, array $crmIds, array $fields): array\n {\n if (empty($crmIds)) {\n return [];\n }\n\n $this->validateBatchSize($objectType, $crmIds);\n $this->ensureValidToken();\n\n try {\n $batchConfig = $this->createBatchConfiguration($objectType);\n $batchReadRequest = $this->prepareBatchRequest($batchConfig, $crmIds, $fields);\n $response = $batchConfig['api']->read($batchReadRequest);\n\n $this->validateApiResponse($response, $objectType);\n\n $results = $this->processApiResults($response);\n $this->logBatchResults($objectType, $crmIds, $results);\n\n return $results;\n } catch (\\Throwable $e) {\n $this->handleBatchError($e, $objectType, $crmIds);\n }\n }\n\n private function validateBatchSize(string $objectType, array $crmIds): void\n {\n if (count($crmIds) > 100) {\n throw new \\InvalidArgumentException(\"Batch size cannot exceed 100 {$objectType}\");\n }\n }\n\n private function createBatchConfiguration(string $objectType): array\n {\n $configurations = [\n 'deals' => [\n 'batchReadRequest' => new \\HubSpot\\Client\\Crm\\Deals\\Model\\BatchReadInputSimplePublicObjectId(),\n 'inputClass' => \\HubSpot\\Client\\Crm\\Deals\\Model\\SimplePublicObjectId::class,\n 'api' => $this->getNewInstance()->crm()->deals()->batchApi(),\n ],\n 'companies' => [\n 'batchReadRequest' => new \\HubSpot\\Client\\Crm\\Companies\\Model\\BatchReadInputSimplePublicObjectId(),\n 'inputClass' => \\HubSpot\\Client\\Crm\\Companies\\Model\\SimplePublicObjectId::class,\n 'api' => $this->getNewInstance()->crm()->companies()->batchApi(),\n ],\n 'contacts' => [\n 'batchReadRequest' => new \\HubSpot\\Client\\Crm\\Contacts\\Model\\BatchReadInputSimplePublicObjectId(),\n 'inputClass' => \\HubSpot\\Client\\Crm\\Contacts\\Model\\SimplePublicObjectId::class,\n 'api' => $this->getNewInstance()->crm()->contacts()->batchApi(),\n ],\n ];\n\n if (! isset($configurations[$objectType])) {\n throw new \\InvalidArgumentException(\"Unsupported object type: {$objectType}\");\n }\n\n return $configurations[$objectType];\n }\n\n private function prepareBatchRequest(array $batchConfig, array $crmIds, array $fields): object\n {\n $batchReadRequest = $batchConfig['batchReadRequest'];\n $inputClass = $batchConfig['inputClass'];\n\n $inputs = array_map(function ($crmId) use ($inputClass) {\n $input = new $inputClass();\n $input->setId($crmId);\n\n return $input;\n }, $crmIds);\n\n $batchReadRequest->setInputs($inputs);\n $batchReadRequest->setProperties($fields);\n\n return $batchReadRequest;\n }\n\n private function validateApiResponse($response, string $objectType): void\n {\n if (! $response) {\n throw new CrmException(\"HubSpot API returned null response for {$objectType} batch read\");\n }\n }\n\n private function processApiResults($response): array\n {\n $results = [];\n $responseResults = $response->getResults();\n\n if ($responseResults) {\n foreach ($responseResults as $object) {\n if ($object && $object->getId()) {\n $results[$object->getId()] = [\n 'id' => $object->getId(),\n 'properties' => $object->getProperties() ?: [],\n ];\n }\n }\n }\n\n return $results;\n }\n\n private function logBatchResults(string $objectType, array $crmIds, array $results): void\n {\n $this->log->info(\"[HubSpot] Batch fetched {$objectType}\", [\n 'requested_count' => count($crmIds),\n 'returned_count' => count($results),\n 'crm_ids' => $crmIds,\n ]);\n }\n\n private function handleBatchError(\\Throwable $e, string $objectType, array $crmIds): void\n {\n $errorMessage = $e->getMessage() ?: 'Unknown error';\n $errorTrace = $e->getTraceAsString() ?: 'No trace available';\n\n $this->log->error(\"[HubSpot] Failed to batch fetch {$objectType}\", [\n 'crm_ids' => $crmIds,\n 'error' => $errorMessage,\n 'trace' => $errorTrace,\n ]);\n\n throw new CrmException(\"Failed to batch fetch {$objectType}: \" . $errorMessage);\n }\n\n /**\n * Batch read multiple opportunities by their CRM IDs\n *\n * @param array<string> $crmIds Array of HubSpot deal IDs (max 100)\n * @param array<string> $fields Array of property names to fetch\n *\n * @return array<string, array> Array keyed by CRM ID with opportunity data\n */\n public function getOpportunitiesByIds(array $crmIds, array $fields): array\n {\n return $this->batchReadObjects('deals', $crmIds, $fields);\n }\n\n /**\n * Batch read multiple companies by their CRM IDs\n *\n * @param array<string> $crmIds Array of HubSpot company IDs (max 100)\n * @param array<string> $fields Array of property names to fetch\n *\n * @return array<string, array> Array keyed by CRM ID with company data\n */\n public function getCompaniesByIds(array $crmIds, array $fields): array\n {\n return $this->batchReadObjects('companies', $crmIds, $fields);\n }\n\n /**\n * Batch read multiple contacts by their CRM IDs\n *\n * @param array<string> $crmIds Array of HubSpot contact IDs (max 100)\n * @param array<string> $fields Array of property names to fetch\n *\n * @return array<string, array> Array keyed by CRM ID with contact data\n */\n public function getContactsByIds(array $crmIds, array $fields): array\n {\n return $this->batchReadObjects('contacts', $crmIds, $fields);\n }\n\n /**\n * @throws CompanyApiException\n * @throws CrmException\n */\n public function getAccountById(string $crmId, array $fields): array\n {\n try {\n $company = $this->getNewInstance()->crm()->companies()->basicApi()->getById(\n $crmId,\n implode(',', $fields),\n );\n } catch (CompanyApiException $e) {\n $this->log->info('[Hubspot] Failed to fetch account', [\n 'crm_id' => $crmId,\n 'reason' => $e->getMessage(),\n ]);\n\n throw $e;\n }\n\n if (! $company instanceof CompaniesWithAssociations) {\n throw new CrmException('Account not found');\n }\n\n return [\n 'id' => $company->getId(),\n 'properties' => $company->getProperties(),\n ];\n }\n\n /**\n * @throws ContactApiException\n * @throws CrmException\n */\n public function getContactById(string $crmId, array $fields): array\n {\n try {\n $contact = $this->getNewInstance()->crm()->contacts()->basicApi()->getById(\n $crmId,\n implode(',', $fields)\n );\n } catch (ContactApiException $e) {\n $this->log->info('[Hubspot] Failed to fetch contact', [\n 'crm_id' => $crmId,\n 'reason' => $e->getMessage(),\n ]);\n\n throw $e;\n }\n\n if (! $contact instanceof ContactsWithAssociations) {\n throw new CrmException('Contact not found');\n }\n\n return [\n 'id' => $contact->getId(),\n 'properties' => $contact->getProperties(),\n ];\n }\n\n /**\n * This is email search request that Hubspot offers as GET (more generous quota)\n */\n public function getContactByEmail(string $email, array $fields = []): array\n {\n try {\n $contact = $this->getNewInstance()->crm()->contacts()->basicApi()->getById(\n $email,\n implode(',', $fields),\n null,\n false,\n 'email'\n );\n\n return [\n 'id' => $contact->getId(),\n 'properties' => $contact->getProperties(),\n ];\n } catch (ContactApiException $e) {\n $this->log->info('[Hubspot] Failed to fetch contact', [\n 'email' => $email,\n 'reason' => $e->getMessage(),\n ]);\n\n return [];\n }\n }\n\n /**\n * @throws CrmException\n */\n public function fetchProperty(string $objectType, string $propertyId): Property\n {\n $result = $this->getNewInstance()->crm()->properties()->coreApi()->getByName($objectType, $propertyId);\n\n if (! $result instanceof Property) {\n $this->log->error('[Hubspot] Failed to fetch property', [\n 'object_type' => $objectType,\n 'property_id' => $propertyId,\n 'reason' => $result->getMessage(),\n ]);\n\n throw new CrmException('Failed to fetch property');\n }\n\n return $result;\n }\n\n /**\n * @return array<CrmFieldOption>\n */\n public function fetchPropertyOptions(string $objectType, string $propertyId): array\n {\n /** @var array<CrmFieldOption> */\n return $this->fetchProperty($objectType, $propertyId)->getOptions();\n }\n\n /**\n * @return array<array{id:string, label:string, deleted:bool}>\n */\n public function fetchCallDispositions(): array\n {\n /** @var Response $response */\n $response = $this->getInstance()->engagements()->getCallDispositions();\n\n /**\n * @var array<array{\n * id:string,\n * label:string,\n * deleted: bool\n * }>\n */\n return $response->toArray();\n }\n\n /**\n * @return array<CrmFieldOption>\n */\n public function fetchOpportunityPipelineStages(): array\n {\n $stages = [];\n $apiResponse = $this->getNewInstance()->crm()->pipelines()->pipelinesApi()->getAll('deals');\n\n if ($apiResponse instanceof Error) {\n $this->log->error('[Hubspot] Failed to fetch opportunity pipelines', [\n 'reason' => $apiResponse->getMessage(),\n ]);\n\n return [];\n }\n\n foreach ($apiResponse->getResults() as $pipeline) {\n $pipelineStages = array_map(\n static function (PipelineStage $stage) {\n return [\n 'id' => $stage->getId(),\n 'label' => $stage->getLabel(),\n ];\n },\n $pipeline->getStages()\n );\n\n $stages = array_merge($stages, $pipelineStages);\n }\n\n return $stages;\n }\n\n public function fetchOpportunityPipelines(): array\n {\n $pipelines = [];\n\n try {\n $apiResponse = $this->makeRequest('/crm/v3/pipelines/deals');\n } catch (\\Exception $e) {\n $this->log->info('[Hubspot] Failed to fetch opportunity pipelines', [\n 'reason' => $e->getMessage(),\n ]);\n\n return [];\n }\n\n $response = $apiResponse->toArray();\n\n foreach ($response['results'] as $pipeline) {\n $pipelines[] = [\n 'id' => $pipeline['id'],\n 'label' => $pipeline['label'],\n ];\n }\n\n return $pipelines;\n }\n\n /**\n * @return array<CrmFieldOption>\n */\n public function fetchMeetingOutcomeFieldOptions(Field $field): array\n {\n return $field->getCrmProviderId() === 'meetingOutcome'\n ? $this->fetchMeetingOutcomeTypes()\n : $this->fetchCallActivityTypes();\n }\n\n public function fetchMeetingOutcomeTypes(): array\n {\n return $this->extractMeetingTypeOptions(\n 'https://api.hubapi.com/crm/v3/properties/meeting/hs_meeting_outcome'\n );\n }\n\n public function fetchCallActivityTypes(): array\n {\n return $this->extractMeetingTypeOptions(\n 'https://api.hubapi.com/crm/v3/properties/call/hs_activity_type'\n );\n }\n\n private function extractMeetingTypeOptions(string $endpoint): array\n {\n /** @var Response $response */\n $response = $this->getInstance()\n ->getClient()\n ->request('GET', $endpoint);\n\n /**\n * @var array<array{\n * value: string,\n * label: string,\n * displayOrder: int\n * }> $optionData\n */\n $optionData = $response->toArray()['options'] ?? [];\n\n $options = [];\n foreach ($optionData as $item) {\n $options[] = [\n 'id' => $item['value'],\n 'value' => $item['value'],\n 'label' => $item['label'],\n 'display_order' => $item['displayOrder'],\n ];\n }\n\n return $options;\n }\n\n /**\n * @return array<CrmFieldOption>\n */\n public function fetchDispositionFieldOptions(): array\n {\n $options = [];\n\n $dispositions = $this->fetchCallDispositions();\n\n foreach ($dispositions as $disposition) {\n if ($disposition['deleted'] !== false) {\n continue;\n }\n\n $option['value'] = $disposition['id'];\n $option['id'] = $disposition['id'];\n $option['label'] = $disposition['label'];\n\n $options[] = $option;\n }\n\n return $options;\n }\n\n /**\n * @return array<CrmFieldOption>\n */\n public function fetchOpportunityFieldOptions(Field $field): array\n {\n if ($field->isStageField()) {\n return $this->fetchOpportunityPipelineStages();\n }\n\n if ($field->isPipelineField()) {\n return $this->fetchOpportunityPipelines();\n }\n\n return $this->fetchPropertyOptions('deals', $field->getCrmProviderId());\n }\n\n /**\n * @throws BadRequest\n * @throws HubspotException\n */\n public function makeRequest(string $endpoint, $method = 'GET', $payload = [], ?string $queryString = null)\n {\n $endpoint = self::BASE_URL . $endpoint;\n\n if ($method === 'GET') {\n $response = $this->getInstance()->getClient()?->request(\n method: $method,\n endpoint: $endpoint,\n query_string: $queryString\n );\n } else {\n $response = $this->getInstance()->getClient()->request($method, $endpoint, [\n 'json' => ($payload),\n ]);\n }\n\n $max = $response->getHeaderLine('X-HubSpot-RateLimit-Max'); // \"110\"\n $remaining = $response->getHeaderLine('X-HubSpot-RateLimit-Remaining'); // \"109\"\n $interval = $response->getHeaderLine('X-HubSpot-RateLimit-Interval-Milliseconds'); // \"10000\"\n $body = json_decode((string) $response->getBody(), true);\n\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$max ' . PHP_EOL . print_r($max, true));\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$remaining ' . PHP_EOL . print_r($remaining, true));\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$interval ' . PHP_EOL . print_r($interval, true));\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$body ' . PHP_EOL . print_r($body, true));\n\n return $response;\n }\n\n /**\n * @throws BadRequest\n * @throws HubspotException\n */\n public function createMeeting(array $payload): Response\n {\n $endpoint = '/crm/v3/objects/meetings';\n\n return $this->makeRequest($endpoint, 'POST', $payload);\n }\n\n /**\n * @throws BadRequest\n * @throws HubspotException\n */\n public function updateMeeting(string $meetingId, array $payload): Response\n {\n $endpoint = '/crm/v3/objects/meetings/' . $meetingId;\n\n return $this->makeRequest($endpoint, 'PATCH', $payload);\n }\n\n /**\n * @throws \\Exception\n */\n public function createNote(\n string $body,\n string $ownerId,\n int $timestamp,\n string $objectId,\n NoteObject $noteObject\n ): ?string {\n try {\n $noteInput = new SimplePublicObjectInput([\n 'properties' => [\n 'hs_note_body' => $body,\n 'hubspot_owner_id' => $ownerId,\n 'hs_timestamp' => $timestamp,\n ],\n ]);\n\n // Create note\n $note = $this->getNewInstance()->crm()->objects()->basicApi()->create('note', $noteInput);\n\n $this->getNewInstance()->crm()->objects()->associationsApi()->create(\n 'note',\n $note->getId(),\n $this->getNoteObject($noteObject),\n $objectId,\n $this->getNoteAssociationType($noteObject),\n );\n\n return $note->getId();\n } catch (\\Exception $e) {\n $this->log->error('[Hubspot] Failed to create note', [\n 'objectId' => $objectId,\n 'noteObject' => $noteObject->getObjectType(),\n 'reason' => $e->getMessage(),\n ]);\n\n \\Sentry::captureException($e);\n }\n\n return null;\n }\n\n public function updateEngagement(string $objectId, array $engagement, array $metadata): void\n {\n $this->getInstance()->engagements()->update($objectId, $engagement, $metadata);\n }\n\n public function getEngagementData(string $engagementId): array\n {\n $engagement = $this->getInstance()->engagements()->get($engagementId);\n\n return $engagement->toArray();\n }\n\n public function createEngagement(array $engagement, array $associations, array $metadata): Response\n {\n return $this->getInstance()\n ->engagements()\n ->create($engagement, $associations, $metadata);\n }\n\n public function isUnauthorizedException(\\Exception $e): bool\n {\n // Check for specific HubSpot API exception types first\n if ($e instanceof BadRequest) {\n // BadRequest can contain 401 status codes\n return $e->getCode() === 401;\n }\n\n // Check for HTTP client exceptions with status codes\n if ($e instanceof \\GuzzleHttp\\Exception\\RequestException && $e->hasResponse()) {\n $response = $e->getResponse();\n if ($response !== null) {\n return $response->getStatusCode() === 401;\n }\n }\n\n // Check for Guzzle HTTP exceptions\n if ($e instanceof \\GuzzleHttp\\Exception\\ClientException) {\n return $e->getCode() === 401;\n }\n\n // Fallback to string matching as last resort, but be more specific\n $message = strtolower($e->getMessage());\n\n return str_contains($message, '401 unauthorized') ||\n str_contains($message, 'http 401') ||\n str_contains($message, 'status code 401') ||\n (preg_match('/\\b401\\b/', $message) && str_contains($message, 'unauthorized'));\n }\n\n /**\n * Validates and refreshes the access token if needed before API requests.\n * This ensures long-running processes don't fail due to token expiration.\n *\n * @throws SocialAccountTokenInvalidException\n */\n public function ensureValidToken(): void\n {\n if ($this->oauthAccount === null) {\n return;\n }\n\n $newToken = $this->tokenManager->ensureValidToken($this->oauthAccount);\n if ($newToken !== null) {\n $this->accessToken = $newToken;\n }\n }\n\n public function getConfig()\n {\n return $this->config;\n }\n\n // returns only active (archived=false)\n public function getOwners(): array\n {\n return $this->getNewInstance()->crm()->owners()->getAll();\n }\n\n /**\n * @param bool $archived\n *\n * @return array<Owner>|[]\n */\n public function getOwnersArchived(bool $archived = true): array\n {\n $endpoint = '/crm/v3/owners';\n $queryParams = [\n 'archived' => $archived ? 'true' : 'false',\n ];\n $queryString = http_build_query($queryParams);\n\n $owners = [];\n\n try {\n $response = $this->makeRequest(endpoint: $endpoint, queryString: $queryString);\n $responseData = $response?->toArray();\n\n foreach ($responseData['results'] as $result) {\n try {\n $owners[] = Owner::create($result);\n } catch (Throwable $e) {\n $this->log->error('[HubSpot] Failed to process owner data', [\n 'result' => $result,\n 'error' => $e->getMessage(),\n ]);\n\n continue;\n }\n }\n } catch (Throwable $e) {\n $this->log->error('HubSpot] Failed to fetch owners', [\n 'archived' => $archived,\n 'error' => $e->getMessage(),\n ]);\n\n return [];\n }\n\n return $owners;\n }\n\n public function getMeeting(string $engagementId): ObjectWithAssociations\n {\n return $this->getNewInstance()->crm()->objects()->basicApi()\n ->getById('meeting', $engagementId, null, 'contact,company,deal');\n }\n\n public function deleteEngagement(string $engagementId): void\n {\n $this->getInstance()->engagements()->delete((int) $engagementId);\n }\n\n public function getAssociationsData(array $ids, string $fromObject, string $toObject): array\n {\n $associationData = [];\n $idChunks = array_chunk($ids, self::ASSOCIATIONS_BATCH_SIZE_LIMIT);\n\n foreach ($idChunks as $idChunk) {\n try {\n $batchInput = new \\HubSpot\\Client\\Crm\\Associations\\Model\\BatchInputPublicObjectId();\n $batchInput->setInputs(array_map(function ($id) {\n $publicObjectId = new \\HubSpot\\Client\\Crm\\Associations\\Model\\PublicObjectId();\n $publicObjectId->setId($id);\n\n return $publicObjectId;\n }, $idChunk));\n\n $associatedObjectsData = $this\n ->getNewInstance()\n ->crm()\n ->associations()\n ->batchApi()\n ->read($fromObject, $toObject, $batchInput);\n\n if ($associatedObjectsData instanceof \\HubSpot\\Client\\Crm\\Associations\\Model\\BatchResponsePublicAssociationMulti) {\n foreach ($associatedObjectsData->getResults() as $association) {\n $from = $association->getFrom()->getId();\n $toAssociations = $association->getTo();\n\n if (! empty($toAssociations)) {\n $associationData[$from] = array_map(function ($item) {\n return $item->getId();\n }, $toAssociations);\n }\n }\n }\n } catch (\\Exception $e) {\n $this->log->error('[Hubspot] Failed to fetch associations', [\n 'from_object' => $fromObject,\n 'to_object' => $toObject,\n 'reason' => $e->getMessage(),\n ]);\n }\n }\n\n return $associationData;\n }\n\n /**\n * @throws \\Exception\n */\n private function getNoteAssociationType(NoteObject $noteObject): string\n {\n return match($noteObject) {\n NoteObject::Opportunity => 'note_to_deal',\n NoteObject::Lead, NoteObject::Contact => 'note_to_contact', // or 'note_to_lead' if your portal supports it\n NoteObject::Account => 'note_to_company',\n NoteObject::Call, NoteObject::Event => throw new \\Exception('Not supported'),\n };\n }\n\n /**\n * @throws \\Exception\n */\n private function getNoteObject(NoteObject $noteObject): string\n {\n return match($noteObject) {\n NoteObject::Opportunity => 'deal',\n NoteObject::Lead, NoteObject::Contact => 'contact',\n NoteObject::Account => 'company',\n NoteObject::Call, NoteObject::Event => throw new \\Exception('Not supported'),\n };\n }\n\n public function addAssociations(string $objectType, string $associationType, array $payload): Response\n {\n $endpoint = \"/crm/v4/associations/$objectType/$associationType/batch/create\";\n\n return $this->makeRequest($endpoint, 'POST', $payload);\n }\n\n public function removeAssociations(string $objectType, string $associationType, array $payload): Response\n {\n $endpoint = \"/crm/v4/associations/$objectType/$associationType/batch/archive\";\n\n return $this->makeRequest($endpoint, 'POST', $payload);\n }\n}","role_description":"text entry area","is_enabled":true,"is_focused":true,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Project","depth":3,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Project","depth":3,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"New File or Directory…","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Expand Selected","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Collapse All","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Options","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
-188086479456983350
|
6378757184196315236
|
click
|
accessibility
|
NULL
|
Project: faVsco.js, menu
master, menu
Start Listen Project: faVsco.js, menu
master, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
Editor for custom.log
Sync Changes
Hide This Notification
Code changed:
Hide
2
60
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Services\Crm\Hubspot;
use HubSpot\Client\Crm\Deals\ApiException as DealApiException;
use HubSpot\Client\Crm\Contacts\ApiException as ContactApiException;
use HubSpot\Client\Crm\Companies\ApiException as CompanyApiException;
use HubSpot\Client\Crm\Contacts\Model\SimplePublicObjectWithAssociations as ContactsWithAssociations;
use HubSpot\Client\Crm\Companies\Model\SimplePublicObjectWithAssociations as CompaniesWithAssociations;
use HubSpot\Client\Crm\Deals\Model\SimplePublicObjectWithAssociations as DealWithAssociations;
use HubSpot\Client\Crm\Objects\Model\SimplePublicObjectInput;
use HubSpot\Client\Crm\Objects\Model\SimplePublicObjectWithAssociations as ObjectWithAssociations;
use HubSpot\Client\Crm\Pipelines\Model\Error;
use HubSpot\Client\Crm\Pipelines\Model\PipelineStage;
use HubSpot\Client\Crm\Properties\Model\Property;
use HubSpot\Discovery\Discovery;
use Jiminny\Component\Utility\Service\ProviderRateLimiter;
use Jiminny\Exceptions\CrmException;
use Jiminny\Exceptions\RateLimitException;
use Jiminny\Exceptions\SocialAccountTokenInvalidException;
use Jiminny\Jobs\Crm\NoteObject;
use Jiminny\Models\Crm\Field;
use Jiminny\Services\Crm\BaseClient;
use Jiminny\Services\Crm\Hubspot\DTO\Response\Owner;
use Jiminny\Services\SocialAccountService;
use SevenShores\Hubspot\Exceptions\BadRequest;
use SevenShores\Hubspot\Exceptions\HubspotException;
use SevenShores\Hubspot\Factory;
use SevenShores\Hubspot\Http\Response;
use Jiminny\Services\Crm\Hubspot\Pagination\HubspotPaginationService;
use Throwable;
/**
* @phpstan-type CrmFieldOption array{id:string, label:string, value?:string}
*/
class Client extends BaseClient implements HubspotClientInterface
{
public const string MIN_API_VERSION = '2';
public const string BASE_URL = '[URL_WITH_CREDENTIALS] T
* @param callable(): T $apiCall
* @return T
*
* @throws RateLimitException
*/
private function executeRequest(callable $apiCall)
{
if (! $this->rateLimiter->canMakeRequest($this->config)) {
$retryAfter = $this->rateLimiter->requestAvailableIn($this->config);
$this->log->warning('[Hubspot] Rate limit exceeded, deferring request', [
'team_id' => $this->config->team_id,
'config_id' => $this->config->getId(),
'retry_after' => $retryAfter,
]);
throw new RateLimitException(
'Hubspot rate limit reached for configuration ' . $this->config->getId(),
$retryAfter,
);
}
$this->rateLimiter->incrementRequestCount($this->config);
try {
return $apiCall();
} catch (Throwable $e) {
if ($this->isHubspotRateLimit($e)) {
$retryAfter = $this->parseRetryAfter($e);
$this->log->warning('[Hubspot] Received 429 from API', [
'team_id' => $this->config->team_id,
'config_id' => $this->config->getId(),
'retry_after' => $retryAfter,
'reason' => $e->getMessage(),
]);
throw new RateLimitException('Hubspot returned 429', $retryAfter, $e);
}
throw $e;
}
}
private function isHubspotRateLimit(Throwable $e): bool
{
return method_exists($e, 'getCode') && (int) $e->getCode() === 429;
}
private function parseRetryAfter(Throwable $e): int
{
if (method_exists($e, 'getResponseHeaders')) {
$headers = $e->getResponseHeaders() ?: [];
$value = $headers['Retry-After'] ?? $headers['retry-after'] ?? null;
if (is_array($value)) {
$value = $value[0] ?? null;
}
if (is_numeric($value)) {
return (int) $value;
}
}
return 10;
}
public function getMinimumApiVersion(): string
{
return self::MIN_API_VERSION;
}
public function getInstance(): Factory
{
return new Factory([
'key' => $this->accessToken,
'oauth2' => true,
'base_url' => $this->baseUrl,
]);
}
public function getNewInstance(): Discovery
{
return \HubSpot\Factory::createWithAccessToken($this->accessToken);
}
/**
* Secondly and daily limits for Hubspot API
*
* Product Tier: Free & Starter | Professional & Enterprise | API add-on (any tier)
* Burst: 100/10 seconds | 150/10 seconds | 200/10 seconds
* Daily: 250,000 | 500,000 | 1,000,000
*
* Official documentation states: The search endpoints are rate limited to five requests per second.
* Since with 5 RPS were still hitting secondly rate limits we lowered it to 4
*/
public function getPaginatedData(array $payload, string $type, int $offset = 0): array
{
$total = 0;
$lastId = null;
$rows = [];
foreach ($this->getPaginatedDataGenerator($payload, $type, $offset, $total, $lastId) as $row) {
$rows[] = $row;
}
return ['results' => $rows, 'total' => $total, 'last_record' => $lastId];
}
/**
* @throws HubspotException
* @throws SocialAccountTokenInvalidException
* @throws BadRequest
*/
public function getPaginatedDataGenerator(
array $payload,
string $type,
int $offset = 0,
int &$total = 0,
?string &$lastRecordId = null
): \Generator {
return $this->paginationService->getPaginatedDataGenerator(
$this,
$payload,
$type,
$offset,
$total,
$lastRecordId
);
}
/**
* @throws DealApiException
* @throws CrmException
*/
public function getOpportunityById(string $crmId, array $fields): array
{
try {
$deal = $this->executeRequest(fn () => $this->getNewInstance()->crm()->deals()->basicApi()->getById(
$crmId,
implode(',', $fields),
'companies,contacts'
));
} catch (DealApiException $e) {
$this->log->info('[Hubspot] Failed to fetch opportunity', [
'crm_id' => $crmId,
'reason' => $e->getMessage(),
]);
throw $e;
}
if (! $deal instanceof DealWithAssociations) {
throw new CrmException('Deal not found');
}
return [
'id' => $deal->getId(),
'properties' => $deal->getProperties(),
'associations' => $deal->getAssociations(),
];
}
/**
* Generic batch read method for HubSpot objects
*
* @param string $objectType The object type ('deals', 'companies', 'contacts')
* @param array<string> $crmIds Array of HubSpot object IDs (max 100)
* @param array<string> $fields Array of property names to fetch
*
* @return array<string, array> Array keyed by CRM ID with object data
*/
private function batchReadObjects(string $objectType, array $crmIds, array $fields): array
{
if (empty($crmIds)) {
return [];
}
$this->validateBatchSize($objectType, $crmIds);
$this->ensureValidToken();
try {
$batchConfig = $this->createBatchConfiguration($objectType);
$batchReadRequest = $this->prepareBatchRequest($batchConfig, $crmIds, $fields);
$response = $batchConfig['api']->read($batchReadRequest);
$this->validateApiResponse($response, $objectType);
$results = $this->processApiResults($response);
$this->logBatchResults($objectType, $crmIds, $results);
return $results;
} catch (\Throwable $e) {
$this->handleBatchError($e, $objectType, $crmIds);
}
}
private function validateBatchSize(string $objectType, array $crmIds): void
{
if (count($crmIds) > 100) {
throw new \InvalidArgumentException("Batch size cannot exceed 100 {$objectType}");
}
}
private function createBatchConfiguration(string $objectType): array
{
$configurations = [
'deals' => [
'batchReadRequest' => new \HubSpot\Client\Crm\Deals\Model\BatchReadInputSimplePublicObjectId(),
'inputClass' => \HubSpot\Client\Crm\Deals\Model\SimplePublicObjectId::class,
'api' => $this->getNewInstance()->crm()->deals()->batchApi(),
],
'companies' => [
'batchReadRequest' => new \HubSpot\Client\Crm\Companies\Model\BatchReadInputSimplePublicObjectId(),
'inputClass' => \HubSpot\Client\Crm\Companies\Model\SimplePublicObjectId::class,
'api' => $this->getNewInstance()->crm()->companies()->batchApi(),
],
'contacts' => [
'batchReadRequest' => new \HubSpot\Client\Crm\Contacts\Model\BatchReadInputSimplePublicObjectId(),
'inputClass' => \HubSpot\Client\Crm\Contacts\Model\SimplePublicObjectId::class,
'api' => $this->getNewInstance()->crm()->contacts()->batchApi(),
],
];
if (! isset($configurations[$objectType])) {
throw new \InvalidArgumentException("Unsupported object type: {$objectType}");
}
return $configurations[$objectType];
}
private function prepareBatchRequest(array $batchConfig, array $crmIds, array $fields): object
{
$batchReadRequest = $batchConfig['batchReadRequest'];
$inputClass = $batchConfig['inputClass'];
$inputs = array_map(function ($crmId) use ($inputClass) {
$input = new $inputClass();
$input->setId($crmId);
return $input;
}, $crmIds);
$batchReadRequest->setInputs($inputs);
$batchReadRequest->setProperties($fields);
return $batchReadRequest;
}
private function validateApiResponse($response, string $objectType): void
{
if (! $response) {
throw new CrmException("HubSpot API returned null response for {$objectType} batch read");
}
}
private function processApiResults($response): array
{
$results = [];
$responseResults = $response->getResults();
if ($responseResults) {
foreach ($responseResults as $object) {
if ($object && $object->getId()) {
$results[$object->getId()] = [
'id' => $object->getId(),
'properties' => $object->getProperties() ?: [],
];
}
}
}
return $results;
}
private function logBatchResults(string $objectType, array $crmIds, array $results): void
{
$this->log->info("[HubSpot] Batch fetched {$objectType}", [
'requested_count' => count($crmIds),
'returned_count' => count($results),
'crm_ids' => $crmIds,
]);
}
private function handleBatchError(\Throwable $e, string $objectType, array $crmIds): void
{
$errorMessage = $e->getMessage() ?: 'Unknown error';
$errorTrace = $e->getTraceAsString() ?: 'No trace available';
$this->log->error("[HubSpot] Failed to batch fetch {$objectType}", [
'crm_ids' => $crmIds,
'error' => $errorMessage,
'trace' => $errorTrace,
]);
throw new CrmException("Failed to batch fetch {$objectType}: " . $errorMessage);
}
/**
* Batch read multiple opportunities by their CRM IDs
*
* @param array<string> $crmIds Array of HubSpot deal IDs (max 100)
* @param array<string> $fields Array of property names to fetch
*
* @return array<string, array> Array keyed by CRM ID with opportunity data
*/
public function getOpportunitiesByIds(array $crmIds, array $fields): array
{
return $this->batchReadObjects('deals', $crmIds, $fields);
}
/**
* Batch read multiple companies by their CRM IDs
*
* @param array<string> $crmIds Array of HubSpot company IDs (max 100)
* @param array<string> $fields Array of property names to fetch
*
* @return array<string, array> Array keyed by CRM ID with company data
*/
public function getCompaniesByIds(array $crmIds, array $fields): array
{
return $this->batchReadObjects('companies', $crmIds, $fields);
}
/**
* Batch read multiple contacts by their CRM IDs
*
* @param array<string> $crmIds Array of HubSpot contact IDs (max 100)
* @param array<string> $fields Array of property names to fetch
*
* @return array<string, array> Array keyed by CRM ID with contact data
*/
public function getContactsByIds(array $crmIds, array $fields): array
{
return $this->batchReadObjects('contacts', $crmIds, $fields);
}
/**
* @throws CompanyApiException
* @throws CrmException
*/
public function getAccountById(string $crmId, array $fields): array
{
try {
$company = $this->getNewInstance()->crm()->companies()->basicApi()->getById(
$crmId,
implode(',', $fields),
);
} catch (CompanyApiException $e) {
$this->log->info('[Hubspot] Failed to fetch account', [
'crm_id' => $crmId,
'reason' => $e->getMessage(),
]);
throw $e;
}
if (! $company instanceof CompaniesWithAssociations) {
throw new CrmException('Account not found');
}
return [
'id' => $company->getId(),
'properties' => $company->getProperties(),
];
}
/**
* @throws ContactApiException
* @throws CrmException
*/
public function getContactById(string $crmId, array $fields): array
{
try {
$contact = $this->getNewInstance()->crm()->contacts()->basicApi()->getById(
$crmId,
implode(',', $fields)
);
} catch (ContactApiException $e) {
$this->log->info('[Hubspot] Failed to fetch contact', [
'crm_id' => $crmId,
'reason' => $e->getMessage(),
]);
throw $e;
}
if (! $contact instanceof ContactsWithAssociations) {
throw new CrmException('Contact not found');
}
return [
'id' => $contact->getId(),
'properties' => $contact->getProperties(),
];
}
/**
* This is email search request that Hubspot offers as GET (more generous quota)
*/
public function getContactByEmail(string $email, array $fields = []): array
{
try {
$contact = $this->getNewInstance()->crm()->contacts()->basicApi()->getById(
$email,
implode(',', $fields),
null,
false,
'email'
);
return [
'id' => $contact->getId(),
'properties' => $contact->getProperties(),
];
} catch (ContactApiException $e) {
$this->log->info('[Hubspot] Failed to fetch contact', [
'email' => $email,
'reason' => $e->getMessage(),
]);
return [];
}
}
/**
* @throws CrmException
*/
public function fetchProperty(string $objectType, string $propertyId): Property
{
$result = $this->getNewInstance()->crm()->properties()->coreApi()->getByName($objectType, $propertyId);
if (! $result instanceof Property) {
$this->log->error('[Hubspot] Failed to fetch property', [
'object_type' => $objectType,
'property_id' => $propertyId,
'reason' => $result->getMessage(),
]);
throw new CrmException('Failed to fetch property');
}
return $result;
}
/**
* @return array<CrmFieldOption>
*/
public function fetchPropertyOptions(string $objectType, string $propertyId): array
{
/** @var array<CrmFieldOption> */
return $this->fetchProperty($objectType, $propertyId)->getOptions();
}
/**
* @return array<array{id:string, label:string, deleted:bool}>
*/
public function fetchCallDispositions(): array
{
/** @var Response $response */
$response = $this->getInstance()->engagements()->getCallDispositions();
/**
* @var array<array{
* id:string,
* label:string,
* deleted: bool
* }>
*/
return $response->toArray();
}
/**
* @return array<CrmFieldOption>
*/
public function fetchOpportunityPipelineStages(): array
{
$stages = [];
$apiResponse = $this->getNewInstance()->crm()->pipelines()->pipelinesApi()->getAll('deals');
if ($apiResponse instanceof Error) {
$this->log->error('[Hubspot] Failed to fetch opportunity pipelines', [
'reason' => $apiResponse->getMessage(),
]);
return [];
}
foreach ($apiResponse->getResults() as $pipeline) {
$pipelineStages = array_map(
static function (PipelineStage $stage) {
return [
'id' => $stage->getId(),
'label' => $stage->getLabel(),
];
},
$pipeline->getStages()
);
$stages = array_merge($stages, $pipelineStages);
}
return $stages;
}
public function fetchOpportunityPipelines(): array
{
$pipelines = [];
try {
$apiResponse = $this->makeRequest('/crm/v3/pipelines/deals');
} catch (\Exception $e) {
$this->log->info('[Hubspot] Failed to fetch opportunity pipelines', [
'reason' => $e->getMessage(),
]);
return [];
}
$response = $apiResponse->toArray();
foreach ($response['results'] as $pipeline) {
$pipelines[] = [
'id' => $pipeline['id'],
'label' => $pipeline['label'],
];
}
return $pipelines;
}
/**
* @return array<CrmFieldOption>
*/
public function fetchMeetingOutcomeFieldOptions(Field $field): array
{
return $field->getCrmProviderId() === 'meetingOutcome'
? $this->fetchMeetingOutcomeTypes()
: $this->fetchCallActivityTypes();
}
public function fetchMeetingOutcomeTypes(): array
{
return $this->extractMeetingTypeOptions(
'[URL_WITH_CREDENTIALS] Response $response */
$response = $this->getInstance()
->getClient()
->request('GET', $endpoint);
/**
* @var array<array{
* value: string,
* label: string,
* displayOrder: int
* }> $optionData
*/
$optionData = $response->toArray()['options'] ?? [];
$options = [];
foreach ($optionData as $item) {
$options[] = [
'id' => $item['value'],
'value' => $item['value'],
'label' => $item['label'],
'display_order' => $item['displayOrder'],
];
}
return $options;
}
/**
* @return array<CrmFieldOption>
*/
public function fetchDispositionFieldOptions(): array
{
$options = [];
$dispositions = $this->fetchCallDispositions();
foreach ($dispositions as $disposition) {
if ($disposition['deleted'] !== false) {
continue;
}
$option['value'] = $disposition['id'];
$option['id'] = $disposition['id'];
$option['label'] = $disposition['label'];
$options[] = $option;
}
return $options;
}
/**
* @return array<CrmFieldOption>
*/
public function fetchOpportunityFieldOptions(Field $field): array
{
if ($field->isStageField()) {
return $this->fetchOpportunityPipelineStages();
}
if ($field->isPipelineField()) {
return $this->fetchOpportunityPipelines();
}
return $this->fetchPropertyOptions('deals', $field->getCrmProviderId());
}
/**
* @throws BadRequest
* @throws HubspotException
*/
public function makeRequest(string $endpoint, $method = 'GET', $payload = [], ?string $queryString = null)
{
$endpoint = self::BASE_URL . $endpoint;
if ($method === 'GET') {
$response = $this->getInstance()->getClient()?->request(
method: $method,
endpoint: $endpoint,
query_string: $queryString
);
} else {
$response = $this->getInstance()->getClient()->request($method, $endpoint, [
'json' => ($payload),
]);
}
$max = $response->getHeaderLine('X-HubSpot-RateLimit-Max'); // "110"
$remaining = $response->getHeaderLine('X-HubSpot-RateLimit-Remaining'); // "109"
$interval = $response->getHeaderLine('X-HubSpot-RateLimit-Interval-Milliseconds'); // "10000"
$body = json_decode((string) $response->getBody(), true);
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$max ' . PHP_EOL . print_r($max, true));
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$remaining ' . PHP_EOL . print_r($remaining, true));
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$interval ' . PHP_EOL . print_r($interval, true));
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$body ' . PHP_EOL . print_r($body, true));
return $response;
}
/**
* @throws BadRequest
* @throws HubspotException
*/
public function createMeeting(array $payload): Response
{
$endpoint = '/crm/v3/objects/meetings';
return $this->makeRequest($endpoint, 'POST', $payload);
}
/**
* @throws BadRequest
* @throws HubspotException
*/
public function updateMeeting(string $meetingId, array $payload): Response
{
$endpoint = '/crm/v3/objects/meetings/' . $meetingId;
return $this->makeRequest($endpoint, 'PATCH', $payload);
}
/**
* @throws \Exception
*/
public function createNote(
string $body,
string $ownerId,
int $timestamp,
string $objectId,
NoteObject $noteObject
): ?string {
try {
$noteInput = new SimplePublicObjectInput([
'properties' => [
'hs_note_body' => $body,
'hubspot_owner_id' => $ownerId,
'hs_timestamp' => $timestamp,
],
]);
// Create note
$note = $this->getNewInstance()->crm()->objects()->basicApi()->create('note', $noteInput);
$this->getNewInstance()->crm()->objects()->associationsApi()->create(
'note',
$note->getId(),
$this->getNoteObject($noteObject),
$objectId,
$this->getNoteAssociationType($noteObject),
);
return $note->getId();
} catch (\Exception $e) {
$this->log->error('[Hubspot] Failed to create note', [
'objectId' => $objectId,
'noteObject' => $noteObject->getObjectType(),
'reason' => $e->getMessage(),
]);
\Sentry::captureException($e);
}
return null;
}
public function updateEngagement(string $objectId, array $engagement, array $metadata): void
{
$this->getInstance()->engagements()->update($objectId, $engagement, $metadata);
}
public function getEngagementData(string $engagementId): array
{
$engagement = $this->getInstance()->engagements()->get($engagementId);
return $engagement->toArray();
}
public function createEngagement(array $engagement, array $associations, array $metadata): Response
{
return $this->getInstance()
->engagements()
->create($engagement, $associations, $metadata);
}
public function isUnauthorizedException(\Exception $e): bool
{
// Check for specific HubSpot API exception types first
if ($e instanceof BadRequest) {
// BadRequest can contain 401 status codes
return $e->getCode() === 401;
}
// Check for HTTP client exceptions with status codes
if ($e instanceof \GuzzleHttp\Exception\RequestException && $e->hasResponse()) {
$response = $e->getResponse();
if ($response !== null) {
return $response->getStatusCode() === 401;
}
}
// Check for Guzzle HTTP exceptions
if ($e instanceof \GuzzleHttp\Exception\ClientException) {
return $e->getCode() === 401;
}
// Fallback to string matching as last resort, but be more specific
$message = strtolower($e->getMessage());
return str_contains($message, '401 unauthorized') ||
str_contains($message, 'http 401') ||
str_contains($message, 'status code 401') ||
(preg_match('/\b401\b/', $message) && str_contains($message, 'unauthorized'));
}
/**
* Validates and refreshes the access token if needed before API requests.
* This ensures long-running processes don't fail due to token expiration.
*
* @throws SocialAccountTokenInvalidException
*/
public function ensureValidToken(): void
{
if ($this->oauthAccount === null) {
return;
}
$newToken = $this->tokenManager->ensureValidToken($this->oauthAccount);
if ($newToken !== null) {
$this->accessToken = $newToken;
}
}
public function getConfig()
{
return $this->config;
}
// returns only active (archived=false)
public function getOwners(): array
{
return $this->getNewInstance()->crm()->owners()->getAll();
}
/**
* @param bool $archived
*
* @return array<Owner>|[]
*/
public function getOwnersArchived(bool $archived = true): array
{
$endpoint = '/crm/v3/owners';
$queryParams = [
'archived' => $archived ? 'true' : 'false',
];
$queryString = http_build_query($queryParams);
$owners = [];
try {
$response = $this->makeRequest(endpoint: $endpoint, queryString: $queryString);
$responseData = $response?->toArray();
foreach ($responseData['results'] as $result) {
try {
$owners[] = Owner::create($result);
} catch (Throwable $e) {
$this->log->error('[HubSpot] Failed to process owner data', [
'result' => $result,
'error' => $e->getMessage(),
]);
continue;
}
}
} catch (Throwable $e) {
$this->log->error('HubSpot] Failed to fetch owners', [
'archived' => $archived,
'error' => $e->getMessage(),
]);
return [];
}
return $owners;
}
public function getMeeting(string $engagementId): ObjectWithAssociations
{
return $this->getNewInstance()->crm()->objects()->basicApi()
->getById('meeting', $engagementId, null, 'contact,company,deal');
}
public function deleteEngagement(string $engagementId): void
{
$this->getInstance()->engagements()->delete((int) $engagementId);
}
public function getAssociationsData(array $ids, string $fromObject, string $toObject): array
{
$associationData = [];
$idChunks = array_chunk($ids, self::ASSOCIATIONS_BATCH_SIZE_LIMIT);
foreach ($idChunks as $idChunk) {
try {
$batchInput = new \HubSpot\Client\Crm\Associations\Model\BatchInputPublicObjectId();
$batchInput->setInputs(array_map(function ($id) {
$publicObjectId = new \HubSpot\Client\Crm\Associations\Model\PublicObjectId();
$publicObjectId->setId($id);
return $publicObjectId;
}, $idChunk));
$associatedObjectsData = $this
->getNewInstance()
->crm()
->associations()
->batchApi()
->read($fromObject, $toObject, $batchInput);
if ($associatedObjectsData instanceof \HubSpot\Client\Crm\Associations\Model\BatchResponsePublicAssociationMulti) {
foreach ($associatedObjectsData->getResults() as $association) {
$from = $association->getFrom()->getId();
$toAssociations = $association->getTo();
if (! empty($toAssociations)) {
$associationData[$from] = array_map(function ($item) {
return $item->getId();
}, $toAssociations);
}
}
}
} catch (\Exception $e) {
$this->log->error('[Hubspot] Failed to fetch associations', [
'from_object' => $fromObject,
'to_object' => $toObject,
'reason' => $e->getMessage(),
]);
}
}
return $associationData;
}
/**
* @throws \Exception
*/
private function getNoteAssociationType(NoteObject $noteObject): string
{
return match($noteObject) {
NoteObject::Opportunity => 'note_to_deal',
NoteObject::Lead, NoteObject::Contact => 'note_to_contact', // or 'note_to_lead' if your portal supports it
NoteObject::Account => 'note_to_company',
NoteObject::Call, NoteObject::Event => throw new \Exception('Not supported'),
};
}
/**
* @throws \Exception
*/
private function getNoteObject(NoteObject $noteObject): string
{
return match($noteObject) {
NoteObject::Opportunity => 'deal',
NoteObject::Lead, NoteObject::Contact => 'contact',
NoteObject::Account => 'company',
NoteObject::Call, NoteObject::Event => throw new \Exception('Not supported'),
};
}
public function addAssociations(string $objectType, string $associationType, array $payload): Response
{
$endpoint = "/crm/v4/associations/$objectType/$associationType/batch/create";
return $this->makeRequest($endpoint, 'POST', $payload);
}
public function removeAssociations(string $objectType, string $associationType, array $payload): Response
{
$endpoint = "/crm/v4/associations/$objectType/$associationType/batch/archive";
return $this->makeRequest($endpoint, 'POST', $payload);
}
}
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
2868
|
NULL
|
NULL
|
NULL
|
|
2914
|
NULL
|
0
|
2026-05-07T11:49:27.810122+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-07/1778 /Users/lukas/.screenpipe/data/data/2026-05-07/1778154567810_m1.jpg...
|
Claude
|
Claude
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Skip to content
Skip to content
Click to collapse
Skip to content
Skip to content
Click to collapse
⌘B
Drag to resize
Open sidebar
Chat
Cowork
Code
New chat ⌘N
New chat
⌘N
Projects
Artifacts
Customize
Pinned
Bulgarian citizenship application process for EU residents
More options for Bulgarian citizenship application process for EU residents
Dawarich location tracking project
More options for Dawarich location tracking project
Recents
View all
HubSpot rate limit implementation strategy
More options for HubSpot rate limit implementation strategy
Screenpipe retention policy code location
More options for Screenpipe retention policy code location
Viewing retention policy in screenpipe
More options for Viewing retention policy in screenpipe
Clean shot x video recording termination issue
More options for Clean shot x video recording termination issue
HubSpot rate limit handling with executeRequest
More options for HubSpot rate limit handling with executeRequest
Untitled
More options
💬 Screen pipe. Is there ability…
More options for 💬 Screen pipe. Is there ability…
SMB mount access inconsistency between Finder and iTerm
More options for SMB mount access inconsistency between Finder and iTerm
💬 What is the best switch I can…
More options for 💬 What is the best switch I can…
Permission denied on screenpipe volume
More options for Permission denied on screenpipe volume
Screenpipe sync database attachment error
More options for Screenpipe sync database attachment error
Last swimming outing with Dani
More options for Last swimming outing with Dani
Definition of incarcerated
More options for Definition of incarcerated
Chromecast remote volume buttons not working
More options for Chromecast remote volume buttons not working
Salesforce API errors with Organization and FieldDefinition queries
More options for Salesforce API errors with Organization and FieldDefinition queries
Daily activity summary from screenpipe data
More options for Daily activity summary from screenpipe data
MacBook unexpected restarts and kanji screen
More options for MacBook unexpected restarts and kanji screen
Security patch review and testing guidance
More options for Security patch review and testing guidance
Food calorie values reference
More options for Food calorie values reference
Tracking location history from last week
More options for Tracking location history from last week
Lukas Pro
Get apps and extensions
HubSpot rate limit implementation strategy, rename chat
HubSpot rate limit implementation strategy
More options for HubSpot rate limit implementation strategy
Close
Claude is responding
You said: So just a solution for rate limit implementation.
You said: So just a solution for rate limit implementation.
So just a solution for rate limit implementation. The situation currently is that there are some daily and secondary limits for HubSpot. I would like to make sure I never reach a 429 error rate limit. The requests can come from any flow. It can be:
updating activity (engagement, meeting, call, note)
searching for a company or contact
updating deal
patching IDs
Review what the limit is at the moment in the HubSpot documentation and then think of the solution:
where to store it
how to read it
how to work with multiple jobs
how to work with paginated requests Let's consider a situation when there are 600 opportunities to sync. What would be the flow? How would the rate limit be recognized? How would it be handled? What are the potential issues? [API usage guidelines and limits - HubSpot docs](
https://developers.hubspot.com/docs/developer-tooling/platform/usage-guidelines
https://developers.hubspot.com/docs/developer-tooling/platform/usage-guidelines
). Example of such a error Client error:
POST https://api.hubapi.com/crm/v3/objects/contact/search
resulted in a
429 Too Many Requests
response: {"status":"error","message":"You have reached your secondly limit.","errorType":"RATE_LIMIT","correlationId":"019dffc4-4 (truncated...). Think carefully about the implementation and potential issue and bottlenecks.
Show more
10:42
Edit
Copy
Claude responded: Current HubSpot limits (Apr 2026)
Claude responded: Current HubSpot limits (Apr 2026)
Synthesized HubSpot rate limit architecture with Redis storage and sliding window algorithms
Synthesized HubSpot rate limit architecture with Redis storage and sliding window algorithms
Current HubSpot limits (Apr 2026)
Current HubSpot limits (Apr 2026)
For privately distributed apps (which is what Jiminny presumably uses with HubSpot), the limits are layered: a per-app burst window of 100/10s on Free/Starter, 190/10s on Pro/Enterprise, or 250/10s with the API Limit Increase add-on
, plus a per-account daily cap of 250k / 625k / 1M depending on tier — shared across all private apps in the account
. The burst window is per app; the daily quota is per portal.
hubspot
hubspot
hubspot
hubspot
The Search API is special: five requests per second per account, capped at 200 records per page, with a hard 10,000-result ceiling per query
. That's the limit the 429 in your example is hitting (
secondly limit
on
/crm/v3/objects/contact/search
). It's a separate bucket from the 190/10s, and critically, search responses do not include the
X-HubSpot-RateLimit-*
headers
— you can't read remaining capacity off the response, you have to track it yourself.
hubspot
hubspot
hubspot
hubspot
Non-search endpoints return
X-HubSpot-RateLimit-Remaining
,
-Max
, and
-Interval-Milliseconds
. The daily headers are not returned for OAuth-authenticated calls
, so for those you check the account-info endpoint or maintain your own counter. There's also a soft rule: errors should stay under 5% of total daily requests
— that's enforced for marketplace listing, but it's also a sane operational target.
hubspot
hubspot
hubspot
hubspot
So you have
four buckets
to track at minimum: app-burst (10s sliding), search-secondly (1s sliding), account-daily (24h fixed, midnight in HubSpot's TZ), and per-app daily share (your own budgeting on top of the account cap).
Where to store it
Where to store it
Redis. It's the only realistic option once you have multiple queue workers — DB-backed counters serialize too much, and in-process state can't coordinate across workers. Laravel already speaks Redis natively, and you get atomic
INCR
/
EXPIRE
plus Lua scripting for true CAS semantics.
Key layout I'd use:
Copy to clipboard
hubspot:rl:burst:{portalId}:{appId} ZSET (sliding 10s)
hubspot:rl:search:{portalId} ZSET (sliding 1s)
hubspot:rl:daily:{portalId} STRING + TTL to midnight TZ
hubspot:rl:meta:{portalId} HASH (last seen headers)
The two short-window buckets are sliding-window-log (Redis ZSET, score =
microtime
, member = unique request id). Lua script removes entries older than the window, counts remaining slots, and only adds the new one if there's room — all atomic. Fixed windows are simpler but allow 2× the limit at the boundary, which on a 5/s window is brutal.
The daily bucket is a plain
INCR
with TTL set to seconds-until-midnight in
HubSpot's account timezone
, not yours — Sofia is UTC+2/+3 but your portal might be set to US Eastern. Get this once and cache it.
How to read it
How to read it
Two-phase: optimistic pre-check, authoritative post-update.
Before a call, run the Lua acquire script. If it returns "denied," sleep until a slot frees up (the script can return ms-until-next-slot) or push the job back to the queue with a delay. Don't busy-loop.
After the call, parse
X-HubSpot-RateLimit-Remaining
/
-Max
/
-Interval-Milliseconds
and store them in
hubspot:rl:meta:{portalId}
. This is your reality check — if your local counter says 50 remaining but HubSpot's header says 5, you trust HubSpot and clamp your counter. This handles clock drift, missed accounting (e.g., crashed worker that took a token but never made the request), and other apps in the same account consuming the daily budget invisibly.
For search specifically, since headers don't come back, the local counter
is
the source of truth — meaning if you ever crash mid-flight, you've under-counted. Always release tokens on connection-level failure but
not
on 429 (you really did make that request).
How to work with multiple jobs
How to work with multiple jobs
The queue layer needs to enforce concurrency separately from the rate limiter. Both work together:
Concurrency cap
via
Queue::throttle()
or a Redis semaphore — limits how many sync workers run in parallel against HubSpot. Without this, you can have 50 workers all blocked waiting for tokens, which is wasteful and creates retry storms.
Per-tenant fairness
— if you sync many Jiminny customers into different HubSpot portals, each portal has its own bucket but you still want one slow portal not to starve others. Either separate queues per portal or a fair-share scheduler.
Priority lanes
— webhook-driven updates (user-visible latency) should outrank background batch syncs. Two queues:
hubspot-priority
and
hubspot-bulk
, with priority workers taking 70% of the burst budget and bulk taking 30% (enforce via separate sub-buckets if you really want hard separation, otherwise just pull from priority first).
Backoff on 429
— respect the
Retry-After
header. If absent, exponential with jitter (e.g.,
min(2^attempt * 250ms, 30s) ± 20%
). The jitter is non-negotiable; without it, simultaneous 429s retry in lockstep and you get thundering-herd 429s on retry.
How to work with paginated requests
How to work with paginated requests
The trap is treating "fetch all" as one logical operation. Each page is its own API call and competes for tokens with everything else.
Two practical rules:
Don't hold the worker idle while paginating.
If page N takes 500ms and page N+1 needs to wait 800ms for a token, you've burned 800ms of worker time doing nothing. Instead, fetch page N, dispatch the
processing
of page N as a separate job, and queue a "fetch page N+1" job with a delay equal to the wait time. Each page becomes its own atomic unit.
Always batch where HubSpot offers it.
POST /crm/v3/objects/{type}/batch/{read|update|create}
accepts up to 100 IDs per call. For your "patching IDs" flow this is the difference between 600 calls and 6.
Walkthrough: 600 opportunities
Walkthrough: 600 opportunities
Naive flow (one PATCH per deal): 600 calls. At 190/10s that's ~32s of API time, well under daily. You'd hit burst easily without throttling. Plus likely 1-3 search calls upfront and N association calls.
Sane flow:
Identify deltas
— if you can avoid Search at all, do. Use
lastmodifieddate
filter on a single search if you must, paginate at limit=200. For 600 deals that's 3 search calls @ 5/s = ~600ms naturally throttled.
Batch read
current state —
POST /crm/v3/objects/deals/batch/read
with 100 IDs per call → 6 calls. Burst weight 6.
Compute diff
in your code (no API).
Batch update
—
POST /crm/v3/objects/deals/batch/update
with 100 per call → 6 calls.
Associations
—
POST /crm/v4/associations/{from}/{to}/batch/create
if needed → another few batch calls.
Total: ~15-20 API calls for 600 deals. Burst budget consumed: 20/190 over ~5s. Daily impact: trivial.
Recognition: pre-check denies if
<weight>
slots aren't free; on 429 the response surfaces
policyName
(DAILY/SECONDLY) — log it, push the job back with
Retry-After
delay, increment a metric so you can alarm on sustained 429 rate.
Pitfalls & bottlenecks worth pre-empting
Pitfalls & bottlenecks worth pre-empting
Daily quota is shared across the whole portal
, including any n8n flows, other private apps, marketing automation calling APIs, etc. Budget for ~70-80% of the documented limit, not 100%. Add an internal per-app daily cap so a runaway sync can't starve other apps.
Search is uniquely fragile
: separate 5/s bucket, no headers to read, 10k-result cap per query. If you ever hit 10k+ deals matching a filter, partition by
hs_object_id
ranges or by
lastmodifieddate
windows.
Retry storms after HubSpot incidents
— always jitter, always cap total retries (e.g., 5 attempts, then dead-letter).
Webhook → sync → webhook loops
— when your update fires a HubSpot webhook that triggers another sync. Tag your own writes (e.g., a custom property
jy_last_sync_id
) and ignore webhooks where it just changed.
Token refresh
— OAuth refresh itself counts against burst. Cache the access token in Redis with TTL =
expires_in - 60s
, single-flight the refresh (only one worker refreshes; others wait on a lock).
Search latency for fresh writes
— newly created/updated objects don't appear in search instantly. Don't write-then-search; use returned IDs directly.
Clock skew
— Redis is authoritative. Don't use
time()
from each worker for window scoring; use
redis.call('TIME')
inside the Lua script.
Dead workers with held tokens
— sliding-window-log handles this naturally because tokens expire by score; token-bucket implementations need explicit release-on-crash logic.
The 5% error rule
counts every 429 toward your error budget, even successfully retried ones. If your pre-check is working well, 429s should be near zero — if they're not, your pre-check is wrong, not just slow.
Phantom contention with Laravel
RateLimited
middleware
: it's per-job-class by default, not per-portal. If your
SyncDealJob
and
UpdateActivityJob
are different classes both calling HubSpot, they don't share a Laravel-level limiter — you need a single
HubspotRateLimiter
service that everything routes through.
If you want, I can sketch the Lua script for the sliding-window acquire and the Laravel service wrapper around it.
Copy
Give positive feedback
Give negative feedback
You said: What will happen if there are two different types of rate limits?
You said: What will happen if there are two different types of rate limits?
What will happen if there are two different types of rate limits?
Search requests that have 5 requests per second
The other rate limit that has, let's say, 100 requests per 10 seconds How do these work together? Is there some conflict? Can I reach the limit with one request and block either as well, or are these separated? Can I still continue making search requests once I hit the normal requests limits?
13:40
Edit
Copy
Claude responded: They're independent buckets — with one shared bucket on top.
Claude responded: They're independent buckets — with one shared bucket on top.
Analyzed independent rate limit buckets and their practical interactions
Analyzed independent rate limit buckets and their practical interactions
They're independent buckets — with one shared bucket on top.
The three buckets and what each call hits
The three buckets and what each call hits
Copy to clipboard
┌──────────────────┐
Search request ──→ │ Search: 5/sec │ ──┐
└──────────────────┘ │
├──→ ┌─────────────────┐
┌──────────────────┐ │ │ Daily: 250k–1M │
Non-search call ──→ │ Burst: 190/10s │ ──┘ │ (per portal) │
└──────────────────┘ └─────────────────┘
A search call is only metered against the search bucket and the daily bucket. A non-search call (batch read/update, single PATCH, associations, etc.) is only metered against the burst bucket and the daily bucket. The two short-window buckets do not share counters.
What this means practically
What this means practically
Hitting search secondly limit (5/s):
Only further
/search
calls 429. Your batch reads, batch updates, single PATCHes, association calls — all keep working at full burst speed. This is actually useful: if your sync is bottlenecked on Search, you can pivot to using
lastmodifieddate
filters via batch endpoints, or use the IDs you already have to do batch reads, while Search cools off.
Hitting burst limit (190/10s):
Only non-search calls 429. You can still issue Search calls at 5/s. Useful for: continuing to identify deltas for queueing while in-flight updates drain, or refreshing a small set of records via Search even though your write pipeline is paused.
Hitting daily limit:
Everything stops. Search and non-search alike. Doesn't unblock until midnight in your portal's configured timezone — and remember this is shared across every private app in the portal, plus n8n flows, marketing tools, anything else hitting the API with that account.
So can one type of request block the other?
So can one type of request block the other?
Search → Burst:
No.
Saturating Search at 50 calls per 10s leaves your full 190/10s burst untouched.
Burst → Search:
No.
Saturating burst leaves Search's 5/s untouched.
Either → Daily:
Yes
, but only by contributing to the same daily counter. It's volume that kills you here, not the type.
In theory you can sustain ~50 search + ~190 other =
~240 calls per 10 seconds
indefinitely (until daily runs out), because the two buckets bill independently.
Implementation consequence
Implementation consequence
Your rate limiter needs to know which bucket a request hits before it acquires. Cleanest pattern:
Copy to clipboard
php
$limiter
->
acquire
(
'search'
,
$weight
=
1
)
;
// for search endpoints only
$limiter
->
acquire
(
'burst'
,
$weight
=
1
)
;
// for everything else
$limiter
->
acquire
(
'daily'
,
$weight
=
1
)
;
// every call, both kinds
In Redis: three separate keys, three separate Lua acquire scripts (or one script with a bucket parameter). A search call calls
acquire('search')
+
acquire('daily')
. A batch update calls
acquire('burst')
+
acquire('daily')
.
One subtle pitfall: when you backoff on a 429,
inspect
policyName
in the response body
to know which bucket actually fired. If you see
SECONDLY
from a search endpoint, you only need to delay search-bound jobs — burst-bound jobs in the queue can keep running. If you blanket-pause everything on any 429, you waste capacity on the bucket that's still healthy. Two queues (or two throttle keys) make this clean; one global pause is the lazy version.
The other subtlety: the burst response gives you
X-HubSpot-RateLimit-Remaining
to clamp local state against, but search doesn't return those headers. So your search counter is unverified — be slightly more conservative there (e.g., budget 4/s instead of 5) to absorb the unaccounted-for calls.
Copy
Give positive feedback
Give negative feedback
You said: Ok, so what will happen each time I make a request?
You said: Ok, so what will happen each time I make a request?
Ok, so what will happen each time I make a request? Let's say I have 100,000 requests to make that are instant. Do I need to increment each request based on the type? For example, if there is a search request, I need to increment both the search bucket and also the daily bucket. If it's a burst, then I can go to the daily and burst buckets. If I need to check if it can make a call, do I need to see both the daily and search, or burst, respectively? Isn't that too heavy for the infrastructure, adding additional load to each request?
13:44
Edit
Copy
Claude responded: Yes, your understanding is correct — every request must check and reserve from each bucket it applies to, atomically, before the call goes out.
Claude responded: Yes, your understanding is correct — every request must check and reserve from each bucket it applies to, atomically, before the call goes out.
Analyzed per-request overhead concerns and quantified Redis performance impact
Analyzed per-request overhead concerns and quantified Redis performance impact
Yes, your understanding is correct — every request must check and reserve from each bucket it applies to, atomically, before the call goes out. But the overhead is much smaller than it sounds, and importantly, it's nowhere near your bottleneck.
What "two buckets per request" actually costs
What "two buckets per request" actually costs
Each request makes
one round trip to Redis
— not two — because you fold both bucket checks into a single Lua script that runs atomically server-side:
Copy to clipboard
lua
-- KEYS[1] = burst bucket key (or search)...
|
[{"role":"AXLink","text":& [{"role":"AXLink","text":"Skip to content","depth":14,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Skip to content","depth":15,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Click to collapse","depth":16,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"⌘B","depth":16,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Drag to resize","depth":16,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Open sidebar","depth":14,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Chat","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Cowork","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"New chat ⌘N","depth":15,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"New chat","depth":16,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"⌘N","depth":17,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Projects","depth":15,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Artifacts","depth":15,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Customize","depth":15,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Pinned","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXButton","text":"Bulgarian citizenship application process for EU residents","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Bulgarian citizenship application process for EU residents","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Dawarich location tracking project","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Dawarich location tracking project","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Recents","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXButton","text":"View all","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"HubSpot rate limit implementation strategy","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for HubSpot rate limit implementation strategy","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Screenpipe retention policy code location","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Screenpipe retention policy code location","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Viewing retention policy in screenpipe","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Viewing retention policy in screenpipe","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Clean shot x video recording termination issue","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Clean shot x video recording termination issue","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"HubSpot rate limit handling with executeRequest","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for HubSpot rate limit handling with executeRequest","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Untitled","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"💬 Screen pipe. Is there ability…","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for 💬 Screen pipe. Is there ability…","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"SMB mount access inconsistency between Finder and iTerm","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for SMB mount access inconsistency between Finder and iTerm","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"💬 What is the best switch I can…","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for 💬 What is the best switch I can…","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Permission denied on screenpipe volume","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Permission denied on screenpipe volume","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Screenpipe sync database attachment error","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Screenpipe sync database attachment error","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Last swimming outing with Dani","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Last swimming outing with Dani","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Definition of incarcerated","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Definition of incarcerated","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Chromecast remote volume buttons not working","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Chromecast remote volume buttons not working","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Salesforce API errors with Organization and FieldDefinition queries","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Salesforce API errors with Organization and FieldDefinition queries","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Daily activity summary from screenpipe data","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Daily activity summary from screenpipe data","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"MacBook unexpected restarts and kanji screen","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for MacBook unexpected restarts and kanji screen","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Security patch review and testing guidance","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Security patch review and testing guidance","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Food calorie values reference","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Food calorie values reference","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Tracking location history from last week","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Tracking location history from last week","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"Lukas Pro","depth":15,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Get apps and extensions","depth":15,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"HubSpot rate limit implementation strategy, rename chat","depth":20,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"HubSpot rate limit implementation strategy","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXPopUpButton","text":"More options for HubSpot rate limit implementation strategy","depth":20,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close","depth":22,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Claude is responding","depth":22,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"You said: So just a solution for rate limit implementation.","depth":21,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"You said: So just a solution for rate limit implementation.","depth":22,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"So just a solution for rate limit implementation. The situation currently is that there are some daily and secondary limits for HubSpot. I would like to make sure I never reach a 429 error rate limit. The requests can come from any flow. It can be:","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"updating activity (engagement, meeting, call, note)","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"searching for a company or contact","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"updating deal","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"patching IDs\nReview what the limit is at the moment in the HubSpot documentation and then think of the solution:","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"where to store it","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"how to read it","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"how to work with multiple jobs","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"how to work with paginated requests Let's consider a situation when there are 600 opportunities to sync. What would be the flow? How would the rate limit be recognized? How would it be handled? What are the potential issues? [API usage guidelines and limits - HubSpot docs](","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXLink","text":"https://developers.hubspot.com/docs/developer-tooling/platform/usage-guidelines","depth":26,"on_screen":false,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"https://developers.hubspot.com/docs/developer-tooling/platform/usage-guidelines","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"). Example of such a error Client error:","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"POST https://api.hubapi.com/crm/v3/objects/contact/search","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"resulted in a","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"429 Too Many Requests","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"response: {\"status\":\"error\",\"message\":\"You have reached your secondly limit.\",\"errorType\":\"RATE_LIMIT\",\"correlationId\":\"019dffc4-4 (truncated...). Think carefully about the implementation and potential issue and bottlenecks.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Show more","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:42","depth":23,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Edit","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Copy","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXHeading","text":"Claude responded: Current HubSpot limits (Apr 2026)","depth":22,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"Claude responded: Current HubSpot limits (Apr 2026)","depth":23,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Synthesized HubSpot rate limit architecture with Redis storage and sliding window algorithms","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Synthesized HubSpot rate limit architecture with Redis storage and sliding window algorithms","depth":24,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"Current HubSpot limits (Apr 2026)","depth":25,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"Current HubSpot limits (Apr 2026)","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"For privately distributed apps (which is what Jiminny presumably uses with HubSpot), the limits are layered: a per-app burst window of 100/10s on Free/Starter, 190/10s on Pro/Enterprise, or 250/10s with the API Limit Increase add-on","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", plus a per-account daily cap of 250k / 625k / 1M depending on tier — shared across all private apps in the account","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":". The burst window is per app; the daily quota is per portal.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXLink","text":"hubspot","depth":27,"on_screen":false,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"hubspot","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXLink","text":"hubspot","depth":27,"on_screen":false,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"hubspot","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"The Search API is special: five requests per second per account, capped at 200 records per page, with a hard 10,000-result ceiling per query","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":". That's the limit the 429 in your example is hitting (","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"secondly limit","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"on","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/crm/v3/objects/contact/search","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"). It's a separate bucket from the 190/10s, and critically, search responses do not include the","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"X-HubSpot-RateLimit-*","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"headers","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— you can't read remaining capacity off the response, you have to track it yourself.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXLink","text":"hubspot","depth":27,"on_screen":false,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"hubspot","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXLink","text":"hubspot","depth":27,"on_screen":false,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"hubspot","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Non-search endpoints return","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"X-HubSpot-RateLimit-Remaining","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":",","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"-Max","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", and","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"-Interval-Milliseconds","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":". The daily headers are not returned for OAuth-authenticated calls","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", so for those you check the account-info endpoint or maintain your own counter. There's also a soft rule: errors should stay under 5% of total daily requests","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— that's enforced for marketplace listing, but it's also a sane operational target.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXLink","text":"hubspot","depth":27,"on_screen":false,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"hubspot","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXLink","text":"hubspot","depth":27,"on_screen":false,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"hubspot","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"So you have","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"four buckets","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"to track at minimum: app-burst (10s sliding), search-secondly (1s sliding), account-daily (24h fixed, midnight in HubSpot's TZ), and per-app daily share (your own budgeting on top of the account cap).","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"Where to store it","depth":25,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"Where to store it","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Redis. It's the only realistic option once you have multiple queue workers — DB-backed counters serialize too much, and in-process state can't coordinate across workers. Laravel already speaks Redis natively, and you get atomic","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"INCR","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"EXPIRE","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"plus Lua scripting for true CAS semantics.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Key layout I'd use:","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Copy to clipboard","depth":28,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"hubspot:rl:burst:{portalId}:{appId} ZSET (sliding 10s)","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"hubspot:rl:search:{portalId} ZSET (sliding 1s)","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"hubspot:rl:daily:{portalId} STRING + TTL to midnight TZ","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"hubspot:rl:meta:{portalId} HASH (last seen headers)","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"The two short-window buckets are sliding-window-log (Redis ZSET, score =","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"microtime","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", member = unique request id). Lua script removes entries older than the window, counts remaining slots, and only adds the new one if there's room — all atomic. Fixed windows are simpler but allow 2× the limit at the boundary, which on a 5/s window is brutal.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"The daily bucket is a plain","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"INCR","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"with TTL set to seconds-until-midnight in","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"HubSpot's account timezone","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", not yours — Sofia is UTC+2/+3 but your portal might be set to US Eastern. Get this once and cache it.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"How to read it","depth":25,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"How to read it","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Two-phase: optimistic pre-check, authoritative post-update.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Before a call, run the Lua acquire script. If it returns \"denied,\" sleep until a slot frees up (the script can return ms-until-next-slot) or push the job back to the queue with a delay. Don't busy-loop.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"After the call, parse","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"X-HubSpot-RateLimit-Remaining","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"-Max","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"-Interval-Milliseconds","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"and store them in","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"hubspot:rl:meta:{portalId}","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":". This is your reality check — if your local counter says 50 remaining but HubSpot's header says 5, you trust HubSpot and clamp your counter. This handles clock drift, missed accounting (e.g., crashed worker that took a token but never made the request), and other apps in the same account consuming the daily budget invisibly.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"For search specifically, since headers don't come back, the local counter","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"is","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"the source of truth — meaning if you ever crash mid-flight, you've under-counted. Always release tokens on connection-level failure but","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"not","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"on 429 (you really did make that request).","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"How to work with multiple jobs","depth":25,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"How to work with multiple jobs","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"The queue layer needs to enforce concurrency separately from the rate limiter. Both work together:","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Concurrency cap","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"via","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Queue::throttle()","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"or a Redis semaphore — limits how many sync workers run in parallel against HubSpot. Without this, you can have 50 workers all blocked waiting for tokens, which is wasteful and creates retry storms.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Per-tenant fairness","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— if you sync many Jiminny customers into different HubSpot portals, each portal has its own bucket but you still want one slow portal not to starve others. Either separate queues per portal or a fair-share scheduler.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Priority lanes","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— webhook-driven updates (user-visible latency) should outrank background batch syncs. Two queues:","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"hubspot-priority","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"and","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"hubspot-bulk","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", with priority workers taking 70% of the burst budget and bulk taking 30% (enforce via separate sub-buckets if you really want hard separation, otherwise just pull from priority first).","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Backoff on 429","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— respect the","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Retry-After","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"header. If absent, exponential with jitter (e.g.,","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"min(2^attempt * 250ms, 30s) ± 20%","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"). The jitter is non-negotiable; without it, simultaneous 429s retry in lockstep and you get thundering-herd 429s on retry.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"How to work with paginated requests","depth":25,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"How to work with paginated requests","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"The trap is treating \"fetch all\" as one logical operation. Each page is its own API call and competes for tokens with everything else.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Two practical rules:","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Don't hold the worker idle while paginating.","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"If page N takes 500ms and page N+1 needs to wait 800ms for a token, you've burned 800ms of worker time doing nothing. Instead, fetch page N, dispatch the","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"processing","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"of page N as a separate job, and queue a \"fetch page N+1\" job with a delay equal to the wait time. Each page becomes its own atomic unit.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Always batch where HubSpot offers it.","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"POST /crm/v3/objects/{type}/batch/{read|update|create}","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"accepts up to 100 IDs per call. For your \"patching IDs\" flow this is the difference between 600 calls and 6.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"Walkthrough: 600 opportunities","depth":25,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"Walkthrough: 600 opportunities","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Naive flow (one PATCH per deal): 600 calls. At 190/10s that's ~32s of API time, well under daily. You'd hit burst easily without throttling. Plus likely 1-3 search calls upfront and N association calls.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Sane flow:","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Identify deltas","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— if you can avoid Search at all, do. Use","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"lastmodifieddate","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"filter on a single search if you must, paginate at limit=200. For 600 deals that's 3 search calls @ 5/s = ~600ms naturally throttled.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Batch read","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"current state —","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"POST /crm/v3/objects/deals/batch/read","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"with 100 IDs per call → 6 calls. Burst weight 6.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Compute diff","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"in your code (no API).","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Batch update","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"—","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"POST /crm/v3/objects/deals/batch/update","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"with 100 per call → 6 calls.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Associations","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"—","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"POST /crm/v4/associations/{from}/{to}/batch/create","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"if needed → another few batch calls.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Total: ~15-20 API calls for 600 deals. Burst budget consumed: 20/190 over ~5s. Daily impact: trivial.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Recognition: pre-check denies if","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"<weight>","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"slots aren't free; on 429 the response surfaces","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"policyName","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"(DAILY/SECONDLY) — log it, push the job back with","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Retry-After","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"delay, increment a metric so you can alarm on sustained 429 rate.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"Pitfalls & bottlenecks worth pre-empting","depth":25,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"Pitfalls & bottlenecks worth pre-empting","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Daily quota is shared across the whole portal","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", including any n8n flows, other private apps, marketing automation calling APIs, etc. Budget for ~70-80% of the documented limit, not 100%. Add an internal per-app daily cap so a runaway sync can't starve other apps.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Search is uniquely fragile","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":": separate 5/s bucket, no headers to read, 10k-result cap per query. If you ever hit 10k+ deals matching a filter, partition by","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"hs_object_id","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"ranges or by","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"lastmodifieddate","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"windows.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Retry storms after HubSpot incidents","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— always jitter, always cap total retries (e.g., 5 attempts, then dead-letter).","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Webhook → sync → webhook loops","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— when your update fires a HubSpot webhook that triggers another sync. Tag your own writes (e.g., a custom property","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"jy_last_sync_id","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":") and ignore webhooks where it just changed.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Token refresh","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— OAuth refresh itself counts against burst. Cache the access token in Redis with TTL =","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"expires_in - 60s","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", single-flight the refresh (only one worker refreshes; others wait on a lock).","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Search latency for fresh writes","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— newly created/updated objects don't appear in search instantly. Don't write-then-search; use returned IDs directly.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Clock skew","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— Redis is authoritative. Don't use","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"time()","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"from each worker for window scoring; use","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"redis.call('TIME')","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"inside the Lua script.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Dead workers with held tokens","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— sliding-window-log handles this naturally because tokens expire by score; token-bucket implementations need explicit release-on-crash logic.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"The 5% error rule","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"counts every 429 toward your error budget, even successfully retried ones. If your pre-check is working well, 429s should be near zero — if they're not, your pre-check is wrong, not just slow.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Phantom contention with Laravel","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"RateLimited","depth":29,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"middleware","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":": it's per-job-class by default, not per-portal. If your","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"SyncDealJob","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"and","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"UpdateActivityJob","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"are different classes both calling HubSpot, they don't share a Laravel-level limiter — you need a single","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"HubspotRateLimiter","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"service that everything routes through.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"If you want, I can sketch the Lua script for the sliding-window acquire and the Laravel service wrapper around it.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Copy","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Give positive feedback","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Give negative feedback","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXHeading","text":"You said: What will happen if there are two different types of rate limits?","depth":21,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"You said: What will happen if there are two different types of rate limits?","depth":22,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"What will happen if there are two different types of rate limits?","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Search requests that have 5 requests per second","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"The other rate limit that has, let's say, 100 requests per 10 seconds How do these work together? Is there some conflict? Can I reach the limit with one request and block either as well, or are these separated? Can I still continue making search requests once I hit the normal requests limits?","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"13:40","depth":23,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Edit","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Copy","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXHeading","text":"Claude responded: They're independent buckets — with one shared bucket on top.","depth":22,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"Claude responded: They're independent buckets — with one shared bucket on top.","depth":23,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Analyzed independent rate limit buckets and their practical interactions","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Analyzed independent rate limit buckets and their practical interactions","depth":24,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"They're independent buckets — with one shared bucket on top.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"The three buckets and what each call hits","depth":25,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"The three buckets and what each call hits","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Copy to clipboard","depth":28,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"┌──────────────────┐","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Search request ──→ │ Search: 5/sec │ ──┐","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"└──────────────────┘ │","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"├──→ ┌─────────────────┐","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"┌──────────────────┐ │ │ Daily: 250k–1M │","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Non-search call ──→ │ Burst: 190/10s │ ──┘ │ (per portal) │","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"└──────────────────┘ └─────────────────┘","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"A search call is only metered against the search bucket and the daily bucket. A non-search call (batch read/update, single PATCH, associations, etc.) is only metered against the burst bucket and the daily bucket. The two short-window buckets do not share counters.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"What this means practically","depth":25,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"What this means practically","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Hitting search secondly limit (5/s):","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Only further","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/search","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"calls 429. Your batch reads, batch updates, single PATCHes, association calls — all keep working at full burst speed. This is actually useful: if your sync is bottlenecked on Search, you can pivot to using","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"lastmodifieddate","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"filters via batch endpoints, or use the IDs you already have to do batch reads, while Search cools off.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Hitting burst limit (190/10s):","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Only non-search calls 429. You can still issue Search calls at 5/s. Useful for: continuing to identify deltas for queueing while in-flight updates drain, or refreshing a small set of records via Search even though your write pipeline is paused.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Hitting daily limit:","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Everything stops. Search and non-search alike. Doesn't unblock until midnight in your portal's configured timezone — and remember this is shared across every private app in the portal, plus n8n flows, marketing tools, anything else hitting the API with that account.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"So can one type of request block the other?","depth":25,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"So can one type of request block the other?","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Search → Burst:","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"No.","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Saturating Search at 50 calls per 10s leaves your full 190/10s burst untouched.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Burst → Search:","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"No.","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Saturating burst leaves Search's 5/s untouched.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Either → Daily:","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Yes","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", but only by contributing to the same daily counter. It's volume that kills you here, not the type.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"In theory you can sustain ~50 search + ~190 other =","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"~240 calls per 10 seconds","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"indefinitely (until daily runs out), because the two buckets bill independently.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"Implementation consequence","depth":25,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"Implementation consequence","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Your rate limiter needs to know which bucket a request hits before it acquires. Cleanest pattern:","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Copy to clipboard","depth":28,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"php","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"$limiter","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"->","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"acquire","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"(","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"'search'","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":",","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"$weight","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"=","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":")","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":";","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"// for search endpoints only","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"$limiter","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"->","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"acquire","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"(","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"'burst'","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":",","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"$weight","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"=","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":")","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":";","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"// for everything else","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"$limiter","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"->","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"acquire","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"(","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"'daily'","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":",","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"$weight","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"=","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":")","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":";","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"// every call, both kinds","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"In Redis: three separate keys, three separate Lua acquire scripts (or one script with a bucket parameter). A search call calls","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"acquire('search')","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"acquire('daily')","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":". A batch update calls","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"acquire('burst')","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"acquire('daily')","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":".","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"One subtle pitfall: when you backoff on a 429,","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"inspect","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"policyName","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"in the response body","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"to know which bucket actually fired. If you see","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"SECONDLY","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"from a search endpoint, you only need to delay search-bound jobs — burst-bound jobs in the queue can keep running. If you blanket-pause everything on any 429, you waste capacity on the bucket that's still healthy. Two queues (or two throttle keys) make this clean; one global pause is the lazy version.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"The other subtlety: the burst response gives you","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"X-HubSpot-RateLimit-Remaining","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"to clamp local state against, but search doesn't return those headers. So your search counter is unverified — be slightly more conservative there (e.g., budget 4/s instead of 5) to absorb the unaccounted-for calls.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Copy","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Give positive feedback","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Give negative feedback","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXHeading","text":"You said: Ok, so what will happen each time I make a request?","depth":21,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"You said: Ok, so what will happen each time I make a request?","depth":22,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Ok, so what will happen each time I make a request? Let's say I have 100,000 requests to make that are instant. Do I need to increment each request based on the type? For example, if there is a search request, I need to increment both the search bucket and also the daily bucket. If it's a burst, then I can go to the daily and burst buckets. If I need to check if it can make a call, do I need to see both the daily and search, or burst, respectively? Isn't that too heavy for the infrastructure, adding additional load to each request?","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"13:44","depth":23,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Edit","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Copy","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXHeading","text":"Claude responded: Yes, your understanding is correct — every request must check and reserve from each bucket it applies to, atomically, before the call goes out.","depth":22,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"Claude responded: Yes, your understanding is correct — every request must check and reserve from each bucket it applies to, atomically, before the call goes out.","depth":23,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Analyzed per-request overhead concerns and quantified Redis performance impact","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Analyzed per-request overhead concerns and quantified Redis performance impact","depth":24,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Yes, your understanding is correct — every request must check and reserve from each bucket it applies to, atomically, before the call goes out. But the overhead is much smaller than it sounds, and importantly, it's nowhere near your bottleneck.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"What \"two buckets per request\" actually costs","depth":25,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"What \"two buckets per request\" actually costs","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Each request makes","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"one round trip to Redis","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— not two — because you fold both bucket checks into a single Lua script that runs atomically server-side:","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Copy to clipboard","depth":28,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"lua","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"-- KEYS[1] = burst bucket key (or search)","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"}]...
|
-6788506962602602756
|
-6913325059417482148
|
idle
|
accessibility
|
NULL
|
Skip to content
Skip to content
Click to collapse
Skip to content
Skip to content
Click to collapse
⌘B
Drag to resize
Open sidebar
Chat
Cowork
Code
New chat ⌘N
New chat
⌘N
Projects
Artifacts
Customize
Pinned
Bulgarian citizenship application process for EU residents
More options for Bulgarian citizenship application process for EU residents
Dawarich location tracking project
More options for Dawarich location tracking project
Recents
View all
HubSpot rate limit implementation strategy
More options for HubSpot rate limit implementation strategy
Screenpipe retention policy code location
More options for Screenpipe retention policy code location
Viewing retention policy in screenpipe
More options for Viewing retention policy in screenpipe
Clean shot x video recording termination issue
More options for Clean shot x video recording termination issue
HubSpot rate limit handling with executeRequest
More options for HubSpot rate limit handling with executeRequest
Untitled
More options
💬 Screen pipe. Is there ability…
More options for 💬 Screen pipe. Is there ability…
SMB mount access inconsistency between Finder and iTerm
More options for SMB mount access inconsistency between Finder and iTerm
💬 What is the best switch I can…
More options for 💬 What is the best switch I can…
Permission denied on screenpipe volume
More options for Permission denied on screenpipe volume
Screenpipe sync database attachment error
More options for Screenpipe sync database attachment error
Last swimming outing with Dani
More options for Last swimming outing with Dani
Definition of incarcerated
More options for Definition of incarcerated
Chromecast remote volume buttons not working
More options for Chromecast remote volume buttons not working
Salesforce API errors with Organization and FieldDefinition queries
More options for Salesforce API errors with Organization and FieldDefinition queries
Daily activity summary from screenpipe data
More options for Daily activity summary from screenpipe data
MacBook unexpected restarts and kanji screen
More options for MacBook unexpected restarts and kanji screen
Security patch review and testing guidance
More options for Security patch review and testing guidance
Food calorie values reference
More options for Food calorie values reference
Tracking location history from last week
More options for Tracking location history from last week
Lukas Pro
Get apps and extensions
HubSpot rate limit implementation strategy, rename chat
HubSpot rate limit implementation strategy
More options for HubSpot rate limit implementation strategy
Close
Claude is responding
You said: So just a solution for rate limit implementation.
You said: So just a solution for rate limit implementation.
So just a solution for rate limit implementation. The situation currently is that there are some daily and secondary limits for HubSpot. I would like to make sure I never reach a 429 error rate limit. The requests can come from any flow. It can be:
updating activity (engagement, meeting, call, note)
searching for a company or contact
updating deal
patching IDs
Review what the limit is at the moment in the HubSpot documentation and then think of the solution:
where to store it
how to read it
how to work with multiple jobs
how to work with paginated requests Let's consider a situation when there are 600 opportunities to sync. What would be the flow? How would the rate limit be recognized? How would it be handled? What are the potential issues? [API usage guidelines and limits - HubSpot docs](
https://developers.hubspot.com/docs/developer-tooling/platform/usage-guidelines
https://developers.hubspot.com/docs/developer-tooling/platform/usage-guidelines
). Example of such a error Client error:
POST https://api.hubapi.com/crm/v3/objects/contact/search
resulted in a
429 Too Many Requests
response: {"status":"error","message":"You have reached your secondly limit.","errorType":"RATE_LIMIT","correlationId":"019dffc4-4 (truncated...). Think carefully about the implementation and potential issue and bottlenecks.
Show more
10:42
Edit
Copy
Claude responded: Current HubSpot limits (Apr 2026)
Claude responded: Current HubSpot limits (Apr 2026)
Synthesized HubSpot rate limit architecture with Redis storage and sliding window algorithms
Synthesized HubSpot rate limit architecture with Redis storage and sliding window algorithms
Current HubSpot limits (Apr 2026)
Current HubSpot limits (Apr 2026)
For privately distributed apps (which is what Jiminny presumably uses with HubSpot), the limits are layered: a per-app burst window of 100/10s on Free/Starter, 190/10s on Pro/Enterprise, or 250/10s with the API Limit Increase add-on
, plus a per-account daily cap of 250k / 625k / 1M depending on tier — shared across all private apps in the account
. The burst window is per app; the daily quota is per portal.
hubspot
hubspot
hubspot
hubspot
The Search API is special: five requests per second per account, capped at 200 records per page, with a hard 10,000-result ceiling per query
. That's the limit the 429 in your example is hitting (
secondly limit
on
/crm/v3/objects/contact/search
). It's a separate bucket from the 190/10s, and critically, search responses do not include the
X-HubSpot-RateLimit-*
headers
— you can't read remaining capacity off the response, you have to track it yourself.
hubspot
hubspot
hubspot
hubspot
Non-search endpoints return
X-HubSpot-RateLimit-Remaining
,
-Max
, and
-Interval-Milliseconds
. The daily headers are not returned for OAuth-authenticated calls
, so for those you check the account-info endpoint or maintain your own counter. There's also a soft rule: errors should stay under 5% of total daily requests
— that's enforced for marketplace listing, but it's also a sane operational target.
hubspot
hubspot
hubspot
hubspot
So you have
four buckets
to track at minimum: app-burst (10s sliding), search-secondly (1s sliding), account-daily (24h fixed, midnight in HubSpot's TZ), and per-app daily share (your own budgeting on top of the account cap).
Where to store it
Where to store it
Redis. It's the only realistic option once you have multiple queue workers — DB-backed counters serialize too much, and in-process state can't coordinate across workers. Laravel already speaks Redis natively, and you get atomic
INCR
/
EXPIRE
plus Lua scripting for true CAS semantics.
Key layout I'd use:
Copy to clipboard
hubspot:rl:burst:{portalId}:{appId} ZSET (sliding 10s)
hubspot:rl:search:{portalId} ZSET (sliding 1s)
hubspot:rl:daily:{portalId} STRING + TTL to midnight TZ
hubspot:rl:meta:{portalId} HASH (last seen headers)
The two short-window buckets are sliding-window-log (Redis ZSET, score =
microtime
, member = unique request id). Lua script removes entries older than the window, counts remaining slots, and only adds the new one if there's room — all atomic. Fixed windows are simpler but allow 2× the limit at the boundary, which on a 5/s window is brutal.
The daily bucket is a plain
INCR
with TTL set to seconds-until-midnight in
HubSpot's account timezone
, not yours — Sofia is UTC+2/+3 but your portal might be set to US Eastern. Get this once and cache it.
How to read it
How to read it
Two-phase: optimistic pre-check, authoritative post-update.
Before a call, run the Lua acquire script. If it returns "denied," sleep until a slot frees up (the script can return ms-until-next-slot) or push the job back to the queue with a delay. Don't busy-loop.
After the call, parse
X-HubSpot-RateLimit-Remaining
/
-Max
/
-Interval-Milliseconds
and store them in
hubspot:rl:meta:{portalId}
. This is your reality check — if your local counter says 50 remaining but HubSpot's header says 5, you trust HubSpot and clamp your counter. This handles clock drift, missed accounting (e.g., crashed worker that took a token but never made the request), and other apps in the same account consuming the daily budget invisibly.
For search specifically, since headers don't come back, the local counter
is
the source of truth — meaning if you ever crash mid-flight, you've under-counted. Always release tokens on connection-level failure but
not
on 429 (you really did make that request).
How to work with multiple jobs
How to work with multiple jobs
The queue layer needs to enforce concurrency separately from the rate limiter. Both work together:
Concurrency cap
via
Queue::throttle()
or a Redis semaphore — limits how many sync workers run in parallel against HubSpot. Without this, you can have 50 workers all blocked waiting for tokens, which is wasteful and creates retry storms.
Per-tenant fairness
— if you sync many Jiminny customers into different HubSpot portals, each portal has its own bucket but you still want one slow portal not to starve others. Either separate queues per portal or a fair-share scheduler.
Priority lanes
— webhook-driven updates (user-visible latency) should outrank background batch syncs. Two queues:
hubspot-priority
and
hubspot-bulk
, with priority workers taking 70% of the burst budget and bulk taking 30% (enforce via separate sub-buckets if you really want hard separation, otherwise just pull from priority first).
Backoff on 429
— respect the
Retry-After
header. If absent, exponential with jitter (e.g.,
min(2^attempt * 250ms, 30s) ± 20%
). The jitter is non-negotiable; without it, simultaneous 429s retry in lockstep and you get thundering-herd 429s on retry.
How to work with paginated requests
How to work with paginated requests
The trap is treating "fetch all" as one logical operation. Each page is its own API call and competes for tokens with everything else.
Two practical rules:
Don't hold the worker idle while paginating.
If page N takes 500ms and page N+1 needs to wait 800ms for a token, you've burned 800ms of worker time doing nothing. Instead, fetch page N, dispatch the
processing
of page N as a separate job, and queue a "fetch page N+1" job with a delay equal to the wait time. Each page becomes its own atomic unit.
Always batch where HubSpot offers it.
POST /crm/v3/objects/{type}/batch/{read|update|create}
accepts up to 100 IDs per call. For your "patching IDs" flow this is the difference between 600 calls and 6.
Walkthrough: 600 opportunities
Walkthrough: 600 opportunities
Naive flow (one PATCH per deal): 600 calls. At 190/10s that's ~32s of API time, well under daily. You'd hit burst easily without throttling. Plus likely 1-3 search calls upfront and N association calls.
Sane flow:
Identify deltas
— if you can avoid Search at all, do. Use
lastmodifieddate
filter on a single search if you must, paginate at limit=200. For 600 deals that's 3 search calls @ 5/s = ~600ms naturally throttled.
Batch read
current state —
POST /crm/v3/objects/deals/batch/read
with 100 IDs per call → 6 calls. Burst weight 6.
Compute diff
in your code (no API).
Batch update
—
POST /crm/v3/objects/deals/batch/update
with 100 per call → 6 calls.
Associations
—
POST /crm/v4/associations/{from}/{to}/batch/create
if needed → another few batch calls.
Total: ~15-20 API calls for 600 deals. Burst budget consumed: 20/190 over ~5s. Daily impact: trivial.
Recognition: pre-check denies if
<weight>
slots aren't free; on 429 the response surfaces
policyName
(DAILY/SECONDLY) — log it, push the job back with
Retry-After
delay, increment a metric so you can alarm on sustained 429 rate.
Pitfalls & bottlenecks worth pre-empting
Pitfalls & bottlenecks worth pre-empting
Daily quota is shared across the whole portal
, including any n8n flows, other private apps, marketing automation calling APIs, etc. Budget for ~70-80% of the documented limit, not 100%. Add an internal per-app daily cap so a runaway sync can't starve other apps.
Search is uniquely fragile
: separate 5/s bucket, no headers to read, 10k-result cap per query. If you ever hit 10k+ deals matching a filter, partition by
hs_object_id
ranges or by
lastmodifieddate
windows.
Retry storms after HubSpot incidents
— always jitter, always cap total retries (e.g., 5 attempts, then dead-letter).
Webhook → sync → webhook loops
— when your update fires a HubSpot webhook that triggers another sync. Tag your own writes (e.g., a custom property
jy_last_sync_id
) and ignore webhooks where it just changed.
Token refresh
— OAuth refresh itself counts against burst. Cache the access token in Redis with TTL =
expires_in - 60s
, single-flight the refresh (only one worker refreshes; others wait on a lock).
Search latency for fresh writes
— newly created/updated objects don't appear in search instantly. Don't write-then-search; use returned IDs directly.
Clock skew
— Redis is authoritative. Don't use
time()
from each worker for window scoring; use
redis.call('TIME')
inside the Lua script.
Dead workers with held tokens
— sliding-window-log handles this naturally because tokens expire by score; token-bucket implementations need explicit release-on-crash logic.
The 5% error rule
counts every 429 toward your error budget, even successfully retried ones. If your pre-check is working well, 429s should be near zero — if they're not, your pre-check is wrong, not just slow.
Phantom contention with Laravel
RateLimited
middleware
: it's per-job-class by default, not per-portal. If your
SyncDealJob
and
UpdateActivityJob
are different classes both calling HubSpot, they don't share a Laravel-level limiter — you need a single
HubspotRateLimiter
service that everything routes through.
If you want, I can sketch the Lua script for the sliding-window acquire and the Laravel service wrapper around it.
Copy
Give positive feedback
Give negative feedback
You said: What will happen if there are two different types of rate limits?
You said: What will happen if there are two different types of rate limits?
What will happen if there are two different types of rate limits?
Search requests that have 5 requests per second
The other rate limit that has, let's say, 100 requests per 10 seconds How do these work together? Is there some conflict? Can I reach the limit with one request and block either as well, or are these separated? Can I still continue making search requests once I hit the normal requests limits?
13:40
Edit
Copy
Claude responded: They're independent buckets — with one shared bucket on top.
Claude responded: They're independent buckets — with one shared bucket on top.
Analyzed independent rate limit buckets and their practical interactions
Analyzed independent rate limit buckets and their practical interactions
They're independent buckets — with one shared bucket on top.
The three buckets and what each call hits
The three buckets and what each call hits
Copy to clipboard
┌──────────────────┐
Search request ──→ │ Search: 5/sec │ ──┐
└──────────────────┘ │
├──→ ┌─────────────────┐
┌──────────────────┐ │ │ Daily: 250k–1M │
Non-search call ──→ │ Burst: 190/10s │ ──┘ │ (per portal) │
└──────────────────┘ └─────────────────┘
A search call is only metered against the search bucket and the daily bucket. A non-search call (batch read/update, single PATCH, associations, etc.) is only metered against the burst bucket and the daily bucket. The two short-window buckets do not share counters.
What this means practically
What this means practically
Hitting search secondly limit (5/s):
Only further
/search
calls 429. Your batch reads, batch updates, single PATCHes, association calls — all keep working at full burst speed. This is actually useful: if your sync is bottlenecked on Search, you can pivot to using
lastmodifieddate
filters via batch endpoints, or use the IDs you already have to do batch reads, while Search cools off.
Hitting burst limit (190/10s):
Only non-search calls 429. You can still issue Search calls at 5/s. Useful for: continuing to identify deltas for queueing while in-flight updates drain, or refreshing a small set of records via Search even though your write pipeline is paused.
Hitting daily limit:
Everything stops. Search and non-search alike. Doesn't unblock until midnight in your portal's configured timezone — and remember this is shared across every private app in the portal, plus n8n flows, marketing tools, anything else hitting the API with that account.
So can one type of request block the other?
So can one type of request block the other?
Search → Burst:
No.
Saturating Search at 50 calls per 10s leaves your full 190/10s burst untouched.
Burst → Search:
No.
Saturating burst leaves Search's 5/s untouched.
Either → Daily:
Yes
, but only by contributing to the same daily counter. It's volume that kills you here, not the type.
In theory you can sustain ~50 search + ~190 other =
~240 calls per 10 seconds
indefinitely (until daily runs out), because the two buckets bill independently.
Implementation consequence
Implementation consequence
Your rate limiter needs to know which bucket a request hits before it acquires. Cleanest pattern:
Copy to clipboard
php
$limiter
->
acquire
(
'search'
,
$weight
=
1
)
;
// for search endpoints only
$limiter
->
acquire
(
'burst'
,
$weight
=
1
)
;
// for everything else
$limiter
->
acquire
(
'daily'
,
$weight
=
1
)
;
// every call, both kinds
In Redis: three separate keys, three separate Lua acquire scripts (or one script with a bucket parameter). A search call calls
acquire('search')
+
acquire('daily')
. A batch update calls
acquire('burst')
+
acquire('daily')
.
One subtle pitfall: when you backoff on a 429,
inspect
policyName
in the response body
to know which bucket actually fired. If you see
SECONDLY
from a search endpoint, you only need to delay search-bound jobs — burst-bound jobs in the queue can keep running. If you blanket-pause everything on any 429, you waste capacity on the bucket that's still healthy. Two queues (or two throttle keys) make this clean; one global pause is the lazy version.
The other subtlety: the burst response gives you
X-HubSpot-RateLimit-Remaining
to clamp local state against, but search doesn't return those headers. So your search counter is unverified — be slightly more conservative there (e.g., budget 4/s instead of 5) to absorb the unaccounted-for calls.
Copy
Give positive feedback
Give negative feedback
You said: Ok, so what will happen each time I make a request?
You said: Ok, so what will happen each time I make a request?
Ok, so what will happen each time I make a request? Let's say I have 100,000 requests to make that are instant. Do I need to increment each request based on the type? For example, if there is a search request, I need to increment both the search bucket and also the daily bucket. If it's a burst, then I can go to the daily and burst buckets. If I need to check if it can make a call, do I need to see both the daily and search, or burst, respectively? Isn't that too heavy for the infrastructure, adding additional load to each request?
13:44
Edit
Copy
Claude responded: Yes, your understanding is correct — every request must check and reserve from each bucket it applies to, atomically, before the call goes out.
Claude responded: Yes, your understanding is correct — every request must check and reserve from each bucket it applies to, atomically, before the call goes out.
Analyzed per-request overhead concerns and quantified Redis performance impact
Analyzed per-request overhead concerns and quantified Redis performance impact
Yes, your understanding is correct — every request must check and reserve from each bucket it applies to, atomically, before the call goes out. But the overhead is much smaller than it sounds, and importantly, it's nowhere near your bottleneck.
What "two buckets per request" actually costs
What "two buckets per request" actually costs
Each request makes
one round trip to Redis
— not two — because you fold both bucket checks into a single Lua script that runs atomically server-side:
Copy to clipboard
lua
-- KEYS[1] = burst bucket key (or search)...
|
2912
|
NULL
|
NULL
|
NULL
|
|
2915
|
NULL
|
0
|
2026-05-07T11:49:34.991050+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-07/1778 /Users/lukas/.screenpipe/data/data/2026-05-07/1778154574991_m2.jpg...
|
Claude
|
Claude
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Skip to content
Skip to content
Click to collapse
Skip to content
Skip to content
Click to collapse
⌘B
Drag to resize
Open sidebar
Chat
Cowork
Code
New chat ⌘N
New chat
⌘N
Projects
Artifacts
Customize
Pinned
Bulgarian citizenship application process for EU residents
More options for Bulgarian citizenship application process for EU residents
Dawarich location tracking project
More options for Dawarich location tracking project
Recents
View all
HubSpot rate limit implementation strategy
More options for HubSpot rate limit implementation strategy
Screenpipe retention policy code location
More options for Screenpipe retention policy code location
Viewing retention policy in screenpipe
More options for Viewing retention policy in screenpipe
Clean shot x video recording termination issue
More options for Clean shot x video recording termination issue
HubSpot rate limit handling with executeRequest
More options for HubSpot rate limit handling with executeRequest
Untitled
More options
💬 Screen pipe. Is there ability…
More options for 💬 Screen pipe. Is there ability…
SMB mount access inconsistency between Finder and iTerm
More options for SMB mount access inconsistency between Finder and iTerm
💬 What is the best switch I can…
More options for 💬 What is the best switch I can…
Permission denied on screenpipe volume
More options for Permission denied on screenpipe volume
Screenpipe sync database attachment error
More options for Screenpipe sync database attachment error
Last swimming outing with Dani
More options for Last swimming outing with Dani
Definition of incarcerated
More options for Definition of incarcerated
Chromecast remote volume buttons not working
More options for Chromecast remote volume buttons not working
Salesforce API errors with Organization and FieldDefinition queries
More options for Salesforce API errors with Organization and FieldDefinition queries
Daily activity summary from screenpipe data
More options for Daily activity summary from screenpipe data
MacBook unexpected restarts and kanji screen
More options for MacBook unexpected restarts and kanji screen
Security patch review and testing guidance
More options for Security patch review and testing guidance
Food calorie values reference
More options for Food calorie values reference
Tracking location history from last week
More options for Tracking location history from last week
Lukas Pro
Get apps and extensions
HubSpot rate limit implementation strategy, rename chat
HubSpot rate limit implementation strategy
More options for HubSpot rate limit implementation strategy
Close
Claude is responding
You said: So just a solution for rate limit implementation.
You said: So just a solution for rate limit implementation.
So just a solution for rate limit implementation. The situation currently is that there are some daily and secondary limits for HubSpot. I would like to make sure I never reach a 429 error rate limit. The requests can come from any flow. It can be:
updating activity (engagement, meeting, call, note)
searching for a company or contact
updating deal
patching IDs
Review what the limit is at the moment in the HubSpot documentation and then think of the solution:
where to store it
how to read it
how to work with multiple jobs
how to work with paginated requests Let's consider a situation when there are 600 opportunities to sync. What would be the flow? How would the rate limit be recognized? How would it be handled? What are the potential issues? [API usage guidelines and limits - HubSpot docs](
https://developers.hubspot.com/docs/developer-tooling/platform/usage-guidelines
https://developers.hubspot.com/docs/developer-tooling/platform/usage-guidelines
). Example of such a error Client error:
POST https://api.hubapi.com/crm/v3/objects/contact/search
resulted in a
429 Too Many Requests
response: {"status":"error","message":"You have reached your secondly limit.","errorType":"RATE_LIMIT","correlationId":"019dffc4-4 (truncated...). Think carefully about the implementation and potential issue and bottlenecks.
Show more
10:42
Edit
Copy
Claude responded: Current HubSpot limits (Apr 2026)
Claude responded: Current HubSpot limits (Apr 2026)
Synthesized HubSpot rate limit architecture with Redis storage and sliding window algorithms
Synthesized HubSpot rate limit architecture with Redis storage and sliding window algorithms
Current HubSpot limits (Apr 2026)
Current HubSpot limits (Apr 2026)
For privately distributed apps (which is what Jiminny presumably uses with HubSpot), the limits are layered: a per-app burst window of 100/10s on Free/Starter, 190/10s on Pro/Enterprise, or 250/10s with the API Limit Increase add-on
, plus a per-account daily cap of 250k / 625k / 1M depending on tier — shared across all private apps in the account
. The burst window is per app; the daily quota is per portal.
hubspot
hubspot
hubspot
hubspot
The Search API is special: five requests per second per account, capped at 200 records per page, with a hard 10,000-result ceiling per query
. That's the limit the 429 in your example is hitting (
secondly limit
on
/crm/v3/objects/contact/search
). It's a separate bucket from the 190/10s, and critically, search responses do not include the
X-HubSpot-RateLimit-*
headers
— you can't read remaining capacity off the response, you have to track it yourself.
hubspot
hubspot
hubspot
hubspot
Non-search endpoints return
X-HubSpot-RateLimit-Remaining
,
-Max
, and
-Interval-Milliseconds
. The daily headers are not returned for OAuth-authenticated calls
, so for those you check the account-info endpoint or maintain your own counter. There's also a soft rule: errors should stay under 5% of total daily requests
— that's enforced for marketplace listing, but it's also a sane operational target.
hubspot
hubspot
hubspot
hubspot
So you have
four buckets
to track at minimum: app-burst (10s sliding), search-secondly (1s sliding), account-daily (24h fixed, midnight in HubSpot's TZ), and per-app daily share (your own budgeting on top of the account cap).
Where to store it
Where to store it
Redis. It's the only realistic option once you have multiple queue workers — DB-backed counters serialize too much, and in-process state can't coordinate across workers. Laravel already speaks Redis natively, and you get atomic
INCR
/
EXPIRE
plus Lua scripting for true CAS semantics.
Key layout I'd use:
Copy to clipboard
hubspot:rl:burst:{portalId}:{appId} ZSET (sliding 10s)
hubspot:rl:search:{portalId} ZSET (sliding 1s)
hubspot:rl:daily:{portalId} STRING + TTL to midnight TZ
hubspot:rl:meta:{portalId} HASH (last seen headers)
The two short-window buckets are sliding-window-log (Redis ZSET, score =
microtime
, member = unique request id). Lua script removes entries older than the window, counts remaining slots, and only adds the new one if there's room — all atomic. Fixed windows are simpler but allow 2× the limit at the boundary, which on a 5/s window is brutal.
The daily bucket is a plain
INCR
with TTL set to seconds-until-midnight in
HubSpot's account timezone
, not yours — Sofia is UTC+2/+3 but your portal might be set to US Eastern. Get this once and cache it.
How to read it
How to read it
Two-phase: optimistic pre-check, authoritative post-update.
Before a call, run the Lua acquire script. If it returns "denied," sleep until a slot frees up (the script can return ms-until-next-slot) or push the job back to the queue with a delay. Don't busy-loop.
After the call, parse
X-HubSpot-RateLimit-Remaining
/
-Max
/
-Interval-Milliseconds
and store them in
hubspot:rl:meta:{portalId}
. This is your reality check — if your local counter says 50 remaining but HubSpot's header says 5, you trust HubSpot and clamp your counter. This handles clock drift, missed accounting (e.g., crashed worker that took a token but never made the request), and other apps in the same account consuming the daily budget invisibly.
For search specifically, since headers don't come back, the local counter
is
the source of truth — meaning if you ever crash mid-flight, you've under-counted. Always release tokens on connection-level failure but
not
on 429 (you really did make that request).
How to work with multiple jobs
How to work with multiple jobs
The queue layer needs to enforce concurrency separately from the rate limiter. Both work together:
Concurrency cap
via
Queue::throttle()
or a Redis semaphore — limits how many sync workers run in parallel against HubSpot. Without this, you can have 50 workers all blocked waiting for tokens, which is wasteful and creates retry storms.
Per-tenant fairness
— if you sync many Jiminny customers into different HubSpot portals, each portal has its own bucket but you still want one slow portal not to starve others. Either separate queues per portal or a fair-share scheduler.
Priority lanes
— webhook-driven updates (user-visible latency) should outrank background batch syncs. Two queues:
hubspot-priority
and
hubspot-bulk
, with priority workers taking 70% of the burst budget and bulk taking 30% (enforce via separate sub-buckets if you really want hard separation, otherwise just pull from priority first).
Backoff on 429
— respect the
Retry-After
header. If absent, exponential with jitter (e.g.,
min(2^attempt * 250ms, 30s) ± 20%
). The jitter is non-negotiable; without it, simultaneous 429s retry in lockstep and you get thundering-herd 429s on retry.
How to work with paginated requests
How to work with paginated requests
The trap is treating "fetch all" as one logical operation. Each page is its own API call and competes for tokens with everything else.
Two practical rules:
Don't hold the worker idle while paginating.
If page N takes 500ms and page N+1 needs to wait 800ms for a token, you've burned 800ms of worker time doing nothing. Instead, fetch page N, dispatch the
processing
of page N as a separate job, and queue a "fetch page N+1" job with a delay equal to the wait time. Each page becomes its own atomic unit.
Always batch where HubSpot offers it.
POST /crm/v3/objects/{type}/batch/{read|update|create}
accepts up to 100 IDs per call. For your "patching IDs" flow this is the difference between 600 calls and 6.
Walkthrough: 600 opportunities
Walkthrough: 600 opportunities
Naive flow (one PATCH per deal): 600 calls. At 190/10s that's ~32s of API time, well under daily. You'd hit burst easily without throttling. Plus likely 1-3 search calls upfront and N association calls.
Sane flow:
Identify deltas
— if you can avoid Search at all, do. Use
lastmodifieddate
filter on a single search if you must, paginate at limit=200. For 600 deals that's 3 search calls @ 5/s = ~600ms naturally throttled.
Batch read
current state —
POST /crm/v3/objects/deals/batch/read
with 100 IDs per call → 6 calls. Burst weight 6.
Compute diff
in your code (no API).
Batch update
—
POST /crm/v3/objects/deals/batch/update
with 100 per call → 6 calls.
Associations
—
POST /crm/v4/associations/{from}/{to}/batch/create
if needed → another few batch calls.
Total: ~15-20 API calls for 600 deals. Burst budget consumed: 20/190 over ~5s. Daily impact: trivial.
Recognition: pre-check denies if
<weight>
slots aren't free; on 429 the response surfaces
policyName
(DAILY/SECONDLY) — log it, push the job back with
Retry-After
delay, increment a metric so you can alarm on sustained 429 rate.
Pitfalls & bottlenecks worth pre-empting
Pitfalls & bottlenecks worth pre-empting
Daily quota is shared across the whole portal
, including any n8n flows, other private apps, marketing automation calling APIs, etc. Budget for ~70-80% of the documented limit, not 100%. Add an internal per-app daily cap so a runaway sync can't starve other apps.
Search is uniquely fragile
: separate 5/s bucket, no headers to read, 10k-result cap per query. If you ever hit 10k+ deals matching a filter, partition by
hs_object_id
ranges or by
lastmodifieddate
windows.
Retry storms after HubSpot incidents
— always jitter, always cap total retries (e.g., 5 attempts, then dead-letter).
Webhook → sync → webhook loops
— when your update fires a HubSpot webhook that triggers another sync. Tag your own writes (e.g., a custom property
jy_last_sync_id
) and ignore webhooks where it just changed.
Token refresh
— OAuth refresh itself counts against burst. Cache the access token in Redis with TTL =
expires_in - 60s
, single-flight the refresh (only one worker refreshes; others wait on a lock).
Search latency for fresh writes
— newly created/updated objects don't appear in search instantly. Don't write-then-search; use returned IDs directly.
Clock skew
— Redis is authoritative. Don't use
time()
from each worker for window scoring; use
redis.call('TIME')
inside the Lua script.
Dead workers with held tokens
— sliding-window-log handles this naturally because tokens expire by score; token-bucket implementations need explicit release-on-crash logic.
The 5% error rule
counts every 429 toward your error budget, even successfully retried ones. If your pre-check is working well, 429s should be near zero — if they're not, your pre-check is wrong, not just slow.
Phantom contention with Laravel
RateLimited
middleware
: it's per-job-class by default, not per-portal. If your
SyncDealJob
and
UpdateActivityJob
are different classes both calling HubSpot, they don't share a Laravel-level limiter — you need a single
HubspotRateLimiter
service that everything routes through.
If you want, I can sketch the Lua script for the sliding-window acquire and the Laravel service wrapper around it.
Copy
Give positive feedback
Give negative feedback
You said: What will happen if there are two different types of rate limits?
You said: What will happen if there are two different types of rate limits?
What will happen if there are two different types of rate limits?
Search requests that have 5 requests per second
The other rate limit that has, let's say, 100 requests per 10 seconds How do these work together? Is there some conflict? Can I reach the limit with one request and block either as well, or are these separated? Can I still continue making search requests once I hit the normal requests limits?
13:40
Edit
Copy
Claude responded: They're independent buckets — with one shared bucket on top.
Claude responded: They're independent buckets — with one shared bucket on top.
Analyzed independent rate limit buckets and their practical interactions
Analyzed independent rate limit buckets and their practical interactions
They're independent buckets — with one shared bucket on top.
The three buckets and what each call hits
The three buckets and what each call hits
Copy to clipboard
┌──────────────────┐
Search request ──→ │ Search: 5/sec │ ──┐
└──────────────────┘ │
├──→ ┌─────────────────┐
┌──────────────────┐ │ │ Daily: 250k–1M │
Non-search call ──→ │ Burst: 190/10s │ ──┘ │ (per portal) │
└──────────────────┘ └─────────────────┘
A search call is only metered against the search bucket and the daily bucket. A non-search call (batch read/update, single PATCH, associations, etc.) is only metered against the burst bucket and the daily bucket. The two short-window buckets do not share counters.
What this means practically
What this means practically
Hitting search secondly limit (5/s):
Only further
/search
calls 429. Your batch reads, batch updates, single PATCHes, association calls — all keep working at full burst speed. This is actually useful: if your sync is bottlenecked on Search, you can pivot to using
lastmodifieddate
filters via batch endpoints, or use the IDs you already have to do batch reads, while Search cools off.
Hitting burst limit (190/10s):
Only non-search calls 429. You can still issue Search calls at 5/s. Useful for: continuing to identify deltas for queueing while in-flight updates drain, or refreshing a small set of records via Search even though your write pipeline is paused.
Hitting daily limit:
Everything stops. Search and non-search alike. Doesn't unblock until midnight in your portal's configured timezone — and remember this is shared across every private app in the portal, plus n8n flows, marketing tools, anything else hitting the API with that account.
So can one type of request block the other?
So can one type of request block the other?
Search → Burst:
No.
Saturating Search at 50 calls per 10s leaves your full 190/10s burst untouched.
Burst → Search:
No.
Saturating burst leaves Search's 5/s untouched.
Either → Daily:
Yes
, but only by contributing to the same daily counter. It's volume that kills you here, not the type.
In theory you can sustain ~50 search + ~190 other =
~240 calls per 10 seconds
indefinitely (until daily runs out), because the two buckets bill independently.
Implementation consequence
Implementation consequence
Your rate limiter needs to know which bucket a request hits before it acquires. Cleanest pattern:
Copy to clipboard
php
$limiter
->
acquire
(
'search'
,
$weight
=
1
)
;
// for search endpoints only
$limiter
->
acquire
(
'burst'
,
$weight
=
1
)
;
// for everything else
$limiter
->
acquire
(
'daily'
,
$weight
=
1
)
;
// every call, both kinds
In Redis: three separate keys, three separate Lua acquire scripts (or one script with a bucket parameter). A search call calls
acquire('search')
+
acquire('daily')
. A batch update calls
acquire('burst')
+
acquire('daily')
.
One subtle pitfall: when you backoff on a 429,
inspect
policyName
in the response body
to know which bucket actually fired. If you see
SECONDLY
from a search endpoint, you only need to delay search-bound jobs — burst-bound jobs in the queue can keep running. If you blanket-pause everything on any 429, you waste capacity on the bucket that's still healthy. Two queues (or two throttle keys) make this clean; one global pause is the lazy version.
The other subtlety: the burst response gives you
X-HubSpot-RateLimit-Remaining
to clamp local state against, but search doesn't return those headers. So your search counter is unverified — be slightly more conservative there (e.g., budget 4/s instead of 5) to absorb the unaccounted-for calls.
Copy
Give positive feedback
Give negative feedback
You said: Ok, so what will happen each time I make a request?
You said: Ok, so what will happen each time I make a request?
Ok, so what will happen each time I make a request? Let's say I have 100,000 requests to make that are instant. Do I need to increment each request based on the type? For example, if there is a search request, I need to increment both the search bucket and also the daily bucket. If it's a burst, then I can go to the daily and burst buckets. If I need to check if it can make a call, do I need to see both the daily and search, or burst, respectively? Isn't that too heavy for the infrastructure, adding additional load to each request?
13:44
Edit
Copy
Claude responded: Yes, your understanding is correct — every request must check and reserve from each bucket it applies to, atomically, before the call goes out.
Claude responded: Yes, your understanding is correct — every request must check and reserve from each bucket it applies to, atomically, before the call goes out.
Analyzed per-request overhead concerns and quantified Redis performance impact
Analyzed per-request overhead concerns and quantified Redis performance impact
Yes, your understanding is correct — every request must check and reserve from each bucket it applies to, atomically, before the call goes out. But the overhead is much smaller than it sounds, and importantly, it's nowhere near your bottleneck.
What "two buckets per request" actually costs
What "two buckets per request" actually costs
Each request makes
one round trip to Redis
— not two — because you fold both bucket checks into a single Lua script that runs atomically server-side:
Copy to clipboard
lua
-- KEYS[1] = burst bucket key (or search)
-- KEYS[2] = daily bucket key
-- ARGV[1] = now (ms) ARGV[2] = window_ms
-- ARGV[3] = bucket_max ARGV[4] = daily_max
-- ARGV[5] = request_id ARGV[6] = daily_ttl
-- Trim sliding window
redis
.
call
(
'ZREMRANGEBYSCORE'
,
KEYS
[
1
]
,
0
,
ARGV
[
1
]
-
ARGV
[
2
]
)
local
burst_used
=
redis
.
call
(
'ZCARD'
,
KEYS
[
1
]
)
local
daily_used
=
tonumber
(
redis
.
call
(
'GET'
,
KEYS
[
2
]
)
or
'0'
)
if
burst_used
>=
tonumber
(
ARGV
[
3
]
)
then
-- Tell caller how long to sleep until oldest entry expires
local
oldest
=
redis
.
call
(
'ZRANGE'
,
KEYS
[
1
]
,
0
,
0
,
'WITHSCORES'
)
return
{
0
,
'BURST'
,
(
oldest
[
2
]
+
ARGV
[
2
]
)
-
ARGV
[
1
]
}
end
if
daily_used
>=
tonumber
(
ARGV
[
4
]
)
then
return
{
0
,
'DAILY'
,
-
1
}
end
redis
.
call
(
'ZADD'
,
KEYS
[
1
]
,
ARGV
[
1
]
,
ARGV
[
5
]
)
redis
.
call
(
'PEXPIRE'
,
KEYS
[
1
]
,
ARGV
[
2
]
+
1000
)
local
d
=
redis
.
call
(
'INCR'
,
KEYS
[
2
]
)
if
d
==
1
then
redis
.
call
(
'EXPIRE'
,
KEYS
[
2
]...
|
[{"role":"AXLink","text":& [{"role":"AXLink","text":"Skip to content","depth":14,"bounds":{"left":0.029587766,"top":0.03830806,"width":0.0003324468,"height":0.0007980846},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Skip to content","depth":15,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Click to collapse","depth":16,"bounds":{"left":0.10239362,"top":0.06703911,"width":0.030585106,"height":0.011971269},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.10239362,"top":0.06703911,"width":0.0029920214,"height":0.011971269}},{"char_start":1,"char_count":16,"bounds":{"left":0.10538564,"top":0.06703911,"width":0.027925532,"height":0.011971269}}],"role_description":"text"},{"role":"AXStaticText","text":"⌘B","depth":16,"bounds":{"left":0.1349734,"top":0.06703911,"width":0.0063164895,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Drag to resize","depth":16,"bounds":{"left":0.10239362,"top":0.079010375,"width":0.025930852,"height":0.011971269},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.10239362,"top":0.079010375,"width":0.0029920214,"height":0.011971269}},{"char_start":1,"char_count":13,"bounds":{"left":0.10538564,"top":0.079010375,"width":0.022938829,"height":0.011971269}}],"role_description":"text"},{"role":"AXButton","text":"Open sidebar","depth":14,"bounds":{"left":0.029920213,"top":0.02793296,"width":0.00930851,"height":0.022346368},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Chat","depth":16,"bounds":{"left":0.004986702,"top":0.059856344,"width":0.025930852,"height":0.022346368},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Cowork","depth":16,"bounds":{"left":0.03158245,"top":0.059856344,"width":0.03125,"height":0.022346368},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code","depth":16,"bounds":{"left":0.0631649,"top":0.059856344,"width":0.026928192,"height":0.022346368},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"New chat ⌘N","depth":15,"bounds":{"left":0.0043218085,"top":0.08938547,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"New chat","depth":16,"bounds":{"left":0.014295213,"top":0.0933759,"width":0.018949468,"height":0.012769354},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.014295213,"top":0.0933759,"width":0.003656915,"height":0.013567438}},{"char_start":1,"char_count":7,"bounds":{"left":0.01761968,"top":0.0933759,"width":0.015957447,"height":0.013567438}}],"role_description":"text"},{"role":"AXStaticText","text":"⌘N","depth":17,"bounds":{"left":0.08178192,"top":0.0933759,"width":0.006981383,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Projects","depth":15,"bounds":{"left":0.0043218085,"top":0.110135674,"width":0.08643617,"height":0.019952115},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Artifacts","depth":15,"bounds":{"left":0.0043218085,"top":0.1300878,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Customize","depth":15,"bounds":{"left":0.0043218085,"top":0.15003991,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Pinned","depth":16,"bounds":{"left":0.0063164895,"top":0.18914606,"width":0.08377659,"height":0.013567438},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXButton","text":"Bulgarian citizenship application process for EU residents","depth":18,"bounds":{"left":0.0043218085,"top":0.20590582,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Bulgarian citizenship application process for EU residents","depth":19,"bounds":{"left":0.08344415,"top":0.20909816,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Dawarich location tracking project","depth":18,"bounds":{"left":0.0043218085,"top":0.22745411,"width":0.08643617,"height":0.019952115},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Dawarich location tracking project","depth":19,"bounds":{"left":0.08344415,"top":0.22984837,"width":0.005984043,"height":0.015163607},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Recents","depth":16,"bounds":{"left":0.0063164895,"top":0.25698325,"width":0.06349734,"height":0.012769354},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXButton","text":"View all","depth":16,"bounds":{"left":0.07114362,"top":0.25698325,"width":0.018949468,"height":0.012769354},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"HubSpot rate limit implementation strategy","depth":18,"bounds":{"left":0.0043218085,"top":0.27294493,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for HubSpot rate limit implementation strategy","depth":19,"bounds":{"left":0.08344415,"top":0.27613726,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Screenpipe retention policy code location","depth":18,"bounds":{"left":0.0043218085,"top":0.29449323,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Screenpipe retention policy code location","depth":19,"bounds":{"left":0.08344415,"top":0.29768556,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Viewing retention policy in screenpipe","depth":18,"bounds":{"left":0.0043218085,"top":0.31524342,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Viewing retention policy in screenpipe","depth":19,"bounds":{"left":0.08344415,"top":0.31843576,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Clean shot x video recording termination issue","depth":18,"bounds":{"left":0.0043218085,"top":0.3367917,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Clean shot x video recording termination issue","depth":19,"bounds":{"left":0.08344415,"top":0.33998403,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"HubSpot rate limit handling with executeRequest","depth":18,"bounds":{"left":0.0043218085,"top":0.3575419,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for HubSpot rate limit handling with executeRequest","depth":19,"bounds":{"left":0.08344415,"top":0.36073422,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Untitled","depth":18,"bounds":{"left":0.0043218085,"top":0.3790902,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options","depth":19,"bounds":{"left":0.08344415,"top":0.38228253,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"💬 Screen pipe. Is there ability…","depth":18,"bounds":{"left":0.0043218085,"top":0.39984038,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for 💬 Screen pipe. Is there ability…","depth":19,"bounds":{"left":0.08344415,"top":0.40303272,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"SMB mount access inconsistency between Finder and iTerm","depth":18,"bounds":{"left":0.0043218085,"top":0.42138866,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for SMB mount access inconsistency between Finder and iTerm","depth":19,"bounds":{"left":0.08344415,"top":0.4237829,"width":0.005984043,"height":0.015163607},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"💬 What is the best switch I can…","depth":18,"bounds":{"left":0.0043218085,"top":0.44213888,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for 💬 What is the best switch I can…","depth":19,"bounds":{"left":0.08344415,"top":0.44533122,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Permission denied on screenpipe volume","depth":18,"bounds":{"left":0.0043218085,"top":0.46288908,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Permission denied on screenpipe volume","depth":19,"bounds":{"left":0.08344415,"top":0.4660814,"width":0.005984043,"height":0.015163607},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Screenpipe sync database attachment error","depth":18,"bounds":{"left":0.0043218085,"top":0.48443735,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Screenpipe sync database attachment error","depth":19,"bounds":{"left":0.08344415,"top":0.48762968,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Last swimming outing with Dani","depth":18,"bounds":{"left":0.0043218085,"top":0.5051876,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Last swimming outing with Dani","depth":19,"bounds":{"left":0.08344415,"top":0.5083799,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Definition of incarcerated","depth":18,"bounds":{"left":0.0043218085,"top":0.52673584,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Definition of incarcerated","depth":19,"bounds":{"left":0.08344415,"top":0.52992815,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Chromecast remote volume buttons not working","depth":18,"bounds":{"left":0.0043218085,"top":0.547486,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Chromecast remote volume buttons not working","depth":19,"bounds":{"left":0.08344415,"top":0.5506784,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Salesforce API errors with Organization and FieldDefinition queries","depth":18,"bounds":{"left":0.0043218085,"top":0.56903434,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Salesforce API errors with Organization and FieldDefinition queries","depth":19,"bounds":{"left":0.08344415,"top":0.57222664,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Daily activity summary from screenpipe data","depth":18,"bounds":{"left":0.0043218085,"top":0.5897845,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Daily activity summary from screenpipe data","depth":19,"bounds":{"left":0.08344415,"top":0.59297687,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"MacBook unexpected restarts and kanji screen","depth":18,"bounds":{"left":0.0043218085,"top":0.6113328,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for MacBook unexpected restarts and kanji screen","depth":19,"bounds":{"left":0.08344415,"top":0.61452514,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Security patch review and testing guidance","depth":18,"bounds":{"left":0.0043218085,"top":0.632083,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Security patch review and testing guidance","depth":19,"bounds":{"left":0.08344415,"top":0.63527536,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Food calorie values reference","depth":18,"bounds":{"left":0.0043218085,"top":0.65363127,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Food calorie values reference","depth":19,"bounds":{"left":0.08344415,"top":0.65682364,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Tracking location history from last week","depth":18,"bounds":{"left":0.0043218085,"top":0.6743815,"width":0.08643617,"height":0.011173184},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Tracking location history from last week","depth":19,"bounds":{"left":0.08344415,"top":0.6775738,"width":0.005984043,"height":0.007980846},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"Lukas Pro","depth":15,"bounds":{"left":0.0043218085,"top":0.6943336,"width":0.037898935,"height":0.01915403},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Get apps and extensions","depth":15,"bounds":{"left":0.08277926,"top":0.6943336,"width":0.007978723,"height":0.01915403},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"HubSpot rate limit implementation strategy, rename chat","depth":20,"bounds":{"left":0.043218084,"top":0.02793296,"width":0.09773936,"height":0.022346368},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"HubSpot rate limit implementation strategy","depth":22,"bounds":{"left":0.04454787,"top":0.031923383,"width":0.09507979,"height":0.014365523},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.04454787,"top":0.031923383,"width":0.003656915,"height":0.014365523}},{"char_start":1,"char_count":41,"bounds":{"left":0.048204787,"top":0.031923383,"width":0.09142287,"height":0.014365523}}],"role_description":"text"},{"role":"AXPopUpButton","text":"More options for HubSpot rate limit implementation strategy","depth":20,"bounds":{"left":0.14128989,"top":0.02793296,"width":0.0066489363,"height":0.022346368},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close","depth":22,"bounds":{"left":0.234375,"top":0.026336791,"width":0.010638298,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Claude is responding","depth":22,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"You said: So just a solution for rate limit implementation.","depth":21,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"You said: So just a solution for rate limit implementation.","depth":22,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"So just a solution for rate limit implementation. The situation currently is that there are some daily and secondary limits for HubSpot. I would like to make sure I never reach a 429 error rate limit. The requests can come from any flow. It can be:","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"updating activity (engagement, meeting, call, note)","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"searching for a company or contact","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"updating deal","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"patching IDs\nReview what the limit is at the moment in the HubSpot documentation and then think of the solution:","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"where to store it","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"how to read it","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"how to work with multiple jobs","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"how to work with paginated requests Let's consider a situation when there are 600 opportunities to sync. What would be the flow? How would the rate limit be recognized? How would it be handled? What are the potential issues? [API usage guidelines and limits - HubSpot docs](","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXLink","text":"https://developers.hubspot.com/docs/developer-tooling/platform/usage-guidelines","depth":26,"on_screen":false,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"https://developers.hubspot.com/docs/developer-tooling/platform/usage-guidelines","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"). Example of such a error Client error:","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"POST https://api.hubapi.com/crm/v3/objects/contact/search","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"resulted in a","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"429 Too Many Requests","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"response: {\"status\":\"error\",\"message\":\"You have reached your secondly limit.\",\"errorType\":\"RATE_LIMIT\",\"correlationId\":\"019dffc4-4 (truncated...). Think carefully about the implementation and potential issue and bottlenecks.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Show more","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:42","depth":23,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Edit","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Copy","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXHeading","text":"Claude responded: Current HubSpot limits (Apr 2026)","depth":22,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"Claude responded: Current HubSpot limits (Apr 2026)","depth":23,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Synthesized HubSpot rate limit architecture with Redis storage and sliding window algorithms","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Synthesized HubSpot rate limit architecture with Redis storage and sliding window algorithms","depth":24,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"Current HubSpot limits (Apr 2026)","depth":25,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"Current HubSpot limits (Apr 2026)","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"For privately distributed apps (which is what Jiminny presumably uses with HubSpot), the limits are layered: a per-app burst window of 100/10s on Free/Starter, 190/10s on Pro/Enterprise, or 250/10s with the API Limit Increase add-on","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", plus a per-account daily cap of 250k / 625k / 1M depending on tier — shared across all private apps in the account","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":". The burst window is per app; the daily quota is per portal.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXLink","text":"hubspot","depth":27,"on_screen":false,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"hubspot","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXLink","text":"hubspot","depth":27,"on_screen":false,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"hubspot","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"The Search API is special: five requests per second per account, capped at 200 records per page, with a hard 10,000-result ceiling per query","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":". That's the limit the 429 in your example is hitting (","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"secondly limit","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"on","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/crm/v3/objects/contact/search","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"). It's a separate bucket from the 190/10s, and critically, search responses do not include the","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"X-HubSpot-RateLimit-*","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"headers","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— you can't read remaining capacity off the response, you have to track it yourself.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXLink","text":"hubspot","depth":27,"on_screen":false,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"hubspot","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXLink","text":"hubspot","depth":27,"on_screen":false,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"hubspot","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Non-search endpoints return","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"X-HubSpot-RateLimit-Remaining","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":",","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"-Max","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", and","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"-Interval-Milliseconds","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":". The daily headers are not returned for OAuth-authenticated calls","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", so for those you check the account-info endpoint or maintain your own counter. There's also a soft rule: errors should stay under 5% of total daily requests","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— that's enforced for marketplace listing, but it's also a sane operational target.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXLink","text":"hubspot","depth":27,"on_screen":false,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"hubspot","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXLink","text":"hubspot","depth":27,"on_screen":false,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"hubspot","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"So you have","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"four buckets","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"to track at minimum: app-burst (10s sliding), search-secondly (1s sliding), account-daily (24h fixed, midnight in HubSpot's TZ), and per-app daily share (your own budgeting on top of the account cap).","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"Where to store it","depth":25,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"Where to store it","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Redis. It's the only realistic option once you have multiple queue workers — DB-backed counters serialize too much, and in-process state can't coordinate across workers. Laravel already speaks Redis natively, and you get atomic","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"INCR","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"EXPIRE","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"plus Lua scripting for true CAS semantics.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Key layout I'd use:","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Copy to clipboard","depth":28,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"hubspot:rl:burst:{portalId}:{appId} ZSET (sliding 10s)","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"hubspot:rl:search:{portalId} ZSET (sliding 1s)","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"hubspot:rl:daily:{portalId} STRING + TTL to midnight TZ","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"hubspot:rl:meta:{portalId} HASH (last seen headers)","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"The two short-window buckets are sliding-window-log (Redis ZSET, score =","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"microtime","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", member = unique request id). Lua script removes entries older than the window, counts remaining slots, and only adds the new one if there's room — all atomic. Fixed windows are simpler but allow 2× the limit at the boundary, which on a 5/s window is brutal.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"The daily bucket is a plain","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"INCR","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"with TTL set to seconds-until-midnight in","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"HubSpot's account timezone","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", not yours — Sofia is UTC+2/+3 but your portal might be set to US Eastern. Get this once and cache it.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"How to read it","depth":25,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"How to read it","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Two-phase: optimistic pre-check, authoritative post-update.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Before a call, run the Lua acquire script. If it returns \"denied,\" sleep until a slot frees up (the script can return ms-until-next-slot) or push the job back to the queue with a delay. Don't busy-loop.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"After the call, parse","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"X-HubSpot-RateLimit-Remaining","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"-Max","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"-Interval-Milliseconds","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"and store them in","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"hubspot:rl:meta:{portalId}","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":". This is your reality check — if your local counter says 50 remaining but HubSpot's header says 5, you trust HubSpot and clamp your counter. This handles clock drift, missed accounting (e.g., crashed worker that took a token but never made the request), and other apps in the same account consuming the daily budget invisibly.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"For search specifically, since headers don't come back, the local counter","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"is","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"the source of truth — meaning if you ever crash mid-flight, you've under-counted. Always release tokens on connection-level failure but","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"not","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"on 429 (you really did make that request).","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"How to work with multiple jobs","depth":25,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"How to work with multiple jobs","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"The queue layer needs to enforce concurrency separately from the rate limiter. Both work together:","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Concurrency cap","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"via","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Queue::throttle()","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"or a Redis semaphore — limits how many sync workers run in parallel against HubSpot. Without this, you can have 50 workers all blocked waiting for tokens, which is wasteful and creates retry storms.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Per-tenant fairness","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— if you sync many Jiminny customers into different HubSpot portals, each portal has its own bucket but you still want one slow portal not to starve others. Either separate queues per portal or a fair-share scheduler.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Priority lanes","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— webhook-driven updates (user-visible latency) should outrank background batch syncs. Two queues:","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"hubspot-priority","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"and","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"hubspot-bulk","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", with priority workers taking 70% of the burst budget and bulk taking 30% (enforce via separate sub-buckets if you really want hard separation, otherwise just pull from priority first).","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Backoff on 429","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— respect the","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Retry-After","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"header. If absent, exponential with jitter (e.g.,","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"min(2^attempt * 250ms, 30s) ± 20%","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"). The jitter is non-negotiable; without it, simultaneous 429s retry in lockstep and you get thundering-herd 429s on retry.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"How to work with paginated requests","depth":25,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"How to work with paginated requests","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"The trap is treating \"fetch all\" as one logical operation. Each page is its own API call and competes for tokens with everything else.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Two practical rules:","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Don't hold the worker idle while paginating.","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"If page N takes 500ms and page N+1 needs to wait 800ms for a token, you've burned 800ms of worker time doing nothing. Instead, fetch page N, dispatch the","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"processing","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"of page N as a separate job, and queue a \"fetch page N+1\" job with a delay equal to the wait time. Each page becomes its own atomic unit.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Always batch where HubSpot offers it.","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"POST /crm/v3/objects/{type}/batch/{read|update|create}","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"accepts up to 100 IDs per call. For your \"patching IDs\" flow this is the difference between 600 calls and 6.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"Walkthrough: 600 opportunities","depth":25,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"Walkthrough: 600 opportunities","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Naive flow (one PATCH per deal): 600 calls. At 190/10s that's ~32s of API time, well under daily. You'd hit burst easily without throttling. Plus likely 1-3 search calls upfront and N association calls.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Sane flow:","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Identify deltas","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— if you can avoid Search at all, do. Use","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"lastmodifieddate","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"filter on a single search if you must, paginate at limit=200. For 600 deals that's 3 search calls @ 5/s = ~600ms naturally throttled.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Batch read","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"current state —","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"POST /crm/v3/objects/deals/batch/read","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"with 100 IDs per call → 6 calls. Burst weight 6.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Compute diff","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"in your code (no API).","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Batch update","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"—","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"POST /crm/v3/objects/deals/batch/update","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"with 100 per call → 6 calls.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Associations","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"—","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"POST /crm/v4/associations/{from}/{to}/batch/create","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"if needed → another few batch calls.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Total: ~15-20 API calls for 600 deals. Burst budget consumed: 20/190 over ~5s. Daily impact: trivial.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Recognition: pre-check denies if","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"<weight>","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"slots aren't free; on 429 the response surfaces","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"policyName","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"(DAILY/SECONDLY) — log it, push the job back with","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Retry-After","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"delay, increment a metric so you can alarm on sustained 429 rate.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"Pitfalls & bottlenecks worth pre-empting","depth":25,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"Pitfalls & bottlenecks worth pre-empting","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Daily quota is shared across the whole portal","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", including any n8n flows, other private apps, marketing automation calling APIs, etc. Budget for ~70-80% of the documented limit, not 100%. Add an internal per-app daily cap so a runaway sync can't starve other apps.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Search is uniquely fragile","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":": separate 5/s bucket, no headers to read, 10k-result cap per query. If you ever hit 10k+ deals matching a filter, partition by","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"hs_object_id","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"ranges or by","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"lastmodifieddate","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"windows.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Retry storms after HubSpot incidents","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— always jitter, always cap total retries (e.g., 5 attempts, then dead-letter).","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Webhook → sync → webhook loops","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— when your update fires a HubSpot webhook that triggers another sync. Tag your own writes (e.g., a custom property","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"jy_last_sync_id","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":") and ignore webhooks where it just changed.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Token refresh","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— OAuth refresh itself counts against burst. Cache the access token in Redis with TTL =","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"expires_in - 60s","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", single-flight the refresh (only one worker refreshes; others wait on a lock).","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Search latency for fresh writes","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— newly created/updated objects don't appear in search instantly. Don't write-then-search; use returned IDs directly.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Clock skew","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— Redis is authoritative. Don't use","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"time()","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"from each worker for window scoring; use","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"redis.call('TIME')","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"inside the Lua script.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Dead workers with held tokens","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— sliding-window-log handles this naturally because tokens expire by score; token-bucket implementations need explicit release-on-crash logic.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"The 5% error rule","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"counts every 429 toward your error budget, even successfully retried ones. If your pre-check is working well, 429s should be near zero — if they're not, your pre-check is wrong, not just slow.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Phantom contention with Laravel","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"RateLimited","depth":29,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"middleware","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":": it's per-job-class by default, not per-portal. If your","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"SyncDealJob","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"and","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"UpdateActivityJob","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"are different classes both calling HubSpot, they don't share a Laravel-level limiter — you need a single","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"HubspotRateLimiter","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"service that everything routes through.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"If you want, I can sketch the Lua script for the sliding-window acquire and the Laravel service wrapper around it.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Copy","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Give positive feedback","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Give negative feedback","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXHeading","text":"You said: What will happen if there are two different types of rate limits?","depth":21,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"You said: What will happen if there are two different types of rate limits?","depth":22,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"What will happen if there are two different types of rate limits?","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Search requests that have 5 requests per second","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"The other rate limit that has, let's say, 100 requests per 10 seconds How do these work together? Is there some conflict? Can I reach the limit with one request and block either as well, or are these separated? Can I still continue making search requests once I hit the normal requests limits?","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"13:40","depth":23,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Edit","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Copy","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXHeading","text":"Claude responded: They're independent buckets — with one shared bucket on top.","depth":22,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"Claude responded: They're independent buckets — with one shared bucket on top.","depth":23,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Analyzed independent rate limit buckets and their practical interactions","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Analyzed independent rate limit buckets and their practical interactions","depth":24,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"They're independent buckets — with one shared bucket on top.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"The three buckets and what each call hits","depth":25,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"The three buckets and what each call hits","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Copy to clipboard","depth":28,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"┌──────────────────┐","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Search request ──→ │ Search: 5/sec │ ──┐","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"└──────────────────┘ │","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"├──→ ┌─────────────────┐","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"┌──────────────────┐ │ │ Daily: 250k–1M │","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Non-search call ──→ │ Burst: 190/10s │ ──┘ │ (per portal) │","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"└──────────────────┘ └─────────────────┘","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"A search call is only metered against the search bucket and the daily bucket. A non-search call (batch read/update, single PATCH, associations, etc.) is only metered against the burst bucket and the daily bucket. The two short-window buckets do not share counters.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"What this means practically","depth":25,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"What this means practically","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Hitting search secondly limit (5/s):","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Only further","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/search","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"calls 429. Your batch reads, batch updates, single PATCHes, association calls — all keep working at full burst speed. This is actually useful: if your sync is bottlenecked on Search, you can pivot to using","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"lastmodifieddate","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"filters via batch endpoints, or use the IDs you already have to do batch reads, while Search cools off.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Hitting burst limit (190/10s):","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Only non-search calls 429. You can still issue Search calls at 5/s. Useful for: continuing to identify deltas for queueing while in-flight updates drain, or refreshing a small set of records via Search even though your write pipeline is paused.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Hitting daily limit:","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Everything stops. Search and non-search alike. Doesn't unblock until midnight in your portal's configured timezone — and remember this is shared across every private app in the portal, plus n8n flows, marketing tools, anything else hitting the API with that account.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"So can one type of request block the other?","depth":25,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"So can one type of request block the other?","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Search → Burst:","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"No.","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Saturating Search at 50 calls per 10s leaves your full 190/10s burst untouched.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Burst → Search:","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"No.","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Saturating burst leaves Search's 5/s untouched.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Either → Daily:","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Yes","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", but only by contributing to the same daily counter. It's volume that kills you here, not the type.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"In theory you can sustain ~50 search + ~190 other =","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"~240 calls per 10 seconds","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"indefinitely (until daily runs out), because the two buckets bill independently.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"Implementation consequence","depth":25,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"Implementation consequence","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Your rate limiter needs to know which bucket a request hits before it acquires. Cleanest pattern:","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Copy to clipboard","depth":28,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"php","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"$limiter","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"->","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"acquire","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"(","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"'search'","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":",","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"$weight","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"=","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":")","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":";","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"// for search endpoints only","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"$limiter","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"->","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"acquire","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"(","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"'burst'","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":",","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"$weight","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"=","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":")","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":";","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"// for everything else","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"$limiter","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"->","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"acquire","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"(","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"'daily'","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":",","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"$weight","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"=","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":")","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":";","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"// every call, both kinds","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"In Redis: three separate keys, three separate Lua acquire scripts (or one script with a bucket parameter). A search call calls","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"acquire('search')","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"acquire('daily')","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":". A batch update calls","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"acquire('burst')","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"acquire('daily')","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":".","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"One subtle pitfall: when you backoff on a 429,","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"inspect","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"policyName","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"in the response body","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"to know which bucket actually fired. If you see","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"SECONDLY","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"from a search endpoint, you only need to delay search-bound jobs — burst-bound jobs in the queue can keep running. If you blanket-pause everything on any 429, you waste capacity on the bucket that's still healthy. Two queues (or two throttle keys) make this clean; one global pause is the lazy version.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"The other subtlety: the burst response gives you","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"X-HubSpot-RateLimit-Remaining","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"to clamp local state against, but search doesn't return those headers. So your search counter is unverified — be slightly more conservative there (e.g., budget 4/s instead of 5) to absorb the unaccounted-for calls.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Copy","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Give positive feedback","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Give negative feedback","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXHeading","text":"You said: Ok, so what will happen each time I make a request?","depth":21,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"You said: Ok, so what will happen each time I make a request?","depth":22,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Ok, so what will happen each time I make a request? Let's say I have 100,000 requests to make that are instant. Do I need to increment each request based on the type? For example, if there is a search request, I need to increment both the search bucket and also the daily bucket. If it's a burst, then I can go to the daily and burst buckets. If I need to check if it can make a call, do I need to see both the daily and search, or burst, respectively? Isn't that too heavy for the infrastructure, adding additional load to each request?","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"13:44","depth":23,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Edit","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Copy","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXHeading","text":"Claude responded: Yes, your understanding is correct — every request must check and reserve from each bucket it applies to, atomically, before the call goes out.","depth":22,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"Claude responded: Yes, your understanding is correct — every request must check and reserve from each bucket it applies to, atomically, before the call goes out.","depth":23,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Analyzed per-request overhead concerns and quantified Redis performance impact","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Analyzed per-request overhead concerns and quantified Redis performance impact","depth":24,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Yes, your understanding is correct — every request must check and reserve from each bucket it applies to, atomically, before the call goes out. But the overhead is much smaller than it sounds, and importantly, it's nowhere near your bottleneck.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"What \"two buckets per request\" actually costs","depth":25,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"What \"two buckets per request\" actually costs","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Each request makes","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"one round trip to Redis","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— not two — because you fold both bucket checks into a single Lua script that runs atomically server-side:","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Copy to clipboard","depth":28,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"lua","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"-- KEYS[1] = burst bucket key (or search)","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"-- KEYS[2] = daily bucket key","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"-- ARGV[1] = now (ms) ARGV[2] = window_ms","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"-- ARGV[3] = bucket_max ARGV[4] = daily_max","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"-- ARGV[5] = request_id ARGV[6] = daily_ttl","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"-- Trim sliding window","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"redis","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":".","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"call","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"(","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"'ZREMRANGEBYSCORE'","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":",","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"KEYS","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"[","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"]","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":",","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"0","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":",","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"ARGV","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"[","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"]","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"-","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"ARGV","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"[","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"2","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"]","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":")","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"local","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"burst_used","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"=","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"redis","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":".","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"call","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"(","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"'ZCARD'","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":",","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"KEYS","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"[","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"]","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":")","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"local","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"daily_used","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"=","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"tonumber","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"(","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"redis","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":".","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"call","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"(","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"'GET'","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":",","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"KEYS","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"[","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"2","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"]","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":")","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"or","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"'0'","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":")","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"if","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"burst_used","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":">=","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"tonumber","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"(","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"ARGV","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"[","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"3","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"]","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":")","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"then","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"-- Tell caller how long to sleep until oldest entry expires","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"local","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"oldest","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"=","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"redis","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":".","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"call","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"(","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"'ZRANGE'","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":",","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"KEYS","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"[","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"]","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":",","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"0","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":",","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"0","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":",","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"'WITHSCORES'","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":")","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"return","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"{","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"0","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":",","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"'BURST'","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":",","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"(","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"oldest","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"[","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"2","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"]","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"ARGV","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"[","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"2","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"]","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":")","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"-","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"ARGV","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"[","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"]","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"}","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"end","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"if","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"daily_used","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":">=","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"tonumber","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"(","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"ARGV","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"[","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"4","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"]","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":")","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"then","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"return","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"{","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"0","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":",","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"'DAILY'","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":",","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"-","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"}","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"end","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"redis","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":".","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"call","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"(","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"'ZADD'","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":",","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"KEYS","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"[","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"]","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":",","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"ARGV","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"[","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"]","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":",","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"ARGV","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"[","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"5","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"]","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":")","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"redis","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":".","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"call","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"(","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"'PEXPIRE'","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":",","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"KEYS","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"[","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"]","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":",","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"ARGV","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"[","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"2","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"]","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"1000","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":")","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"local","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"d","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"=","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"redis","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":".","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"call","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"(","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"'INCR'","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":",","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"KEYS","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"[","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"2","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"]","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":")","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"if","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"d","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"==","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"then","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"redis","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":".","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"call","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"(","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"'EXPIRE'","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":",","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"KEYS","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"[","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"2","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"]","depth":28,"on_screen":false,"role_description":"text"}]...
|
-5994010443082756695
|
-9219238470661350316
|
visual_change
|
accessibility
|
NULL
|
Skip to content
Skip to content
Click to collapse
Skip to content
Skip to content
Click to collapse
⌘B
Drag to resize
Open sidebar
Chat
Cowork
Code
New chat ⌘N
New chat
⌘N
Projects
Artifacts
Customize
Pinned
Bulgarian citizenship application process for EU residents
More options for Bulgarian citizenship application process for EU residents
Dawarich location tracking project
More options for Dawarich location tracking project
Recents
View all
HubSpot rate limit implementation strategy
More options for HubSpot rate limit implementation strategy
Screenpipe retention policy code location
More options for Screenpipe retention policy code location
Viewing retention policy in screenpipe
More options for Viewing retention policy in screenpipe
Clean shot x video recording termination issue
More options for Clean shot x video recording termination issue
HubSpot rate limit handling with executeRequest
More options for HubSpot rate limit handling with executeRequest
Untitled
More options
💬 Screen pipe. Is there ability…
More options for 💬 Screen pipe. Is there ability…
SMB mount access inconsistency between Finder and iTerm
More options for SMB mount access inconsistency between Finder and iTerm
💬 What is the best switch I can…
More options for 💬 What is the best switch I can…
Permission denied on screenpipe volume
More options for Permission denied on screenpipe volume
Screenpipe sync database attachment error
More options for Screenpipe sync database attachment error
Last swimming outing with Dani
More options for Last swimming outing with Dani
Definition of incarcerated
More options for Definition of incarcerated
Chromecast remote volume buttons not working
More options for Chromecast remote volume buttons not working
Salesforce API errors with Organization and FieldDefinition queries
More options for Salesforce API errors with Organization and FieldDefinition queries
Daily activity summary from screenpipe data
More options for Daily activity summary from screenpipe data
MacBook unexpected restarts and kanji screen
More options for MacBook unexpected restarts and kanji screen
Security patch review and testing guidance
More options for Security patch review and testing guidance
Food calorie values reference
More options for Food calorie values reference
Tracking location history from last week
More options for Tracking location history from last week
Lukas Pro
Get apps and extensions
HubSpot rate limit implementation strategy, rename chat
HubSpot rate limit implementation strategy
More options for HubSpot rate limit implementation strategy
Close
Claude is responding
You said: So just a solution for rate limit implementation.
You said: So just a solution for rate limit implementation.
So just a solution for rate limit implementation. The situation currently is that there are some daily and secondary limits for HubSpot. I would like to make sure I never reach a 429 error rate limit. The requests can come from any flow. It can be:
updating activity (engagement, meeting, call, note)
searching for a company or contact
updating deal
patching IDs
Review what the limit is at the moment in the HubSpot documentation and then think of the solution:
where to store it
how to read it
how to work with multiple jobs
how to work with paginated requests Let's consider a situation when there are 600 opportunities to sync. What would be the flow? How would the rate limit be recognized? How would it be handled? What are the potential issues? [API usage guidelines and limits - HubSpot docs](
https://developers.hubspot.com/docs/developer-tooling/platform/usage-guidelines
https://developers.hubspot.com/docs/developer-tooling/platform/usage-guidelines
). Example of such a error Client error:
POST https://api.hubapi.com/crm/v3/objects/contact/search
resulted in a
429 Too Many Requests
response: {"status":"error","message":"You have reached your secondly limit.","errorType":"RATE_LIMIT","correlationId":"019dffc4-4 (truncated...). Think carefully about the implementation and potential issue and bottlenecks.
Show more
10:42
Edit
Copy
Claude responded: Current HubSpot limits (Apr 2026)
Claude responded: Current HubSpot limits (Apr 2026)
Synthesized HubSpot rate limit architecture with Redis storage and sliding window algorithms
Synthesized HubSpot rate limit architecture with Redis storage and sliding window algorithms
Current HubSpot limits (Apr 2026)
Current HubSpot limits (Apr 2026)
For privately distributed apps (which is what Jiminny presumably uses with HubSpot), the limits are layered: a per-app burst window of 100/10s on Free/Starter, 190/10s on Pro/Enterprise, or 250/10s with the API Limit Increase add-on
, plus a per-account daily cap of 250k / 625k / 1M depending on tier — shared across all private apps in the account
. The burst window is per app; the daily quota is per portal.
hubspot
hubspot
hubspot
hubspot
The Search API is special: five requests per second per account, capped at 200 records per page, with a hard 10,000-result ceiling per query
. That's the limit the 429 in your example is hitting (
secondly limit
on
/crm/v3/objects/contact/search
). It's a separate bucket from the 190/10s, and critically, search responses do not include the
X-HubSpot-RateLimit-*
headers
— you can't read remaining capacity off the response, you have to track it yourself.
hubspot
hubspot
hubspot
hubspot
Non-search endpoints return
X-HubSpot-RateLimit-Remaining
,
-Max
, and
-Interval-Milliseconds
. The daily headers are not returned for OAuth-authenticated calls
, so for those you check the account-info endpoint or maintain your own counter. There's also a soft rule: errors should stay under 5% of total daily requests
— that's enforced for marketplace listing, but it's also a sane operational target.
hubspot
hubspot
hubspot
hubspot
So you have
four buckets
to track at minimum: app-burst (10s sliding), search-secondly (1s sliding), account-daily (24h fixed, midnight in HubSpot's TZ), and per-app daily share (your own budgeting on top of the account cap).
Where to store it
Where to store it
Redis. It's the only realistic option once you have multiple queue workers — DB-backed counters serialize too much, and in-process state can't coordinate across workers. Laravel already speaks Redis natively, and you get atomic
INCR
/
EXPIRE
plus Lua scripting for true CAS semantics.
Key layout I'd use:
Copy to clipboard
hubspot:rl:burst:{portalId}:{appId} ZSET (sliding 10s)
hubspot:rl:search:{portalId} ZSET (sliding 1s)
hubspot:rl:daily:{portalId} STRING + TTL to midnight TZ
hubspot:rl:meta:{portalId} HASH (last seen headers)
The two short-window buckets are sliding-window-log (Redis ZSET, score =
microtime
, member = unique request id). Lua script removes entries older than the window, counts remaining slots, and only adds the new one if there's room — all atomic. Fixed windows are simpler but allow 2× the limit at the boundary, which on a 5/s window is brutal.
The daily bucket is a plain
INCR
with TTL set to seconds-until-midnight in
HubSpot's account timezone
, not yours — Sofia is UTC+2/+3 but your portal might be set to US Eastern. Get this once and cache it.
How to read it
How to read it
Two-phase: optimistic pre-check, authoritative post-update.
Before a call, run the Lua acquire script. If it returns "denied," sleep until a slot frees up (the script can return ms-until-next-slot) or push the job back to the queue with a delay. Don't busy-loop.
After the call, parse
X-HubSpot-RateLimit-Remaining
/
-Max
/
-Interval-Milliseconds
and store them in
hubspot:rl:meta:{portalId}
. This is your reality check — if your local counter says 50 remaining but HubSpot's header says 5, you trust HubSpot and clamp your counter. This handles clock drift, missed accounting (e.g., crashed worker that took a token but never made the request), and other apps in the same account consuming the daily budget invisibly.
For search specifically, since headers don't come back, the local counter
is
the source of truth — meaning if you ever crash mid-flight, you've under-counted. Always release tokens on connection-level failure but
not
on 429 (you really did make that request).
How to work with multiple jobs
How to work with multiple jobs
The queue layer needs to enforce concurrency separately from the rate limiter. Both work together:
Concurrency cap
via
Queue::throttle()
or a Redis semaphore — limits how many sync workers run in parallel against HubSpot. Without this, you can have 50 workers all blocked waiting for tokens, which is wasteful and creates retry storms.
Per-tenant fairness
— if you sync many Jiminny customers into different HubSpot portals, each portal has its own bucket but you still want one slow portal not to starve others. Either separate queues per portal or a fair-share scheduler.
Priority lanes
— webhook-driven updates (user-visible latency) should outrank background batch syncs. Two queues:
hubspot-priority
and
hubspot-bulk
, with priority workers taking 70% of the burst budget and bulk taking 30% (enforce via separate sub-buckets if you really want hard separation, otherwise just pull from priority first).
Backoff on 429
— respect the
Retry-After
header. If absent, exponential with jitter (e.g.,
min(2^attempt * 250ms, 30s) ± 20%
). The jitter is non-negotiable; without it, simultaneous 429s retry in lockstep and you get thundering-herd 429s on retry.
How to work with paginated requests
How to work with paginated requests
The trap is treating "fetch all" as one logical operation. Each page is its own API call and competes for tokens with everything else.
Two practical rules:
Don't hold the worker idle while paginating.
If page N takes 500ms and page N+1 needs to wait 800ms for a token, you've burned 800ms of worker time doing nothing. Instead, fetch page N, dispatch the
processing
of page N as a separate job, and queue a "fetch page N+1" job with a delay equal to the wait time. Each page becomes its own atomic unit.
Always batch where HubSpot offers it.
POST /crm/v3/objects/{type}/batch/{read|update|create}
accepts up to 100 IDs per call. For your "patching IDs" flow this is the difference between 600 calls and 6.
Walkthrough: 600 opportunities
Walkthrough: 600 opportunities
Naive flow (one PATCH per deal): 600 calls. At 190/10s that's ~32s of API time, well under daily. You'd hit burst easily without throttling. Plus likely 1-3 search calls upfront and N association calls.
Sane flow:
Identify deltas
— if you can avoid Search at all, do. Use
lastmodifieddate
filter on a single search if you must, paginate at limit=200. For 600 deals that's 3 search calls @ 5/s = ~600ms naturally throttled.
Batch read
current state —
POST /crm/v3/objects/deals/batch/read
with 100 IDs per call → 6 calls. Burst weight 6.
Compute diff
in your code (no API).
Batch update
—
POST /crm/v3/objects/deals/batch/update
with 100 per call → 6 calls.
Associations
—
POST /crm/v4/associations/{from}/{to}/batch/create
if needed → another few batch calls.
Total: ~15-20 API calls for 600 deals. Burst budget consumed: 20/190 over ~5s. Daily impact: trivial.
Recognition: pre-check denies if
<weight>
slots aren't free; on 429 the response surfaces
policyName
(DAILY/SECONDLY) — log it, push the job back with
Retry-After
delay, increment a metric so you can alarm on sustained 429 rate.
Pitfalls & bottlenecks worth pre-empting
Pitfalls & bottlenecks worth pre-empting
Daily quota is shared across the whole portal
, including any n8n flows, other private apps, marketing automation calling APIs, etc. Budget for ~70-80% of the documented limit, not 100%. Add an internal per-app daily cap so a runaway sync can't starve other apps.
Search is uniquely fragile
: separate 5/s bucket, no headers to read, 10k-result cap per query. If you ever hit 10k+ deals matching a filter, partition by
hs_object_id
ranges or by
lastmodifieddate
windows.
Retry storms after HubSpot incidents
— always jitter, always cap total retries (e.g., 5 attempts, then dead-letter).
Webhook → sync → webhook loops
— when your update fires a HubSpot webhook that triggers another sync. Tag your own writes (e.g., a custom property
jy_last_sync_id
) and ignore webhooks where it just changed.
Token refresh
— OAuth refresh itself counts against burst. Cache the access token in Redis with TTL =
expires_in - 60s
, single-flight the refresh (only one worker refreshes; others wait on a lock).
Search latency for fresh writes
— newly created/updated objects don't appear in search instantly. Don't write-then-search; use returned IDs directly.
Clock skew
— Redis is authoritative. Don't use
time()
from each worker for window scoring; use
redis.call('TIME')
inside the Lua script.
Dead workers with held tokens
— sliding-window-log handles this naturally because tokens expire by score; token-bucket implementations need explicit release-on-crash logic.
The 5% error rule
counts every 429 toward your error budget, even successfully retried ones. If your pre-check is working well, 429s should be near zero — if they're not, your pre-check is wrong, not just slow.
Phantom contention with Laravel
RateLimited
middleware
: it's per-job-class by default, not per-portal. If your
SyncDealJob
and
UpdateActivityJob
are different classes both calling HubSpot, they don't share a Laravel-level limiter — you need a single
HubspotRateLimiter
service that everything routes through.
If you want, I can sketch the Lua script for the sliding-window acquire and the Laravel service wrapper around it.
Copy
Give positive feedback
Give negative feedback
You said: What will happen if there are two different types of rate limits?
You said: What will happen if there are two different types of rate limits?
What will happen if there are two different types of rate limits?
Search requests that have 5 requests per second
The other rate limit that has, let's say, 100 requests per 10 seconds How do these work together? Is there some conflict? Can I reach the limit with one request and block either as well, or are these separated? Can I still continue making search requests once I hit the normal requests limits?
13:40
Edit
Copy
Claude responded: They're independent buckets — with one shared bucket on top.
Claude responded: They're independent buckets — with one shared bucket on top.
Analyzed independent rate limit buckets and their practical interactions
Analyzed independent rate limit buckets and their practical interactions
They're independent buckets — with one shared bucket on top.
The three buckets and what each call hits
The three buckets and what each call hits
Copy to clipboard
┌──────────────────┐
Search request ──→ │ Search: 5/sec │ ──┐
└──────────────────┘ │
├──→ ┌─────────────────┐
┌──────────────────┐ │ │ Daily: 250k–1M │
Non-search call ──→ │ Burst: 190/10s │ ──┘ │ (per portal) │
└──────────────────┘ └─────────────────┘
A search call is only metered against the search bucket and the daily bucket. A non-search call (batch read/update, single PATCH, associations, etc.) is only metered against the burst bucket and the daily bucket. The two short-window buckets do not share counters.
What this means practically
What this means practically
Hitting search secondly limit (5/s):
Only further
/search
calls 429. Your batch reads, batch updates, single PATCHes, association calls — all keep working at full burst speed. This is actually useful: if your sync is bottlenecked on Search, you can pivot to using
lastmodifieddate
filters via batch endpoints, or use the IDs you already have to do batch reads, while Search cools off.
Hitting burst limit (190/10s):
Only non-search calls 429. You can still issue Search calls at 5/s. Useful for: continuing to identify deltas for queueing while in-flight updates drain, or refreshing a small set of records via Search even though your write pipeline is paused.
Hitting daily limit:
Everything stops. Search and non-search alike. Doesn't unblock until midnight in your portal's configured timezone — and remember this is shared across every private app in the portal, plus n8n flows, marketing tools, anything else hitting the API with that account.
So can one type of request block the other?
So can one type of request block the other?
Search → Burst:
No.
Saturating Search at 50 calls per 10s leaves your full 190/10s burst untouched.
Burst → Search:
No.
Saturating burst leaves Search's 5/s untouched.
Either → Daily:
Yes
, but only by contributing to the same daily counter. It's volume that kills you here, not the type.
In theory you can sustain ~50 search + ~190 other =
~240 calls per 10 seconds
indefinitely (until daily runs out), because the two buckets bill independently.
Implementation consequence
Implementation consequence
Your rate limiter needs to know which bucket a request hits before it acquires. Cleanest pattern:
Copy to clipboard
php
$limiter
->
acquire
(
'search'
,
$weight
=
1
)
;
// for search endpoints only
$limiter
->
acquire
(
'burst'
,
$weight
=
1
)
;
// for everything else
$limiter
->
acquire
(
'daily'
,
$weight
=
1
)
;
// every call, both kinds
In Redis: three separate keys, three separate Lua acquire scripts (or one script with a bucket parameter). A search call calls
acquire('search')
+
acquire('daily')
. A batch update calls
acquire('burst')
+
acquire('daily')
.
One subtle pitfall: when you backoff on a 429,
inspect
policyName
in the response body
to know which bucket actually fired. If you see
SECONDLY
from a search endpoint, you only need to delay search-bound jobs — burst-bound jobs in the queue can keep running. If you blanket-pause everything on any 429, you waste capacity on the bucket that's still healthy. Two queues (or two throttle keys) make this clean; one global pause is the lazy version.
The other subtlety: the burst response gives you
X-HubSpot-RateLimit-Remaining
to clamp local state against, but search doesn't return those headers. So your search counter is unverified — be slightly more conservative there (e.g., budget 4/s instead of 5) to absorb the unaccounted-for calls.
Copy
Give positive feedback
Give negative feedback
You said: Ok, so what will happen each time I make a request?
You said: Ok, so what will happen each time I make a request?
Ok, so what will happen each time I make a request? Let's say I have 100,000 requests to make that are instant. Do I need to increment each request based on the type? For example, if there is a search request, I need to increment both the search bucket and also the daily bucket. If it's a burst, then I can go to the daily and burst buckets. If I need to check if it can make a call, do I need to see both the daily and search, or burst, respectively? Isn't that too heavy for the infrastructure, adding additional load to each request?
13:44
Edit
Copy
Claude responded: Yes, your understanding is correct — every request must check and reserve from each bucket it applies to, atomically, before the call goes out.
Claude responded: Yes, your understanding is correct — every request must check and reserve from each bucket it applies to, atomically, before the call goes out.
Analyzed per-request overhead concerns and quantified Redis performance impact
Analyzed per-request overhead concerns and quantified Redis performance impact
Yes, your understanding is correct — every request must check and reserve from each bucket it applies to, atomically, before the call goes out. But the overhead is much smaller than it sounds, and importantly, it's nowhere near your bottleneck.
What "two buckets per request" actually costs
What "two buckets per request" actually costs
Each request makes
one round trip to Redis
— not two — because you fold both bucket checks into a single Lua script that runs atomically server-side:
Copy to clipboard
lua
-- KEYS[1] = burst bucket key (or search)
-- KEYS[2] = daily bucket key
-- ARGV[1] = now (ms) ARGV[2] = window_ms
-- ARGV[3] = bucket_max ARGV[4] = daily_max
-- ARGV[5] = request_id ARGV[6] = daily_ttl
-- Trim sliding window
redis
.
call
(
'ZREMRANGEBYSCORE'
,
KEYS
[
1
]
,
0
,
ARGV
[
1
]
-
ARGV
[
2
]
)
local
burst_used
=
redis
.
call
(
'ZCARD'
,
KEYS
[
1
]
)
local
daily_used
=
tonumber
(
redis
.
call
(
'GET'
,
KEYS
[
2
]
)
or
'0'
)
if
burst_used
>=
tonumber
(
ARGV
[
3
]
)
then
-- Tell caller how long to sleep until oldest entry expires
local
oldest
=
redis
.
call
(
'ZRANGE'
,
KEYS
[
1
]
,
0
,
0
,
'WITHSCORES'
)
return
{
0
,
'BURST'
,
(
oldest
[
2
]
+
ARGV
[
2
]
)
-
ARGV
[
1
]
}
end
if
daily_used
>=
tonumber
(
ARGV
[
4
]
)
then
return
{
0
,
'DAILY'
,
-
1
}
end
redis
.
call
(
'ZADD'
,
KEYS
[
1
]
,
ARGV
[
1
]
,
ARGV
[
5
]
)
redis
.
call
(
'PEXPIRE'
,
KEYS
[
1
]
,
ARGV
[
2
]
+
1000
)
local
d
=
redis
.
call
(
'INCR'
,
KEYS
[
2
]
)
if
d
==
1
then
redis
.
call
(
'EXPIRE'
,
KEYS
[
2
]...
|
2913
|
NULL
|
NULL
|
NULL
|
|
2981
|
NULL
|
0
|
2026-05-07T11:54:37.934920+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-07/1778 /Users/lukas/.screenpipe/data/data/2026-05-07/1778154877934_m2.jpg...
|
PhpStorm
|
faVsco.js – HubspotSingleSyncStrategy.php
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
master, menu
Start Listen Project: faVsco.js, menu
master, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
Editor for custom.log
Sync Changes
Hide This Notification
Code changed:
Hide
<?php
declare(strict_types=1);
namespace Jiminny\Services\Crm\Hubspot\OpportunitySyncStrategy;
use HubSpot\Client\Crm\Deals\ApiException;
use Jiminny\Exceptions\Crm\InvalidSyncParametersException;
use Jiminny\Exceptions\CrmException;
use Jiminny\Services\Crm\Hubspot\OpportunitySyncStrategy\Concerns\ValidatesParameters;
class HubspotSingleSyncStrategy extends HubspotSyncStrategyBase
{
use ValidatesParameters;
/**
* @throws InvalidSyncParametersException
*/
public function validateParameters(array $params): bool
{
$this->validateBaseParameters($params);
$this->validateCrmIdParameter($params);
return true;
}
/**
* @throws InvalidSyncParametersException
* @throws ApiException
* @throws CrmException
*/
public function fetchOpportunity(array $params): iterable
{
$this->validateParameters($params);
$fields = $this->getOpportunityFields($params['config']);
return $this->client->getOpportunityById($params['crm_id'], $fields);
}
}
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"bounds":{"left":0.025930852,"top":0.019952115,"width":0.03856383,"height":0.025538707},"on_screen":true,"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"master, menu","depth":5,"bounds":{"left":0.064494684,"top":0.019952115,"width":0.034242023,"height":0.025538707},"on_screen":true,"help_text":"Git Branch: master","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Start Listening for PHP Debug Connections","depth":5,"bounds":{"left":0.8081782,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"AskJiminnyReportActivityServiceTest","depth":6,"bounds":{"left":0.8234708,"top":0.019952115,"width":0.09208777,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'AskJiminnyReportActivityServiceTest'","depth":6,"bounds":{"left":0.9155585,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'AskJiminnyReportActivityServiceTest'","depth":6,"bounds":{"left":0.9268617,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More Actions","depth":6,"bounds":{"left":0.9381649,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JetBrains AI","depth":5,"bounds":{"left":0.96609044,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Search Everywhere","depth":5,"bounds":{"left":0.9773936,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"IDE and Project Settings","depth":5,"bounds":{"left":0.9886968,"top":0.019952115,"width":0.011303186,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.042220745,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"Editor for custom.log","depth":4,"bounds":{"left":0.4005984,"top":0.09736632,"width":0.28257978,"height":0.8818835},"on_screen":true,"role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.042220745,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Services\\Crm\\Hubspot\\OpportunitySyncStrategy;\n\nuse HubSpot\\Client\\Crm\\Deals\\ApiException;\nuse Jiminny\\Exceptions\\Crm\\InvalidSyncParametersException;\nuse Jiminny\\Exceptions\\CrmException;\nuse Jiminny\\Services\\Crm\\Hubspot\\OpportunitySyncStrategy\\Concerns\\ValidatesParameters;\n\nclass HubspotSingleSyncStrategy extends HubspotSyncStrategyBase\n{\n use ValidatesParameters;\n\n /**\n * @throws InvalidSyncParametersException\n */\n public function validateParameters(array $params): bool\n {\n $this->validateBaseParameters($params);\n $this->validateCrmIdParameter($params);\n\n return true;\n }\n\n /**\n * @throws InvalidSyncParametersException\n * @throws ApiException\n * @throws CrmException\n */\n public function fetchOpportunity(array $params): iterable\n {\n $this->validateParameters($params);\n\n $fields = $this->getOpportunityFields($params['config']);\n\n return $this->client->getOpportunityById($params['crm_id'], $fields);\n }\n}","depth":4,"bounds":{"left":0.11968085,"top":0.24581006,"width":0.26163563,"height":0.73343974},"on_screen":true,"lines":[{"char_start":0,"char_count":6,"bounds":{"left":0.11968085,"top":0.0,"width":0.012965426,"height":0.014365523}},{"char_start":7,"char_count":25,"bounds":{"left":0.11968085,"top":0.0,"width":0.06216755,"height":0.014365523}},{"char_start":33,"char_count":64,"bounds":{"left":0.11968085,"top":0.03431764,"width":0.16323139,"height":0.014365523}},{"char_start":98,"char_count":43,"bounds":{"left":0.11968085,"top":0.06943336,"width":0.010305851,"height":0.014365523}},{"char_start":141,"char_count":59,"bounds":{"left":0.1299867,"top":0.06943336,"width":0.0026595744,"height":0.014365523}},{"char_start":200,"char_count":37,"bounds":{"left":0.1299867,"top":0.06943336,"width":0.0026595744,"height":0.014365523}},{"char_start":237,"char_count":87,"bounds":{"left":0.1299867,"top":0.06943336,"width":0.0076462766,"height":0.014365523}},{"char_start":325,"char_count":64,"bounds":{"left":0.11968085,"top":0.10454908,"width":0.16323139,"height":0.014365523}},{"char_start":389,"char_count":2,"bounds":{"left":0.11968085,"top":0.12210695,"width":0.0026595744,"height":0.014365523}},{"char_start":391,"char_count":29,"bounds":{"left":0.11968085,"top":0.1396648,"width":0.07247341,"height":0.014365523}},{"char_start":421,"char_count":8,"bounds":{"left":0.11968085,"top":0.17478053,"width":0.017952127,"height":0.014365523}},{"char_start":429,"char_count":46,"bounds":{"left":0.11968085,"top":0.19233839,"width":0.11668883,"height":0.014365523}},{"char_start":475,"char_count":8,"bounds":{"left":0.11968085,"top":0.20989625,"width":0.017952127,"height":0.014365523}},{"char_start":483,"char_count":60,"bounds":{"left":0.11968085,"top":0.22745411,"width":0.15292554,"height":0.014365523}},{"char_start":543,"char_count":6,"bounds":{"left":0.27260637,"top":0.22745411,"width":0.0026595744,"height":0.014365523}},{"char_start":549,"char_count":48,"bounds":{"left":0.27260637,"top":0.22745411,"width":0.0026595744,"height":0.014365523}},{"char_start":597,"char_count":48,"bounds":{"left":0.27260637,"top":0.22745411,"width":0.0026595744,"height":0.014365523}},{"char_start":646,"char_count":21,"bounds":{"left":0.27260637,"top":0.22745411,"width":0.0026595744,"height":0.014365523}},{"char_start":667,"char_count":6,"bounds":{"left":0.27260637,"top":0.22745411,"width":0.012965426,"height":0.014365523}}],"value":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Services\\Crm\\Hubspot\\OpportunitySyncStrategy;\n\nuse HubSpot\\Client\\Crm\\Deals\\ApiException;\nuse Jiminny\\Exceptions\\Crm\\InvalidSyncParametersException;\nuse Jiminny\\Exceptions\\CrmException;\nuse Jiminny\\Services\\Crm\\Hubspot\\OpportunitySyncStrategy\\Concerns\\ValidatesParameters;\n\nclass HubspotSingleSyncStrategy extends HubspotSyncStrategyBase\n{\n use ValidatesParameters;\n\n /**\n * @throws InvalidSyncParametersException\n */\n public function validateParameters(array $params): bool\n {\n $this->validateBaseParameters($params);\n $this->validateCrmIdParameter($params);\n\n return true;\n }\n\n /**\n * @throws InvalidSyncParametersException\n * @throws ApiException\n * @throws CrmException\n */\n public function fetchOpportunity(array $params): iterable\n {\n $this->validateParameters($params);\n\n $fields = $this->getOpportunityFields($params['config']);\n\n return $this->client->getOpportunityById($params['crm_id'], $fields);\n }\n}","role_description":"text entry area","is_enabled":true,"is_focused":true,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Project","depth":3,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Project","depth":3,"bounds":{"left":0.011968086,"top":0.047885075,"width":0.024268618,"height":0.024740623},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"New File or Directory…","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Expand Selected","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Collapse All","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Options","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
-7405390105307179932
|
-277501648539901365
|
click
|
accessibility
|
NULL
|
Project: faVsco.js, menu
master, menu
Start Listen Project: faVsco.js, menu
master, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
Editor for custom.log
Sync Changes
Hide This Notification
Code changed:
Hide
<?php
declare(strict_types=1);
namespace Jiminny\Services\Crm\Hubspot\OpportunitySyncStrategy;
use HubSpot\Client\Crm\Deals\ApiException;
use Jiminny\Exceptions\Crm\InvalidSyncParametersException;
use Jiminny\Exceptions\CrmException;
use Jiminny\Services\Crm\Hubspot\OpportunitySyncStrategy\Concerns\ValidatesParameters;
class HubspotSingleSyncStrategy extends HubspotSyncStrategyBase
{
use ValidatesParameters;
/**
* @throws InvalidSyncParametersException
*/
public function validateParameters(array $params): bool
{
$this->validateBaseParameters($params);
$this->validateCrmIdParameter($params);
return true;
}
/**
* @throws InvalidSyncParametersException
* @throws ApiException
* @throws CrmException
*/
public function fetchOpportunity(array $params): iterable
{
$this->validateParameters($params);
$fields = $this->getOpportunityFields($params['config']);
return $this->client->getOpportunityById($params['crm_id'], $fields);
}
}
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
2982
|
NULL
|
0
|
2026-05-07T11:54:37.934938+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-07/1778 /Users/lukas/.screenpipe/data/data/2026-05-07/1778154877934_m1.jpg...
|
PhpStorm
|
faVsco.js – HubspotSingleSyncStrategy.php
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
master, menu
Start Listen Project: faVsco.js, menu
master, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
Editor for custom.log
Sync Changes
Hide This Notification
Code changed:
Hide
<?php
declare(strict_types=1);
namespace Jiminny\Services\Crm\Hubspot\OpportunitySyncStrategy;
use HubSpot\Client\Crm\Deals\ApiException;
use Jiminny\Exceptions\Crm\InvalidSyncParametersException;
use Jiminny\Exceptions\CrmException;
use Jiminny\Services\Crm\Hubspot\OpportunitySyncStrategy\Concerns\ValidatesParameters;
class HubspotSingleSyncStrategy extends HubspotSyncStrategyBase
{
use ValidatesParameters;
/**
* @throws InvalidSyncParametersException
*/
public function validateParameters(array $params): bool
{
$this->validateBaseParameters($params);
$this->validateCrmIdParameter($params);
return true;
}
/**
* @throws InvalidSyncParametersException
* @throws ApiException
* @throws CrmException
*/
public function fetchOpportunity(array $params): iterable
{
$this->validateParameters($params);
$fields = $this->getOpportunityFields($params['config']);
return $this->client->getOpportunityById($params['crm_id'], $fields);
}
}
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"on_screen":true,"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"master, menu","depth":5,"on_screen":true,"help_text":"Git Branch: master","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Start Listening for PHP Debug Connections","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"AskJiminnyReportActivityServiceTest","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'AskJiminnyReportActivityServiceTest'","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'AskJiminnyReportActivityServiceTest'","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More Actions","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JetBrains AI","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Search Everywhere","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"IDE and Project Settings","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.088194445,"height":0.027777778},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"Editor for custom.log","depth":4,"on_screen":true,"role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.088194445,"height":0.027777778},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Services\\Crm\\Hubspot\\OpportunitySyncStrategy;\n\nuse HubSpot\\Client\\Crm\\Deals\\ApiException;\nuse Jiminny\\Exceptions\\Crm\\InvalidSyncParametersException;\nuse Jiminny\\Exceptions\\CrmException;\nuse Jiminny\\Services\\Crm\\Hubspot\\OpportunitySyncStrategy\\Concerns\\ValidatesParameters;\n\nclass HubspotSingleSyncStrategy extends HubspotSyncStrategyBase\n{\n use ValidatesParameters;\n\n /**\n * @throws InvalidSyncParametersException\n */\n public function validateParameters(array $params): bool\n {\n $this->validateBaseParameters($params);\n $this->validateCrmIdParameter($params);\n\n return true;\n }\n\n /**\n * @throws InvalidSyncParametersException\n * @throws ApiException\n * @throws CrmException\n */\n public function fetchOpportunity(array $params): iterable\n {\n $this->validateParameters($params);\n\n $fields = $this->getOpportunityFields($params['config']);\n\n return $this->client->getOpportunityById($params['crm_id'], $fields);\n }\n}","depth":4,"on_screen":true,"value":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Services\\Crm\\Hubspot\\OpportunitySyncStrategy;\n\nuse HubSpot\\Client\\Crm\\Deals\\ApiException;\nuse Jiminny\\Exceptions\\Crm\\InvalidSyncParametersException;\nuse Jiminny\\Exceptions\\CrmException;\nuse Jiminny\\Services\\Crm\\Hubspot\\OpportunitySyncStrategy\\Concerns\\ValidatesParameters;\n\nclass HubspotSingleSyncStrategy extends HubspotSyncStrategyBase\n{\n use ValidatesParameters;\n\n /**\n * @throws InvalidSyncParametersException\n */\n public function validateParameters(array $params): bool\n {\n $this->validateBaseParameters($params);\n $this->validateCrmIdParameter($params);\n\n return true;\n }\n\n /**\n * @throws InvalidSyncParametersException\n * @throws ApiException\n * @throws CrmException\n */\n public function fetchOpportunity(array $params): iterable\n {\n $this->validateParameters($params);\n\n $fields = $this->getOpportunityFields($params['config']);\n\n return $this->client->getOpportunityById($params['crm_id'], $fields);\n }\n}","role_description":"text entry area","is_enabled":true,"is_focused":true,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Project","depth":3,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Project","depth":3,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"New File or Directory…","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Expand Selected","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Collapse All","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Options","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
-7405390105307179932
|
-277501648539901365
|
click
|
accessibility
|
NULL
|
Project: faVsco.js, menu
master, menu
Start Listen Project: faVsco.js, menu
master, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
Editor for custom.log
Sync Changes
Hide This Notification
Code changed:
Hide
<?php
declare(strict_types=1);
namespace Jiminny\Services\Crm\Hubspot\OpportunitySyncStrategy;
use HubSpot\Client\Crm\Deals\ApiException;
use Jiminny\Exceptions\Crm\InvalidSyncParametersException;
use Jiminny\Exceptions\CrmException;
use Jiminny\Services\Crm\Hubspot\OpportunitySyncStrategy\Concerns\ValidatesParameters;
class HubspotSingleSyncStrategy extends HubspotSyncStrategyBase
{
use ValidatesParameters;
/**
* @throws InvalidSyncParametersException
*/
public function validateParameters(array $params): bool
{
$this->validateBaseParameters($params);
$this->validateCrmIdParameter($params);
return true;
}
/**
* @throws InvalidSyncParametersException
* @throws ApiException
* @throws CrmException
*/
public function fetchOpportunity(array $params): iterable
{
$this->validateParameters($params);
$fields = $this->getOpportunityFields($params['config']);
return $this->client->getOpportunityById($params['crm_id'], $fields);
}
}
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
2980
|
NULL
|
NULL
|
NULL
|
|
3085
|
NULL
|
0
|
2026-05-07T11:59:46.185780+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-07/1778 /Users/lukas/.screenpipe/data/data/2026-05-07/1778155186185_m2.jpg...
|
PhpStorm
|
faVsco.js – Client.php
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
master, menu
Start Listen Project: faVsco.js, menu
master, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"bounds":{"left":0.025930852,"top":0.019952115,"width":0.03856383,"height":0.025538707},"on_screen":true,"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"master, menu","depth":5,"bounds":{"left":0.064494684,"top":0.019952115,"width":0.034242023,"height":0.025538707},"on_screen":true,"help_text":"Git Branch: master","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Start Listening for PHP Debug Connections","depth":5,"bounds":{"left":0.8081782,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"AskJiminnyReportActivityServiceTest","depth":6,"bounds":{"left":0.8234708,"top":0.019952115,"width":0.09208777,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'AskJiminnyReportActivityServiceTest'","depth":6,"bounds":{"left":0.9155585,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
-2796147080355312063
|
-8636637127315567163
|
click
|
hybrid
|
NULL
|
Project: faVsco.js, menu
master, menu
Start Listen Project: faVsco.js, menu
master, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
PhpStormViewINavigareCodeLaravelKeractorWindowsuppont Dally • In 1m100% 12Thu 7 May 14:59:46FV faVsco.js%9 macterProiect vRematchActivityOnCrmObjectDetach.php© SyncToUserPilot.phpC) RateLimitAwareWrapper.pnp= custom.log4 SF jjiminny@localhost]HS_local (jiminny@localhost]« console [PROD]A console (eu)& console [STAGINGIT ResoonseValidationTrait.rAddRateLimitCommana.pnp© Client.php X* SalesforceGetUserTrait.plT StDenormaliserMainCrmD© TrackRecordingFileSizeSeImportOpportunitybatch.phgTImportBatchJobTrait.phg(C) TrackPecordinaSizeEnforu Hubspot//syncermenuuiestrait.ono© OpportunitySyncTest.php* ValidateEmitProspectEver> @ AjReportsclass Cllent extends Baseclient 1mpLements Hubspotcllentintertace> O Avatar> @ Calendar192ououc runction cetpacnnatedbatabeneratord?string &$lastRecordId = null*Generator ...?> @ Conferencev @ Crm203> O Bullhorn[ Close* athrows DealAniExcentionE CopperC CrmObjectsDecorateActivitvC DummyHelpers206207208209210* athrows CrmExcentionpublic function getOpportunityById(string $crmId, array $fields): arraytryv M HubspotT IntegrationApp/.../SyncCrmEntitiesTrait.php(c)SuncOpportunity.onp)BaserateLimiter.php© RateLimit.phd(2026-05-07 11:59:07] local.INF0: Jiminny Console\Commands Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot", "memoryBeforeCommandInMb" : 622026-05-07 11:59:07] local.INF0: [ScheduleBotCommand Number of activities to be captured: 0 {"correlation_id":"3cb37764-b6ec-4d4c-85b3-298d24411fec" , "trace_id": "1387c33f-5f© Service.php[2026-05-07 11:59:07) local.INF0: Jiminny\Console\Commands\Command::run Memory usage for command {"command": "meeting-bot:schedule-bot", "memoryBeforeCommandInMb":62.0, "memoryAf[2026-05-07 11:59:10] local.INF0: Jiminny\Console\Commands \Command::run Memory usage before starting command {"command":"dialers:monitor-activities" "memoryBeforeCommandInMb":[2026-05-07 11:59:101 Local.INF0: Jiminny|Console\Commands\Command::run Memony usage for command {"command" : "dialens:monitor-activities" "memonyBeforeCommandInMb":62.0, "memonym 01A2 A68 M2 A V[2026-05-07 11:59:13] local.NOTICE: Monitoring start{"correlation_id":"1f069a13-4342-40ed-bf79-1472c9c60637", "trace_id":"1c2564a5-1d98-4061-819a-060f3143e672"}-[2026-05-07 11:59:13] local.NOTICE: Monitoring end {"correlation_id"."1f069a13-4342-40ed-bf79-1472c9c60637" "trace_id":"1c2564a5-1d98-4061-819a-060f3143e672"][2026-05-07 11:59:151 local.INF0: Jiminny\ConsolelCommands\Command: Arun Memony usage before starting command {"command" :"mailbox:skip-Lists:refresh", "memonyBefoneCommandInMb"AccountsuncStratedvM Actions212|214ContactSyncStrategyMDTO215m FieldsMHlournallM Metadat:v OpportunitySyncStrateMConcerns© HubspotLastModifie(C) Hubsnotl actModific©HubspotLastModifiee) Lnhenotl acthindific© HubspotLastModifie© HubspotSingleSync© HubspotSyncStrate© HubspotWebhookB> 0 Pagination0 ProspectSearchStrated> O Redis07 Service Traits(t) OpportunitvSvncTral(t) SvncCrmEntitiesTra() SvncFieldsTrait.ohr(t) WriteCrmTrait.oho> MUtilsWebhookC BatchSvncCollector.ohc) RatchSvncRedicServicC) CinsedDea|StadecServ@ DoalFieldcService nhnnarQube for INF suadectio12026-05-0841859845OCALTENEOR JEMANNyA VOnSOLe vommanosN CommancHarUn Memony usage or Command Commanour"manuboxesKuD- si sHnet resh""memonyBerore vommand nio"roy Hor" memony[2026-05-07 11:59:17] local.INF0: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command" : "mailbox:batch:process", "memoryBeforeCommandInMb" :62.0)2026-05-07 11:59:17 local.INFO:Emanischedue SiAriiNo batch process thosta docken lamo tuconnelatiion 0"n"zbbocder-atby-4rar-bo eboyhar casecc"li naceohaay cod06b12026-05-07 11:59:17) Local.INF0:[EmailSchedule] FINISHED batch process {"host":"docker_lamp_1", "processed":0} {"correlation_id":"2bbdc0e4-afb2-4fa9-bbf7-b67fa2ca32cc" , "trace011WOGA EOnEOeWimWoooonE og noe om ano whÊnNennNS+n M$deal = Sthis->executeRequest(fn • => Sthis->getNewInstance(->crm->deals(->basicApiQ->getById($deal = Sthis->execußeRequest(fn • => Sthis->getNewInstance->crm->deals(->basicApiQ->getById(Senmtdiimplode( separator: '', $fields))):} catch (DealApiException Se) {Sthis->loq->info('[Hubspot] Failed to fetch opportunity'. ['crm id' => ScrmId'reason' => $e->qetMessageO1):throw Seif (1 Sdeal instanceof DealWithAssociations) {throw new Crmexcentioncm'Deal not found'):1id' => Sdeal->aettdoiInronenties' => Sdeal->aetPronentiesol.associations: => Sdeal->aetAssociations0l* Gonenie batch noad method fon HubSnot objortel* Aparam string SobjectType The object tupe ('deals'.'companies', 'contacts')* anaram array<string> ScrmIds Array of HubSpot object IDs (max 100)* anaram array<string> $fields Array of property names to fetch* Greturn arrau<strina, arrau> Arrau keued bu CRM ID with obiect datact more security issues in your PHP files // Try SonarQube Cloud for free // Download SonarQube Server // Learn more // Don't ask again (today 10:25)W Windsurf Toams 212-12 UTF.8io 4 spaces...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
3086
|
NULL
|
0
|
2026-05-07T11:59:46.400272+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-07/1778 /Users/lukas/.screenpipe/data/data/2026-05-07/1778155186400_m1.jpg...
|
PhpStorm
|
faVsco.js – Client.php
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"on_screen":true,"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
8043719072324535154
|
-8628527368849355612
|
click
|
hybrid
|
NULL
|
Project: faVsco.js, menu
iTerm2ShellEditViewSessio Project: faVsco.js, menu
iTerm2ShellEditViewSessionScriptsProfilesWindowHelp$0# Support Daily • in 1 m100% <78DEV (docker)Thu 7 May 14:59:46181DOCKERO 81DEV (docker)882APP (-zsh)-zshjiminny-worker-processing-1:jiminny-worker-processing-1_00: stoppedworker:worker_00: stoppedworker-es-update:worker-es-update_00: stoppedworker-calendar:worker-calendar_00: stoppedartisan-schedule:artisan-schedule_00: stoppedartisan-schedule:artisan-schedule_00: startedjiminny-worker-processing-1:jiminny-worker-processing-1_00: startedjiminny-worker-processing-2:jiminny-worker-processing-2_00: startedjiminny-worker-processing-3:jiminny-worker-processing-3_00: startedjiminny-worker-processing-4:jiminny-worker-processing-4_00: startedjiminny-worker-processing-5:jiminny-worker-processing-5_00: startedjiminny-worker-processing-delayed: jiminny-worker-processing-delayed_00: startedworker:worker_00: startedworker-analytics:worker-analytics_00:startedworker-audio:worker-audio_00: startedworker-calendar:worker-calendar_00:startedworker-conferences:worker-conferences_00: startedworker-crm-sync:worker-crm-sync_00:Startedworker-crm-update:worker-crm-update_00: startedworker-download:worker-download_00:startedworker-emails:worker-emails_00: startedworker-es-update:worker-es-update_00: startedworker-nudges:worker-nudges_00: startedroot@docker_lamp_1:/home/jiminny# php artisan crm:sync-opportunity --teamId=2 --opportunityId 374720564Syncing opportunity for HubspotSyncing opportunity 374720564...Synced AmirHSOpp to 5066root@docker_lamp_1:/home/jiminny# php artisan crm:sync-opportunity --teamId=2 --opportunityId 374720564Syncing opportunity for HubspotSyncingopportunity 374720564…….Opportunity not found.root@docker_lamp_1:/home/jiminny# php artisan jiminny:debugSyncing opportunity 0Syncing opportunity 10Syncing opportunity 20Syncing opportunity 30Syncing opportunity 40Syncing opportunity 50Syncing opportunity 60Syncing opportunity 70Syncing opportunity 80Syncing opportunity 90Syncing opportunity 100Syncing opportunity 110root@docker_lamp_1:/home/jiminny# ]• $4Support Dailyin 1m - 15:00-15:15= Notes - Support Daily.C Join Google MeetDEV...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
3167
|
NULL
|
0
|
2026-05-07T12:04:41.774396+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-07/1778 /Users/lukas/.screenpipe/data/data/2026-05-07/1778155481774_m2.jpg...
|
iTerm2
|
NULL
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
*PostmanEditViewWindowhelpHubSpot rate limit imple *PostmanEditViewWindowhelpHubSpot rate limit implementation strategy vcan I call it trom postman 100 timesEvaluated Postman testing methods and rate limit behavior implicationsKeep going in Claude CodeSwitch to Claude Code and let Claude work directiv in vour.repo. running and testing as it goesWrite a message…Hubspot rate limits reference - MDUse timeZone to interpret resetsAt from the dally erCheat sheet: profiling a new portal in PostmanThree calls, in order:1. GEl /account-into/vs/details → portalinto+GET /account-info/v3/api-usage/daily/privameaningful for private apps)3. Skip search probing — the 5/sec is fixedError response shape"status""error"."message": "You have reached your secondly 1"errorType": "RATE LIMIT","policyName": "SECONDLY"."...","requesttd".""nolncvname values.eeconniy =caareh huteter e/cer• TEN SECONDLY ROLLING - burst bucket (110/10sprivate)• DAILY — private apps dailv ceilingAlwavs inspect nolicvName on 429 to know which buchack offOther operational guidelines• Error responses must stay under 5% of total dailycertificationi• Polling endpoints: minimum interval 5 minutes.• Search auery. may 3. 000 chars may 18 Alters acroresults per query.• Ratch enânoints. 1in to 100 records ner call regdlaOpus 4.7 AdaptiveClaude ic Aland can make mictakec Plosce double-chork racnoncodhhl"supoont Dally • now100% L2Inu / May 10.04.42Q SearchYour team is now on the Free plan with 1 admin. You retain editing access and other members are read-only. View team permissions to see who can edit, or upgrade to restore collaboration.GET read call •GET Get EngagemeNo environmentE Save~v COLLECtIONsv CRM Objectsv crm/vslobiects/obiect Twoe,> U batchv _ obiect Id)> • associations/{to Object Type)GET Read20, An error occurred.eg. successful operationDEL Archive> PATCH Update>GET List> POST Filter, Sort, and Search CRM Objects> CRM Owners> CRM Pinelinec> Dealsv Engagements› OLD ENGAGEMENTSGET list meetingsPOST search moditied companiesPOST search tackeGET read call> POST soarch callsGET list callsPOST meetings scheduledGET get meetinaPoSt aet link to tack• POST Create Contact with AssociatioHubsnotJournal & webhoooks v4post Get tokenGET det suoscriotionsPOST create subscrintiorGET Journal earliestGET Journal latestgeT httos:nuosoorGET noyt offcotPOST aet Token prodDEL DELETE CLIRCCDIDTION DEP DOPTAIICAMIDONMCNTC) spFcsELOWS@ Connect Git = Concole 5.l TermE Docs Params • Authorization • Headers 9 Body Scripts SettingsPre-requestPost-NWsponseUse JavaScript to configure this request dynamically.o Packages |404 Not Found • 162 ms • 1.2 KB • Ca<> Sniopetse.g. save kesponse ..•:statusdatecontent-typecf-rayct-cache-statuscache-controlstrict-transnort-securitvaccocc-control.allow-crodentinldserver-timinalx-hubspot-correlation-idy-hubenot-notfoundlwwnhonrrashlmmawx-hubspot-ratelimit-remainingx-hubspot-ratelimit-secondlv-remainingrenort-toAO4IThu. 07 May 2026 11:25:25 GMutext/html;charset=iso-8859-1Of7fdd2bea988428-SoFDYNAMICmuc crevallidate noerache noectoremaxcade-31536000- includeSubDomains: oreloadorigin. Accept-Encodingfalcehcid:desc="019e022f-77c3-7883-a217-66912667639f" cfr.desc="9f7fdd2c02ef3402-IAD"019e022f-77c3-7883-a217-bb912b67b39f10000f"ondnoints".[("url"."httnc-|Ma.nel.cloudflare com\/renort|/v42c-0020FQhENR8Hit@cRe2VRceAKmcQamurVFTlQvlKTttAKi"success fraction":0.01"report_to"."cf-nel""max age":604800Vault Tools?0 00...
|
NULL
|
819537333951885954
|
NULL
|
click
|
ocr
|
NULL
|
*PostmanEditViewWindowhelpHubSpot rate limit imple *PostmanEditViewWindowhelpHubSpot rate limit implementation strategy vcan I call it trom postman 100 timesEvaluated Postman testing methods and rate limit behavior implicationsKeep going in Claude CodeSwitch to Claude Code and let Claude work directiv in vour.repo. running and testing as it goesWrite a message…Hubspot rate limits reference - MDUse timeZone to interpret resetsAt from the dally erCheat sheet: profiling a new portal in PostmanThree calls, in order:1. GEl /account-into/vs/details → portalinto+GET /account-info/v3/api-usage/daily/privameaningful for private apps)3. Skip search probing — the 5/sec is fixedError response shape"status""error"."message": "You have reached your secondly 1"errorType": "RATE LIMIT","policyName": "SECONDLY"."...","requesttd".""nolncvname values.eeconniy =caareh huteter e/cer• TEN SECONDLY ROLLING - burst bucket (110/10sprivate)• DAILY — private apps dailv ceilingAlwavs inspect nolicvName on 429 to know which buchack offOther operational guidelines• Error responses must stay under 5% of total dailycertificationi• Polling endpoints: minimum interval 5 minutes.• Search auery. may 3. 000 chars may 18 Alters acroresults per query.• Ratch enânoints. 1in to 100 records ner call regdlaOpus 4.7 AdaptiveClaude ic Aland can make mictakec Plosce double-chork racnoncodhhl"supoont Dally • now100% L2Inu / May 10.04.42Q SearchYour team is now on the Free plan with 1 admin. You retain editing access and other members are read-only. View team permissions to see who can edit, or upgrade to restore collaboration.GET read call •GET Get EngagemeNo environmentE Save~v COLLECtIONsv CRM Objectsv crm/vslobiects/obiect Twoe,> U batchv _ obiect Id)> • associations/{to Object Type)GET Read20, An error occurred.eg. successful operationDEL Archive> PATCH Update>GET List> POST Filter, Sort, and Search CRM Objects> CRM Owners> CRM Pinelinec> Dealsv Engagements› OLD ENGAGEMENTSGET list meetingsPOST search moditied companiesPOST search tackeGET read call> POST soarch callsGET list callsPOST meetings scheduledGET get meetinaPoSt aet link to tack• POST Create Contact with AssociatioHubsnotJournal & webhoooks v4post Get tokenGET det suoscriotionsPOST create subscrintiorGET Journal earliestGET Journal latestgeT httos:nuosoorGET noyt offcotPOST aet Token prodDEL DELETE CLIRCCDIDTION DEP DOPTAIICAMIDONMCNTC) spFcsELOWS@ Connect Git = Concole 5.l TermE Docs Params • Authorization • Headers 9 Body Scripts SettingsPre-requestPost-NWsponseUse JavaScript to configure this request dynamically.o Packages |404 Not Found • 162 ms • 1.2 KB • Ca<> Sniopetse.g. save kesponse ..•:statusdatecontent-typecf-rayct-cache-statuscache-controlstrict-transnort-securitvaccocc-control.allow-crodentinldserver-timinalx-hubspot-correlation-idy-hubenot-notfoundlwwnhonrrashlmmawx-hubspot-ratelimit-remainingx-hubspot-ratelimit-secondlv-remainingrenort-toAO4IThu. 07 May 2026 11:25:25 GMutext/html;charset=iso-8859-1Of7fdd2bea988428-SoFDYNAMICmuc crevallidate noerache noectoremaxcade-31536000- includeSubDomains: oreloadorigin. Accept-Encodingfalcehcid:desc="019e022f-77c3-7883-a217-66912667639f" cfr.desc="9f7fdd2c02ef3402-IAD"019e022f-77c3-7883-a217-bb912b67b39f10000f"ondnoints".[("url"."httnc-|Ma.nel.cloudflare com\/renort|/v42c-0020FQhENR8Hit@cRe2VRceAKmcQamurVFTlQvlKTttAKi"success fraction":0.01"report_to"."cf-nel""max age":604800Vault Tools?0 00...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
3168
|
NULL
|
0
|
2026-05-07T12:04:43.528994+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-07/1778 /Users/lukas/.screenpipe/data/data/2026-05-07/1778155483528_m1.jpg...
|
iTerm2
|
NULL
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
iTerm2ShellEditViewSessionScriptsProfilesWindowHel iTerm2ShellEditViewSessionScriptsProfilesWindowHelp• •DOCKERO &1DEV (docker)H82APP (-zsh)viewsjiminny-worker-processing-delayed: jiminny-worker-processing-delayed_00: stoppedworker-nudges:worker-nudges_00:stoppedjiminny-worker-processing-2:jiminny-worker-processing-2_00: stoppedJiminny-worker-processing-3:7iminny-worker-processing-3_00: stoppedjiminny-worker-processing-4:jiminny-worker-processing-4_00:stoppedjiminny-worker-processing-5: jiminny-worker-processing-5_00: stoppedworker-crm-update:worker-crm-update_00: stoppedworker-analytics:worker-analytics_00: stoppedworker-download:worker-download_00: stoppedworker:worker_00: stoppedjiminny-worker-processing-1:jiminny-worker-processing-1_00: stoppedworker-calendar:worker-calendar_00:stoppedworker-conferences:worker-conferences_00: stoppedworker-crm-sync:worker-crm-sync_00: stoppedworker-audio:worker-audio_00: stoppedworker-emails:worker-emails_00: stoppedartisan-schedule:artisan-schedule_00: stoppedworker-es-update:worker-es-update_00: stoppedartisan-schedule:artisan-schedule_00: startedjiminny-worker-processing-1:jiminny-worker-processing-1_00: startedjiminny-worker-processing-2:1iminny-worker-processing-2 00: startedjiminny-worker-processing-3:jiminny-worker-processing-3_00: startedjiminny-worker-processing-4:jiminny-worker-processing-4_00: startedjiminny-worker-processing-5:jiminny-worker-processing-5_00: startedjiminny-worker-processing-delayed: jiminny-worker-processing-delayed_00: startedworker:worker_00: startedworker-analytics:worker-analytics_00: startedworker-audio:worker-audio_00: startedworker-calendar:worker-calendar_00: startedworker-conferences:worker-conferences_00: startedworker-crm-sync:worker-crm-sync_00: startedworker-crm-update:worker-crm-update_00: startedworker-download:worker-download_00: startedworker-emails:worker-emails_00: startedworker-es-update:worker-es-update_00: startedworker-nudges:worker-nudges_00: startedroot@docker_lamp_1:/home/jiminny# php artisan jiminny:debugSyncing opportunity 0Syncing opportunity 25Syncing opportunity 50Syncing opportunity 75Syncing opportunity 100root@docker_lamp_1:/home/jiminny# ]$0lohlSupport Daily • now100% <47DEV (docker)-zsh• $4screenpipe"8Thu 7 May 15:04:43-zshT₴1₴6•$55.95ms DONEDEV...
|
NULL
|
7924302374525512202
|
NULL
|
click
|
ocr
|
NULL
|
iTerm2ShellEditViewSessionScriptsProfilesWindowHel iTerm2ShellEditViewSessionScriptsProfilesWindowHelp• •DOCKERO &1DEV (docker)H82APP (-zsh)viewsjiminny-worker-processing-delayed: jiminny-worker-processing-delayed_00: stoppedworker-nudges:worker-nudges_00:stoppedjiminny-worker-processing-2:jiminny-worker-processing-2_00: stoppedJiminny-worker-processing-3:7iminny-worker-processing-3_00: stoppedjiminny-worker-processing-4:jiminny-worker-processing-4_00:stoppedjiminny-worker-processing-5: jiminny-worker-processing-5_00: stoppedworker-crm-update:worker-crm-update_00: stoppedworker-analytics:worker-analytics_00: stoppedworker-download:worker-download_00: stoppedworker:worker_00: stoppedjiminny-worker-processing-1:jiminny-worker-processing-1_00: stoppedworker-calendar:worker-calendar_00:stoppedworker-conferences:worker-conferences_00: stoppedworker-crm-sync:worker-crm-sync_00: stoppedworker-audio:worker-audio_00: stoppedworker-emails:worker-emails_00: stoppedartisan-schedule:artisan-schedule_00: stoppedworker-es-update:worker-es-update_00: stoppedartisan-schedule:artisan-schedule_00: startedjiminny-worker-processing-1:jiminny-worker-processing-1_00: startedjiminny-worker-processing-2:1iminny-worker-processing-2 00: startedjiminny-worker-processing-3:jiminny-worker-processing-3_00: startedjiminny-worker-processing-4:jiminny-worker-processing-4_00: startedjiminny-worker-processing-5:jiminny-worker-processing-5_00: startedjiminny-worker-processing-delayed: jiminny-worker-processing-delayed_00: startedworker:worker_00: startedworker-analytics:worker-analytics_00: startedworker-audio:worker-audio_00: startedworker-calendar:worker-calendar_00: startedworker-conferences:worker-conferences_00: startedworker-crm-sync:worker-crm-sync_00: startedworker-crm-update:worker-crm-update_00: startedworker-download:worker-download_00: startedworker-emails:worker-emails_00: startedworker-es-update:worker-es-update_00: startedworker-nudges:worker-nudges_00: startedroot@docker_lamp_1:/home/jiminny# php artisan jiminny:debugSyncing opportunity 0Syncing opportunity 25Syncing opportunity 50Syncing opportunity 75Syncing opportunity 100root@docker_lamp_1:/home/jiminny# ]$0lohlSupport Daily • now100% <47DEV (docker)-zsh• $4screenpipe"8Thu 7 May 15:04:43-zshT₴1₴6•$55.95ms DONEDEV...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
3286
|
NULL
|
0
|
2026-05-07T12:09:59.586214+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-07/1778 /Users/lukas/.screenpipe/data/data/2026-05-07/1778155799586_m2.jpg...
|
iTerm2
|
NULL
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
PostmanEditVIewWindowmelpHubSpot rate limit impl PostmanEditVIewWindowmelpHubSpot rate limit implementation strategy vcan I call it from postman 100 timesEvaluated Postman testing methods and rate limit behavior implications ›Yes, easily. Postman has a built-in Collection Runner for this.How to do it1. Save the request to a collection (right-click → Save).2. Click Run collection (the play icon next to the collection name) or open therunner from the bottom-left.3. Set Iterations: 100, Delay: O (or a small value like 50ms).4. Hit Run.You'll get a results view showing each iteration's status code response time and (ifyou click into them the headers.What you'll actually seeCince vol connrmed May=110 Tinterval=t dddd•• At Oms delay, 100 iterations: Postman pushes calls as fast as TCP allows -typically 5-10 calls/second on a normal connection. You'l likely see all 100succeed because 100 < 110 in 10 seconds, and each call's latency naturally spacesthings out. The X-HubSpot-RateLimit-Remaining header willdron from 109 →108 → 107 ….. down to maybe ~10-20 by the end, then recover as the 10-secondwindow siides torward.• To deliberatelv hit a 429. set iterations to 120+ with Oms delav. You'llsee thenret ~l0 reruirn2o0. then 2 bulrct of 42es with nol ievlame:TEN SECONDIY ROLITNG• To test the search limit instead: point the request at a search endpoint (e.g.,POST /crm/v3/objects/contacts/search with a minimal body), set iterationsto 10, delay to 0. You'll trigger 429s wi / ›licyName: SECONDLY after the 5thcall within a second. Faster and cheaper to reproduce than the burst limit.Keep going in Claude CodeSwitch to Claude Code and let Claude work directiv in vour.repo, running and testing as it goes.Write a message…Opus 4. AdaptiveHubspot rate limits reference - MDUse timeZone to interpret resetsAt from the daily erCheat sheet: profiling a new portal in PostmanThree calls, in order:1. GEl /account-into/v3/details → portalinto+GET /account-info/v3/api-usage/daily/privemeaningful for private apps)3. Skip search probing — the 5/sec is fixedError response shape"message": "You have reached your secondly 1:"errorType" : "RATE_LIMIT","policyName" : "SECONDLY","correlationia": "...","requestId": "..."nolncvname values.• SECONDLY - search bucket (5/sec)• TEN_SECONDLY_ROLLING - burst bucket (110/10sprivate)• DAILY — private apps daily ceilingAlways inspect policyName on 429 to know which bucback off.Other operational guidelines• Error responses must stay under 5% of total dailycertificationi• Polling endpoints: minimum interval 5 minutes.• Search querv: max 3.000 chars, max 18 filters acroresults per query.• Ratch enânoints. 1in to 100 records ner call regdlaThu 7 May 15:09:59Xx Hubspot vQ SearchYour team is now on the Free plan with 1 admin. You retain editing access and other members are read-only. View team permissions to see who can edit, or upgrade to restore collaboration.GET Get Eno • GET Read Cc•Iteration run HS > Read Copyv COLLECtIONs> batch((baseUrl)) /crm/v3/objects/deal/287386441?associations=contact&associations=company~ [D (object id)E Docs Params • Authorization • Headers 9 Body Scripts Settings> associations/{to Object Type)det Reade9. An error occurred.Query ParamsKeyassociations29: successtul operationv associations> DEL Archive>PATCH Update> GET Listpost Create> PosT Filter. Sort. and Search CRM ObiectsCRM Owners> CRM Pioelines>Deals~ Engagements> O OLD ENGAGEMENTSget list meetinaspost coarch modifiod comnanio.POST search tasksResponseHistoryest road call> POST search callsGET list callsPOST meetinas scheduledGET get meetinoPOST aet link to task> post Cronto Contart with Accorintion• Kteratiog, run ns• GeT Read Coov+ * ...E, An error occurred.en. successtul oberation› Journal & webhoooks v4> ©Authi> Properties>RESSARCH> SEARCH> Tickets~ Useful> PoST filter per comoany / oniv onen deal stagesGET engagements old associated by dea>ENVIRONMENTS> SPFCS> FLOWSa Connect Git = Concole5.) TermiValuecontactcompanySend + Get a successful responset Send + Visualize response*R Send + Write testsDescriotionDescriptionGET httos:/l:Support Daily - nowNo environment) SaveCookiesBulk Edit ..100% L2VAIlVariables in requestG tokenG baseurl• All VarlablesCKPur5PaMx ZoiNg,https://api.hubapi.comGlobals Vault Tools s000...
|
NULL
|
-2588736302948448654
|
NULL
|
click
|
ocr
|
NULL
|
PostmanEditVIewWindowmelpHubSpot rate limit impl PostmanEditVIewWindowmelpHubSpot rate limit implementation strategy vcan I call it from postman 100 timesEvaluated Postman testing methods and rate limit behavior implications ›Yes, easily. Postman has a built-in Collection Runner for this.How to do it1. Save the request to a collection (right-click → Save).2. Click Run collection (the play icon next to the collection name) or open therunner from the bottom-left.3. Set Iterations: 100, Delay: O (or a small value like 50ms).4. Hit Run.You'll get a results view showing each iteration's status code response time and (ifyou click into them the headers.What you'll actually seeCince vol connrmed May=110 Tinterval=t dddd•• At Oms delay, 100 iterations: Postman pushes calls as fast as TCP allows -typically 5-10 calls/second on a normal connection. You'l likely see all 100succeed because 100 < 110 in 10 seconds, and each call's latency naturally spacesthings out. The X-HubSpot-RateLimit-Remaining header willdron from 109 →108 → 107 ….. down to maybe ~10-20 by the end, then recover as the 10-secondwindow siides torward.• To deliberatelv hit a 429. set iterations to 120+ with Oms delav. You'llsee thenret ~l0 reruirn2o0. then 2 bulrct of 42es with nol ievlame:TEN SECONDIY ROLITNG• To test the search limit instead: point the request at a search endpoint (e.g.,POST /crm/v3/objects/contacts/search with a minimal body), set iterationsto 10, delay to 0. You'll trigger 429s wi / ›licyName: SECONDLY after the 5thcall within a second. Faster and cheaper to reproduce than the burst limit.Keep going in Claude CodeSwitch to Claude Code and let Claude work directiv in vour.repo, running and testing as it goes.Write a message…Opus 4. AdaptiveHubspot rate limits reference - MDUse timeZone to interpret resetsAt from the daily erCheat sheet: profiling a new portal in PostmanThree calls, in order:1. GEl /account-into/v3/details → portalinto+GET /account-info/v3/api-usage/daily/privemeaningful for private apps)3. Skip search probing — the 5/sec is fixedError response shape"message": "You have reached your secondly 1:"errorType" : "RATE_LIMIT","policyName" : "SECONDLY","correlationia": "...","requestId": "..."nolncvname values.• SECONDLY - search bucket (5/sec)• TEN_SECONDLY_ROLLING - burst bucket (110/10sprivate)• DAILY — private apps daily ceilingAlways inspect policyName on 429 to know which bucback off.Other operational guidelines• Error responses must stay under 5% of total dailycertificationi• Polling endpoints: minimum interval 5 minutes.• Search querv: max 3.000 chars, max 18 filters acroresults per query.• Ratch enânoints. 1in to 100 records ner call regdlaThu 7 May 15:09:59Xx Hubspot vQ SearchYour team is now on the Free plan with 1 admin. You retain editing access and other members are read-only. View team permissions to see who can edit, or upgrade to restore collaboration.GET Get Eno • GET Read Cc•Iteration run HS > Read Copyv COLLECtIONs> batch((baseUrl)) /crm/v3/objects/deal/287386441?associations=contact&associations=company~ [D (object id)E Docs Params • Authorization • Headers 9 Body Scripts Settings> associations/{to Object Type)det Reade9. An error occurred.Query ParamsKeyassociations29: successtul operationv associations> DEL Archive>PATCH Update> GET Listpost Create> PosT Filter. Sort. and Search CRM ObiectsCRM Owners> CRM Pioelines>Deals~ Engagements> O OLD ENGAGEMENTSget list meetinaspost coarch modifiod comnanio.POST search tasksResponseHistoryest road call> POST search callsGET list callsPOST meetinas scheduledGET get meetinoPOST aet link to task> post Cronto Contart with Accorintion• Kteratiog, run ns• GeT Read Coov+ * ...E, An error occurred.en. successtul oberation› Journal & webhoooks v4> ©Authi> Properties>RESSARCH> SEARCH> Tickets~ Useful> PoST filter per comoany / oniv onen deal stagesGET engagements old associated by dea>ENVIRONMENTS> SPFCS> FLOWSa Connect Git = Concole5.) TermiValuecontactcompanySend + Get a successful responset Send + Visualize response*R Send + Write testsDescriotionDescriptionGET httos:/l:Support Daily - nowNo environment) SaveCookiesBulk Edit ..100% L2VAIlVariables in requestG tokenG baseurl• All VarlablesCKPur5PaMx ZoiNg,https://api.hubapi.comGlobals Vault Tools s000...
|
3284
|
NULL
|
NULL
|
NULL
|
|
3287
|
NULL
|
0
|
2026-05-07T12:09:59.727176+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-07/1778 /Users/lukas/.screenpipe/data/data/2026-05-07/1778155799727_m1.jpg...
|
iTerm2
|
NULL
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
PostmanFileEditViewWindowHelp$0lohlSupport Daily • PostmanFileEditViewWindowHelp$0lohlSupport Daily • now100% <478DEV (docker)DOCKERO ₴1DEV (docker)H82APP (-zsh)-zsh• $4ffmpeg*,- *55.95ms DONE-zshThu 7 May 15:09:59T81₴6viewsjiminny-worker-processing-delayed: jiminny-worker-processing-delayed_00: stoppedworker-nudges:worker-nudges_00:stoppedjiminny-worker-processing-2:jiminny-worker-processing-2_00: stoppedJiminny-worker-processing-3:7iminny-worker-processing-3_00: stoppedjiminny-worker-processing-4:jiminny-worker-processing-4_00:stoppedjiminny-worker-processing-5: jiminny-worker-processing-5_00: stoppedworker-crm-update:worker-crm-update_00: stoppedworker-analytics:worker-analytics_00: stoppedworker-download:worker-download_00: stoppedworker:worker_00: stoppedjiminny-worker-processing-1:jiminny-worker-processing-1_00: stoppedworker-calendar:worker-calendar_00:stoppedworker-conferences:worker-conferences_00: stoppedworker-crm-sync:worker-crm-sync_00: stoppedworker-audio:worker-audio_00: stoppedworker-emails:worker-emails_00: stoppedartisan-schedule:artisan-schedule_00: stoppedworker-es-update:worker-es-update_00: stoppedartisan-schedule:artisan-schedule_00: startedjiminny-worker-processing-1:jiminny-worker-processing-1_00: startedjiminny-worker-processing-2:1iminny-worker-processing-2 00: startedjiminny-worker-processing-3:jiminny-worker-processing-3_00: startedjiminny-worker-processing-4:jiminny-worker-processing-4_00: startedjiminny-worker-processing-5:jiminny-worker-processing-5_00: startedjiminny-worker-processing-delayed: jiminny-worker-processing-delayed_00: startedworker:worker_00: startedworker-analytics:worker-analytics_00: startedworker-audio:worker-audio_00: startedworker-calendar:worker-calendar_00: startedworker-conferences:worker-conferences_00: startedworker-crm-sync:worker-crm-sync_00: startedworker-crm-update:worker-crm-update_00: startedworker-download:worker-download_00: startedworker-emails:worker-emails_00: startedworker-es-update:worker-es-update_00: startedworker-nudges:worker-nudges_00: startedroot@docker_lamp_1:/home/jiminny# php artisan jiminny:debugSyncing opportunity 0Syncing opportunity 25Syncing opportunity 50Syncing opportunity 75Syncing opportunity 100root@docker_lamp_1:/home/jiminny# ]DEV...
|
NULL
|
-8459806217919068249
|
NULL
|
click
|
ocr
|
NULL
|
PostmanFileEditViewWindowHelp$0lohlSupport Daily • PostmanFileEditViewWindowHelp$0lohlSupport Daily • now100% <478DEV (docker)DOCKERO ₴1DEV (docker)H82APP (-zsh)-zsh• $4ffmpeg*,- *55.95ms DONE-zshThu 7 May 15:09:59T81₴6viewsjiminny-worker-processing-delayed: jiminny-worker-processing-delayed_00: stoppedworker-nudges:worker-nudges_00:stoppedjiminny-worker-processing-2:jiminny-worker-processing-2_00: stoppedJiminny-worker-processing-3:7iminny-worker-processing-3_00: stoppedjiminny-worker-processing-4:jiminny-worker-processing-4_00:stoppedjiminny-worker-processing-5: jiminny-worker-processing-5_00: stoppedworker-crm-update:worker-crm-update_00: stoppedworker-analytics:worker-analytics_00: stoppedworker-download:worker-download_00: stoppedworker:worker_00: stoppedjiminny-worker-processing-1:jiminny-worker-processing-1_00: stoppedworker-calendar:worker-calendar_00:stoppedworker-conferences:worker-conferences_00: stoppedworker-crm-sync:worker-crm-sync_00: stoppedworker-audio:worker-audio_00: stoppedworker-emails:worker-emails_00: stoppedartisan-schedule:artisan-schedule_00: stoppedworker-es-update:worker-es-update_00: stoppedartisan-schedule:artisan-schedule_00: startedjiminny-worker-processing-1:jiminny-worker-processing-1_00: startedjiminny-worker-processing-2:1iminny-worker-processing-2 00: startedjiminny-worker-processing-3:jiminny-worker-processing-3_00: startedjiminny-worker-processing-4:jiminny-worker-processing-4_00: startedjiminny-worker-processing-5:jiminny-worker-processing-5_00: startedjiminny-worker-processing-delayed: jiminny-worker-processing-delayed_00: startedworker:worker_00: startedworker-analytics:worker-analytics_00: startedworker-audio:worker-audio_00: startedworker-calendar:worker-calendar_00: startedworker-conferences:worker-conferences_00: startedworker-crm-sync:worker-crm-sync_00: startedworker-crm-update:worker-crm-update_00: startedworker-download:worker-download_00: startedworker-emails:worker-emails_00: startedworker-es-update:worker-es-update_00: startedworker-nudges:worker-nudges_00: startedroot@docker_lamp_1:/home/jiminny# php artisan jiminny:debugSyncing opportunity 0Syncing opportunity 25Syncing opportunity 50Syncing opportunity 75Syncing opportunity 100root@docker_lamp_1:/home/jiminny# ]DEV...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
3379
|
NULL
|
0
|
2026-05-07T12:15:11.241226+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-07/1778 /Users/lukas/.screenpipe/data/data/2026-05-07/1778156111241_m2.jpg...
|
iTerm2
|
NULL
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
PostmanEditVIewWindowmelpHubSpot rate limit impl PostmanEditVIewWindowmelpHubSpot rate limit implementation strategy vcan I call it trom postman 100 timesEvaluated Postman testing methods and rate limit behavior implications ›Yes. easily. Postman has a built-in Collection Runner for this.How to do it1. Save the request to a collection (right-click → Save)2. Click Run collection (the play icon next to the collection name) or open therunner from the bottom-left.3. Set Iterations: 100. Delay: 0 (or a small value like 50ms).4. Hit RunYou'll get a results view showing each iteration's status code response time and (ifyou click into them the headers.What vou'll actuallv seeCince vol connrmed May=110 Tinterval=t dddd•• At Oms delav. 100 iterations: Postman pushes calls as fast as TCP allows —typically 5-10 calls/second on a normal connection. You'll likelv see all 100succeed because 100 < 110 in 10 seconds, and each call's latency naturally spacesthings out. The X-HubSpot-RateLimit-Remaining header willdron from 109 →108 → 107 ... down to maybe ~10-20 by the end, then recover as the 10-secondwindow siides torward.• To deliberatelv hit a 429: set iterations to 120+ with Oms delav. You'llsee thenret ~l0 reruirn2o0. then 2 bulrct of 42es with nol ievname :TEN SECONDIY ROLITNG• To test the search limit instead: point the request at a search endpoint (e.g..POST /crm/v3/obiects/contacts/search with aminimalbody).setiterationsto 10. delav to 0. You'll trigger 429s wi J plicyName: SECONDLY after the 5thcall within a second. Faster and cheader to reproduce than the burst limitKeep going in Claude CodeSwitch to Claude Code and let Claude work directiv in vour.repo. running and testing as it goesWrite a message…Opus 4. AdaptiveHubspot rate limits reference - MDUse timeZone to interpret resetsAt from the daily erCheat sheet: profiling a new portal in PostmanThree calls, in order:1. GEl /account-into/v3/details → portalinto+GET /account-info/v3/api-usage/daily/privameaningful for private apps)3. Skip search probing — the 5/sec is fixedError response shape"message": "You have reached your secondly 1"errorType": "RATE LIMIT","policyName": "SECONDLY"."requestId": "..."nolncvname values:• SECONDLY - search bucket (5/sec)• TEN SECONDLY ROLLING - burst bucket (110/10sprivate)• DAILY — private apps daily ceilingAlways inspect policyName on 429 to know which buchack offOther operational guidelines• Error responses must stay under 5% of total dailycertificationi• Polling endpoints: minimum interval 5 minutes.•Search query. may 3.000 chars. may 18 Alters acrorecullts ver query.• Ratch enânoints. 1in to 100 records ner call regdlaThu 7 May 15:15:11UparadeXx Hubspot vQ SearchYour team is now on the Free plan with 1 admin. You retain editing access and other members are read-only. View team permissions to see who can edit, or upgrade to restore collaborationCOLLECTIONSpost Filter, Sort, and Search CRM Obiectsg0, successful operatione9; An error occurred.CRM Owners› CRM PipelinesDealsEngagements› D OLD ENGAGEMENTSGET list meetinasPOST search modified comnaniesPOST search tasksGET read call> POST search callsGET list callsPOST meetinas scheduledGET get meetingPOST aet link to task> post Greate Contact with Accociation• Hubspotv Iteration run HSGET Read Copved. An error occurredcg. successtul operationIournal & wehhoooks vA©AuthPronerties> RESEARCHSSAPCHPost search contact by phonePoST cearch contact hv emailPOST search meetingsPOST search notes> Post Search calls v3|POST Search related meetinas v3POST search dealsTicketsv UsefulGET endadements old associated bv deaCAMIDONMCNTC> SPFCSELOWS@ Connect Git = Concole 5.) TerminGET Get!m IterationD IteratioPOST searcSEARCH › search contact by email Copyhttps://api.hubapi.com/crm/v3/objects/contacts/searchE Docs Params Authorization • Headers 11 Body • Scripts SettingsQuery ParamsKeyPesnanceHistoryDescriotionSend + Get a successful responsea Send + Visualize response*R Send + Write tests" Lukas sterka 121 • In zh 1omNo environmentva) SaveCookiesBulk Edit ..100% L2VAIlVariables in requestG token› All variablesCKPur5PaMx ZoiNg,Globals Vault Tools? 0 00...
|
NULL
|
100304721535101093
|
NULL
|
click
|
ocr
|
NULL
|
PostmanEditVIewWindowmelpHubSpot rate limit impl PostmanEditVIewWindowmelpHubSpot rate limit implementation strategy vcan I call it trom postman 100 timesEvaluated Postman testing methods and rate limit behavior implications ›Yes. easily. Postman has a built-in Collection Runner for this.How to do it1. Save the request to a collection (right-click → Save)2. Click Run collection (the play icon next to the collection name) or open therunner from the bottom-left.3. Set Iterations: 100. Delay: 0 (or a small value like 50ms).4. Hit RunYou'll get a results view showing each iteration's status code response time and (ifyou click into them the headers.What vou'll actuallv seeCince vol connrmed May=110 Tinterval=t dddd•• At Oms delav. 100 iterations: Postman pushes calls as fast as TCP allows —typically 5-10 calls/second on a normal connection. You'll likelv see all 100succeed because 100 < 110 in 10 seconds, and each call's latency naturally spacesthings out. The X-HubSpot-RateLimit-Remaining header willdron from 109 →108 → 107 ... down to maybe ~10-20 by the end, then recover as the 10-secondwindow siides torward.• To deliberatelv hit a 429: set iterations to 120+ with Oms delav. You'llsee thenret ~l0 reruirn2o0. then 2 bulrct of 42es with nol ievname :TEN SECONDIY ROLITNG• To test the search limit instead: point the request at a search endpoint (e.g..POST /crm/v3/obiects/contacts/search with aminimalbody).setiterationsto 10. delav to 0. You'll trigger 429s wi J plicyName: SECONDLY after the 5thcall within a second. Faster and cheader to reproduce than the burst limitKeep going in Claude CodeSwitch to Claude Code and let Claude work directiv in vour.repo. running and testing as it goesWrite a message…Opus 4. AdaptiveHubspot rate limits reference - MDUse timeZone to interpret resetsAt from the daily erCheat sheet: profiling a new portal in PostmanThree calls, in order:1. GEl /account-into/v3/details → portalinto+GET /account-info/v3/api-usage/daily/privameaningful for private apps)3. Skip search probing — the 5/sec is fixedError response shape"message": "You have reached your secondly 1"errorType": "RATE LIMIT","policyName": "SECONDLY"."requestId": "..."nolncvname values:• SECONDLY - search bucket (5/sec)• TEN SECONDLY ROLLING - burst bucket (110/10sprivate)• DAILY — private apps daily ceilingAlways inspect policyName on 429 to know which buchack offOther operational guidelines• Error responses must stay under 5% of total dailycertificationi• Polling endpoints: minimum interval 5 minutes.•Search query. may 3.000 chars. may 18 Alters acrorecullts ver query.• Ratch enânoints. 1in to 100 records ner call regdlaThu 7 May 15:15:11UparadeXx Hubspot vQ SearchYour team is now on the Free plan with 1 admin. You retain editing access and other members are read-only. View team permissions to see who can edit, or upgrade to restore collaborationCOLLECTIONSpost Filter, Sort, and Search CRM Obiectsg0, successful operatione9; An error occurred.CRM Owners› CRM PipelinesDealsEngagements› D OLD ENGAGEMENTSGET list meetinasPOST search modified comnaniesPOST search tasksGET read call> POST search callsGET list callsPOST meetinas scheduledGET get meetingPOST aet link to task> post Greate Contact with Accociation• Hubspotv Iteration run HSGET Read Copved. An error occurredcg. successtul operationIournal & wehhoooks vA©AuthPronerties> RESEARCHSSAPCHPost search contact by phonePoST cearch contact hv emailPOST search meetingsPOST search notes> Post Search calls v3|POST Search related meetinas v3POST search dealsTicketsv UsefulGET endadements old associated bv deaCAMIDONMCNTC> SPFCSELOWS@ Connect Git = Concole 5.) TerminGET Get!m IterationD IteratioPOST searcSEARCH › search contact by email Copyhttps://api.hubapi.com/crm/v3/objects/contacts/searchE Docs Params Authorization • Headers 11 Body • Scripts SettingsQuery ParamsKeyPesnanceHistoryDescriotionSend + Get a successful responsea Send + Visualize response*R Send + Write tests" Lukas sterka 121 • In zh 1omNo environmentva) SaveCookiesBulk Edit ..100% L2VAIlVariables in requestG token› All variablesCKPur5PaMx ZoiNg,Globals Vault Tools? 0 00...
|
3377
|
NULL
|
NULL
|
NULL
|
|
3380
|
NULL
|
0
|
2026-05-07T12:15:11.241234+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-07/1778 /Users/lukas/.screenpipe/data/data/2026-05-07/1778156111241_m1.jpg...
|
iTerm2
|
NULL
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
iTerm2ShellEditViewSessionScriptsProfilesWindowHel iTerm2ShellEditViewSessionScriptsProfilesWindowHelp$0ld6]Lukas/Stefka 121 - in 2h 15 m100% <478DEV (docker)DOCKERDEV (docker)882APP (-zsh)Jiminny-worker-processing-4:jiminny-worker-processing-4_00:jiminny-worker-processing-5:jiminny-worker-processing-5_00:stoppedstoppedworker-crm-update:worker-crm-update_00: stoppedworker-analytics:worker-analytics_00: stoppedworker-download:worker-download_00: stoppedworker:worker_00: stoppedjiminny-worker-processing-1:jiminny-worker-processing-1_00: stoppedworker-calendar:worker-calendar_00:stoppedworker-conferences:worker-conferences_00: stoppedworker-crm-sync:worker-crm-sync_00:stoppedworker-audio:worker-audio_00: stoppedworker-emails:worker-emails_00:stoppedartisan-schedule:artisan-schedule_00: stoppedworker-es-update:worker-es-update_00: stoppedartisan-schedule:artisan-schedule_00: startedjiminny-worker-processing-1:jiminny-worker-processing-1_00: startedjiminny-worker-processing-2:jiminny-worker-processing-2_00: startedjiminny-worker-processing-3:jiminny-worker-processing-3_00: startedjiminny-worker-processing-4:jiminny-worker-processing-4_00: startedjiminny-worker-processing-5:jiminny-worker-processing-5_00: startedjiminny-worker-processing-delayed: jiminny-worker-processing-delayed_00: startedworker:worker_00: startedworker-analytics:worker-analytics_00: startedworker-audio:worker-audio_00: startedworker-calendar:worker-calendar_00: startedworker-conferences:worker-conferences_00: startedworker-crm-sync:worker-crm-sync_00: startedworker-crm-update:worker-crm-update_00: startedworker-download:worker-download_00:startedworker-emails:worker-emails_00: startedworker-es-update:worker-es-update_00: startedworker-nudges:worker-nudges_00: startedroot@docker_lamp_1:/home/jiminny# php artisan jiminny:debugSyncing opportunity 0Syncing opportunity 25Syncing opportunity 50Syncing opportunity 75Syncing opportunity 100root@docker_lamp_1:/home/jiminny# php artisan jiminny: debugSyncing opportunity 0Syncing opportunity 25Syncing opportunity 50Syncing opportunity 75Syncing opportunity 100root@docker_lamp_1:/home/jiminny# ]-zsh• $4screenpipe*•$5-zshThu 7 May 15:15:11T81₴6DEV...
|
NULL
|
6055845469476340163
|
NULL
|
click
|
ocr
|
NULL
|
iTerm2ShellEditViewSessionScriptsProfilesWindowHel iTerm2ShellEditViewSessionScriptsProfilesWindowHelp$0ld6]Lukas/Stefka 121 - in 2h 15 m100% <478DEV (docker)DOCKERDEV (docker)882APP (-zsh)Jiminny-worker-processing-4:jiminny-worker-processing-4_00:jiminny-worker-processing-5:jiminny-worker-processing-5_00:stoppedstoppedworker-crm-update:worker-crm-update_00: stoppedworker-analytics:worker-analytics_00: stoppedworker-download:worker-download_00: stoppedworker:worker_00: stoppedjiminny-worker-processing-1:jiminny-worker-processing-1_00: stoppedworker-calendar:worker-calendar_00:stoppedworker-conferences:worker-conferences_00: stoppedworker-crm-sync:worker-crm-sync_00:stoppedworker-audio:worker-audio_00: stoppedworker-emails:worker-emails_00:stoppedartisan-schedule:artisan-schedule_00: stoppedworker-es-update:worker-es-update_00: stoppedartisan-schedule:artisan-schedule_00: startedjiminny-worker-processing-1:jiminny-worker-processing-1_00: startedjiminny-worker-processing-2:jiminny-worker-processing-2_00: startedjiminny-worker-processing-3:jiminny-worker-processing-3_00: startedjiminny-worker-processing-4:jiminny-worker-processing-4_00: startedjiminny-worker-processing-5:jiminny-worker-processing-5_00: startedjiminny-worker-processing-delayed: jiminny-worker-processing-delayed_00: startedworker:worker_00: startedworker-analytics:worker-analytics_00: startedworker-audio:worker-audio_00: startedworker-calendar:worker-calendar_00: startedworker-conferences:worker-conferences_00: startedworker-crm-sync:worker-crm-sync_00: startedworker-crm-update:worker-crm-update_00: startedworker-download:worker-download_00:startedworker-emails:worker-emails_00: startedworker-es-update:worker-es-update_00: startedworker-nudges:worker-nudges_00: startedroot@docker_lamp_1:/home/jiminny# php artisan jiminny:debugSyncing opportunity 0Syncing opportunity 25Syncing opportunity 50Syncing opportunity 75Syncing opportunity 100root@docker_lamp_1:/home/jiminny# php artisan jiminny: debugSyncing opportunity 0Syncing opportunity 25Syncing opportunity 50Syncing opportunity 75Syncing opportunity 100root@docker_lamp_1:/home/jiminny# ]-zsh• $4screenpipe*•$5-zshThu 7 May 15:15:11T81₴6DEV...
|
3378
|
NULL
|
NULL
|
NULL
|
|
3459
|
NULL
|
0
|
2026-05-07T12:20:15.720582+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-07/1778 /Users/lukas/.screenpipe/data/data/2026-05-07/1778156415720_m2.jpg...
|
iTerm2
|
NULL
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
PostmanWindow• • 0HubSpot rate limit implementat PostmanWindow• • 0HubSpot rate limit implementation strategy vOption 1: curl + xargs (built into vour Mac. simplest)TOKEN="pat-nal-..."seq 1 200 | xargs -P 20 -n 1 -I curl -s -o /dev/null-W "%http code n"-H "Authorization: Bearer STOKEN"[URL_WITH_CREDENTIALS] Local VaultStore your API secrets locally in vault.Dwe VauiGiobals Vault Took -- m=m...
|
NULL
|
-8880409726529758374
|
NULL
|
click
|
ocr
|
NULL
|
PostmanWindow• • 0HubSpot rate limit implementat PostmanWindow• • 0HubSpot rate limit implementation strategy vOption 1: curl + xargs (built into vour Mac. simplest)TOKEN="pat-nal-..."seq 1 200 | xargs -P 20 -n 1 -I curl -s -o /dev/null-W "%http code n"-H "Authorization: Bearer STOKEN"[URL_WITH_CREDENTIALS] Local VaultStore your API secrets locally in vault.Dwe VauiGiobals Vault Took -- m=m...
|
3457
|
NULL
|
NULL
|
NULL
|
|
3460
|
NULL
|
0
|
2026-05-07T12:20:15.720745+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-07/1778 /Users/lukas/.screenpipe/data/data/2026-05-07/1778156415720_m1.jpg...
|
iTerm2
|
NULL
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
iTerm2ShellEditViewSessionScriptsProfilesWindowHel iTerm2ShellEditViewSessionScriptsProfilesWindowHelp$0(wbl# Lukas/Stefka 121 • in 2 h 10 m100% [8DEV (docker)DOCKERDEV (docker)882APP (-zsh)Jiminny-worker-processing-4:jiminny-worker-processing-4_00:stoppedjiminny-worker-processing-5:jiminny-worker-processing-5_00:stoppedworker-crm-update:worker-crm-update_00: stoppedworker-analytics:worker-analytics_00: stoppedworker-download:worker-download_00: stoppedworker:worker_00: stoppedjiminny-worker-processing-1:jiminny-worker-processing-1_00: stoppedworker-calendar:worker-calendar_00:stoppedworker-conferences:worker-conferences_00: stoppedworker-crm-sync:worker-crm-sync_00:stoppedworker-audio:worker-audio_00: stoppedworker-emails:worker-emails_00:stoppedartisan-schedule:artisan-schedule_00: stoppedworker-es-update:worker-es-update_00: stoppedartisan-schedule:artisan-schedule_00: startedjiminny-worker-processing-1:jiminny-worker-processing-1_00: startedjiminny-worker-processing-2:jiminny-worker-processing-2_00: startedjiminny-worker-processing-3:jiminny-worker-processing-3_00: startedjiminny-worker-processing-4:jiminny-worker-processing-4_00: startedjiminny-worker-processing-5:jiminny-worker-processing-5_00: startedjiminny-worker-processing-delayed: jiminny-worker-processing-delayed_00: startedworker:worker_00: startedworker-analytics:worker-analytics_00: startedworker-audio:worker-audio_00: startedworker-calendar:worker-calendar_00: startedworker-conferences:worker-conferences_00: startedworker-crm-sync:worker-crm-sync_00: startedworker-crm-update:worker-crm-update_00: startedworker-download:worker-download_00:startedworker-emails:worker-emails_00: startedworker-es-update:worker-es-update_00: startedworker-nudges:worker-nudges_00: startedroot@docker_lamp_1:/home/jiminny# php artisan jiminny: debugSyncing opportunity 0Syncing opportunity 25Syncing opportunity 50Syncing opportunity 75Syncing opportunity 100root@docker_lamp_1:/home/jiminny# php artisan jiminny: debugSyncing opportunity 0Syncing opportunity 25Syncing opportunity 50Syncing opportunity 75Syncing opportunity 100root@docker_lamp_1:/home/jiminny# ]-zsh• $4ffmpeg-zshThu 7 May 15:20:16T81₴6DEV...
|
NULL
|
-2864179396297476601
|
NULL
|
click
|
ocr
|
NULL
|
iTerm2ShellEditViewSessionScriptsProfilesWindowHel iTerm2ShellEditViewSessionScriptsProfilesWindowHelp$0(wbl# Lukas/Stefka 121 • in 2 h 10 m100% [8DEV (docker)DOCKERDEV (docker)882APP (-zsh)Jiminny-worker-processing-4:jiminny-worker-processing-4_00:stoppedjiminny-worker-processing-5:jiminny-worker-processing-5_00:stoppedworker-crm-update:worker-crm-update_00: stoppedworker-analytics:worker-analytics_00: stoppedworker-download:worker-download_00: stoppedworker:worker_00: stoppedjiminny-worker-processing-1:jiminny-worker-processing-1_00: stoppedworker-calendar:worker-calendar_00:stoppedworker-conferences:worker-conferences_00: stoppedworker-crm-sync:worker-crm-sync_00:stoppedworker-audio:worker-audio_00: stoppedworker-emails:worker-emails_00:stoppedartisan-schedule:artisan-schedule_00: stoppedworker-es-update:worker-es-update_00: stoppedartisan-schedule:artisan-schedule_00: startedjiminny-worker-processing-1:jiminny-worker-processing-1_00: startedjiminny-worker-processing-2:jiminny-worker-processing-2_00: startedjiminny-worker-processing-3:jiminny-worker-processing-3_00: startedjiminny-worker-processing-4:jiminny-worker-processing-4_00: startedjiminny-worker-processing-5:jiminny-worker-processing-5_00: startedjiminny-worker-processing-delayed: jiminny-worker-processing-delayed_00: startedworker:worker_00: startedworker-analytics:worker-analytics_00: startedworker-audio:worker-audio_00: startedworker-calendar:worker-calendar_00: startedworker-conferences:worker-conferences_00: startedworker-crm-sync:worker-crm-sync_00: startedworker-crm-update:worker-crm-update_00: startedworker-download:worker-download_00:startedworker-emails:worker-emails_00: startedworker-es-update:worker-es-update_00: startedworker-nudges:worker-nudges_00: startedroot@docker_lamp_1:/home/jiminny# php artisan jiminny: debugSyncing opportunity 0Syncing opportunity 25Syncing opportunity 50Syncing opportunity 75Syncing opportunity 100root@docker_lamp_1:/home/jiminny# php artisan jiminny: debugSyncing opportunity 0Syncing opportunity 25Syncing opportunity 50Syncing opportunity 75Syncing opportunity 100root@docker_lamp_1:/home/jiminny# ]-zsh• $4ffmpeg-zshThu 7 May 15:20:16T81₴6DEV...
|
3458
|
NULL
|
NULL
|
NULL
|
|
3535
|
NULL
|
0
|
2026-05-07T12:25:16.860957+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-07/1778 /Users/lukas/.screenpipe/data/data/2026-05-07/1778156716860_m1.jpg...
|
iTerm2
|
NULL
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
iTerm2ShellEditViewSessionScriptsProfilesWindowHel iTerm2ShellEditViewSessionScriptsProfilesWindowHelp# Lukas/Stefka 121 • in 2h 5 m100% [8Thu 7 May 15:25:16DEV (docker)DOCKERDEV (docker)882APP (-zsh)Jiminny-worker-processing-4:jiminny-worker-processing-4_00:jiminny-worker-processing-5:jiminny-worker-processing-5_00:stoppedstoppedworker-crm-update:worker-crm-update_00: stoppedworker-analytics:worker-analytics_00: stoppedworker-download:worker-download_00: stoppedworker:worker_00: stoppedjiminny-worker-processing-1:jiminny-worker-processing-1_00: stoppedworker-calendar:worker-calendar_00:stoppedworker-conferences:worker-conferences_00: stoppedworker-crm-sync:worker-crm-sync_00:stoppedworker-audio:worker-audio_00: stoppedworker-emails:worker-emails_00:stoppedartisan-schedule:artisan-schedule_00: stoppedworker-es-update:worker-es-update_00: stoppedartisan-schedule:artisan-schedule_00: startedjiminny-worker-processing-1:jiminny-worker-processing-1_00: startedjiminny-worker-processing-2:jiminny-worker-processing-2_00: startedjiminny-worker-processing-3:jiminny-worker-processing-3_00: startedjiminny-worker-processing-4:jiminny-worker-processing-4_00: startedjiminny-worker-processing-5:jiminny-worker-processing-5_00: startedjiminny-worker-processing-delayed: jiminny-worker-processing-delayed_00: startedworker:worker_00: startedworker-analytics:worker-analytics_00: startedworker-audio:worker-audio_00: startedworker-calendar:worker-calendar_00: startedworker-conferences:worker-conferences_00: startedworker-crm-sync:worker-crm-sync_00: startedworker-crm-update:worker-crm-update_00: startedworker-download:worker-download_00:startedworker-emails:worker-emails_00: startedworker-es-update:worker-es-update_00: startedworker-nudges:worker-nudges_00: startedroot@docker_lamp_1:/home/jiminny# php artisan jiminny:debugSyncing opportunity 0Syncing opportunity 25Syncing opportunity 50Syncing opportunity 75Syncing opportunity 100root@docker_lamp_1:/home/jiminny# php artisan jiminny: debugSyncing opportunity 0Syncing opportunity 25Syncing opportunity 50Syncing opportunity 75Syncing opportunity 100root@docker_lamp_1:/home/jiminny# ]-zsh• $4screenpipe****5-zsh₴6DEV...
|
NULL
|
8362246587737937907
|
NULL
|
idle
|
ocr
|
NULL
|
iTerm2ShellEditViewSessionScriptsProfilesWindowHel iTerm2ShellEditViewSessionScriptsProfilesWindowHelp# Lukas/Stefka 121 • in 2h 5 m100% [8Thu 7 May 15:25:16DEV (docker)DOCKERDEV (docker)882APP (-zsh)Jiminny-worker-processing-4:jiminny-worker-processing-4_00:jiminny-worker-processing-5:jiminny-worker-processing-5_00:stoppedstoppedworker-crm-update:worker-crm-update_00: stoppedworker-analytics:worker-analytics_00: stoppedworker-download:worker-download_00: stoppedworker:worker_00: stoppedjiminny-worker-processing-1:jiminny-worker-processing-1_00: stoppedworker-calendar:worker-calendar_00:stoppedworker-conferences:worker-conferences_00: stoppedworker-crm-sync:worker-crm-sync_00:stoppedworker-audio:worker-audio_00: stoppedworker-emails:worker-emails_00:stoppedartisan-schedule:artisan-schedule_00: stoppedworker-es-update:worker-es-update_00: stoppedartisan-schedule:artisan-schedule_00: startedjiminny-worker-processing-1:jiminny-worker-processing-1_00: startedjiminny-worker-processing-2:jiminny-worker-processing-2_00: startedjiminny-worker-processing-3:jiminny-worker-processing-3_00: startedjiminny-worker-processing-4:jiminny-worker-processing-4_00: startedjiminny-worker-processing-5:jiminny-worker-processing-5_00: startedjiminny-worker-processing-delayed: jiminny-worker-processing-delayed_00: startedworker:worker_00: startedworker-analytics:worker-analytics_00: startedworker-audio:worker-audio_00: startedworker-calendar:worker-calendar_00: startedworker-conferences:worker-conferences_00: startedworker-crm-sync:worker-crm-sync_00: startedworker-crm-update:worker-crm-update_00: startedworker-download:worker-download_00:startedworker-emails:worker-emails_00: startedworker-es-update:worker-es-update_00: startedworker-nudges:worker-nudges_00: startedroot@docker_lamp_1:/home/jiminny# php artisan jiminny:debugSyncing opportunity 0Syncing opportunity 25Syncing opportunity 50Syncing opportunity 75Syncing opportunity 100root@docker_lamp_1:/home/jiminny# php artisan jiminny: debugSyncing opportunity 0Syncing opportunity 25Syncing opportunity 50Syncing opportunity 75Syncing opportunity 100root@docker_lamp_1:/home/jiminny# ]-zsh• $4screenpipe****5-zsh₴6DEV...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
3536
|
NULL
|
0
|
2026-05-07T12:25:22.792579+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-07/1778 /Users/lukas/.screenpipe/data/data/2026-05-07/1778156722792_m2.jpg...
|
iTerm2
|
NULL
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
PostmancaltVIewWindowmelpHubSpot rate limit imple PostmancaltVIewWindowmelpHubSpot rate limit implementation strategy vThat gets you well past 11/sec. Each Newman process makes its calls sequentially, bumultiple Newman processes run concurrently.Option 4: Postman Pertormance Lesting (newer reature)If vour Postman version has it, Collection Runner has a Performance tab nowalonoside runctionab.t runs the col lection with connourable virtual users inparallel — set 20 virtual users. 30-second duration, and vou'll saturate the burstwindow without any external tooling. rath is kun collection Pertormance →ConfigureYou probablv don't actually need to hit itWorth pausing here: the goal of this exercise is to verify your limiter handles 429scorecivnont roucancotar win a mock winout ouimino rea auotaIn your test, fake a 429 response$mockResponse = new GuzzleHttp Psr7 Response(429.'Retry-After' =>'8',ison encode(lstatus ='error,'message' => "You have reached your secondly limit.,'errortype' =>"RATFTMTTE'policyName' => 'SECONDLY',Icorrolationtat =s'test-123',That gives vou the exact shape HubSpot returns. and vou can unit-test:• Parsing policyName correctly• Routing to the right queue's backoff• Honoring Retry-After• Not double-counting the failed call against the bucketPactmane unlttecronlly one.affavnlarntion"anec thic honder aviet? what dhacoKeep going in Claude CodeSwitch to Claude Code and let Claude work directiv in vourrepo. running and testing as it goesfrom vouir terminal is the 30-second answer ir volt want to reallv see a 420. But voll'veWrite a message…Opus 4. AdaptiveXx Hubspot v• SearchYour team is now on the Free plan with 1 admin. You retain editing access and other members are read-only. View team permissions to see who can edit, or upgrade to restore collaborationCOLLECTIONS"rostriter, son, ane searen enm odectseg. successtul operationSe: An error occurredCRM Owners• GPM Dinelinec• DealsengagementsD OLD ENGAGEMENTSber list meetingsPost coarch tackeGET read cal) post coarch calleGET list callsPOST meetings scheduledGET aet meetingPOST get link to task› Hubspotv lteration run HSv GET Read Copyeg. An error occurred.ed. succeccful onerationv Iteration run Search HSPOST search contact by email Copy> Journal & webhoooks v4• ©Authi› Propertie:> RESCAPCHSEARCHIpost search contact by phonePost search contact ov emailPoSt coarch meetinaspost Soarch calle v2POST Search related meetinas v3POSt coarch doals> Tlicketsylisoful› Post filter der company onlv open deal stagesCaMiDANMeNreSPECS>FLOWS§ Connect Git E Console E TerminPOST Rea. • POST Rea.GET Rea •GET Rea •GET readu Iteration run Search HS • 20 VUs • May 07, 2026 15:24:13 (1 min) • Fixed profileSummaryTotal requests sent ©Requests/second ©Avg. response time ©P90©P95 ©74143120.90156 ms187 ms210 ms% 1008015.24-1815-24•2015-24•26|15-24-42POST search contact by email Copy7143118.400.000.00mIterationIterationlPOST seatP99 ©305 msError % ©0.00Failure % ©0,00hel"Lukas sterka 121• in zn omm lteration)IterationNo environmentSharePeak CPU % ©Peak Memory % ©98.8 %1913 %Filter bv reauestsAva, response266 ms 140 req/s100% 2Inu / May 10.20.24UparadeVXAlAll variablesNo environment selected, seled enulommeaGlobalstokenCKPur5PqMxIZQINQMI8kQE..baseUrlhttps://api.hubapi.comdev-tokenCLLm5NnQMxIRQINQMI8kQ.• Local VaultStore your APl secrets locally in vault. Set up vault15•24•5415.25.0015-25-12- Requests/second - Ava. response - Error % - Virtualusers *• CPU% *** Memory ⅞Min (ms)Max (ms)305Giobals Vault Tooks •- =...
|
NULL
|
3170406599066332029
|
NULL
|
idle
|
ocr
|
NULL
|
PostmancaltVIewWindowmelpHubSpot rate limit imple PostmancaltVIewWindowmelpHubSpot rate limit implementation strategy vThat gets you well past 11/sec. Each Newman process makes its calls sequentially, bumultiple Newman processes run concurrently.Option 4: Postman Pertormance Lesting (newer reature)If vour Postman version has it, Collection Runner has a Performance tab nowalonoside runctionab.t runs the col lection with connourable virtual users inparallel — set 20 virtual users. 30-second duration, and vou'll saturate the burstwindow without any external tooling. rath is kun collection Pertormance →ConfigureYou probablv don't actually need to hit itWorth pausing here: the goal of this exercise is to verify your limiter handles 429scorecivnont roucancotar win a mock winout ouimino rea auotaIn your test, fake a 429 response$mockResponse = new GuzzleHttp Psr7 Response(429.'Retry-After' =>'8',ison encode(lstatus ='error,'message' => "You have reached your secondly limit.,'errortype' =>"RATFTMTTE'policyName' => 'SECONDLY',Icorrolationtat =s'test-123',That gives vou the exact shape HubSpot returns. and vou can unit-test:• Parsing policyName correctly• Routing to the right queue's backoff• Honoring Retry-After• Not double-counting the failed call against the bucketPactmane unlttecronlly one.affavnlarntion"anec thic honder aviet? what dhacoKeep going in Claude CodeSwitch to Claude Code and let Claude work directiv in vourrepo. running and testing as it goesfrom vouir terminal is the 30-second answer ir volt want to reallv see a 420. But voll'veWrite a message…Opus 4. AdaptiveXx Hubspot v• SearchYour team is now on the Free plan with 1 admin. You retain editing access and other members are read-only. View team permissions to see who can edit, or upgrade to restore collaborationCOLLECTIONS"rostriter, son, ane searen enm odectseg. successtul operationSe: An error occurredCRM Owners• GPM Dinelinec• DealsengagementsD OLD ENGAGEMENTSber list meetingsPost coarch tackeGET read cal) post coarch calleGET list callsPOST meetings scheduledGET aet meetingPOST get link to task› Hubspotv lteration run HSv GET Read Copyeg. An error occurred.ed. succeccful onerationv Iteration run Search HSPOST search contact by email Copy> Journal & webhoooks v4• ©Authi› Propertie:> RESCAPCHSEARCHIpost search contact by phonePost search contact ov emailPoSt coarch meetinaspost Soarch calle v2POST Search related meetinas v3POSt coarch doals> Tlicketsylisoful› Post filter der company onlv open deal stagesCaMiDANMeNreSPECS>FLOWS§ Connect Git E Console E TerminPOST Rea. • POST Rea.GET Rea •GET Rea •GET readu Iteration run Search HS • 20 VUs • May 07, 2026 15:24:13 (1 min) • Fixed profileSummaryTotal requests sent ©Requests/second ©Avg. response time ©P90©P95 ©74143120.90156 ms187 ms210 ms% 1008015.24-1815-24•2015-24•26|15-24-42POST search contact by email Copy7143118.400.000.00mIterationIterationlPOST seatP99 ©305 msError % ©0.00Failure % ©0,00hel"Lukas sterka 121• in zn omm lteration)IterationNo environmentSharePeak CPU % ©Peak Memory % ©98.8 %1913 %Filter bv reauestsAva, response266 ms 140 req/s100% 2Inu / May 10.20.24UparadeVXAlAll variablesNo environment selected, seled enulommeaGlobalstokenCKPur5PqMxIZQINQMI8kQE..baseUrlhttps://api.hubapi.comdev-tokenCLLm5NnQMxIRQINQMI8kQ.• Local VaultStore your APl secrets locally in vault. Set up vault15•24•5415.25.0015-25-12- Requests/second - Ava. response - Error % - Virtualusers *• CPU% *** Memory ⅞Min (ms)Max (ms)305Giobals Vault Tooks •- =...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
3616
|
NULL
|
0
|
2026-05-07T12:30:11.775878+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-07/1778 /Users/lukas/.screenpipe/data/data/2026-05-07/1778157011775_m1.jpg...
|
PhpStorm
|
faVsco.js – Client.php
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
master, menu
Start Listen Project: faVsco.js, menu
master, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Search History
Hubspot
New Line
Replace History
Replace
New Line
Previous Occurrence
Next Occurrence
Search All
Search Backward
Search Forward
Match сase
Words
Regex
?
Close
[2026-05-07 12:28:10] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"d4ce87a9-6ca5-4efe-99b3-4220893270d0","trace_id":"724e8238-2ed5-4089-9509-9c7c12a3c373"}
[2026-05-07 12:28:10] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"d4ce87a9-6ca5-4efe-99b3-4220893270d0","trace_id":"724e8238-2ed5-4089-9509-9c7c12a3c373"}
[2026-05-07 12:28:10] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"d4ce87a9-6ca5-4efe-99b3-4220893270d0","trace_id":"724e8238-2ed5-4089-9509-9c7c12a3c373"}
[2026-05-07 12:28:14] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"172d1ae8-b8cc-4804-bed9-e32d074e265c","trace_id":"4817cdef-8d3e-4914-8bee-feffb18efe1b"}
[2026-05-07 12:28:14] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"172d1ae8-b8cc-4804-bed9-e32d074e265c","trace_id":"4817cdef-8d3e-4914-8bee-feffb18efe1b"}
[2026-05-07 12:28:17] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1499,"provider":"hubspot"} {"correlation_id":"273355f2-6315-4b20-bc9a-c26c681d6344","trace_id":"5ea79a26-c838-48e8-9913-93ad508146a6"}
[2026-05-07 12:28:17] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1499,"provider":"hubspot"} {"correlation_id":"273355f2-6315-4b20-bc9a-c26c681d6344","trace_id":"5ea79a26-c838-48e8-9913-93ad508146a6"}
[2026-05-07 12:28:17] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"273355f2-6315-4b20-bc9a-c26c681d6344","trace_id":"5ea79a26-c838-48e8-9913-93ad508146a6"}
[2026-05-07 12:28:17] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1499,"provider":"hubspot","refreshToken":"96f94c623a404e02ebdbf07f1b75707bb6cdbf848cbf45d418baf608c41a8d86","state":"connected"} {"correlation_id":"273355f2-6315-4b20-bc9a-c26c681d6344","trace_id":"5ea79a26-c838-48e8-9913-93ad508146a6"}
[2026-05-07 12:28:18] local.NOTICE: Monitoring start {"correlation_id":"31aa6b7d-00d6-448a-bdcc-a3d215b4aeb5","trace_id":"b8eb7fe5-8471-4ffb-9bfa-a804c8e1ff72"}
[2026-05-07 12:28:18] local.NOTICE: Monitoring end {"correlation_id":"31aa6b7d-00d6-448a-bdcc-a3d215b4aeb5","trace_id":"b8eb7fe5-8471-4ffb-9bfa-a804c8e1ff72"}
[2026-05-07 12:28:18] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"273355f2-6315-4b20-bc9a-c26c681d6344","trace_id":"5ea79a26-c838-48e8-9913-93ad508146a6"}
[2026-05-07 12:28:18] local.INFO: [SocialAccountObserver] Access token was modified, encrypting {"correlation_id":"273355f2-6315-4b20-bc9a-c26c681d6344","trace_id":"5ea79a26-c838-48e8-9913-93ad508146a6"}
[2026-05-07 12:28:18] local.INFO: [SocialAccountService] Token refreshed {"socialAccountId":1499,"provider":"hubspot","state":"connected"} {"correlation_id":"273355f2-6315-4b20-bc9a-c26c681d6344","trace_id":"5ea79a26-c838-48e8-9913-93ad508146a6"}
[2026-05-07 12:28:18] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {"crm_provider":"hubspot","crm_owner":148,"team_id":2} {"correlation_id":"273355f2-6315-4b20-bc9a-c26c681d6344","trace_id":"5ea79a26-c838-48e8-9913-93ad508146a6"}
[2026-05-07 12:28:19] local.INFO: [Hubspot] Failed to fetch opportunity {"crm_id":"374720564","reason":"[429] Client error: `GET https://api.hubapi.com/crm/v3/objects/deals/374720564?properties=hs_object_id%2Cdealname&associations=companies%2Ccontacts&archived=0` resulted in a `429 Too Many Requests` response:
{\"status\":\"error\",\"message\":\"You have reached your ten_secondly_rolling limit.\",\"errorType\":\"RATE_LIMIT\",\"correlationId\" (truncated...)
"} {"correlation_id":"273355f2-6315-4b20-bc9a-c26c681d6344","trace_id":"5ea79a26-c838-48e8-9913-93ad508146a6"}
[2026-05-07 12:28:19] local.ERROR: [429] Client error: `GET https://api.hubapi.com/crm/v3/objects/deals/374720564?properties=hs_object_id%2Cdealname&associations=companies%2Ccontacts&archived=0` resulted in a `429 Too Many Requests` response:
{"status":"error","message":"You have reached your ten_secondly_rolling limit.","errorType":"RATE_LIMIT","correlationId" (truncated...)
{"exception":"[object] (HubSpot\\Client\\Crm\\Deals\\ApiException(code: 429): [429] Client error: `GET https://api.hubapi.com/crm/v3/objects/deals/374720564?properties=hs_object_id%2Cdealname&associations=companies%2Ccontacts&archived=0` resulted in a `429 Too Many Requests` response:
{\"status\":\"error\",\"message\":\"You have reached your ten_secondly_rolling limit.\",\"errorType\":\"RATE_LIMIT\",\"correlationId\" (truncated...)
at /home/jiminny/vendor/hubspot/api-client/codegen/Crm/Deals/Api/BasicApi.php:704)
[stacktrace]
#0 /home/jiminny/vendor/hubspot/api-client/codegen/Crm/Deals/Api/BasicApi.php(676): HubSpot\\Client\\Crm\\Deals\\Api\\BasicApi->getByIdWithHttpInfo('374720564', 'hs_object_id,de...', 'companies,conta...', false, NULL)
#1 /home/jiminny/app/Services/Crm/Hubspot/Client.php(212): HubSpot\\Client\\Crm\\Deals\\Api\\BasicApi->getById('374720564', 'hs_object_id,de...', 'companies,conta...')
#2 /home/jiminny/app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php(130): Jiminny\\Services\\Crm\\Hubspot\\Client->getOpportunityById('374720564', Array)
#3 /home/jiminny/app/Console/Commands/JiminnyDebugCommand.php(351): Jiminny\\Services\\Crm\\Hubspot\\Service->syncOpportunity('374720564')
#4 /home/jiminny/app/Console/Commands/JiminnyDebugCommand.php(44): Jiminny\\Console\\Commands\\JiminnyDebugCommand->rateLimit()
#5 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Jiminny\\Console\\Commands\\JiminnyDebugCommand->handle(Object(Jiminny\\Jobs\\JobDispatcher), Object(Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService), Object(Jiminny\\Repositories\\AutomatedReportsRepository), Object(Jiminny\\Services\\UserPilot\\UserPilotClient))
#6 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\Container\\BoundMethod::Illuminate\\Container\\{closure}()
#7 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\Container\\Util::unwrapIfClosure(Object(Closure))
#8 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\Container\\BoundMethod::callBoundMethod(Object(Illuminate\\Foundation\\Application), Array, Object(Closure))
#9 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\Container\\BoundMethod::call(Object(Illuminate\\Foundation\\Application), Array, Array, NULL)
#10 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(211): Illuminate\\Container\\Container->call(Array)
#11 /home/jiminny/vendor/symfony/console/Command/Command.php(341): Illuminate\\Console\\Command->execute(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Illuminate\\Console\\OutputStyle))
#12 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(180): Symfony\\Component\\Console\\Command\\Command->run(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Illuminate\\Console\\OutputStyle))
#13 /home/jiminny/vendor/symfony/console/Application.php(1117): Illuminate\\Console\\Command->run(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Symfony\\Component\\Console\\Output\\ConsoleOutput))
#14 /home/jiminny/vendor/symfony/console/Application.php(356): Symfony\\Component\\Console\\Application->doRunCommand(Object(Jiminny\\Console\\Commands\\JiminnyDebugCommand), Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Symfony\\Component\\Console\\Output\\ConsoleOutput))
#15 /home/jiminny/vendor/symfony/console/Application.php(195): Symfony\\Component\\Console\\Application->doRun(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Symfony\\Component\\Console\\Output\\ConsoleOutput))
#16 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(198): Symfony\\Component\\Console\\Application->run(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Symfony\\Component\\Console\\Output\\ConsoleOutput))
#17 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1235): Illuminate\\Foundation\\Console\\Kernel->handle(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Symfony\\Component\\Console\\Output\\ConsoleOutput))
#18 /home/jiminny/artisan(13): Illuminate\\Foundation\\Application->handleCommand(Object(Symfony\\Component\\Console\\Input\\ArgvInput))
#19 {main}
"} {"correlation_id":"273355f2-6315-4b20-bc9a-c26c681d6344","trace_id":"5ea79a26-c838-48e8-9913-93ad508146a6"}
[2026-05-07 12:28:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"dcb9b24b-e2e5-41fe-81db-212b3ca9ff7d","trace_id":"1ea62b83-9639-41e3-a523-26404c39fa80"}
[2026-05-07 12:28:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"dcb9b24b-e2e5-41fe-81db-212b3ca9ff7d","trace_id":"1ea62b83-9639-41e3-a523-26404c39fa80"}
[2026-05-07 12:28:24] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"d191d5c6-133f-43e1-8ed4-d285d0c768b8","trace_id":"67798138-bdb7-4bd7-8b32-377663219a88"}
[2026-05-07 12:28:24] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"d191d5c6-133f-43e1-8ed4-d285d0c768b8","trace_id":"67798138-bdb7-4bd7-8b32-377663219a88"}
[2026-05-07 12:28:24] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"d191d5c6-133f-43e1-8ed4-d285d0c768b8","trace_id":"67798138-bdb7-4bd7-8b32-377663219a88"}
[2026-05-07 12:28:24] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"d191d5c6-133f-43e1-8ed4-d285d0c768b8","trace_id":"67798138-bdb7-4bd7-8b32-377663219a88"}
[2026-05-07 12:28:27] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:count","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"a4e5e18f-9f8c-4196-ace0-bf664d4827d9","trace_id":"d75cb10b-4c76-4c00-84d4-26efeb738e17"}
[2026-05-07 12:28:27] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:26:00, 2026-05-07 12:28:00] {"correlation_id":"a4e5e18f-9f8c-4196-ace0-bf664d4827d9","trace_id":"d75cb10b-4c76-4c00-84d4-26efeb738e17"}
[2026-05-07 12:28:27] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:26:00, 2026-05-07 12:28:00] {"correlation_id":"a4e5e18f-9f8c-4196-ace0-bf664d4827d9","trace_id":"d75cb10b-4c76-4c00-84d4-26efeb738e17"}
[2026-05-07 12:28:27] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:count","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"a4e5e18f-9f8c-4196-ace0-bf664d4827d9","trace_id":"d75cb10b-4c76-4c00-84d4-26efeb738e17"}
[2026-05-07 12:28:30] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"calendar:sync","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:30] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:retry-failed","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"3789f06a-4f0c-4b12-be80-d6a36e089d1b","trace_id":"6ce89147-1624-456d-9e75-f4948f2c5db8"}
[2026-05-07 12:28:30] local.NOTICE: Calendar sync start {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:30] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:retry-failed","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"3789f06a-4f0c-4b12-be80-d6a36e089d1b","trace_id":"6ce89147-1624-456d-9e75-f4948f2c5db8"}
[2026-05-07 12:28:31] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1393,"provider":"google"} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:31] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1393,"provider":"google"} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:31] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:31] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1393,"provider":"google","refreshToken":"5aa7e2d96b53201cd16fca5d2e4ef3ad03320971fc064781d18aee3ae7b99fbf","state":"full-refresh"} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:31] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1393,"provider":"google","responseBody":{"error":"invalid_grant","error_description":"Account has been deleted"}} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:31] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:31] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1393,"provider":"google","reason":"Flow refresh required."} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:31] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1387,"provider":"google"} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:31] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1387,"provider":"google"} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:31] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:31] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1387,"provider":"google","refreshToken":"8157ac6de94842937194009e9c50e459253600f799dacf6a40755ffdbeb5bba6","state":"full-refresh"} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:31] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1387,"provider":"google","responseBody":{"error":"invalid_grant","error_description":"Account has been deleted"}} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:31] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:31] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1387,"provider":"google","reason":"Flow refresh required."} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:31] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1348,"provider":"google"} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:31] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1348,"provider":"google"} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:31] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:31] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1348,"provider":"google","refreshToken":"9e7d13d3032d0cb1b79d8e95aef01383e8e91eb52ff8ee960c8a0b6b95cd8c73","state":"full-refresh"} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:31] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1348,"provider":"google","responseBody":{"error":"invalid_grant","error_description":"Bad Request"}} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:31] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:31] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1348,"provider":"google","reason":"Flow refresh required."} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:31] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1361,"provider":"google"} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:31] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1361,"provider":"google"} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:31] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:31] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1361,"provider":"google","refreshToken":"6c843da199c2b9907445329304fcc4ec5057a4ee748d8299641764395c08e1fd","state":"full-refresh"} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:32] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1361,"provider":"google","responseBody":{"error":"invalid_grant","error_description":"Account has been deleted"}} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:32] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:32] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1361,"provider":"google","reason":"Flow refresh required."} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:32] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1310,"provider":"google"} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:32] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1310,"provider":"google"} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:32] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:32] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1310,"provider":"google","refreshToken":"e34818922c2830a660813a63f6169a4a9a992ae2cccd7dc8dd7796cfdb470ef1","state":"full-refresh"} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:32] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1310,"provider":"google","responseBody":{"error":"invalid_grant","error_description":"Bad Request"}} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:32] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:32] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1310,"provider":"google","reason":"Flow refresh required."} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:32] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1333,"provider":"google"} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:32] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1333,"provider":"google"} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:32] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:32] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1333,"provider":"google","refreshToken":"6c902986546d8e8da1dc539b046cdc1d458f519acc972e5b5f1d6a1a295165e0","state":"full-refresh"} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:32] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1333,"provider":"google","responseBody":{"error":"unauthorized_client","error_description":"Unauthorized"}} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:32] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:32] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1333,"provider":"google","reason":"Flow refresh required."} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:32] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1368,"provider":"google"} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:32] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1368,"provider":"google"} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:32] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:32] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1368,"provider":"google","refreshToken":"d2f128898ff8543bd16b69cfae37896ab85119b0f5ed2b431d739593bb600333","state":"full-refresh"} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:32] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1368,"provider":"google","responseBody":{"error":"invalid_grant","error_description":"Bad Request"}} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:32] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:32] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1368,"provider":"google","reason":"Flow refresh required."} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:32] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1365,"provider":"google"} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:32] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1365,"provider":"google"} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:32] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:32] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1365,"provider":"google","refreshToken":"7676e4a9afcd082b413248ab5ec6e487021fec6a9bdf315860a59cefad9caad8","state":"full-refresh"} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:33] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1365,"provider":"google","responseBody":{"error":"unauthorized_client","error_description":"Unauthorized"}} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:33] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:33] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1365,"provider":"google","reason":"Flow refresh required."} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:33] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1364,"provider":"google"} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:33] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1364,"provider":"google"} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:33] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:33] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1364,"provider":"google","refreshToken":"dd5882ebce76e645292ce33ae74238abbb77c0a4ecc6a2bfe723cad82e72ba8e","state":"full-refresh"} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:33] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1364,"provider":"google","responseBody":{"error":"unauthorized_client","error_description":"Unauthorized"}} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:33] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:33] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1364,"provider":"google","reason":"Flow refresh required."} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:33] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1370,"provider":"office"} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:33] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1370,"provider":"office"} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:33] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:33] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1370,"provider":"office","refreshToken":"b7ee8035306d0043cea6e00e7c4fe14f745e44074a1194db62a31cdf8b70af3e","state":"full-refresh"} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:33] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1370,"provider":"office","responseBody":"{\"error\":\"invalid_client\",\"error_description\":\"AADSTS7000215: Invalid client secret provided. Ensure the secret being sent in the request is the client secret value, not the client secret ID, for a secret added to app 'bbcbb2ef-6200-4fae-82bd-d81f5dd738da'. Trace ID: e890fdc1-dbe8-4a59-ae57-2af6bced3c00 Correlation ID: 57554cdf-16df-47f1-b0d9-5f0b8da37afe Timestamp: 2026-05-07 12:28:33Z\",\"error_codes\":[7000215],\"timestamp\":\"2026-05-07 12:28:33Z\",\"trace_id\":\"e890fdc1-dbe8-4a59-ae57-2af6bced3c00\",\"correlation_id\":\"57554cdf-16df-47f1-b0d9-5f0b8da37afe\",\"error_uri\":\"https://login.microsoftonline.com/error?code=7000215\"}"} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:33] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:33] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1370,"provider":"office","reason":"Flow refresh required."} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:33] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1202,"provider":"office"} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:33] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1202,"provider":"office"} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:33] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:33] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1202,"provider":"office","refreshToken":"b458799ccc29b21a6e2eb5260fdb63e49ccba21bf942a3973fb63799bd7f0afe","state":"full-refresh"} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:34] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1202,"provider":"office","responseBody":"{\"error\":\"invalid_client\",\"error_description\":\"AADSTS7000215: Invalid client secret provided. Ensure the secret being sent in the request is the client secret value, not the client secret ID, for a secret added to app 'bbcbb2ef-6200-4fae-82bd-d81f5dd738da'. Trace ID: 2a3e5b60-5770-46f2-aca6-7b0527363000 Correlation ID: 57bb0b73-9ea6-4bcf-a8f4-6e211dbb94e2 Timestamp: 2026-05-07 12:28:34Z\",\"error_codes\":[7000215],\"timestamp\":\"2026-05-07 12:28:34Z\",\"trace_id\":\"2a3e5b60-5770-46f2-aca6-7b0527363000\",\"correlation_id\":\"57bb0b73-9ea6-4bcf-a8f4-6e211dbb94e2\",\"error_uri\":\"https://login.microsoftonline.com/error?code=7000215\"}"} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:34] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:34] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1202,"provider":"office","reason":"Flow refresh required."} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:34] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1502,"provider":"google"} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:34] local.INFO: [SocialAccountService] Token retrieved {"socialAccountId":1502,"provider":"google"} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:34] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:34] local.INFO: Calendar sync job dispatched {"calendar_id":501} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:34] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1300,"provider":"google"} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:34] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1300,"provider":"google"} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:34] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:34] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1300,"provider":"google","refreshToken":"4b811db0725fd9602a95943519a7da935e2a5065da7d9ebfcb170752e3e1ddb8","state":"full-refresh"} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:34] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1300,"provider":"google","responseBody":{"error":"invalid_grant","error_description":"Account has been deleted"}} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:34] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:34] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1300,"provider":"google","reason":"Flow refresh required."} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:35] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1409,"provider":"google"} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:35] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1409,"provider":"google"} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:35] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:35] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1409,"provider":"google","refreshToken":"e2a3f2d06894894eed1ee87d9db1ace77d4d42ee6e1288a8940ad2c10333b0c4","state":"full-refresh"} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:35] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1409,"provider":"google","responseBody":{"error":"invalid_grant","error_description":"Bad Request"}} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:35] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:35] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1409,"provider":"google","reason":"Flow refresh required."} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:35] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1352,"provider":"google"} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:35] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1352,"provider":"google"} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:35] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:35] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1352,"provider":"google","refreshToken":"dd4b16b00fdc1216da6b717c02338c073636e29162826b2de6db3f064fc029eb","state":"full-refresh"} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:35] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1352,"provider":"google","responseBody":{"error":"unauthorized_client","error_description":"Unauthorized"}} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:35] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:35] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1352,"provider":"google","reason":"Flow refresh required."} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:35] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1296,"provider":"office"} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:35] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1296,"provider":"office"} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:35] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:35] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1296,"provider":"office","refreshToken":"011ae723c9d800c674e0b4be76f49fc046dac7d501b66c59ef0d9549cfa56ae5","state":"full-refresh"} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:35] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1502,"provider":"google"} {"correlation_id":"3015918c-9edf-487d-b1d0-97c9d00ea6b1","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:35] local.INFO: [SocialAccountService] Token retrieved {"socialAccountId":1502,"provider":"google"} {"correlation_id":"3015918c-9edf-487d-b1d0-97c9d00ea6b1","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:35] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"3015918c-9edf-487d-b1d0-97c9d00ea6b1","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:35] local.INFO: [Calendar] Processing sync {"calendarId":"a33076c1-8d97-431a-99f0-85c9524e118b","from":null,"to":null,"delta":"CIiFh8TP44kDEIiFh8TP44kDGAUgkZvkzgIokZvkzgI=","last_sync":"2024-12-09 07:12:53","dateMode":"daily"} {"correlation_id":"3015918c-9edf-487d-b1d0-97c9d00ea6b1","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:35] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {"crm_provider":"integration-app","crm_owner":1695,"team_id":3143} {"correlation_id":"3015918c-9edf-487d-b1d0-97c9d00ea6b1","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:35] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1502,"provider":"google"} {"correlation_id":"3015918c-9edf-487d-b1d0-97c9d00ea6b1","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:35] local.INFO: [SocialAccountService] Token retrieved {"socialAccountId":1502,"provider":"google"} {"correlation_id":"3015918c-9edf-487d-b1d0-97c9d00ea6b1","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:35] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"3015918c-9edf-487d-b1d0-97c9d00ea6b1","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:35] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1296,"provider":"office","responseBody":"{\"error\":\"invalid_client\",\"error_description\":\"AADSTS7000215: Invalid client secret provided. Ensure the secret being sent in the request is the client secret value, not the client secret ID, for a secret added to app 'bbcbb2ef-6200-4fae-82bd-d81f5dd738da'. Trace ID: 2e34e335-a76d-40e5-bc50-3861392e4c00 Correlation ID: 9db5b389-6165-4feb-8e6e-bedc369e1c87 Timestamp: 2026-05-07 12:28:35Z\",\"error_codes\":[7000215],\"timestamp\":\"2026-05-07 12:28:35Z\",\"trace_id\":\"2e34e335-a76d-40e5-bc50-3861392e4c00\",\"correlation_id\":\"9db5b389-6165-4feb-8e6e-bedc369e1c87\",\"error_uri\":\"https://login.microsoftonline.com/error?code=7000215\"}"} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:35] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:35] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1296,"provider":"office","reason":"Flow refresh required."} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:35] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":391,"provider":"office"} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:35] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":391,"provider":"office"} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:35] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:35] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":391,"provider":"office","refreshToken":"00045eebae0f39b34887c6d53f92ae78064f7145e1f4b67754aebd03cfb2d881","state":"full-refresh"} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:36] local.INFO: [Google Calendar] Failed to watch channel for calendar {"calendarId":"a33076c1-8d97-431a-99f0-85c9524e118b","code":400,"reason":"{
\"error\": {
\"errors\": [
{
\"domain\": \"global\",
\"reason\": \"push.webhookUrlNotHttps\",
\"message\": \"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\"
}
],
\"code\": 400,
\"message\": \"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\"
}
}"} {"correlation_id":"3015918c-9edf-487d-b1d0-97c9d00ea6b1","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:36] local.WARNING: [Calendar] Sync failed {"calendarId":"a33076c1-8d97-431a-99f0-85c9524e118b","code":400,"reason":"{
\"error\": {
\"errors\": [
{
\"domain\": \"global\",
\"reason\": \"push.webhookUrlNotHttps\",
\"message\": \"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\"
}
],
\"code\": 400,
\"message\": \"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\"
}
}"} {"correlation_id":"3015918c-9edf-487d-b1d0-97c9d00ea6b1","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:36] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":391,"provider":"office","responseBody":"{\"error\":\"invalid_client\",\"error_description\":\"AADSTS7000215: Invalid client secret provided. Ensure the secret being sent in the request is the client secret value, not the client secret ID, for a secret added to app 'bbcbb2ef-6200-4fae-82bd-d81f5dd738da'. Trace ID: 6eba7173-b781-4e55-b1fb-1087ed023000 Correlation ID: 3086e346-c6eb-4f1c-8b1d-a477ce3821f4 Timestamp: 2026-05-07 12:28:36Z\",\"error_codes\":[7000215],\"timestamp\":\"2026-05-07 12:28:36Z\",\"trace_id\":\"6eba7173-b781-4e55-b1fb-1087ed023000\",\"correlation_id\":\"3086e346-c6eb-4f1c-8b1d-a477ce3821f4\",\"error_uri\":\"https://login.microsoftonline.com/error?code=7000215\"}"} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:36] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:36] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":391,"provider":"office","reason":"Flow refresh required."} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:37] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1271,"provider":"office"} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:37] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1271,"provider":"office"} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:37] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:37] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1271,"provider":"office","refreshToken":"118cde2c06993147b07ccaec4cbcd5026a819dea6c71081166a492933e392afb","state":"full-refresh"} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:37] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1271,"provider":"office","responseBody":"{\"error\":\"invalid_client\",\"error_description\":\"AADSTS7000215: Invalid client secret provided...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"on_screen":true,"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"master, menu","depth":5,"on_screen":true,"help_text":"Git Branch: master<br/>Some incoming commits are not fetched<br/>","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Start Listening for PHP Debug Connections","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"AskJiminnyReportActivityServiceTest","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'AskJiminnyReportActivityServiceTest'","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'AskJiminnyReportActivityServiceTest'","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More Actions","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JetBrains AI","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Search Everywhere","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"IDE and Project Settings","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Search History","depth":3,"on_screen":true,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"Hubspot","depth":4,"on_screen":true,"value":"Hubspot","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"New Line","depth":3,"on_screen":true,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Replace History","depth":3,"bounds":{"left":0.0,"top":0.0,"width":0.015277778,"height":0.024444444},"on_screen":false,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"Replace","depth":4,"on_screen":false,"role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"New Line","depth":3,"bounds":{"left":0.0,"top":0.0,"width":0.015277778,"height":0.024444444},"on_screen":false,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Previous Occurrence","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Occurrence","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Search All","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Search Backward","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Search Forward","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Match сase","depth":4,"on_screen":true,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Words","depth":4,"on_screen":true,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Regex","depth":4,"on_screen":true,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"?","depth":4,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"[2026-05-07 12:28:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"d4ce87a9-6ca5-4efe-99b3-4220893270d0\",\"trace_id\":\"724e8238-2ed5-4089-9509-9c7c12a3c373\"}\n[2026-05-07 12:28:10] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"d4ce87a9-6ca5-4efe-99b3-4220893270d0\",\"trace_id\":\"724e8238-2ed5-4089-9509-9c7c12a3c373\"}\n[2026-05-07 12:28:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"d4ce87a9-6ca5-4efe-99b3-4220893270d0\",\"trace_id\":\"724e8238-2ed5-4089-9509-9c7c12a3c373\"}\n[2026-05-07 12:28:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"172d1ae8-b8cc-4804-bed9-e32d074e265c\",\"trace_id\":\"4817cdef-8d3e-4914-8bee-feffb18efe1b\"}\n[2026-05-07 12:28:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"172d1ae8-b8cc-4804-bed9-e32d074e265c\",\"trace_id\":\"4817cdef-8d3e-4914-8bee-feffb18efe1b\"}\n[2026-05-07 12:28:17] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"273355f2-6315-4b20-bc9a-c26c681d6344\",\"trace_id\":\"5ea79a26-c838-48e8-9913-93ad508146a6\"}\n[2026-05-07 12:28:17] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"273355f2-6315-4b20-bc9a-c26c681d6344\",\"trace_id\":\"5ea79a26-c838-48e8-9913-93ad508146a6\"}\n[2026-05-07 12:28:17] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"273355f2-6315-4b20-bc9a-c26c681d6344\",\"trace_id\":\"5ea79a26-c838-48e8-9913-93ad508146a6\"}\n[2026-05-07 12:28:17] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1499,\"provider\":\"hubspot\",\"refreshToken\":\"96f94c623a404e02ebdbf07f1b75707bb6cdbf848cbf45d418baf608c41a8d86\",\"state\":\"connected\"} {\"correlation_id\":\"273355f2-6315-4b20-bc9a-c26c681d6344\",\"trace_id\":\"5ea79a26-c838-48e8-9913-93ad508146a6\"}\n[2026-05-07 12:28:18] local.NOTICE: Monitoring start {\"correlation_id\":\"31aa6b7d-00d6-448a-bdcc-a3d215b4aeb5\",\"trace_id\":\"b8eb7fe5-8471-4ffb-9bfa-a804c8e1ff72\"}\n[2026-05-07 12:28:18] local.NOTICE: Monitoring end {\"correlation_id\":\"31aa6b7d-00d6-448a-bdcc-a3d215b4aeb5\",\"trace_id\":\"b8eb7fe5-8471-4ffb-9bfa-a804c8e1ff72\"}\n[2026-05-07 12:28:18] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"273355f2-6315-4b20-bc9a-c26c681d6344\",\"trace_id\":\"5ea79a26-c838-48e8-9913-93ad508146a6\"}\n[2026-05-07 12:28:18] local.INFO: [SocialAccountObserver] Access token was modified, encrypting {\"correlation_id\":\"273355f2-6315-4b20-bc9a-c26c681d6344\",\"trace_id\":\"5ea79a26-c838-48e8-9913-93ad508146a6\"}\n[2026-05-07 12:28:18] local.INFO: [SocialAccountService] Token refreshed {\"socialAccountId\":1499,\"provider\":\"hubspot\",\"state\":\"connected\"} {\"correlation_id\":\"273355f2-6315-4b20-bc9a-c26c681d6344\",\"trace_id\":\"5ea79a26-c838-48e8-9913-93ad508146a6\"}\n[2026-05-07 12:28:18] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":148,\"team_id\":2} {\"correlation_id\":\"273355f2-6315-4b20-bc9a-c26c681d6344\",\"trace_id\":\"5ea79a26-c838-48e8-9913-93ad508146a6\"}\n[2026-05-07 12:28:19] local.INFO: [Hubspot] Failed to fetch opportunity {\"crm_id\":\"374720564\",\"reason\":\"[429] Client error: `GET https://api.hubapi.com/crm/v3/objects/deals/374720564?properties=hs_object_id%2Cdealname&associations=companies%2Ccontacts&archived=0` resulted in a `429 Too Many Requests` response:\n{\\\"status\\\":\\\"error\\\",\\\"message\\\":\\\"You have reached your ten_secondly_rolling limit.\\\",\\\"errorType\\\":\\\"RATE_LIMIT\\\",\\\"correlationId\\\" (truncated...)\n\"} {\"correlation_id\":\"273355f2-6315-4b20-bc9a-c26c681d6344\",\"trace_id\":\"5ea79a26-c838-48e8-9913-93ad508146a6\"}\n[2026-05-07 12:28:19] local.ERROR: [429] Client error: `GET https://api.hubapi.com/crm/v3/objects/deals/374720564?properties=hs_object_id%2Cdealname&associations=companies%2Ccontacts&archived=0` resulted in a `429 Too Many Requests` response:\n{\"status\":\"error\",\"message\":\"You have reached your ten_secondly_rolling limit.\",\"errorType\":\"RATE_LIMIT\",\"correlationId\" (truncated...)\n {\"exception\":\"[object] (HubSpot\\\\Client\\\\Crm\\\\Deals\\\\ApiException(code: 429): [429] Client error: `GET https://api.hubapi.com/crm/v3/objects/deals/374720564?properties=hs_object_id%2Cdealname&associations=companies%2Ccontacts&archived=0` resulted in a `429 Too Many Requests` response:\n{\\\"status\\\":\\\"error\\\",\\\"message\\\":\\\"You have reached your ten_secondly_rolling limit.\\\",\\\"errorType\\\":\\\"RATE_LIMIT\\\",\\\"correlationId\\\" (truncated...)\n at /home/jiminny/vendor/hubspot/api-client/codegen/Crm/Deals/Api/BasicApi.php:704)\n[stacktrace]\n#0 /home/jiminny/vendor/hubspot/api-client/codegen/Crm/Deals/Api/BasicApi.php(676): HubSpot\\\\Client\\\\Crm\\\\Deals\\\\Api\\\\BasicApi->getByIdWithHttpInfo('374720564', 'hs_object_id,de...', 'companies,conta...', false, NULL)\n#1 /home/jiminny/app/Services/Crm/Hubspot/Client.php(212): HubSpot\\\\Client\\\\Crm\\\\Deals\\\\Api\\\\BasicApi->getById('374720564', 'hs_object_id,de...', 'companies,conta...')\n#2 /home/jiminny/app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php(130): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client->getOpportunityById('374720564', Array)\n#3 /home/jiminny/app/Console/Commands/JiminnyDebugCommand.php(351): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service->syncOpportunity('374720564')\n#4 /home/jiminny/app/Console/Commands/JiminnyDebugCommand.php(44): Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand->rateLimit()\n#5 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand->handle(Object(Jiminny\\\\Jobs\\\\JobDispatcher), Object(Jiminny\\\\Services\\\\Kiosk\\\\AutomatedReports\\\\AutomatedReportsService), Object(Jiminny\\\\Repositories\\\\AutomatedReportsRepository), Object(Jiminny\\\\Services\\\\UserPilot\\\\UserPilotClient))\n#6 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#7 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#8 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#9 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#10 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(211): Illuminate\\\\Container\\\\Container->call(Array)\n#11 /home/jiminny/vendor/symfony/console/Command/Command.php(341): Illuminate\\\\Console\\\\Command->execute(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#12 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(180): Symfony\\\\Component\\\\Console\\\\Command\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#13 /home/jiminny/vendor/symfony/console/Application.php(1117): Illuminate\\\\Console\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#14 /home/jiminny/vendor/symfony/console/Application.php(356): Symfony\\\\Component\\\\Console\\\\Application->doRunCommand(Object(Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand), Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#15 /home/jiminny/vendor/symfony/console/Application.php(195): Symfony\\\\Component\\\\Console\\\\Application->doRun(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#16 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(198): Symfony\\\\Component\\\\Console\\\\Application->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#17 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1235): Illuminate\\\\Foundation\\\\Console\\\\Kernel->handle(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#18 /home/jiminny/artisan(13): Illuminate\\\\Foundation\\\\Application->handleCommand(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput))\n#19 {main}\n\"} {\"correlation_id\":\"273355f2-6315-4b20-bc9a-c26c681d6344\",\"trace_id\":\"5ea79a26-c838-48e8-9913-93ad508146a6\"}\n[2026-05-07 12:28:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"dcb9b24b-e2e5-41fe-81db-212b3ca9ff7d\",\"trace_id\":\"1ea62b83-9639-41e3-a523-26404c39fa80\"}\n[2026-05-07 12:28:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"dcb9b24b-e2e5-41fe-81db-212b3ca9ff7d\",\"trace_id\":\"1ea62b83-9639-41e3-a523-26404c39fa80\"}\n[2026-05-07 12:28:24] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"d191d5c6-133f-43e1-8ed4-d285d0c768b8\",\"trace_id\":\"67798138-bdb7-4bd7-8b32-377663219a88\"}\n[2026-05-07 12:28:24] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"d191d5c6-133f-43e1-8ed4-d285d0c768b8\",\"trace_id\":\"67798138-bdb7-4bd7-8b32-377663219a88\"}\n[2026-05-07 12:28:24] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"d191d5c6-133f-43e1-8ed4-d285d0c768b8\",\"trace_id\":\"67798138-bdb7-4bd7-8b32-377663219a88\"}\n[2026-05-07 12:28:24] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"d191d5c6-133f-43e1-8ed4-d285d0c768b8\",\"trace_id\":\"67798138-bdb7-4bd7-8b32-377663219a88\"}\n[2026-05-07 12:28:27] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"a4e5e18f-9f8c-4196-ace0-bf664d4827d9\",\"trace_id\":\"d75cb10b-4c76-4c00-84d4-26efeb738e17\"}\n[2026-05-07 12:28:27] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:26:00, 2026-05-07 12:28:00] {\"correlation_id\":\"a4e5e18f-9f8c-4196-ace0-bf664d4827d9\",\"trace_id\":\"d75cb10b-4c76-4c00-84d4-26efeb738e17\"}\n[2026-05-07 12:28:27] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:26:00, 2026-05-07 12:28:00] {\"correlation_id\":\"a4e5e18f-9f8c-4196-ace0-bf664d4827d9\",\"trace_id\":\"d75cb10b-4c76-4c00-84d4-26efeb738e17\"}\n[2026-05-07 12:28:27] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"a4e5e18f-9f8c-4196-ace0-bf664d4827d9\",\"trace_id\":\"d75cb10b-4c76-4c00-84d4-26efeb738e17\"}\n[2026-05-07 12:28:30] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"calendar:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:30] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"3789f06a-4f0c-4b12-be80-d6a36e089d1b\",\"trace_id\":\"6ce89147-1624-456d-9e75-f4948f2c5db8\"}\n[2026-05-07 12:28:30] local.NOTICE: Calendar sync start {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:30] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"3789f06a-4f0c-4b12-be80-d6a36e089d1b\",\"trace_id\":\"6ce89147-1624-456d-9e75-f4948f2c5db8\"}\n[2026-05-07 12:28:31] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1393,\"provider\":\"google\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:31] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1393,\"provider\":\"google\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:31] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:31] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1393,\"provider\":\"google\",\"refreshToken\":\"5aa7e2d96b53201cd16fca5d2e4ef3ad03320971fc064781d18aee3ae7b99fbf\",\"state\":\"full-refresh\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:31] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1393,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Account has been deleted\"}} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:31] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:31] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1393,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:31] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1387,\"provider\":\"google\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:31] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1387,\"provider\":\"google\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:31] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:31] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1387,\"provider\":\"google\",\"refreshToken\":\"8157ac6de94842937194009e9c50e459253600f799dacf6a40755ffdbeb5bba6\",\"state\":\"full-refresh\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:31] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1387,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Account has been deleted\"}} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:31] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:31] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1387,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:31] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1348,\"provider\":\"google\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:31] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1348,\"provider\":\"google\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:31] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:31] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1348,\"provider\":\"google\",\"refreshToken\":\"9e7d13d3032d0cb1b79d8e95aef01383e8e91eb52ff8ee960c8a0b6b95cd8c73\",\"state\":\"full-refresh\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:31] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1348,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Bad Request\"}} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:31] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:31] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1348,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:31] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1361,\"provider\":\"google\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:31] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1361,\"provider\":\"google\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:31] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:31] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1361,\"provider\":\"google\",\"refreshToken\":\"6c843da199c2b9907445329304fcc4ec5057a4ee748d8299641764395c08e1fd\",\"state\":\"full-refresh\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:32] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1361,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Account has been deleted\"}} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:32] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:32] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1361,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:32] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1310,\"provider\":\"google\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:32] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1310,\"provider\":\"google\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:32] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:32] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1310,\"provider\":\"google\",\"refreshToken\":\"e34818922c2830a660813a63f6169a4a9a992ae2cccd7dc8dd7796cfdb470ef1\",\"state\":\"full-refresh\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:32] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1310,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Bad Request\"}} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:32] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:32] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1310,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:32] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1333,\"provider\":\"google\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:32] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1333,\"provider\":\"google\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:32] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:32] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1333,\"provider\":\"google\",\"refreshToken\":\"6c902986546d8e8da1dc539b046cdc1d458f519acc972e5b5f1d6a1a295165e0\",\"state\":\"full-refresh\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:32] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1333,\"provider\":\"google\",\"responseBody\":{\"error\":\"unauthorized_client\",\"error_description\":\"Unauthorized\"}} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:32] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:32] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1333,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:32] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1368,\"provider\":\"google\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:32] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1368,\"provider\":\"google\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:32] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:32] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1368,\"provider\":\"google\",\"refreshToken\":\"d2f128898ff8543bd16b69cfae37896ab85119b0f5ed2b431d739593bb600333\",\"state\":\"full-refresh\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:32] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1368,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Bad Request\"}} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:32] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:32] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1368,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:32] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1365,\"provider\":\"google\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:32] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1365,\"provider\":\"google\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:32] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:32] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1365,\"provider\":\"google\",\"refreshToken\":\"7676e4a9afcd082b413248ab5ec6e487021fec6a9bdf315860a59cefad9caad8\",\"state\":\"full-refresh\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:33] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1365,\"provider\":\"google\",\"responseBody\":{\"error\":\"unauthorized_client\",\"error_description\":\"Unauthorized\"}} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:33] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:33] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1365,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:33] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1364,\"provider\":\"google\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:33] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1364,\"provider\":\"google\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:33] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:33] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1364,\"provider\":\"google\",\"refreshToken\":\"dd5882ebce76e645292ce33ae74238abbb77c0a4ecc6a2bfe723cad82e72ba8e\",\"state\":\"full-refresh\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:33] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1364,\"provider\":\"google\",\"responseBody\":{\"error\":\"unauthorized_client\",\"error_description\":\"Unauthorized\"}} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:33] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:33] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1364,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:33] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1370,\"provider\":\"office\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:33] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1370,\"provider\":\"office\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:33] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:33] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1370,\"provider\":\"office\",\"refreshToken\":\"b7ee8035306d0043cea6e00e7c4fe14f745e44074a1194db62a31cdf8b70af3e\",\"state\":\"full-refresh\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:33] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1370,\"provider\":\"office\",\"responseBody\":\"{\\\"error\\\":\\\"invalid_client\\\",\\\"error_description\\\":\\\"AADSTS7000215: Invalid client secret provided. Ensure the secret being sent in the request is the client secret value, not the client secret ID, for a secret added to app 'bbcbb2ef-6200-4fae-82bd-d81f5dd738da'. Trace ID: e890fdc1-dbe8-4a59-ae57-2af6bced3c00 Correlation ID: 57554cdf-16df-47f1-b0d9-5f0b8da37afe Timestamp: 2026-05-07 12:28:33Z\\\",\\\"error_codes\\\":[7000215],\\\"timestamp\\\":\\\"2026-05-07 12:28:33Z\\\",\\\"trace_id\\\":\\\"e890fdc1-dbe8-4a59-ae57-2af6bced3c00\\\",\\\"correlation_id\\\":\\\"57554cdf-16df-47f1-b0d9-5f0b8da37afe\\\",\\\"error_uri\\\":\\\"https://login.microsoftonline.com/error?code=7000215\\\"}\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:33] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:33] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1370,\"provider\":\"office\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:33] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1202,\"provider\":\"office\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:33] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1202,\"provider\":\"office\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:33] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:33] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1202,\"provider\":\"office\",\"refreshToken\":\"b458799ccc29b21a6e2eb5260fdb63e49ccba21bf942a3973fb63799bd7f0afe\",\"state\":\"full-refresh\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:34] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1202,\"provider\":\"office\",\"responseBody\":\"{\\\"error\\\":\\\"invalid_client\\\",\\\"error_description\\\":\\\"AADSTS7000215: Invalid client secret provided. Ensure the secret being sent in the request is the client secret value, not the client secret ID, for a secret added to app 'bbcbb2ef-6200-4fae-82bd-d81f5dd738da'. Trace ID: 2a3e5b60-5770-46f2-aca6-7b0527363000 Correlation ID: 57bb0b73-9ea6-4bcf-a8f4-6e211dbb94e2 Timestamp: 2026-05-07 12:28:34Z\\\",\\\"error_codes\\\":[7000215],\\\"timestamp\\\":\\\"2026-05-07 12:28:34Z\\\",\\\"trace_id\\\":\\\"2a3e5b60-5770-46f2-aca6-7b0527363000\\\",\\\"correlation_id\\\":\\\"57bb0b73-9ea6-4bcf-a8f4-6e211dbb94e2\\\",\\\"error_uri\\\":\\\"https://login.microsoftonline.com/error?code=7000215\\\"}\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:34] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:34] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1202,\"provider\":\"office\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:34] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1502,\"provider\":\"google\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:34] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1502,\"provider\":\"google\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:34] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:34] local.INFO: Calendar sync job dispatched {\"calendar_id\":501} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:34] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1300,\"provider\":\"google\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:34] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1300,\"provider\":\"google\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:34] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:34] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1300,\"provider\":\"google\",\"refreshToken\":\"4b811db0725fd9602a95943519a7da935e2a5065da7d9ebfcb170752e3e1ddb8\",\"state\":\"full-refresh\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:34] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1300,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Account has been deleted\"}} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:34] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:34] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1300,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:35] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1409,\"provider\":\"google\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:35] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1409,\"provider\":\"google\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:35] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:35] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1409,\"provider\":\"google\",\"refreshToken\":\"e2a3f2d06894894eed1ee87d9db1ace77d4d42ee6e1288a8940ad2c10333b0c4\",\"state\":\"full-refresh\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:35] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1409,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Bad Request\"}} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:35] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:35] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1409,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:35] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1352,\"provider\":\"google\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:35] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1352,\"provider\":\"google\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:35] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:35] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1352,\"provider\":\"google\",\"refreshToken\":\"dd4b16b00fdc1216da6b717c02338c073636e29162826b2de6db3f064fc029eb\",\"state\":\"full-refresh\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:35] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1352,\"provider\":\"google\",\"responseBody\":{\"error\":\"unauthorized_client\",\"error_description\":\"Unauthorized\"}} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:35] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:35] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1352,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:35] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1296,\"provider\":\"office\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:35] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1296,\"provider\":\"office\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:35] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:35] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1296,\"provider\":\"office\",\"refreshToken\":\"011ae723c9d800c674e0b4be76f49fc046dac7d501b66c59ef0d9549cfa56ae5\",\"state\":\"full-refresh\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:35] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1502,\"provider\":\"google\"} {\"correlation_id\":\"3015918c-9edf-487d-b1d0-97c9d00ea6b1\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:35] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1502,\"provider\":\"google\"} {\"correlation_id\":\"3015918c-9edf-487d-b1d0-97c9d00ea6b1\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:35] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"3015918c-9edf-487d-b1d0-97c9d00ea6b1\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:35] local.INFO: [Calendar] Processing sync {\"calendarId\":\"a33076c1-8d97-431a-99f0-85c9524e118b\",\"from\":null,\"to\":null,\"delta\":\"CIiFh8TP44kDEIiFh8TP44kDGAUgkZvkzgIokZvkzgI=\",\"last_sync\":\"2024-12-09 07:12:53\",\"dateMode\":\"daily\"} {\"correlation_id\":\"3015918c-9edf-487d-b1d0-97c9d00ea6b1\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:35] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"integration-app\",\"crm_owner\":1695,\"team_id\":3143} {\"correlation_id\":\"3015918c-9edf-487d-b1d0-97c9d00ea6b1\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:35] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1502,\"provider\":\"google\"} {\"correlation_id\":\"3015918c-9edf-487d-b1d0-97c9d00ea6b1\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:35] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1502,\"provider\":\"google\"} {\"correlation_id\":\"3015918c-9edf-487d-b1d0-97c9d00ea6b1\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:35] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"3015918c-9edf-487d-b1d0-97c9d00ea6b1\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:35] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1296,\"provider\":\"office\",\"responseBody\":\"{\\\"error\\\":\\\"invalid_client\\\",\\\"error_description\\\":\\\"AADSTS7000215: Invalid client secret provided. Ensure the secret being sent in the request is the client secret value, not the client secret ID, for a secret added to app 'bbcbb2ef-6200-4fae-82bd-d81f5dd738da'. Trace ID: 2e34e335-a76d-40e5-bc50-3861392e4c00 Correlation ID: 9db5b389-6165-4feb-8e6e-bedc369e1c87 Timestamp: 2026-05-07 12:28:35Z\\\",\\\"error_codes\\\":[7000215],\\\"timestamp\\\":\\\"2026-05-07 12:28:35Z\\\",\\\"trace_id\\\":\\\"2e34e335-a76d-40e5-bc50-3861392e4c00\\\",\\\"correlation_id\\\":\\\"9db5b389-6165-4feb-8e6e-bedc369e1c87\\\",\\\"error_uri\\\":\\\"https://login.microsoftonline.com/error?code=7000215\\\"}\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:35] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:35] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1296,\"provider\":\"office\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:35] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":391,\"provider\":\"office\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:35] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":391,\"provider\":\"office\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:35] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:35] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":391,\"provider\":\"office\",\"refreshToken\":\"00045eebae0f39b34887c6d53f92ae78064f7145e1f4b67754aebd03cfb2d881\",\"state\":\"full-refresh\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:36] local.INFO: [Google Calendar] Failed to watch channel for calendar {\"calendarId\":\"a33076c1-8d97-431a-99f0-85c9524e118b\",\"code\":400,\"reason\":\"{\n \\\"error\\\": {\n \\\"errors\\\": [\n {\n \\\"domain\\\": \\\"global\\\",\n \\\"reason\\\": \\\"push.webhookUrlNotHttps\\\",\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n ],\n \\\"code\\\": 400,\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n}\"} {\"correlation_id\":\"3015918c-9edf-487d-b1d0-97c9d00ea6b1\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:36] local.WARNING: [Calendar] Sync failed {\"calendarId\":\"a33076c1-8d97-431a-99f0-85c9524e118b\",\"code\":400,\"reason\":\"{\n \\\"error\\\": {\n \\\"errors\\\": [\n {\n \\\"domain\\\": \\\"global\\\",\n \\\"reason\\\": \\\"push.webhookUrlNotHttps\\\",\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n ],\n \\\"code\\\": 400,\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n}\"} {\"correlation_id\":\"3015918c-9edf-487d-b1d0-97c9d00ea6b1\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:36] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":391,\"provider\":\"office\",\"responseBody\":\"{\\\"error\\\":\\\"invalid_client\\\",\\\"error_description\\\":\\\"AADSTS7000215: Invalid client secret provided. Ensure the secret being sent in the request is the client secret value, not the client secret ID, for a secret added to app 'bbcbb2ef-6200-4fae-82bd-d81f5dd738da'. Trace ID: 6eba7173-b781-4e55-b1fb-1087ed023000 Correlation ID: 3086e346-c6eb-4f1c-8b1d-a477ce3821f4 Timestamp: 2026-05-07 12:28:36Z\\\",\\\"error_codes\\\":[7000215],\\\"timestamp\\\":\\\"2026-05-07 12:28:36Z\\\",\\\"trace_id\\\":\\\"6eba7173-b781-4e55-b1fb-1087ed023000\\\",\\\"correlation_id\\\":\\\"3086e346-c6eb-4f1c-8b1d-a477ce3821f4\\\",\\\"error_uri\\\":\\\"https://login.microsoftonline.com/error?code=7000215\\\"}\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:36] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:36] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":391,\"provider\":\"office\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:37] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1271,\"provider\":\"office\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:37] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1271,\"provider\":\"office\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:37] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:37] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1271,\"provider\":\"office\",\"refreshToken\":\"118cde2c06993147b07ccaec4cbcd5026a819dea6c71081166a492933e392afb\",\"state\":\"full-refresh\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:37] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1271,\"provider\":\"office\",\"responseBody\":\"{\\\"error\\\":\\\"invalid_client\\\",\\\"error_description\\\":\\\"AADSTS7000215: Invalid client secret provided. Ensure the secret being sent in the request is the client secret value, not the client secret ID, for a secret added to app 'bbcbb2ef-6200-4fae-82bd-d81f5dd738da'. Trace ID: b18cbf88-c6d0-4caa-9af9-d2dabb673500 Correlation ID: ead4f7c0-3077-42bb-84d0-c3b9a1432182 Timestamp: 2026-05-07 12:28:37Z\\\",\\\"error_codes\\\":[7000215],\\\"timestamp\\\":\\\"2026-05-07 12:28:37Z\\\",\\\"trace_id\\\":\\\"b18cbf88-c6d0-4caa-9af9-d2dabb673500\\\",\\\"correlation_id\\\":\\\"ead4f7c0-3077-42bb-84d0-c3b9a1432182\\\",\\\"error_uri\\\":\\\"https://login.microsoftonline.com/error?code=7000215\\\"}\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:37] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:37] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1271,\"provider\":\"office\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:37] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1351,\"provider\":\"google\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:37] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1351,\"provider\":\"google\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:37] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:37] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1351,\"provider\":\"google\",\"refreshToken\":\"4271d15b9e60a606439caddc68337f783e472c85b03dacff14d1b6dfded9051c\",\"state\":\"full-refresh\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:37] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1351,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Bad Request\"}} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:37] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:37] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1351,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:37] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1366,\"provider\":\"google\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:37] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1366,\"provider\":\"google\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:37] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:37] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1366,\"provider\":\"google\",\"refreshToken\":\"ae21385059b2eebfd43f68aecd56eccd702a1aabb6598f1f7ab594ed8af491b4\",\"state\":\"full-refresh\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:38] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1366,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Bad Request\"}} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:38] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:38] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1366,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:38] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1115,\"provider\":\"google\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:38] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1115,\"provider\":\"google\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:38] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:38] local.INFO: Calendar sync job dispatched {\"calendar_id\":378} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:38] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1421,\"provider\":\"office\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:38] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1421,\"provider\":\"office\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:38] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:38] local.INFO: Calendar sync job dispatched {\"calendar_id\":504} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:38] local.NOTICE: Calendar sync end {\"retrieved_calendars\":31,\"processed_calendars\":3} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:38] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"calendar:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:40] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1115,\"provider\":\"google\"} {\"correlation_id\":\"d023e7ab-3a56-433c-841b-49c58c0cb46d\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:40] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1115,\"provider\":\"google\"} {\"correlation_id\":\"d023e7ab-3a56-433c-841b-49c58c0cb46d\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:40] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"d023e7ab-3a56-433c-841b-49c58c0cb46d\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:40] local.INFO: [Calendar] Processing sync {\"calendarId\":\"2676cb6d-f86c-427e-bf78-591e388e3c1e\",\"from\":null,\"to\":null,\"delta\":\"CJ_x49O3jpIDEJ_x49O3jpIDGAUgw67KlwMow67KlwM=\",\"last_sync\":\"2026-01-19 07:48:40\",\"dateMode\":\"daily\"} {\"correlation_id\":\"d023e7ab-3a56-433c-841b-49c58c0cb46d\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:40] local.WARNING: [Pipedrive] Account not connected for user {\"userId\":\"e6538737-e7b4-455f-a37a-3e79b665a220\",\"account\":{\"Jiminny\\\\Models\\\\SocialAccount\":{\"id\":1116,\"sociable_id\":241,\"provider_user_id\":\"19555731\",\"expires\":1775683749,\"refresh_token_expires\":null,\"provider\":\"pipedrive\",\"state\":\"full-refresh\",\"auth_scope\":\"base,deals:full,activities:full,contacts:full,search:read\",\"retry_after\":null,\"created_at\":\"2023-09-08 09:44:29\",\"updated_at\":\"2026-04-08 22:58:34\"}}} {\"correlation_id\":\"d023e7ab-3a56-433c-841b-49c58c0cb46d\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:40] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {\"crm_provider\":\"pipedrive\",\"crm_owner\":241,\"team_id\":19} {\"correlation_id\":\"d023e7ab-3a56-433c-841b-49c58c0cb46d\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:40] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {\"crm_provider\":\"pipedrive\",\"team_id\":19} {\"correlation_id\":\"d023e7ab-3a56-433c-841b-49c58c0cb46d\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:40] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {\"crm_provider\":\"pipedrive\",\"team_id\":19} {\"correlation_id\":\"d023e7ab-3a56-433c-841b-49c58c0cb46d\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:40] local.WARNING: [Calendar] CRM disconnected for user so events will not be matched {\"provider\":\"pipedrive\",\"user_id\":241,\"message\":\"Your Pipedrive account has become disconnected. Please login to Jiminny to reconnect.\"} {\"correlation_id\":\"d023e7ab-3a56-433c-841b-49c58c0cb46d\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:40] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1115,\"provider\":\"google\"} {\"correlation_id\":\"d023e7ab-3a56-433c-841b-49c58c0cb46d\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:40] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1115,\"provider\":\"google\"} {\"correlation_id\":\"d023e7ab-3a56-433c-841b-49c58c0cb46d\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:40] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"d023e7ab-3a56-433c-841b-49c58c0cb46d\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:40] local.INFO: [Google Calendar] Failed to watch channel for calendar {\"calendarId\":\"2676cb6d-f86c-427e-bf78-591e388e3c1e\",\"code\":400,\"reason\":\"{\n \\\"error\\\": {\n \\\"errors\\\": [\n {\n \\\"domain\\\": \\\"global\\\",\n \\\"reason\\\": \\\"push.webhookUrlNotHttps\\\",\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n ],\n \\\"code\\\": 400,\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n}\"} {\"correlation_id\":\"d023e7ab-3a56-433c-841b-49c58c0cb46d\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:40] local.WARNING: [Calendar] Sync failed {\"calendarId\":\"2676cb6d-f86c-427e-bf78-591e388e3c1e\",\"code\":400,\"reason\":\"{\n \\\"error\\\": {\n \\\"errors\\\": [\n {\n \\\"domain\\\": \\\"global\\\",\n \\\"reason\\\": \\\"push.webhookUrlNotHttps\\\",\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n ],\n \\\"code\\\": 400,\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n}\"} {\"correlation_id\":\"d023e7ab-3a56-433c-841b-49c58c0cb46d\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:41] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1421,\"provider\":\"office\"} {\"correlation_id\":\"9ccaf562-7a14-4f4b-8625-81e2bf970988\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:41] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1421,\"provider\":\"office\"} {\"correlation_id\":\"9ccaf562-7a14-4f4b-8625-81e2bf970988\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:41] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"9ccaf562-7a14-4f4b-8625-81e2bf970988\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:41] local.INFO: [Calendar] Processing sync {\"calendarId\":\"9e8b1a2c-1a8f-42bd-b161-810fc0baf540\",\"from\":null,\"to\":null,\"delta\":\"R0usmcdvmMuZCBYV0hguCHhwR3crxfEuMI8zGlf-bMYpCFtdxXvSJWTlnqQvu_jjoOrOYL2VG9rZwFHCERHxGfGEK3CmQX6x8MJG3ZbBXGuVIS6C7u-doY5maMRdsfnrHIAEMJd4Bs_WMfMH4tDJ8j9aul7DHDEJaP7w0PoPPpcoxu4nEk4vk-MolJBEgkSrayEewuBs5JVItUX9lUY2tA.yO2roNQ4Vdm6hBgoutuphGchuzbvsk7aqt5wHfcyeFQ\",\"last_sync\":\"2026-05-06 15:58:35\",\"dateMode\":\"daily\"} {\"correlation_id\":\"9ccaf562-7a14-4f4b-8625-81e2bf970988\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:41] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"9ccaf562-7a14-4f4b-8625-81e2bf970988\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:41] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"9ccaf562-7a14-4f4b-8625-81e2bf970988\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:41] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"9ccaf562-7a14-4f4b-8625-81e2bf970988\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:41] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":89,\"team_id\":2} {\"correlation_id\":\"9ccaf562-7a14-4f4b-8625-81e2bf970988\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:41] local.INFO: [MS Office Calendar] Skipping delta sync for daily mode {\"calendarId\":\"9e8b1a2c-1a8f-42bd-b161-810fc0baf540\"} {\"correlation_id\":\"9ccaf562-7a14-4f4b-8625-81e2bf970988\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:29:07] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"0d6b5d8c-5396-45af-b4f1-348978acd054\",\"trace_id\":\"031091b8-40ce-4d57-a4e9-bc4d37034ae0\"}\n[2026-05-07 12:29:07] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"0d6b5d8c-5396-45af-b4f1-348978acd054\",\"trace_id\":\"031091b8-40ce-4d57-a4e9-bc4d37034ae0\"}\n[2026-05-07 12:29:07] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"0d6b5d8c-5396-45af-b4f1-348978acd054\",\"trace_id\":\"031091b8-40ce-4d57-a4e9-bc4d37034ae0\"}\n[2026-05-07 12:29:09] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"02cf8f7b-abd2-4e63-87bc-3e8fce928261\",\"trace_id\":\"6752601b-1c03-48ae-a590-323cc5ed601e\"}\n[2026-05-07 12:29:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"02cf8f7b-abd2-4e63-87bc-3e8fce928261\",\"trace_id\":\"6752601b-1c03-48ae-a590-323cc5ed601e\"}\n[2026-05-07 12:29:12] local.NOTICE: Monitoring start {\"correlation_id\":\"d3765bc2-52fa-4bc4-9c94-52822e08f7a5\",\"trace_id\":\"0299fb07-ac8c-4159-ad7e-c1bce0958d25\"}\n[2026-05-07 12:29:12] local.NOTICE: Monitoring end {\"correlation_id\":\"d3765bc2-52fa-4bc4-9c94-52822e08f7a5\",\"trace_id\":\"0299fb07-ac8c-4159-ad7e-c1bce0958d25\"}\n[2026-05-07 12:29:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"d59f6990-3c72-4f1b-b5fa-4035b1be1dbb\",\"trace_id\":\"d502f355-1716-4272-9dc2-79f8c70cbbf4\"}\n[2026-05-07 12:29:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"d59f6990-3c72-4f1b-b5fa-4035b1be1dbb\",\"trace_id\":\"d502f355-1716-4272-9dc2-79f8c70cbbf4\"}\n[2026-05-07 12:29:16] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"6e7dd39a-53bc-4359-a50f-7519f217bb9a\",\"trace_id\":\"eef97a11-0a3b-4911-be85-f37bbdc01d15\"}\n[2026-05-07 12:29:16] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"6e7dd39a-53bc-4359-a50f-7519f217bb9a\",\"trace_id\":\"eef97a11-0a3b-4911-be85-f37bbdc01d15\"}\n[2026-05-07 12:29:16] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"6e7dd39a-53bc-4359-a50f-7519f217bb9a\",\"trace_id\":\"eef97a11-0a3b-4911-be85-f37bbdc01d15\"}\n[2026-05-07 12:29:16] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"6e7dd39a-53bc-4359-a50f-7519f217bb9a\",\"trace_id\":\"eef97a11-0a3b-4911-be85-f37bbdc01d15\"}\n[2026-05-07 12:30:05] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"e4a1110b-dccf-46a7-b349-539201c9c258\",\"trace_id\":\"05679e00-ab34-47d6-af74-01a412a269b5\"}\n[2026-05-07 12:30:05] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"e4a1110b-dccf-46a7-b349-539201c9c258\",\"trace_id\":\"05679e00-ab34-47d6-af74-01a412a269b5\"}\n[2026-05-07 12:30:05] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"e4a1110b-dccf-46a7-b349-539201c9c258\",\"trace_id\":\"05679e00-ab34-47d6-af74-01a412a269b5\"}\n[2026-05-07 12:30:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"3aa037e0-524c-4f99-a2fe-9537e1034e93\",\"trace_id\":\"c8f2c739-13e2-490c-9bce-6b940c4073cc\"}\n[2026-05-07 12:30:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"3aa037e0-524c-4f99-a2fe-9537e1034e93\",\"trace_id\":\"c8f2c739-13e2-490c-9bce-6b940c4073cc\"}","depth":4,"on_screen":true,"value":"[2026-05-07 12:28:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"d4ce87a9-6ca5-4efe-99b3-4220893270d0\",\"trace_id\":\"724e8238-2ed5-4089-9509-9c7c12a3c373\"}\n[2026-05-07 12:28:10] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"d4ce87a9-6ca5-4efe-99b3-4220893270d0\",\"trace_id\":\"724e8238-2ed5-4089-9509-9c7c12a3c373\"}\n[2026-05-07 12:28:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"d4ce87a9-6ca5-4efe-99b3-4220893270d0\",\"trace_id\":\"724e8238-2ed5-4089-9509-9c7c12a3c373\"}\n[2026-05-07 12:28:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"172d1ae8-b8cc-4804-bed9-e32d074e265c\",\"trace_id\":\"4817cdef-8d3e-4914-8bee-feffb18efe1b\"}\n[2026-05-07 12:28:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"172d1ae8-b8cc-4804-bed9-e32d074e265c\",\"trace_id\":\"4817cdef-8d3e-4914-8bee-feffb18efe1b\"}\n[2026-05-07 12:28:17] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"273355f2-6315-4b20-bc9a-c26c681d6344\",\"trace_id\":\"5ea79a26-c838-48e8-9913-93ad508146a6\"}\n[2026-05-07 12:28:17] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"273355f2-6315-4b20-bc9a-c26c681d6344\",\"trace_id\":\"5ea79a26-c838-48e8-9913-93ad508146a6\"}\n[2026-05-07 12:28:17] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"273355f2-6315-4b20-bc9a-c26c681d6344\",\"trace_id\":\"5ea79a26-c838-48e8-9913-93ad508146a6\"}\n[2026-05-07 12:28:17] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1499,\"provider\":\"hubspot\",\"refreshToken\":\"96f94c623a404e02ebdbf07f1b75707bb6cdbf848cbf45d418baf608c41a8d86\",\"state\":\"connected\"} {\"correlation_id\":\"273355f2-6315-4b20-bc9a-c26c681d6344\",\"trace_id\":\"5ea79a26-c838-48e8-9913-93ad508146a6\"}\n[2026-05-07 12:28:18] local.NOTICE: Monitoring start {\"correlation_id\":\"31aa6b7d-00d6-448a-bdcc-a3d215b4aeb5\",\"trace_id\":\"b8eb7fe5-8471-4ffb-9bfa-a804c8e1ff72\"}\n[2026-05-07 12:28:18] local.NOTICE: Monitoring end {\"correlation_id\":\"31aa6b7d-00d6-448a-bdcc-a3d215b4aeb5\",\"trace_id\":\"b8eb7fe5-8471-4ffb-9bfa-a804c8e1ff72\"}\n[2026-05-07 12:28:18] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"273355f2-6315-4b20-bc9a-c26c681d6344\",\"trace_id\":\"5ea79a26-c838-48e8-9913-93ad508146a6\"}\n[2026-05-07 12:28:18] local.INFO: [SocialAccountObserver] Access token was modified, encrypting {\"correlation_id\":\"273355f2-6315-4b20-bc9a-c26c681d6344\",\"trace_id\":\"5ea79a26-c838-48e8-9913-93ad508146a6\"}\n[2026-05-07 12:28:18] local.INFO: [SocialAccountService] Token refreshed {\"socialAccountId\":1499,\"provider\":\"hubspot\",\"state\":\"connected\"} {\"correlation_id\":\"273355f2-6315-4b20-bc9a-c26c681d6344\",\"trace_id\":\"5ea79a26-c838-48e8-9913-93ad508146a6\"}\n[2026-05-07 12:28:18] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":148,\"team_id\":2} {\"correlation_id\":\"273355f2-6315-4b20-bc9a-c26c681d6344\",\"trace_id\":\"5ea79a26-c838-48e8-9913-93ad508146a6\"}\n[2026-05-07 12:28:19] local.INFO: [Hubspot] Failed to fetch opportunity {\"crm_id\":\"374720564\",\"reason\":\"[429] Client error: `GET https://api.hubapi.com/crm/v3/objects/deals/374720564?properties=hs_object_id%2Cdealname&associations=companies%2Ccontacts&archived=0` resulted in a `429 Too Many Requests` response:\n{\\\"status\\\":\\\"error\\\",\\\"message\\\":\\\"You have reached your ten_secondly_rolling limit.\\\",\\\"errorType\\\":\\\"RATE_LIMIT\\\",\\\"correlationId\\\" (truncated...)\n\"} {\"correlation_id\":\"273355f2-6315-4b20-bc9a-c26c681d6344\",\"trace_id\":\"5ea79a26-c838-48e8-9913-93ad508146a6\"}\n[2026-05-07 12:28:19] local.ERROR: [429] Client error: `GET https://api.hubapi.com/crm/v3/objects/deals/374720564?properties=hs_object_id%2Cdealname&associations=companies%2Ccontacts&archived=0` resulted in a `429 Too Many Requests` response:\n{\"status\":\"error\",\"message\":\"You have reached your ten_secondly_rolling limit.\",\"errorType\":\"RATE_LIMIT\",\"correlationId\" (truncated...)\n {\"exception\":\"[object] (HubSpot\\\\Client\\\\Crm\\\\Deals\\\\ApiException(code: 429): [429] Client error: `GET https://api.hubapi.com/crm/v3/objects/deals/374720564?properties=hs_object_id%2Cdealname&associations=companies%2Ccontacts&archived=0` resulted in a `429 Too Many Requests` response:\n{\\\"status\\\":\\\"error\\\",\\\"message\\\":\\\"You have reached your ten_secondly_rolling limit.\\\",\\\"errorType\\\":\\\"RATE_LIMIT\\\",\\\"correlationId\\\" (truncated...)\n at /home/jiminny/vendor/hubspot/api-client/codegen/Crm/Deals/Api/BasicApi.php:704)\n[stacktrace]\n#0 /home/jiminny/vendor/hubspot/api-client/codegen/Crm/Deals/Api/BasicApi.php(676): HubSpot\\\\Client\\\\Crm\\\\Deals\\\\Api\\\\BasicApi->getByIdWithHttpInfo('374720564', 'hs_object_id,de...', 'companies,conta...', false, NULL)\n#1 /home/jiminny/app/Services/Crm/Hubspot/Client.php(212): HubSpot\\\\Client\\\\Crm\\\\Deals\\\\Api\\\\BasicApi->getById('374720564', 'hs_object_id,de...', 'companies,conta...')\n#2 /home/jiminny/app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php(130): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client->getOpportunityById('374720564', Array)\n#3 /home/jiminny/app/Console/Commands/JiminnyDebugCommand.php(351): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service->syncOpportunity('374720564')\n#4 /home/jiminny/app/Console/Commands/JiminnyDebugCommand.php(44): Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand->rateLimit()\n#5 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand->handle(Object(Jiminny\\\\Jobs\\\\JobDispatcher), Object(Jiminny\\\\Services\\\\Kiosk\\\\AutomatedReports\\\\AutomatedReportsService), Object(Jiminny\\\\Repositories\\\\AutomatedReportsRepository), Object(Jiminny\\\\Services\\\\UserPilot\\\\UserPilotClient))\n#6 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#7 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#8 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#9 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#10 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(211): Illuminate\\\\Container\\\\Container->call(Array)\n#11 /home/jiminny/vendor/symfony/console/Command/Command.php(341): Illuminate\\\\Console\\\\Command->execute(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#12 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(180): Symfony\\\\Component\\\\Console\\\\Command\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#13 /home/jiminny/vendor/symfony/console/Application.php(1117): Illuminate\\\\Console\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#14 /home/jiminny/vendor/symfony/console/Application.php(356): Symfony\\\\Component\\\\Console\\\\Application->doRunCommand(Object(Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand), Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#15 /home/jiminny/vendor/symfony/console/Application.php(195): Symfony\\\\Component\\\\Console\\\\Application->doRun(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#16 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(198): Symfony\\\\Component\\\\Console\\\\Application->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#17 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1235): Illuminate\\\\Foundation\\\\Console\\\\Kernel->handle(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#18 /home/jiminny/artisan(13): Illuminate\\\\Foundation\\\\Application->handleCommand(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput))\n#19 {main}\n\"} {\"correlation_id\":\"273355f2-6315-4b20-bc9a-c26c681d6344\",\"trace_id\":\"5ea79a26-c838-48e8-9913-93ad508146a6\"}\n[2026-05-07 12:28:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"dcb9b24b-e2e5-41fe-81db-212b3ca9ff7d\",\"trace_id\":\"1ea62b83-9639-41e3-a523-26404c39fa80\"}\n[2026-05-07 12:28:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"dcb9b24b-e2e5-41fe-81db-212b3ca9ff7d\",\"trace_id\":\"1ea62b83-9639-41e3-a523-26404c39fa80\"}\n[2026-05-07 12:28:24] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"d191d5c6-133f-43e1-8ed4-d285d0c768b8\",\"trace_id\":\"67798138-bdb7-4bd7-8b32-377663219a88\"}\n[2026-05-07 12:28:24] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"d191d5c6-133f-43e1-8ed4-d285d0c768b8\",\"trace_id\":\"67798138-bdb7-4bd7-8b32-377663219a88\"}\n[2026-05-07 12:28:24] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"d191d5c6-133f-43e1-8ed4-d285d0c768b8\",\"trace_id\":\"67798138-bdb7-4bd7-8b32-377663219a88\"}\n[2026-05-07 12:28:24] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"d191d5c6-133f-43e1-8ed4-d285d0c768b8\",\"trace_id\":\"67798138-bdb7-4bd7-8b32-377663219a88\"}\n[2026-05-07 12:28:27] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"a4e5e18f-9f8c-4196-ace0-bf664d4827d9\",\"trace_id\":\"d75cb10b-4c76-4c00-84d4-26efeb738e17\"}\n[2026-05-07 12:28:27] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:26:00, 2026-05-07 12:28:00] {\"correlation_id\":\"a4e5e18f-9f8c-4196-ace0-bf664d4827d9\",\"trace_id\":\"d75cb10b-4c76-4c00-84d4-26efeb738e17\"}\n[2026-05-07 12:28:27] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:26:00, 2026-05-07 12:28:00] {\"correlation_id\":\"a4e5e18f-9f8c-4196-ace0-bf664d4827d9\",\"trace_id\":\"d75cb10b-4c76-4c00-84d4-26efeb738e17\"}\n[2026-05-07 12:28:27] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"a4e5e18f-9f8c-4196-ace0-bf664d4827d9\",\"trace_id\":\"d75cb10b-4c76-4c00-84d4-26efeb738e17\"}\n[2026-05-07 12:28:30] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"calendar:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:30] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"3789f06a-4f0c-4b12-be80-d6a36e089d1b\",\"trace_id\":\"6ce89147-1624-456d-9e75-f4948f2c5db8\"}\n[2026-05-07 12:28:30] local.NOTICE: Calendar sync start {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:30] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"3789f06a-4f0c-4b12-be80-d6a36e089d1b\",\"trace_id\":\"6ce89147-1624-456d-9e75-f4948f2c5db8\"}\n[2026-05-07 12:28:31] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1393,\"provider\":\"google\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:31] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1393,\"provider\":\"google\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:31] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:31] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1393,\"provider\":\"google\",\"refreshToken\":\"5aa7e2d96b53201cd16fca5d2e4ef3ad03320971fc064781d18aee3ae7b99fbf\",\"state\":\"full-refresh\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:31] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1393,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Account has been deleted\"}} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:31] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:31] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1393,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:31] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1387,\"provider\":\"google\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:31] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1387,\"provider\":\"google\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:31] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:31] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1387,\"provider\":\"google\",\"refreshToken\":\"8157ac6de94842937194009e9c50e459253600f799dacf6a40755ffdbeb5bba6\",\"state\":\"full-refresh\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:31] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1387,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Account has been deleted\"}} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:31] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:31] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1387,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:31] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1348,\"provider\":\"google\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:31] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1348,\"provider\":\"google\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:31] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:31] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1348,\"provider\":\"google\",\"refreshToken\":\"9e7d13d3032d0cb1b79d8e95aef01383e8e91eb52ff8ee960c8a0b6b95cd8c73\",\"state\":\"full-refresh\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:31] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1348,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Bad Request\"}} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:31] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:31] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1348,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:31] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1361,\"provider\":\"google\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:31] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1361,\"provider\":\"google\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:31] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:31] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1361,\"provider\":\"google\",\"refreshToken\":\"6c843da199c2b9907445329304fcc4ec5057a4ee748d8299641764395c08e1fd\",\"state\":\"full-refresh\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:32] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1361,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Account has been deleted\"}} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:32] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:32] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1361,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:32] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1310,\"provider\":\"google\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:32] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1310,\"provider\":\"google\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:32] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:32] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1310,\"provider\":\"google\",\"refreshToken\":\"e34818922c2830a660813a63f6169a4a9a992ae2cccd7dc8dd7796cfdb470ef1\",\"state\":\"full-refresh\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:32] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1310,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Bad Request\"}} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:32] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:32] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1310,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:32] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1333,\"provider\":\"google\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:32] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1333,\"provider\":\"google\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:32] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:32] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1333,\"provider\":\"google\",\"refreshToken\":\"6c902986546d8e8da1dc539b046cdc1d458f519acc972e5b5f1d6a1a295165e0\",\"state\":\"full-refresh\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:32] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1333,\"provider\":\"google\",\"responseBody\":{\"error\":\"unauthorized_client\",\"error_description\":\"Unauthorized\"}} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:32] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:32] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1333,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:32] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1368,\"provider\":\"google\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:32] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1368,\"provider\":\"google\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:32] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:32] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1368,\"provider\":\"google\",\"refreshToken\":\"d2f128898ff8543bd16b69cfae37896ab85119b0f5ed2b431d739593bb600333\",\"state\":\"full-refresh\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:32] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1368,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Bad Request\"}} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:32] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:32] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1368,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:32] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1365,\"provider\":\"google\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:32] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1365,\"provider\":\"google\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:32] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:32] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1365,\"provider\":\"google\",\"refreshToken\":\"7676e4a9afcd082b413248ab5ec6e487021fec6a9bdf315860a59cefad9caad8\",\"state\":\"full-refresh\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:33] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1365,\"provider\":\"google\",\"responseBody\":{\"error\":\"unauthorized_client\",\"error_description\":\"Unauthorized\"}} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:33] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:33] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1365,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:33] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1364,\"provider\":\"google\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:33] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1364,\"provider\":\"google\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:33] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:33] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1364,\"provider\":\"google\",\"refreshToken\":\"dd5882ebce76e645292ce33ae74238abbb77c0a4ecc6a2bfe723cad82e72ba8e\",\"state\":\"full-refresh\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:33] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1364,\"provider\":\"google\",\"responseBody\":{\"error\":\"unauthorized_client\",\"error_description\":\"Unauthorized\"}} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:33] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:33] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1364,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:33] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1370,\"provider\":\"office\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:33] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1370,\"provider\":\"office\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:33] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:33] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1370,\"provider\":\"office\",\"refreshToken\":\"b7ee8035306d0043cea6e00e7c4fe14f745e44074a1194db62a31cdf8b70af3e\",\"state\":\"full-refresh\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:33] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1370,\"provider\":\"office\",\"responseBody\":\"{\\\"error\\\":\\\"invalid_client\\\",\\\"error_description\\\":\\\"AADSTS7000215: Invalid client secret provided. Ensure the secret being sent in the request is the client secret value, not the client secret ID, for a secret added to app 'bbcbb2ef-6200-4fae-82bd-d81f5dd738da'. Trace ID: e890fdc1-dbe8-4a59-ae57-2af6bced3c00 Correlation ID: 57554cdf-16df-47f1-b0d9-5f0b8da37afe Timestamp: 2026-05-07 12:28:33Z\\\",\\\"error_codes\\\":[7000215],\\\"timestamp\\\":\\\"2026-05-07 12:28:33Z\\\",\\\"trace_id\\\":\\\"e890fdc1-dbe8-4a59-ae57-2af6bced3c00\\\",\\\"correlation_id\\\":\\\"57554cdf-16df-47f1-b0d9-5f0b8da37afe\\\",\\\"error_uri\\\":\\\"https://login.microsoftonline.com/error?code=7000215\\\"}\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:33] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:33] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1370,\"provider\":\"office\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:33] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1202,\"provider\":\"office\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:33] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1202,\"provider\":\"office\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:33] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:33] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1202,\"provider\":\"office\",\"refreshToken\":\"b458799ccc29b21a6e2eb5260fdb63e49ccba21bf942a3973fb63799bd7f0afe\",\"state\":\"full-refresh\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:34] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1202,\"provider\":\"office\",\"responseBody\":\"{\\\"error\\\":\\\"invalid_client\\\",\\\"error_description\\\":\\\"AADSTS7000215: Invalid client secret provided. Ensure the secret being sent in the request is the client secret value, not the client secret ID, for a secret added to app 'bbcbb2ef-6200-4fae-82bd-d81f5dd738da'. Trace ID: 2a3e5b60-5770-46f2-aca6-7b0527363000 Correlation ID: 57bb0b73-9ea6-4bcf-a8f4-6e211dbb94e2 Timestamp: 2026-05-07 12:28:34Z\\\",\\\"error_codes\\\":[7000215],\\\"timestamp\\\":\\\"2026-05-07 12:28:34Z\\\",\\\"trace_id\\\":\\\"2a3e5b60-5770-46f2-aca6-7b0527363000\\\",\\\"correlation_id\\\":\\\"57bb0b73-9ea6-4bcf-a8f4-6e211dbb94e2\\\",\\\"error_uri\\\":\\\"https://login.microsoftonline.com/error?code=7000215\\\"}\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:34] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:34] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1202,\"provider\":\"office\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:34] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1502,\"provider\":\"google\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:34] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1502,\"provider\":\"google\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:34] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:34] local.INFO: Calendar sync job dispatched {\"calendar_id\":501} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:34] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1300,\"provider\":\"google\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:34] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1300,\"provider\":\"google\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:34] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:34] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1300,\"provider\":\"google\",\"refreshToken\":\"4b811db0725fd9602a95943519a7da935e2a5065da7d9ebfcb170752e3e1ddb8\",\"state\":\"full-refresh\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:34] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1300,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Account has been deleted\"}} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:34] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:34] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1300,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:35] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1409,\"provider\":\"google\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:35] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1409,\"provider\":\"google\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:35] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:35] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1409,\"provider\":\"google\",\"refreshToken\":\"e2a3f2d06894894eed1ee87d9db1ace77d4d42ee6e1288a8940ad2c10333b0c4\",\"state\":\"full-refresh\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:35] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1409,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Bad Request\"}} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:35] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:35] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1409,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:35] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1352,\"provider\":\"google\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:35] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1352,\"provider\":\"google\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:35] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:35] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1352,\"provider\":\"google\",\"refreshToken\":\"dd4b16b00fdc1216da6b717c02338c073636e29162826b2de6db3f064fc029eb\",\"state\":\"full-refresh\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:35] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1352,\"provider\":\"google\",\"responseBody\":{\"error\":\"unauthorized_client\",\"error_description\":\"Unauthorized\"}} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:35] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:35] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1352,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:35] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1296,\"provider\":\"office\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:35] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1296,\"provider\":\"office\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:35] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:35] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1296,\"provider\":\"office\",\"refreshToken\":\"011ae723c9d800c674e0b4be76f49fc046dac7d501b66c59ef0d9549cfa56ae5\",\"state\":\"full-refresh\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:35] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1502,\"provider\":\"google\"} {\"correlation_id\":\"3015918c-9edf-487d-b1d0-97c9d00ea6b1\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:35] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1502,\"provider\":\"google\"} {\"correlation_id\":\"3015918c-9edf-487d-b1d0-97c9d00ea6b1\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:35] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"3015918c-9edf-487d-b1d0-97c9d00ea6b1\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:35] local.INFO: [Calendar] Processing sync {\"calendarId\":\"a33076c1-8d97-431a-99f0-85c9524e118b\",\"from\":null,\"to\":null,\"delta\":\"CIiFh8TP44kDEIiFh8TP44kDGAUgkZvkzgIokZvkzgI=\",\"last_sync\":\"2024-12-09 07:12:53\",\"dateMode\":\"daily\"} {\"correlation_id\":\"3015918c-9edf-487d-b1d0-97c9d00ea6b1\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:35] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"integration-app\",\"crm_owner\":1695,\"team_id\":3143} {\"correlation_id\":\"3015918c-9edf-487d-b1d0-97c9d00ea6b1\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:35] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1502,\"provider\":\"google\"} {\"correlation_id\":\"3015918c-9edf-487d-b1d0-97c9d00ea6b1\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:35] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1502,\"provider\":\"google\"} {\"correlation_id\":\"3015918c-9edf-487d-b1d0-97c9d00ea6b1\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:35] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"3015918c-9edf-487d-b1d0-97c9d00ea6b1\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:35] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1296,\"provider\":\"office\",\"responseBody\":\"{\\\"error\\\":\\\"invalid_client\\\",\\\"error_description\\\":\\\"AADSTS7000215: Invalid client secret provided. Ensure the secret being sent in the request is the client secret value, not the client secret ID, for a secret added to app 'bbcbb2ef-6200-4fae-82bd-d81f5dd738da'. Trace ID: 2e34e335-a76d-40e5-bc50-3861392e4c00 Correlation ID: 9db5b389-6165-4feb-8e6e-bedc369e1c87 Timestamp: 2026-05-07 12:28:35Z\\\",\\\"error_codes\\\":[7000215],\\\"timestamp\\\":\\\"2026-05-07 12:28:35Z\\\",\\\"trace_id\\\":\\\"2e34e335-a76d-40e5-bc50-3861392e4c00\\\",\\\"correlation_id\\\":\\\"9db5b389-6165-4feb-8e6e-bedc369e1c87\\\",\\\"error_uri\\\":\\\"https://login.microsoftonline.com/error?code=7000215\\\"}\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:35] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:35] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1296,\"provider\":\"office\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:35] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":391,\"provider\":\"office\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:35] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":391,\"provider\":\"office\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:35] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:35] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":391,\"provider\":\"office\",\"refreshToken\":\"00045eebae0f39b34887c6d53f92ae78064f7145e1f4b67754aebd03cfb2d881\",\"state\":\"full-refresh\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:36] local.INFO: [Google Calendar] Failed to watch channel for calendar {\"calendarId\":\"a33076c1-8d97-431a-99f0-85c9524e118b\",\"code\":400,\"reason\":\"{\n \\\"error\\\": {\n \\\"errors\\\": [\n {\n \\\"domain\\\": \\\"global\\\",\n \\\"reason\\\": \\\"push.webhookUrlNotHttps\\\",\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n ],\n \\\"code\\\": 400,\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n}\"} {\"correlation_id\":\"3015918c-9edf-487d-b1d0-97c9d00ea6b1\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:36] local.WARNING: [Calendar] Sync failed {\"calendarId\":\"a33076c1-8d97-431a-99f0-85c9524e118b\",\"code\":400,\"reason\":\"{\n \\\"error\\\": {\n \\\"errors\\\": [\n {\n \\\"domain\\\": \\\"global\\\",\n \\\"reason\\\": \\\"push.webhookUrlNotHttps\\\",\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n ],\n \\\"code\\\": 400,\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n}\"} {\"correlation_id\":\"3015918c-9edf-487d-b1d0-97c9d00ea6b1\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:36] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":391,\"provider\":\"office\",\"responseBody\":\"{\\\"error\\\":\\\"invalid_client\\\",\\\"error_description\\\":\\\"AADSTS7000215: Invalid client secret provided. Ensure the secret being sent in the request is the client secret value, not the client secret ID, for a secret added to app 'bbcbb2ef-6200-4fae-82bd-d81f5dd738da'. Trace ID: 6eba7173-b781-4e55-b1fb-1087ed023000 Correlation ID: 3086e346-c6eb-4f1c-8b1d-a477ce3821f4 Timestamp: 2026-05-07 12:28:36Z\\\",\\\"error_codes\\\":[7000215],\\\"timestamp\\\":\\\"2026-05-07 12:28:36Z\\\",\\\"trace_id\\\":\\\"6eba7173-b781-4e55-b1fb-1087ed023000\\\",\\\"correlation_id\\\":\\\"3086e346-c6eb-4f1c-8b1d-a477ce3821f4\\\",\\\"error_uri\\\":\\\"https://login.microsoftonline.com/error?code=7000215\\\"}\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:36] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:36] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":391,\"provider\":\"office\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:37] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1271,\"provider\":\"office\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:37] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1271,\"provider\":\"office\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:37] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:37] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1271,\"provider\":\"office\",\"refreshToken\":\"118cde2c06993147b07ccaec4cbcd5026a819dea6c71081166a492933e392afb\",\"state\":\"full-refresh\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:37] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1271,\"provider\":\"office\",\"responseBody\":\"{\\\"error\\\":\\\"invalid_client\\\",\\\"error_description\\\":\\\"AADSTS7000215: Invalid client secret provided. Ensure the secret being sent in the request is the client secret value, not the client secret ID, for a secret added to app 'bbcbb2ef-6200-4fae-82bd-d81f5dd738da'. Trace ID: b18cbf88-c6d0-4caa-9af9-d2dabb673500 Correlation ID: ead4f7c0-3077-42bb-84d0-c3b9a1432182 Timestamp: 2026-05-07 12:28:37Z\\\",\\\"error_codes\\\":[7000215],\\\"timestamp\\\":\\\"2026-05-07 12:28:37Z\\\",\\\"trace_id\\\":\\\"b18cbf88-c6d0-4caa-9af9-d2dabb673500\\\",\\\"correlation_id\\\":\\\"ead4f7c0-3077-42bb-84d0-c3b9a1432182\\\",\\\"error_uri\\\":\\\"https://login.microsoftonline.com/error?code=7000215\\\"}\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:37] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:37] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1271,\"provider\":\"office\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:37] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1351,\"provider\":\"google\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:37] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1351,\"provider\":\"google\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:37] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:37] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1351,\"provider\":\"google\",\"refreshToken\":\"4271d15b9e60a606439caddc68337f783e472c85b03dacff14d1b6dfded9051c\",\"state\":\"full-refresh\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:37] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1351,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Bad Request\"}} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:37] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:37] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1351,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:37] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1366,\"provider\":\"google\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:37] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1366,\"provider\":\"google\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:37] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:37] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1366,\"provider\":\"google\",\"refreshToken\":\"ae21385059b2eebfd43f68aecd56eccd702a1aabb6598f1f7ab594ed8af491b4\",\"state\":\"full-refresh\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:38] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1366,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Bad Request\"}} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:38] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:38] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1366,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:38] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1115,\"provider\":\"google\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:38] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1115,\"provider\":\"google\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:38] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:38] local.INFO: Calendar sync job dispatched {\"calendar_id\":378} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:38] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1421,\"provider\":\"office\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:38] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1421,\"provider\":\"office\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:38] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:38] local.INFO: Calendar sync job dispatched {\"calendar_id\":504} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:38] local.NOTICE: Calendar sync end {\"retrieved_calendars\":31,\"processed_calendars\":3} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:38] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"calendar:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"d543a089-fd32-4522-9ffe-1494e562b741\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:40] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1115,\"provider\":\"google\"} {\"correlation_id\":\"d023e7ab-3a56-433c-841b-49c58c0cb46d\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:40] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1115,\"provider\":\"google\"} {\"correlation_id\":\"d023e7ab-3a56-433c-841b-49c58c0cb46d\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:40] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"d023e7ab-3a56-433c-841b-49c58c0cb46d\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:40] local.INFO: [Calendar] Processing sync {\"calendarId\":\"2676cb6d-f86c-427e-bf78-591e388e3c1e\",\"from\":null,\"to\":null,\"delta\":\"CJ_x49O3jpIDEJ_x49O3jpIDGAUgw67KlwMow67KlwM=\",\"last_sync\":\"2026-01-19 07:48:40\",\"dateMode\":\"daily\"} {\"correlation_id\":\"d023e7ab-3a56-433c-841b-49c58c0cb46d\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:40] local.WARNING: [Pipedrive] Account not connected for user {\"userId\":\"e6538737-e7b4-455f-a37a-3e79b665a220\",\"account\":{\"Jiminny\\\\Models\\\\SocialAccount\":{\"id\":1116,\"sociable_id\":241,\"provider_user_id\":\"19555731\",\"expires\":1775683749,\"refresh_token_expires\":null,\"provider\":\"pipedrive\",\"state\":\"full-refresh\",\"auth_scope\":\"base,deals:full,activities:full,contacts:full,search:read\",\"retry_after\":null,\"created_at\":\"2023-09-08 09:44:29\",\"updated_at\":\"2026-04-08 22:58:34\"}}} {\"correlation_id\":\"d023e7ab-3a56-433c-841b-49c58c0cb46d\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:40] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {\"crm_provider\":\"pipedrive\",\"crm_owner\":241,\"team_id\":19} {\"correlation_id\":\"d023e7ab-3a56-433c-841b-49c58c0cb46d\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:40] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {\"crm_provider\":\"pipedrive\",\"team_id\":19} {\"correlation_id\":\"d023e7ab-3a56-433c-841b-49c58c0cb46d\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:40] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {\"crm_provider\":\"pipedrive\",\"team_id\":19} {\"correlation_id\":\"d023e7ab-3a56-433c-841b-49c58c0cb46d\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:40] local.WARNING: [Calendar] CRM disconnected for user so events will not be matched {\"provider\":\"pipedrive\",\"user_id\":241,\"message\":\"Your Pipedrive account has become disconnected. Please login to Jiminny to reconnect.\"} {\"correlation_id\":\"d023e7ab-3a56-433c-841b-49c58c0cb46d\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:40] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1115,\"provider\":\"google\"} {\"correlation_id\":\"d023e7ab-3a56-433c-841b-49c58c0cb46d\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:40] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1115,\"provider\":\"google\"} {\"correlation_id\":\"d023e7ab-3a56-433c-841b-49c58c0cb46d\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:40] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"d023e7ab-3a56-433c-841b-49c58c0cb46d\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:40] local.INFO: [Google Calendar] Failed to watch channel for calendar {\"calendarId\":\"2676cb6d-f86c-427e-bf78-591e388e3c1e\",\"code\":400,\"reason\":\"{\n \\\"error\\\": {\n \\\"errors\\\": [\n {\n \\\"domain\\\": \\\"global\\\",\n \\\"reason\\\": \\\"push.webhookUrlNotHttps\\\",\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n ],\n \\\"code\\\": 400,\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n}\"} {\"correlation_id\":\"d023e7ab-3a56-433c-841b-49c58c0cb46d\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:40] local.WARNING: [Calendar] Sync failed {\"calendarId\":\"2676cb6d-f86c-427e-bf78-591e388e3c1e\",\"code\":400,\"reason\":\"{\n \\\"error\\\": {\n \\\"errors\\\": [\n {\n \\\"domain\\\": \\\"global\\\",\n \\\"reason\\\": \\\"push.webhookUrlNotHttps\\\",\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n ],\n \\\"code\\\": 400,\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n}\"} {\"correlation_id\":\"d023e7ab-3a56-433c-841b-49c58c0cb46d\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:41] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1421,\"provider\":\"office\"} {\"correlation_id\":\"9ccaf562-7a14-4f4b-8625-81e2bf970988\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:41] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1421,\"provider\":\"office\"} {\"correlation_id\":\"9ccaf562-7a14-4f4b-8625-81e2bf970988\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:41] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"9ccaf562-7a14-4f4b-8625-81e2bf970988\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:41] local.INFO: [Calendar] Processing sync {\"calendarId\":\"9e8b1a2c-1a8f-42bd-b161-810fc0baf540\",\"from\":null,\"to\":null,\"delta\":\"R0usmcdvmMuZCBYV0hguCHhwR3crxfEuMI8zGlf-bMYpCFtdxXvSJWTlnqQvu_jjoOrOYL2VG9rZwFHCERHxGfGEK3CmQX6x8MJG3ZbBXGuVIS6C7u-doY5maMRdsfnrHIAEMJd4Bs_WMfMH4tDJ8j9aul7DHDEJaP7w0PoPPpcoxu4nEk4vk-MolJBEgkSrayEewuBs5JVItUX9lUY2tA.yO2roNQ4Vdm6hBgoutuphGchuzbvsk7aqt5wHfcyeFQ\",\"last_sync\":\"2026-05-06 15:58:35\",\"dateMode\":\"daily\"} {\"correlation_id\":\"9ccaf562-7a14-4f4b-8625-81e2bf970988\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:41] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"9ccaf562-7a14-4f4b-8625-81e2bf970988\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:41] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"9ccaf562-7a14-4f4b-8625-81e2bf970988\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:41] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"9ccaf562-7a14-4f4b-8625-81e2bf970988\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:41] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":89,\"team_id\":2} {\"correlation_id\":\"9ccaf562-7a14-4f4b-8625-81e2bf970988\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:28:41] local.INFO: [MS Office Calendar] Skipping delta sync for daily mode {\"calendarId\":\"9e8b1a2c-1a8f-42bd-b161-810fc0baf540\"} {\"correlation_id\":\"9ccaf562-7a14-4f4b-8625-81e2bf970988\",\"trace_id\":\"564a362b-7ddb-49f0-a33a-b807b0440231\"}\n[2026-05-07 12:29:07] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"0d6b5d8c-5396-45af-b4f1-348978acd054\",\"trace_id\":\"031091b8-40ce-4d57-a4e9-bc4d37034ae0\"}\n[2026-05-07 12:29:07] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"0d6b5d8c-5396-45af-b4f1-348978acd054\",\"trace_id\":\"031091b8-40ce-4d57-a4e9-bc4d37034ae0\"}\n[2026-05-07 12:29:07] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"0d6b5d8c-5396-45af-b4f1-348978acd054\",\"trace_id\":\"031091b8-40ce-4d57-a4e9-bc4d37034ae0\"}\n[2026-05-07 12:29:09] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"02cf8f7b-abd2-4e63-87bc-3e8fce928261\",\"trace_id\":\"6752601b-1c03-48ae-a590-323cc5ed601e\"}\n[2026-05-07 12:29:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"02cf8f7b-abd2-4e63-87bc-3e8fce928261\",\"trace_id\":\"6752601b-1c03-48ae-a590-323cc5ed601e\"}\n[2026-05-07 12:29:12] local.NOTICE: Monitoring start {\"correlation_id\":\"d3765bc2-52fa-4bc4-9c94-52822e08f7a5\",\"trace_id\":\"0299fb07-ac8c-4159-ad7e-c1bce0958d25\"}\n[2026-05-07 12:29:12] local.NOTICE: Monitoring end {\"correlation_id\":\"d3765bc2-52fa-4bc4-9c94-52822e08f7a5\",\"trace_id\":\"0299fb07-ac8c-4159-ad7e-c1bce0958d25\"}\n[2026-05-07 12:29:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"d59f6990-3c72-4f1b-b5fa-4035b1be1dbb\",\"trace_id\":\"d502f355-1716-4272-9dc2-79f8c70cbbf4\"}\n[2026-05-07 12:29:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"d59f6990-3c72-4f1b-b5fa-4035b1be1dbb\",\"trace_id\":\"d502f355-1716-4272-9dc2-79f8c70cbbf4\"}\n[2026-05-07 12:29:16] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"6e7dd39a-53bc-4359-a50f-7519f217bb9a\",\"trace_id\":\"eef97a11-0a3b-4911-be85-f37bbdc01d15\"}\n[2026-05-07 12:29:16] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"6e7dd39a-53bc-4359-a50f-7519f217bb9a\",\"trace_id\":\"eef97a11-0a3b-4911-be85-f37bbdc01d15\"}\n[2026-05-07 12:29:16] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"6e7dd39a-53bc-4359-a50f-7519f217bb9a\",\"trace_id\":\"eef97a11-0a3b-4911-be85-f37bbdc01d15\"}\n[2026-05-07 12:29:16] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"6e7dd39a-53bc-4359-a50f-7519f217bb9a\",\"trace_id\":\"eef97a11-0a3b-4911-be85-f37bbdc01d15\"}\n[2026-05-07 12:30:05] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"e4a1110b-dccf-46a7-b349-539201c9c258\",\"trace_id\":\"05679e00-ab34-47d6-af74-01a412a269b5\"}\n[2026-05-07 12:30:05] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"e4a1110b-dccf-46a7-b349-539201c9c258\",\"trace_id\":\"05679e00-ab34-47d6-af74-01a412a269b5\"}\n[2026-05-07 12:30:05] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"e4a1110b-dccf-46a7-b349-539201c9c258\",\"trace_id\":\"05679e00-ab34-47d6-af74-01a412a269b5\"}\n[2026-05-07 12:30:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"3aa037e0-524c-4f99-a2fe-9537e1034e93\",\"trace_id\":\"c8f2c739-13e2-490c-9bce-6b940c4073cc\"}\n[2026-05-07 12:30:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"3aa037e0-524c-4f99-a2fe-9537e1034e93\",\"trace_id\":\"c8f2c739-13e2-490c-9bce-6b940c4073cc\"}","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.088194445,"height":0.027777778},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2","depth":4,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"68","depth":4,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"2","depth":4,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Highlighted Error","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Services\\Crm\\Hubspot;\n\nuse HubSpot\\Client\\Crm\\Deals\\ApiException as DealApiException;\nuse HubSpot\\Client\\Crm\\Contacts\\ApiException as ContactApiException;\nuse HubSpot\\Client\\Crm\\Companies\\ApiException as CompanyApiException;\nuse HubSpot\\Client\\Crm\\Contacts\\Model\\SimplePublicObjectWithAssociations as ContactsWithAssociations;\nuse HubSpot\\Client\\Crm\\Companies\\Model\\SimplePublicObjectWithAssociations as CompaniesWithAssociations;\nuse HubSpot\\Client\\Crm\\Deals\\Model\\SimplePublicObjectWithAssociations as DealWithAssociations;\nuse HubSpot\\Client\\Crm\\Objects\\Model\\SimplePublicObjectInput;\nuse HubSpot\\Client\\Crm\\Objects\\Model\\SimplePublicObjectWithAssociations as ObjectWithAssociations;\nuse HubSpot\\Client\\Crm\\Pipelines\\Model\\Error;\nuse HubSpot\\Client\\Crm\\Pipelines\\Model\\PipelineStage;\nuse HubSpot\\Client\\Crm\\Properties\\Model\\Property;\nuse HubSpot\\Discovery\\Discovery;\nuse Jiminny\\Component\\Utility\\Service\\ProviderRateLimiter;\nuse Jiminny\\Exceptions\\CrmException;\nuse Jiminny\\Exceptions\\RateLimitException;\nuse Jiminny\\Exceptions\\SocialAccountTokenInvalidException;\nuse Jiminny\\Jobs\\Crm\\NoteObject;\nuse Jiminny\\Models\\Crm\\Field;\nuse Jiminny\\Services\\Crm\\BaseClient;\nuse Jiminny\\Services\\Crm\\Hubspot\\DTO\\Response\\Owner;\nuse Jiminny\\Services\\SocialAccountService;\nuse SevenShores\\Hubspot\\Exceptions\\BadRequest;\nuse SevenShores\\Hubspot\\Exceptions\\HubspotException;\nuse SevenShores\\Hubspot\\Factory;\nuse SevenShores\\Hubspot\\Http\\Response;\nuse Jiminny\\Services\\Crm\\Hubspot\\Pagination\\HubspotPaginationService;\nuse Throwable;\n\n/**\n * @phpstan-type CrmFieldOption array{id:string, label:string, value?:string}\n */\nclass Client extends BaseClient implements HubspotClientInterface\n{\n public const string MIN_API_VERSION = '2';\n\n public const string BASE_URL = 'https://api.hubapi.com';\n\n public const int ASSOCIATIONS_BATCH_SIZE_LIMIT = 1000;\n\n private HubspotPaginationService $paginationService;\n private HubspotTokenManager $tokenManager;\n private ProviderRateLimiter $rateLimiter;\n\n public function __construct(\n SocialAccountService $socialAccountService,\n HubspotPaginationService $paginationService,\n HubspotTokenManager $tokenManager,\n ProviderRateLimiter $rateLimiter,\n ) {\n parent::__construct($socialAccountService);\n $this->paginationService = $paginationService;\n $this->tokenManager = $tokenManager;\n $this->rateLimiter = $rateLimiter;\n\n $this->setBaseUrl(self::BASE_URL);\n $this->setVersion(self::MIN_API_VERSION);\n }\n\n /**\n * Single entry point for every HubSpot API call. Enforces the per-portal\n * rate limit configured in the rate_limits table (morphed to the current\n * Configuration) and reacts to a real 429 from HubSpot by translating it\n * into a RateLimitException carrying Retry-After.\n *\n * Wrap any outbound HubSpot call (SDK or raw HTTP) like:\n *\n * $this->executeRequest(fn () => $this->getNewInstance()->crm()->...);\n *\n * @template T\n * @param callable(): T $apiCall\n * @return T\n *\n * @throws RateLimitException\n */\n private function executeRequest(callable $apiCall)\n {\n if (! $this->rateLimiter->canMakeRequest($this->config)) {\n $retryAfter = $this->rateLimiter->requestAvailableIn($this->config);\n\n $this->log->warning('[Hubspot] Rate limit exceeded, deferring request', [\n 'team_id' => $this->config->team_id,\n 'config_id' => $this->config->getId(),\n 'retry_after' => $retryAfter,\n ]);\n\n throw new RateLimitException(\n 'Hubspot rate limit reached for configuration ' . $this->config->getId(),\n $retryAfter,\n );\n }\n\n $this->rateLimiter->incrementRequestCount($this->config);\n\n try {\n return $apiCall();\n } catch (Throwable $e) {\n if ($this->isHubspotRateLimit($e)) {\n $retryAfter = $this->parseRetryAfter($e);\n\n $this->log->warning('[Hubspot] Received 429 from API', [\n 'team_id' => $this->config->team_id,\n 'config_id' => $this->config->getId(),\n 'retry_after' => $retryAfter,\n 'reason' => $e->getMessage(),\n ]);\n\n throw new RateLimitException('Hubspot returned 429', $retryAfter, $e);\n }\n\n throw $e;\n }\n }\n\n private function isHubspotRateLimit(Throwable $e): bool\n {\n return method_exists($e, 'getCode') && (int) $e->getCode() === 429;\n }\n\n private function parseRetryAfter(Throwable $e): int\n {\n if (method_exists($e, 'getResponseHeaders')) {\n $headers = $e->getResponseHeaders() ?: [];\n $value = $headers['Retry-After'] ?? $headers['retry-after'] ?? null;\n if (is_array($value)) {\n $value = $value[0] ?? null;\n }\n if (is_numeric($value)) {\n return (int) $value;\n }\n }\n\n return 10;\n }\n\n public function getMinimumApiVersion(): string\n {\n return self::MIN_API_VERSION;\n }\n\n public function getInstance(): Factory\n {\n return new Factory([\n 'key' => $this->accessToken,\n 'oauth2' => true,\n 'base_url' => $this->baseUrl,\n ]);\n }\n\n public function getNewInstance(): Discovery\n {\n return \\HubSpot\\Factory::createWithAccessToken($this->accessToken);\n }\n\n /**\n * Secondly and daily limits for Hubspot API\n *\n * Product Tier: Free & Starter | Professional & Enterprise | API add-on (any tier)\n * Burst: 100/10 seconds | 150/10 seconds | 200/10 seconds\n * Daily: 250,000 | 500,000 | 1,000,000\n *\n * Official documentation states: The search endpoints are rate limited to five requests per second.\n * Since with 5 RPS were still hitting secondly rate limits we lowered it to 4\n */\n public function getPaginatedData(array $payload, string $type, int $offset = 0): array\n {\n $total = 0;\n $lastId = null;\n $rows = [];\n foreach ($this->getPaginatedDataGenerator($payload, $type, $offset, $total, $lastId) as $row) {\n $rows[] = $row;\n }\n\n return ['results' => $rows, 'total' => $total, 'last_record' => $lastId];\n }\n\n /**\n * @throws HubspotException\n * @throws SocialAccountTokenInvalidException\n * @throws BadRequest\n */\n public function getPaginatedDataGenerator(\n array $payload,\n string $type,\n int $offset = 0,\n int &$total = 0,\n ?string &$lastRecordId = null\n ): \\Generator {\n return $this->paginationService->getPaginatedDataGenerator(\n $this,\n $payload,\n $type,\n $offset,\n $total,\n $lastRecordId\n );\n }\n\n /**\n * @throws DealApiException\n * @throws CrmException\n */\n public function getOpportunityById(string $crmId, array $fields): array\n {\n try {\n// $deal = $this->executeRequest(fn () => $this->getNewInstance()->crm()->deals()->basicApi()->getById(\n $deal = $this->getNewInstance()->crm()->deals()->basicApi()->getById(\n $crmId,\n implode(',', $fields),\n 'companies,contacts'\n );\n } catch (DealApiException $e) {\n $this->log->info('[Hubspot] Failed to fetch opportunity', [\n 'crm_id' => $crmId,\n 'reason' => $e->getMessage(),\n ]);\n\n throw $e;\n }\n\n if (! $deal instanceof DealWithAssociations) {\n throw new CrmException('Deal not found');\n }\n\n return [\n 'id' => $deal->getId(),\n 'properties' => $deal->getProperties(),\n 'associations' => $deal->getAssociations(),\n ];\n }\n\n /**\n * Generic batch read method for HubSpot objects\n *\n * @param string $objectType The object type ('deals', 'companies', 'contacts')\n * @param array<string> $crmIds Array of HubSpot object IDs (max 100)\n * @param array<string> $fields Array of property names to fetch\n *\n * @return array<string, array> Array keyed by CRM ID with object data\n */\n private function batchReadObjects(string $objectType, array $crmIds, array $fields): array\n {\n if (empty($crmIds)) {\n return [];\n }\n\n $this->validateBatchSize($objectType, $crmIds);\n $this->ensureValidToken();\n\n try {\n $batchConfig = $this->createBatchConfiguration($objectType);\n $batchReadRequest = $this->prepareBatchRequest($batchConfig, $crmIds, $fields);\n $response = $batchConfig['api']->read($batchReadRequest);\n\n $this->validateApiResponse($response, $objectType);\n\n $results = $this->processApiResults($response);\n $this->logBatchResults($objectType, $crmIds, $results);\n\n return $results;\n } catch (\\Throwable $e) {\n $this->handleBatchError($e, $objectType, $crmIds);\n }\n }\n\n private function validateBatchSize(string $objectType, array $crmIds): void\n {\n if (count($crmIds) > 100) {\n throw new \\InvalidArgumentException(\"Batch size cannot exceed 100 {$objectType}\");\n }\n }\n\n private function createBatchConfiguration(string $objectType): array\n {\n $configurations = [\n 'deals' => [\n 'batchReadRequest' => new \\HubSpot\\Client\\Crm\\Deals\\Model\\BatchReadInputSimplePublicObjectId(),\n 'inputClass' => \\HubSpot\\Client\\Crm\\Deals\\Model\\SimplePublicObjectId::class,\n 'api' => $this->getNewInstance()->crm()->deals()->batchApi(),\n ],\n 'companies' => [\n 'batchReadRequest' => new \\HubSpot\\Client\\Crm\\Companies\\Model\\BatchReadInputSimplePublicObjectId(),\n 'inputClass' => \\HubSpot\\Client\\Crm\\Companies\\Model\\SimplePublicObjectId::class,\n 'api' => $this->getNewInstance()->crm()->companies()->batchApi(),\n ],\n 'contacts' => [\n 'batchReadRequest' => new \\HubSpot\\Client\\Crm\\Contacts\\Model\\BatchReadInputSimplePublicObjectId(),\n 'inputClass' => \\HubSpot\\Client\\Crm\\Contacts\\Model\\SimplePublicObjectId::class,\n 'api' => $this->getNewInstance()->crm()->contacts()->batchApi(),\n ],\n ];\n\n if (! isset($configurations[$objectType])) {\n throw new \\InvalidArgumentException(\"Unsupported object type: {$objectType}\");\n }\n\n return $configurations[$objectType];\n }\n\n private function prepareBatchRequest(array $batchConfig, array $crmIds, array $fields): object\n {\n $batchReadRequest = $batchConfig['batchReadRequest'];\n $inputClass = $batchConfig['inputClass'];\n\n $inputs = array_map(function ($crmId) use ($inputClass) {\n $input = new $inputClass();\n $input->setId($crmId);\n\n return $input;\n }, $crmIds);\n\n $batchReadRequest->setInputs($inputs);\n $batchReadRequest->setProperties($fields);\n\n return $batchReadRequest;\n }\n\n private function validateApiResponse($response, string $objectType): void\n {\n if (! $response) {\n throw new CrmException(\"HubSpot API returned null response for {$objectType} batch read\");\n }\n }\n\n private function processApiResults($response): array\n {\n $results = [];\n $responseResults = $response->getResults();\n\n if ($responseResults) {\n foreach ($responseResults as $object) {\n if ($object && $object->getId()) {\n $results[$object->getId()] = [\n 'id' => $object->getId(),\n 'properties' => $object->getProperties() ?: [],\n ];\n }\n }\n }\n\n return $results;\n }\n\n private function logBatchResults(string $objectType, array $crmIds, array $results): void\n {\n $this->log->info(\"[HubSpot] Batch fetched {$objectType}\", [\n 'requested_count' => count($crmIds),\n 'returned_count' => count($results),\n 'crm_ids' => $crmIds,\n ]);\n }\n\n private function handleBatchError(\\Throwable $e, string $objectType, array $crmIds): void\n {\n $errorMessage = $e->getMessage() ?: 'Unknown error';\n $errorTrace = $e->getTraceAsString() ?: 'No trace available';\n\n $this->log->error(\"[HubSpot] Failed to batch fetch {$objectType}\", [\n 'crm_ids' => $crmIds,\n 'error' => $errorMessage,\n 'trace' => $errorTrace,\n ]);\n\n throw new CrmException(\"Failed to batch fetch {$objectType}: \" . $errorMessage);\n }\n\n /**\n * Batch read multiple opportunities by their CRM IDs\n *\n * @param array<string> $crmIds Array of HubSpot deal IDs (max 100)\n * @param array<string> $fields Array of property names to fetch\n *\n * @return array<string, array> Array keyed by CRM ID with opportunity data\n */\n public function getOpportunitiesByIds(array $crmIds, array $fields): array\n {\n return $this->batchReadObjects('deals', $crmIds, $fields);\n }\n\n /**\n * Batch read multiple companies by their CRM IDs\n *\n * @param array<string> $crmIds Array of HubSpot company IDs (max 100)\n * @param array<string> $fields Array of property names to fetch\n *\n * @return array<string, array> Array keyed by CRM ID with company data\n */\n public function getCompaniesByIds(array $crmIds, array $fields): array\n {\n return $this->batchReadObjects('companies', $crmIds, $fields);\n }\n\n /**\n * Batch read multiple contacts by their CRM IDs\n *\n * @param array<string> $crmIds Array of HubSpot contact IDs (max 100)\n * @param array<string> $fields Array of property names to fetch\n *\n * @return array<string, array> Array keyed by CRM ID with contact data\n */\n public function getContactsByIds(array $crmIds, array $fields): array\n {\n return $this->batchReadObjects('contacts', $crmIds, $fields);\n }\n\n /**\n * @throws CompanyApiException\n * @throws CrmException\n */\n public function getAccountById(string $crmId, array $fields): array\n {\n try {\n $company = $this->getNewInstance()->crm()->companies()->basicApi()->getById(\n $crmId,\n implode(',', $fields),\n );\n } catch (CompanyApiException $e) {\n $this->log->info('[Hubspot] Failed to fetch account', [\n 'crm_id' => $crmId,\n 'reason' => $e->getMessage(),\n ]);\n\n throw $e;\n }\n\n if (! $company instanceof CompaniesWithAssociations) {\n throw new CrmException('Account not found');\n }\n\n return [\n 'id' => $company->getId(),\n 'properties' => $company->getProperties(),\n ];\n }\n\n /**\n * @throws ContactApiException\n * @throws CrmException\n */\n public function getContactById(string $crmId, array $fields): array\n {\n try {\n $contact = $this->getNewInstance()->crm()->contacts()->basicApi()->getById(\n $crmId,\n implode(',', $fields)\n );\n } catch (ContactApiException $e) {\n $this->log->info('[Hubspot] Failed to fetch contact', [\n 'crm_id' => $crmId,\n 'reason' => $e->getMessage(),\n ]);\n\n throw $e;\n }\n\n if (! $contact instanceof ContactsWithAssociations) {\n throw new CrmException('Contact not found');\n }\n\n return [\n 'id' => $contact->getId(),\n 'properties' => $contact->getProperties(),\n ];\n }\n\n /**\n * This is email search request that Hubspot offers as GET (more generous quota)\n */\n public function getContactByEmail(string $email, array $fields = []): array\n {\n try {\n $contact = $this->getNewInstance()->crm()->contacts()->basicApi()->getById(\n $email,\n implode(',', $fields),\n null,\n false,\n 'email'\n );\n\n return [\n 'id' => $contact->getId(),\n 'properties' => $contact->getProperties(),\n ];\n } catch (ContactApiException $e) {\n $this->log->info('[Hubspot] Failed to fetch contact', [\n 'email' => $email,\n 'reason' => $e->getMessage(),\n ]);\n\n return [];\n }\n }\n\n /**\n * @throws CrmException\n */\n public function fetchProperty(string $objectType, string $propertyId): Property\n {\n $result = $this->getNewInstance()->crm()->properties()->coreApi()->getByName($objectType, $propertyId);\n\n if (! $result instanceof Property) {\n $this->log->error('[Hubspot] Failed to fetch property', [\n 'object_type' => $objectType,\n 'property_id' => $propertyId,\n 'reason' => $result->getMessage(),\n ]);\n\n throw new CrmException('Failed to fetch property');\n }\n\n return $result;\n }\n\n /**\n * @return array<CrmFieldOption>\n */\n public function fetchPropertyOptions(string $objectType, string $propertyId): array\n {\n /** @var array<CrmFieldOption> */\n return $this->fetchProperty($objectType, $propertyId)->getOptions();\n }\n\n /**\n * @return array<array{id:string, label:string, deleted:bool}>\n */\n public function fetchCallDispositions(): array\n {\n /** @var Response $response */\n $response = $this->getInstance()->engagements()->getCallDispositions();\n\n /**\n * @var array<array{\n * id:string,\n * label:string,\n * deleted: bool\n * }>\n */\n return $response->toArray();\n }\n\n /**\n * @return array<CrmFieldOption>\n */\n public function fetchOpportunityPipelineStages(): array\n {\n $stages = [];\n $apiResponse = $this->getNewInstance()->crm()->pipelines()->pipelinesApi()->getAll('deals');\n\n if ($apiResponse instanceof Error) {\n $this->log->error('[Hubspot] Failed to fetch opportunity pipelines', [\n 'reason' => $apiResponse->getMessage(),\n ]);\n\n return [];\n }\n\n foreach ($apiResponse->getResults() as $pipeline) {\n $pipelineStages = array_map(\n static function (PipelineStage $stage) {\n return [\n 'id' => $stage->getId(),\n 'label' => $stage->getLabel(),\n ];\n },\n $pipeline->getStages()\n );\n\n $stages = array_merge($stages, $pipelineStages);\n }\n\n return $stages;\n }\n\n public function fetchOpportunityPipelines(): array\n {\n $pipelines = [];\n\n try {\n $apiResponse = $this->makeRequest('/crm/v3/pipelines/deals');\n } catch (\\Exception $e) {\n $this->log->info('[Hubspot] Failed to fetch opportunity pipelines', [\n 'reason' => $e->getMessage(),\n ]);\n\n return [];\n }\n\n $response = $apiResponse->toArray();\n\n foreach ($response['results'] as $pipeline) {\n $pipelines[] = [\n 'id' => $pipeline['id'],\n 'label' => $pipeline['label'],\n ];\n }\n\n return $pipelines;\n }\n\n /**\n * @return array<CrmFieldOption>\n */\n public function fetchMeetingOutcomeFieldOptions(Field $field): array\n {\n return $field->getCrmProviderId() === 'meetingOutcome'\n ? $this->fetchMeetingOutcomeTypes()\n : $this->fetchCallActivityTypes();\n }\n\n public function fetchMeetingOutcomeTypes(): array\n {\n return $this->extractMeetingTypeOptions(\n 'https://api.hubapi.com/crm/v3/properties/meeting/hs_meeting_outcome'\n );\n }\n\n public function fetchCallActivityTypes(): array\n {\n return $this->extractMeetingTypeOptions(\n 'https://api.hubapi.com/crm/v3/properties/call/hs_activity_type'\n );\n }\n\n private function extractMeetingTypeOptions(string $endpoint): array\n {\n /** @var Response $response */\n $response = $this->getInstance()\n ->getClient()\n ->request('GET', $endpoint);\n\n /**\n * @var array<array{\n * value: string,\n * label: string,\n * displayOrder: int\n * }> $optionData\n */\n $optionData = $response->toArray()['options'] ?? [];\n\n $options = [];\n foreach ($optionData as $item) {\n $options[] = [\n 'id' => $item['value'],\n 'value' => $item['value'],\n 'label' => $item['label'],\n 'display_order' => $item['displayOrder'],\n ];\n }\n\n return $options;\n }\n\n /**\n * @return array<CrmFieldOption>\n */\n public function fetchDispositionFieldOptions(): array\n {\n $options = [];\n\n $dispositions = $this->fetchCallDispositions();\n\n foreach ($dispositions as $disposition) {\n if ($disposition['deleted'] !== false) {\n continue;\n }\n\n $option['value'] = $disposition['id'];\n $option['id'] = $disposition['id'];\n $option['label'] = $disposition['label'];\n\n $options[] = $option;\n }\n\n return $options;\n }\n\n /**\n * @return array<CrmFieldOption>\n */\n public function fetchOpportunityFieldOptions(Field $field): array\n {\n if ($field->isStageField()) {\n return $this->fetchOpportunityPipelineStages();\n }\n\n if ($field->isPipelineField()) {\n return $this->fetchOpportunityPipelines();\n }\n\n return $this->fetchPropertyOptions('deals', $field->getCrmProviderId());\n }\n\n /**\n * @throws BadRequest\n * @throws HubspotException\n */\n public function makeRequest(string $endpoint, $method = 'GET', $payload = [], ?string $queryString = null)\n {\n $endpoint = self::BASE_URL . $endpoint;\n\n if ($method === 'GET') {\n $response = $this->getInstance()->getClient()?->request(\n method: $method,\n endpoint: $endpoint,\n query_string: $queryString\n );\n } else {\n $response = $this->getInstance()->getClient()->request($method, $endpoint, [\n 'json' => ($payload),\n ]);\n }\n\n $max = $response->getHeaderLine('X-HubSpot-RateLimit-Max'); // \"110\"\n $remaining = $response->getHeaderLine('X-HubSpot-RateLimit-Remaining'); // \"109\"\n $interval = $response->getHeaderLine('X-HubSpot-RateLimit-Interval-Milliseconds'); // \"10000\"\n $body = json_decode((string) $response->getBody(), true);\n\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$max ' . PHP_EOL . print_r($max, true));\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$remaining ' . PHP_EOL . print_r($remaining, true));\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$interval ' . PHP_EOL . print_r($interval, true));\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$body ' . PHP_EOL . print_r($body, true));\n\n return $response;\n }\n\n /**\n * @throws BadRequest\n * @throws HubspotException\n */\n public function createMeeting(array $payload): Response\n {\n $endpoint = '/crm/v3/objects/meetings';\n\n return $this->makeRequest($endpoint, 'POST', $payload);\n }\n\n /**\n * @throws BadRequest\n * @throws HubspotException\n */\n public function updateMeeting(string $meetingId, array $payload): Response\n {\n $endpoint = '/crm/v3/objects/meetings/' . $meetingId;\n\n return $this->makeRequest($endpoint, 'PATCH', $payload);\n }\n\n /**\n * @throws \\Exception\n */\n public function createNote(\n string $body,\n string $ownerId,\n int $timestamp,\n string $objectId,\n NoteObject $noteObject\n ): ?string {\n try {\n $noteInput = new SimplePublicObjectInput([\n 'properties' => [\n 'hs_note_body' => $body,\n 'hubspot_owner_id' => $ownerId,\n 'hs_timestamp' => $timestamp,\n ],\n ]);\n\n // Create note\n $note = $this->getNewInstance()->crm()->objects()->basicApi()->create('note', $noteInput);\n\n $this->getNewInstance()->crm()->objects()->associationsApi()->create(\n 'note',\n $note->getId(),\n $this->getNoteObject($noteObject),\n $objectId,\n $this->getNoteAssociationType($noteObject),\n );\n\n return $note->getId();\n } catch (\\Exception $e) {\n $this->log->error('[Hubspot] Failed to create note', [\n 'objectId' => $objectId,\n 'noteObject' => $noteObject->getObjectType(),\n 'reason' => $e->getMessage(),\n ]);\n\n \\Sentry::captureException($e);\n }\n\n return null;\n }\n\n public function updateEngagement(string $objectId, array $engagement, array $metadata): void\n {\n $this->getInstance()->engagements()->update($objectId, $engagement, $metadata);\n }\n\n public function getEngagementData(string $engagementId): array\n {\n $engagement = $this->getInstance()->engagements()->get($engagementId);\n\n return $engagement->toArray();\n }\n\n public function createEngagement(array $engagement, array $associations, array $metadata): Response\n {\n return $this->getInstance()\n ->engagements()\n ->create($engagement, $associations, $metadata);\n }\n\n public function isUnauthorizedException(\\Exception $e): bool\n {\n // Check for specific HubSpot API exception types first\n if ($e instanceof BadRequest) {\n // BadRequest can contain 401 status codes\n return $e->getCode() === 401;\n }\n\n // Check for HTTP client exceptions with status codes\n if ($e instanceof \\GuzzleHttp\\Exception\\RequestException && $e->hasResponse()) {\n $response = $e->getResponse();\n if ($response !== null) {\n return $response->getStatusCode() === 401;\n }\n }\n\n // Check for Guzzle HTTP exceptions\n if ($e instanceof \\GuzzleHttp\\Exception\\ClientException) {\n return $e->getCode() === 401;\n }\n\n // Fallback to string matching as last resort, but be more specific\n $message = strtolower($e->getMessage());\n\n return str_contains($message, '401 unauthorized') ||\n str_contains($message, 'http 401') ||\n str_contains($message, 'status code 401') ||\n (preg_match('/\\b401\\b/', $message) && str_contains($message, 'unauthorized'));\n }\n\n /**\n * Validates and refreshes the access token if needed before API requests.\n * This ensures long-running processes don't fail due to token expiration.\n *\n * @throws SocialAccountTokenInvalidException\n */\n public function ensureValidToken(): void\n {\n if ($this->oauthAccount === null) {\n return;\n }\n\n $newToken = $this->tokenManager->ensureValidToken($this->oauthAccount);\n if ($newToken !== null) {\n $this->accessToken = $newToken;\n }\n }\n\n public function getConfig()\n {\n return $this->config;\n }\n\n // returns only active (archived=false)\n public function getOwners(): array\n {\n return $this->getNewInstance()->crm()->owners()->getAll();\n }\n\n /**\n * @param bool $archived\n *\n * @return array<Owner>|[]\n */\n public function getOwnersArchived(bool $archived = true): array\n {\n $endpoint = '/crm/v3/owners';\n $queryParams = [\n 'archived' => $archived ? 'true' : 'false',\n ];\n $queryString = http_build_query($queryParams);\n\n $owners = [];\n\n try {\n $response = $this->makeRequest(endpoint: $endpoint, queryString: $queryString);\n $responseData = $response?->toArray();\n\n foreach ($responseData['results'] as $result) {\n try {\n $owners[] = Owner::create($result);\n } catch (Throwable $e) {\n $this->log->error('[HubSpot] Failed to process owner data', [\n 'result' => $result,\n 'error' => $e->getMessage(),\n ]);\n\n continue;\n }\n }\n } catch (Throwable $e) {\n $this->log->error('HubSpot] Failed to fetch owners', [\n 'archived' => $archived,\n 'error' => $e->getMessage(),\n ]);\n\n return [];\n }\n\n return $owners;\n }\n\n public function getMeeting(string $engagementId): ObjectWithAssociations\n {\n return $this->getNewInstance()->crm()->objects()->basicApi()\n ->getById('meeting', $engagementId, null, 'contact,company,deal');\n }\n\n public function deleteEngagement(string $engagementId): void\n {\n $this->getInstance()->engagements()->delete((int) $engagementId);\n }\n\n public function getAssociationsData(array $ids, string $fromObject, string $toObject): array\n {\n $associationData = [];\n $idChunks = array_chunk($ids, self::ASSOCIATIONS_BATCH_SIZE_LIMIT);\n\n foreach ($idChunks as $idChunk) {\n try {\n $batchInput = new \\HubSpot\\Client\\Crm\\Associations\\Model\\BatchInputPublicObjectId();\n $batchInput->setInputs(array_map(function ($id) {\n $publicObjectId = new \\HubSpot\\Client\\Crm\\Associations\\Model\\PublicObjectId();\n $publicObjectId->setId($id);\n\n return $publicObjectId;\n }, $idChunk));\n\n $associatedObjectsData = $this\n ->getNewInstance()\n ->crm()\n ->associations()\n ->batchApi()\n ->read($fromObject, $toObject, $batchInput);\n\n if ($associatedObjectsData instanceof \\HubSpot\\Client\\Crm\\Associations\\Model\\BatchResponsePublicAssociationMulti) {\n foreach ($associatedObjectsData->getResults() as $association) {\n $from = $association->getFrom()->getId();\n $toAssociations = $association->getTo();\n\n if (! empty($toAssociations)) {\n $associationData[$from] = array_map(function ($item) {\n return $item->getId();\n }, $toAssociations);\n }\n }\n }\n } catch (\\Exception $e) {\n $this->log->error('[Hubspot] Failed to fetch associations', [\n 'from_object' => $fromObject,\n 'to_object' => $toObject,\n 'reason' => $e->getMessage(),\n ]);\n }\n }\n\n return $associationData;\n }\n\n /**\n * @throws \\Exception\n */\n private function getNoteAssociationType(NoteObject $noteObject): string\n {\n return match($noteObject) {\n NoteObject::Opportunity => 'note_to_deal',\n NoteObject::Lead, NoteObject::Contact => 'note_to_contact', // or 'note_to_lead' if your portal supports it\n NoteObject::Account => 'note_to_company',\n NoteObject::Call, NoteObject::Event => throw new \\Exception('Not supported'),\n };\n }\n\n /**\n * @throws \\Exception\n */\n private function getNoteObject(NoteObject $noteObject): string\n {\n return match($noteObject) {\n NoteObject::Opportunity => 'deal',\n NoteObject::Lead, NoteObject::Contact => 'contact',\n NoteObject::Account => 'company',\n NoteObject::Call, NoteObject::Event => throw new \\Exception('Not supported'),\n };\n }\n\n public function addAssociations(string $objectType, string $associationType, array $payload): Response\n {\n $endpoint = \"/crm/v4/associations/$objectType/$associationType/batch/create\";\n\n return $this->makeRequest($endpoint, 'POST', $payload);\n }\n\n public function removeAssociations(string $objectType, string $associationType, array $payload): Response\n {\n $endpoint = \"/crm/v4/associations/$objectType/$associationType/batch/archive\";\n\n return $this->makeRequest($endpoint, 'POST', $payload);\n }\n}","depth":4,"on_screen":true,"value":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Services\\Crm\\Hubspot;\n\nuse HubSpot\\Client\\Crm\\Deals\\ApiException as DealApiException;\nuse HubSpot\\Client\\Crm\\Contacts\\ApiException as ContactApiException;\nuse HubSpot\\Client\\Crm\\Companies\\ApiException as CompanyApiException;\nuse HubSpot\\Client\\Crm\\Contacts\\Model\\SimplePublicObjectWithAssociations as ContactsWithAssociations;\nuse HubSpot\\Client\\Crm\\Companies\\Model\\SimplePublicObjectWithAssociations as CompaniesWithAssociations;\nuse HubSpot\\Client\\Crm\\Deals\\Model\\SimplePublicObjectWithAssociations as DealWithAssociations;\nuse HubSpot\\Client\\Crm\\Objects\\Model\\SimplePublicObjectInput;\nuse HubSpot\\Client\\Crm\\Objects\\Model\\SimplePublicObjectWithAssociations as ObjectWithAssociations;\nuse HubSpot\\Client\\Crm\\Pipelines\\Model\\Error;\nuse HubSpot\\Client\\Crm\\Pipelines\\Model\\PipelineStage;\nuse HubSpot\\Client\\Crm\\Properties\\Model\\Property;\nuse HubSpot\\Discovery\\Discovery;\nuse Jiminny\\Component\\Utility\\Service\\ProviderRateLimiter;\nuse Jiminny\\Exceptions\\CrmException;\nuse Jiminny\\Exceptions\\RateLimitException;\nuse Jiminny\\Exceptions\\SocialAccountTokenInvalidException;\nuse Jiminny\\Jobs\\Crm\\NoteObject;\nuse Jiminny\\Models\\Crm\\Field;\nuse Jiminny\\Services\\Crm\\BaseClient;\nuse Jiminny\\Services\\Crm\\Hubspot\\DTO\\Response\\Owner;\nuse Jiminny\\Services\\SocialAccountService;\nuse SevenShores\\Hubspot\\Exceptions\\BadRequest;\nuse SevenShores\\Hubspot\\Exceptions\\HubspotException;\nuse SevenShores\\Hubspot\\Factory;\nuse SevenShores\\Hubspot\\Http\\Response;\nuse Jiminny\\Services\\Crm\\Hubspot\\Pagination\\HubspotPaginationService;\nuse Throwable;\n\n/**\n * @phpstan-type CrmFieldOption array{id:string, label:string, value?:string}\n */\nclass Client extends BaseClient implements HubspotClientInterface\n{\n public const string MIN_API_VERSION = '2';\n\n public const string BASE_URL = 'https://api.hubapi.com';\n\n public const int ASSOCIATIONS_BATCH_SIZE_LIMIT = 1000;\n\n private HubspotPaginationService $paginationService;\n private HubspotTokenManager $tokenManager;\n private ProviderRateLimiter $rateLimiter;\n\n public function __construct(\n SocialAccountService $socialAccountService,\n HubspotPaginationService $paginationService,\n HubspotTokenManager $tokenManager,\n ProviderRateLimiter $rateLimiter,\n ) {\n parent::__construct($socialAccountService);\n $this->paginationService = $paginationService;\n $this->tokenManager = $tokenManager;\n $this->rateLimiter = $rateLimiter;\n\n $this->setBaseUrl(self::BASE_URL);\n $this->setVersion(self::MIN_API_VERSION);\n }\n\n /**\n * Single entry point for every HubSpot API call. Enforces the per-portal\n * rate limit configured in the rate_limits table (morphed to the current\n * Configuration) and reacts to a real 429 from HubSpot by translating it\n * into a RateLimitException carrying Retry-After.\n *\n * Wrap any outbound HubSpot call (SDK or raw HTTP) like:\n *\n * $this->executeRequest(fn () => $this->getNewInstance()->crm()->...);\n *\n * @template T\n * @param callable(): T $apiCall\n * @return T\n *\n * @throws RateLimitException\n */\n private function executeRequest(callable $apiCall)\n {\n if (! $this->rateLimiter->canMakeRequest($this->config)) {\n $retryAfter = $this->rateLimiter->requestAvailableIn($this->config);\n\n $this->log->warning('[Hubspot] Rate limit exceeded, deferring request', [\n 'team_id' => $this->config->team_id,\n 'config_id' => $this->config->getId(),\n 'retry_after' => $retryAfter,\n ]);\n\n throw new RateLimitException(\n 'Hubspot rate limit reached for configuration ' . $this->config->getId(),\n $retryAfter,\n );\n }\n\n $this->rateLimiter->incrementRequestCount($this->config);\n\n try {\n return $apiCall();\n } catch (Throwable $e) {\n if ($this->isHubspotRateLimit($e)) {\n $retryAfter = $this->parseRetryAfter($e);\n\n $this->log->warning('[Hubspot] Received 429 from API', [\n 'team_id' => $this->config->team_id,\n 'config_id' => $this->config->getId(),\n 'retry_after' => $retryAfter,\n 'reason' => $e->getMessage(),\n ]);\n\n throw new RateLimitException('Hubspot returned 429', $retryAfter, $e);\n }\n\n throw $e;\n }\n }\n\n private function isHubspotRateLimit(Throwable $e): bool\n {\n return method_exists($e, 'getCode') && (int) $e->getCode() === 429;\n }\n\n private function parseRetryAfter(Throwable $e): int\n {\n if (method_exists($e, 'getResponseHeaders')) {\n $headers = $e->getResponseHeaders() ?: [];\n $value = $headers['Retry-After'] ?? $headers['retry-after'] ?? null;\n if (is_array($value)) {\n $value = $value[0] ?? null;\n }\n if (is_numeric($value)) {\n return (int) $value;\n }\n }\n\n return 10;\n }\n\n public function getMinimumApiVersion(): string\n {\n return self::MIN_API_VERSION;\n }\n\n public function getInstance(): Factory\n {\n return new Factory([\n 'key' => $this->accessToken,\n 'oauth2' => true,\n 'base_url' => $this->baseUrl,\n ]);\n }\n\n public function getNewInstance(): Discovery\n {\n return \\HubSpot\\Factory::createWithAccessToken($this->accessToken);\n }\n\n /**\n * Secondly and daily limits for Hubspot API\n *\n * Product Tier: Free & Starter | Professional & Enterprise | API add-on (any tier)\n * Burst: 100/10 seconds | 150/10 seconds | 200/10 seconds\n * Daily: 250,000 | 500,000 | 1,000,000\n *\n * Official documentation states: The search endpoints are rate limited to five requests per second.\n * Since with 5 RPS were still hitting secondly rate limits we lowered it to 4\n */\n public function getPaginatedData(array $payload, string $type, int $offset = 0): array\n {\n $total = 0;\n $lastId = null;\n $rows = [];\n foreach ($this->getPaginatedDataGenerator($payload, $type, $offset, $total, $lastId) as $row) {\n $rows[] = $row;\n }\n\n return ['results' => $rows, 'total' => $total, 'last_record' => $lastId];\n }\n\n /**\n * @throws HubspotException\n * @throws SocialAccountTokenInvalidException\n * @throws BadRequest\n */\n public function getPaginatedDataGenerator(\n array $payload,\n string $type,\n int $offset = 0,\n int &$total = 0,\n ?string &$lastRecordId = null\n ): \\Generator {\n return $this->paginationService->getPaginatedDataGenerator(\n $this,\n $payload,\n $type,\n $offset,\n $total,\n $lastRecordId\n );\n }\n\n /**\n * @throws DealApiException\n * @throws CrmException\n */\n public function getOpportunityById(string $crmId, array $fields): array\n {\n try {\n// $deal = $this->executeRequest(fn () => $this->getNewInstance()->crm()->deals()->basicApi()->getById(\n $deal = $this->getNewInstance()->crm()->deals()->basicApi()->getById(\n $crmId,\n implode(',', $fields),\n 'companies,contacts'\n );\n } catch (DealApiException $e) {\n $this->log->info('[Hubspot] Failed to fetch opportunity', [\n 'crm_id' => $crmId,\n 'reason' => $e->getMessage(),\n ]);\n\n throw $e;\n }\n\n if (! $deal instanceof DealWithAssociations) {\n throw new CrmException('Deal not found');\n }\n\n return [\n 'id' => $deal->getId(),\n 'properties' => $deal->getProperties(),\n 'associations' => $deal->getAssociations(),\n ];\n }\n\n /**\n * Generic batch read method for HubSpot objects\n *\n * @param string $objectType The object type ('deals', 'companies', 'contacts')\n * @param array<string> $crmIds Array of HubSpot object IDs (max 100)\n * @param array<string> $fields Array of property names to fetch\n *\n * @return array<string, array> Array keyed by CRM ID with object data\n */\n private function batchReadObjects(string $objectType, array $crmIds, array $fields): array\n {\n if (empty($crmIds)) {\n return [];\n }\n\n $this->validateBatchSize($objectType, $crmIds);\n $this->ensureValidToken();\n\n try {\n $batchConfig = $this->createBatchConfiguration($objectType);\n $batchReadRequest = $this->prepareBatchRequest($batchConfig, $crmIds, $fields);\n $response = $batchConfig['api']->read($batchReadRequest);\n\n $this->validateApiResponse($response, $objectType);\n\n $results = $this->processApiResults($response);\n $this->logBatchResults($objectType, $crmIds, $results);\n\n return $results;\n } catch (\\Throwable $e) {\n $this->handleBatchError($e, $objectType, $crmIds);\n }\n }\n\n private function validateBatchSize(string $objectType, array $crmIds): void\n {\n if (count($crmIds) > 100) {\n throw new \\InvalidArgumentException(\"Batch size cannot exceed 100 {$objectType}\");\n }\n }\n\n private function createBatchConfiguration(string $objectType): array\n {\n $configurations = [\n 'deals' => [\n 'batchReadRequest' => new \\HubSpot\\Client\\Crm\\Deals\\Model\\BatchReadInputSimplePublicObjectId(),\n 'inputClass' => \\HubSpot\\Client\\Crm\\Deals\\Model\\SimplePublicObjectId::class,\n 'api' => $this->getNewInstance()->crm()->deals()->batchApi(),\n ],\n 'companies' => [\n 'batchReadRequest' => new \\HubSpot\\Client\\Crm\\Companies\\Model\\BatchReadInputSimplePublicObjectId(),\n 'inputClass' => \\HubSpot\\Client\\Crm\\Companies\\Model\\SimplePublicObjectId::class,\n 'api' => $this->getNewInstance()->crm()->companies()->batchApi(),\n ],\n 'contacts' => [\n 'batchReadRequest' => new \\HubSpot\\Client\\Crm\\Contacts\\Model\\BatchReadInputSimplePublicObjectId(),\n 'inputClass' => \\HubSpot\\Client\\Crm\\Contacts\\Model\\SimplePublicObjectId::class,\n 'api' => $this->getNewInstance()->crm()->contacts()->batchApi(),\n ],\n ];\n\n if (! isset($configurations[$objectType])) {\n throw new \\InvalidArgumentException(\"Unsupported object type: {$objectType}\");\n }\n\n return $configurations[$objectType];\n }\n\n private function prepareBatchRequest(array $batchConfig, array $crmIds, array $fields): object\n {\n $batchReadRequest = $batchConfig['batchReadRequest'];\n $inputClass = $batchConfig['inputClass'];\n\n $inputs = array_map(function ($crmId) use ($inputClass) {\n $input = new $inputClass();\n $input->setId($crmId);\n\n return $input;\n }, $crmIds);\n\n $batchReadRequest->setInputs($inputs);\n $batchReadRequest->setProperties($fields);\n\n return $batchReadRequest;\n }\n\n private function validateApiResponse($response, string $objectType): void\n {\n if (! $response) {\n throw new CrmException(\"HubSpot API returned null response for {$objectType} batch read\");\n }\n }\n\n private function processApiResults($response): array\n {\n $results = [];\n $responseResults = $response->getResults();\n\n if ($responseResults) {\n foreach ($responseResults as $object) {\n if ($object && $object->getId()) {\n $results[$object->getId()] = [\n 'id' => $object->getId(),\n 'properties' => $object->getProperties() ?: [],\n ];\n }\n }\n }\n\n return $results;\n }\n\n private function logBatchResults(string $objectType, array $crmIds, array $results): void\n {\n $this->log->info(\"[HubSpot] Batch fetched {$objectType}\", [\n 'requested_count' => count($crmIds),\n 'returned_count' => count($results),\n 'crm_ids' => $crmIds,\n ]);\n }\n\n private function handleBatchError(\\Throwable $e, string $objectType, array $crmIds): void\n {\n $errorMessage = $e->getMessage() ?: 'Unknown error';\n $errorTrace = $e->getTraceAsString() ?: 'No trace available';\n\n $this->log->error(\"[HubSpot] Failed to batch fetch {$objectType}\", [\n 'crm_ids' => $crmIds,\n 'error' => $errorMessage,\n 'trace' => $errorTrace,\n ]);\n\n throw new CrmException(\"Failed to batch fetch {$objectType}: \" . $errorMessage);\n }\n\n /**\n * Batch read multiple opportunities by their CRM IDs\n *\n * @param array<string> $crmIds Array of HubSpot deal IDs (max 100)\n * @param array<string> $fields Array of property names to fetch\n *\n * @return array<string, array> Array keyed by CRM ID with opportunity data\n */\n public function getOpportunitiesByIds(array $crmIds, array $fields): array\n {\n return $this->batchReadObjects('deals', $crmIds, $fields);\n }\n\n /**\n * Batch read multiple companies by their CRM IDs\n *\n * @param array<string> $crmIds Array of HubSpot company IDs (max 100)\n * @param array<string> $fields Array of property names to fetch\n *\n * @return array<string, array> Array keyed by CRM ID with company data\n */\n public function getCompaniesByIds(array $crmIds, array $fields): array\n {\n return $this->batchReadObjects('companies', $crmIds, $fields);\n }\n\n /**\n * Batch read multiple contacts by their CRM IDs\n *\n * @param array<string> $crmIds Array of HubSpot contact IDs (max 100)\n * @param array<string> $fields Array of property names to fetch\n *\n * @return array<string, array> Array keyed by CRM ID with contact data\n */\n public function getContactsByIds(array $crmIds, array $fields): array\n {\n return $this->batchReadObjects('contacts', $crmIds, $fields);\n }\n\n /**\n * @throws CompanyApiException\n * @throws CrmException\n */\n public function getAccountById(string $crmId, array $fields): array\n {\n try {\n $company = $this->getNewInstance()->crm()->companies()->basicApi()->getById(\n $crmId,\n implode(',', $fields),\n );\n } catch (CompanyApiException $e) {\n $this->log->info('[Hubspot] Failed to fetch account', [\n 'crm_id' => $crmId,\n 'reason' => $e->getMessage(),\n ]);\n\n throw $e;\n }\n\n if (! $company instanceof CompaniesWithAssociations) {\n throw new CrmException('Account not found');\n }\n\n return [\n 'id' => $company->getId(),\n 'properties' => $company->getProperties(),\n ];\n }\n\n /**\n * @throws ContactApiException\n * @throws CrmException\n */\n public function getContactById(string $crmId, array $fields): array\n {\n try {\n $contact = $this->getNewInstance()->crm()->contacts()->basicApi()->getById(\n $crmId,\n implode(',', $fields)\n );\n } catch (ContactApiException $e) {\n $this->log->info('[Hubspot] Failed to fetch contact', [\n 'crm_id' => $crmId,\n 'reason' => $e->getMessage(),\n ]);\n\n throw $e;\n }\n\n if (! $contact instanceof ContactsWithAssociations) {\n throw new CrmException('Contact not found');\n }\n\n return [\n 'id' => $contact->getId(),\n 'properties' => $contact->getProperties(),\n ];\n }\n\n /**\n * This is email search request that Hubspot offers as GET (more generous quota)\n */\n public function getContactByEmail(string $email, array $fields = []): array\n {\n try {\n $contact = $this->getNewInstance()->crm()->contacts()->basicApi()->getById(\n $email,\n implode(',', $fields),\n null,\n false,\n 'email'\n );\n\n return [\n 'id' => $contact->getId(),\n 'properties' => $contact->getProperties(),\n ];\n } catch (ContactApiException $e) {\n $this->log->info('[Hubspot] Failed to fetch contact', [\n 'email' => $email,\n 'reason' => $e->getMessage(),\n ]);\n\n return [];\n }\n }\n\n /**\n * @throws CrmException\n */\n public function fetchProperty(string $objectType, string $propertyId): Property\n {\n $result = $this->getNewInstance()->crm()->properties()->coreApi()->getByName($objectType, $propertyId);\n\n if (! $result instanceof Property) {\n $this->log->error('[Hubspot] Failed to fetch property', [\n 'object_type' => $objectType,\n 'property_id' => $propertyId,\n 'reason' => $result->getMessage(),\n ]);\n\n throw new CrmException('Failed to fetch property');\n }\n\n return $result;\n }\n\n /**\n * @return array<CrmFieldOption>\n */\n public function fetchPropertyOptions(string $objectType, string $propertyId): array\n {\n /** @var array<CrmFieldOption> */\n return $this->fetchProperty($objectType, $propertyId)->getOptions();\n }\n\n /**\n * @return array<array{id:string, label:string, deleted:bool}>\n */\n public function fetchCallDispositions(): array\n {\n /** @var Response $response */\n $response = $this->getInstance()->engagements()->getCallDispositions();\n\n /**\n * @var array<array{\n * id:string,\n * label:string,\n * deleted: bool\n * }>\n */\n return $response->toArray();\n }\n\n /**\n * @return array<CrmFieldOption>\n */\n public function fetchOpportunityPipelineStages(): array\n {\n $stages = [];\n $apiResponse = $this->getNewInstance()->crm()->pipelines()->pipelinesApi()->getAll('deals');\n\n if ($apiResponse instanceof Error) {\n $this->log->error('[Hubspot] Failed to fetch opportunity pipelines', [\n 'reason' => $apiResponse->getMessage(),\n ]);\n\n return [];\n }\n\n foreach ($apiResponse->getResults() as $pipeline) {\n $pipelineStages = array_map(\n static function (PipelineStage $stage) {\n return [\n 'id' => $stage->getId(),\n 'label' => $stage->getLabel(),\n ];\n },\n $pipeline->getStages()\n );\n\n $stages = array_merge($stages, $pipelineStages);\n }\n\n return $stages;\n }\n\n public function fetchOpportunityPipelines(): array\n {\n $pipelines = [];\n\n try {\n $apiResponse = $this->makeRequest('/crm/v3/pipelines/deals');\n } catch (\\Exception $e) {\n $this->log->info('[Hubspot] Failed to fetch opportunity pipelines', [\n 'reason' => $e->getMessage(),\n ]);\n\n return [];\n }\n\n $response = $apiResponse->toArray();\n\n foreach ($response['results'] as $pipeline) {\n $pipelines[] = [\n 'id' => $pipeline['id'],\n 'label' => $pipeline['label'],\n ];\n }\n\n return $pipelines;\n }\n\n /**\n * @return array<CrmFieldOption>\n */\n public function fetchMeetingOutcomeFieldOptions(Field $field): array\n {\n return $field->getCrmProviderId() === 'meetingOutcome'\n ? $this->fetchMeetingOutcomeTypes()\n : $this->fetchCallActivityTypes();\n }\n\n public function fetchMeetingOutcomeTypes(): array\n {\n return $this->extractMeetingTypeOptions(\n 'https://api.hubapi.com/crm/v3/properties/meeting/hs_meeting_outcome'\n );\n }\n\n public function fetchCallActivityTypes(): array\n {\n return $this->extractMeetingTypeOptions(\n 'https://api.hubapi.com/crm/v3/properties/call/hs_activity_type'\n );\n }\n\n private function extractMeetingTypeOptions(string $endpoint): array\n {\n /** @var Response $response */\n $response = $this->getInstance()\n ->getClient()\n ->request('GET', $endpoint);\n\n /**\n * @var array<array{\n * value: string,\n * label: string,\n * displayOrder: int\n * }> $optionData\n */\n $optionData = $response->toArray()['options'] ?? [];\n\n $options = [];\n foreach ($optionData as $item) {\n $options[] = [\n 'id' => $item['value'],\n 'value' => $item['value'],\n 'label' => $item['label'],\n 'display_order' => $item['displayOrder'],\n ];\n }\n\n return $options;\n }\n\n /**\n * @return array<CrmFieldOption>\n */\n public function fetchDispositionFieldOptions(): array\n {\n $options = [];\n\n $dispositions = $this->fetchCallDispositions();\n\n foreach ($dispositions as $disposition) {\n if ($disposition['deleted'] !== false) {\n continue;\n }\n\n $option['value'] = $disposition['id'];\n $option['id'] = $disposition['id'];\n $option['label'] = $disposition['label'];\n\n $options[] = $option;\n }\n\n return $options;\n }\n\n /**\n * @return array<CrmFieldOption>\n */\n public function fetchOpportunityFieldOptions(Field $field): array\n {\n if ($field->isStageField()) {\n return $this->fetchOpportunityPipelineStages();\n }\n\n if ($field->isPipelineField()) {\n return $this->fetchOpportunityPipelines();\n }\n\n return $this->fetchPropertyOptions('deals', $field->getCrmProviderId());\n }\n\n /**\n * @throws BadRequest\n * @throws HubspotException\n */\n public function makeRequest(string $endpoint, $method = 'GET', $payload = [], ?string $queryString = null)\n {\n $endpoint = self::BASE_URL . $endpoint;\n\n if ($method === 'GET') {\n $response = $this->getInstance()->getClient()?->request(\n method: $method,\n endpoint: $endpoint,\n query_string: $queryString\n );\n } else {\n $response = $this->getInstance()->getClient()->request($method, $endpoint, [\n 'json' => ($payload),\n ]);\n }\n\n $max = $response->getHeaderLine('X-HubSpot-RateLimit-Max'); // \"110\"\n $remaining = $response->getHeaderLine('X-HubSpot-RateLimit-Remaining'); // \"109\"\n $interval = $response->getHeaderLine('X-HubSpot-RateLimit-Interval-Milliseconds'); // \"10000\"\n $body = json_decode((string) $response->getBody(), true);\n\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$max ' . PHP_EOL . print_r($max, true));\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$remaining ' . PHP_EOL . print_r($remaining, true));\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$interval ' . PHP_EOL . print_r($interval, true));\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$body ' . PHP_EOL . print_r($body, true));\n\n return $response;\n }\n\n /**\n * @throws BadRequest\n * @throws HubspotException\n */\n public function createMeeting(array $payload): Response\n {\n $endpoint = '/crm/v3/objects/meetings';\n\n return $this->makeRequest($endpoint, 'POST', $payload);\n }\n\n /**\n * @throws BadRequest\n * @throws HubspotException\n */\n public function updateMeeting(string $meetingId, array $payload): Response\n {\n $endpoint = '/crm/v3/objects/meetings/' . $meetingId;\n\n return $this->makeRequest($endpoint, 'PATCH', $payload);\n }\n\n /**\n * @throws \\Exception\n */\n public function createNote(\n string $body,\n string $ownerId,\n int $timestamp,\n string $objectId,\n NoteObject $noteObject\n ): ?string {\n try {\n $noteInput = new SimplePublicObjectInput([\n 'properties' => [\n 'hs_note_body' => $body,\n 'hubspot_owner_id' => $ownerId,\n 'hs_timestamp' => $timestamp,\n ],\n ]);\n\n // Create note\n $note = $this->getNewInstance()->crm()->objects()->basicApi()->create('note', $noteInput);\n\n $this->getNewInstance()->crm()->objects()->associationsApi()->create(\n 'note',\n $note->getId(),\n $this->getNoteObject($noteObject),\n $objectId,\n $this->getNoteAssociationType($noteObject),\n );\n\n return $note->getId();\n } catch (\\Exception $e) {\n $this->log->error('[Hubspot] Failed to create note', [\n 'objectId' => $objectId,\n 'noteObject' => $noteObject->getObjectType(),\n 'reason' => $e->getMessage(),\n ]);\n\n \\Sentry::captureException($e);\n }\n\n return null;\n }\n\n public function updateEngagement(string $objectId, array $engagement, array $metadata): void\n {\n $this->getInstance()->engagements()->update($objectId, $engagement, $metadata);\n }\n\n public function getEngagementData(string $engagementId): array\n {\n $engagement = $this->getInstance()->engagements()->get($engagementId);\n\n return $engagement->toArray();\n }\n\n public function createEngagement(array $engagement, array $associations, array $metadata): Response\n {\n return $this->getInstance()\n ->engagements()\n ->create($engagement, $associations, $metadata);\n }\n\n public function isUnauthorizedException(\\Exception $e): bool\n {\n // Check for specific HubSpot API exception types first\n if ($e instanceof BadRequest) {\n // BadRequest can contain 401 status codes\n return $e->getCode() === 401;\n }\n\n // Check for HTTP client exceptions with status codes\n if ($e instanceof \\GuzzleHttp\\Exception\\RequestException && $e->hasResponse()) {\n $response = $e->getResponse();\n if ($response !== null) {\n return $response->getStatusCode() === 401;\n }\n }\n\n // Check for Guzzle HTTP exceptions\n if ($e instanceof \\GuzzleHttp\\Exception\\ClientException) {\n return $e->getCode() === 401;\n }\n\n // Fallback to string matching as last resort, but be more specific\n $message = strtolower($e->getMessage());\n\n return str_contains($message, '401 unauthorized') ||\n str_contains($message, 'http 401') ||\n str_contains($message, 'status code 401') ||\n (preg_match('/\\b401\\b/', $message) && str_contains($message, 'unauthorized'));\n }\n\n /**\n * Validates and refreshes the access token if needed before API requests.\n * This ensures long-running processes don't fail due to token expiration.\n *\n * @throws SocialAccountTokenInvalidException\n */\n public function ensureValidToken(): void\n {\n if ($this->oauthAccount === null) {\n return;\n }\n\n $newToken = $this->tokenManager->ensureValidToken($this->oauthAccount);\n if ($newToken !== null) {\n $this->accessToken = $newToken;\n }\n }\n\n public function getConfig()\n {\n return $this->config;\n }\n\n // returns only active (archived=false)\n public function getOwners(): array\n {\n return $this->getNewInstance()->crm()->owners()->getAll();\n }\n\n /**\n * @param bool $archived\n *\n * @return array<Owner>|[]\n */\n public function getOwnersArchived(bool $archived = true): array\n {\n $endpoint = '/crm/v3/owners';\n $queryParams = [\n 'archived' => $archived ? 'true' : 'false',\n ];\n $queryString = http_build_query($queryParams);\n\n $owners = [];\n\n try {\n $response = $this->makeRequest(endpoint: $endpoint, queryString: $queryString);\n $responseData = $response?->toArray();\n\n foreach ($responseData['results'] as $result) {\n try {\n $owners[] = Owner::create($result);\n } catch (Throwable $e) {\n $this->log->error('[HubSpot] Failed to process owner data', [\n 'result' => $result,\n 'error' => $e->getMessage(),\n ]);\n\n continue;\n }\n }\n } catch (Throwable $e) {\n $this->log->error('HubSpot] Failed to fetch owners', [\n 'archived' => $archived,\n 'error' => $e->getMessage(),\n ]);\n\n return [];\n }\n\n return $owners;\n }\n\n public function getMeeting(string $engagementId): ObjectWithAssociations\n {\n return $this->getNewInstance()->crm()->objects()->basicApi()\n ->getById('meeting', $engagementId, null, 'contact,company,deal');\n }\n\n public function deleteEngagement(string $engagementId): void\n {\n $this->getInstance()->engagements()->delete((int) $engagementId);\n }\n\n public function getAssociationsData(array $ids, string $fromObject, string $toObject): array\n {\n $associationData = [];\n $idChunks = array_chunk($ids, self::ASSOCIATIONS_BATCH_SIZE_LIMIT);\n\n foreach ($idChunks as $idChunk) {\n try {\n $batchInput = new \\HubSpot\\Client\\Crm\\Associations\\Model\\BatchInputPublicObjectId();\n $batchInput->setInputs(array_map(function ($id) {\n $publicObjectId = new \\HubSpot\\Client\\Crm\\Associations\\Model\\PublicObjectId();\n $publicObjectId->setId($id);\n\n return $publicObjectId;\n }, $idChunk));\n\n $associatedObjectsData = $this\n ->getNewInstance()\n ->crm()\n ->associations()\n ->batchApi()\n ->read($fromObject, $toObject, $batchInput);\n\n if ($associatedObjectsData instanceof \\HubSpot\\Client\\Crm\\Associations\\Model\\BatchResponsePublicAssociationMulti) {\n foreach ($associatedObjectsData->getResults() as $association) {\n $from = $association->getFrom()->getId();\n $toAssociations = $association->getTo();\n\n if (! empty($toAssociations)) {\n $associationData[$from] = array_map(function ($item) {\n return $item->getId();\n }, $toAssociations);\n }\n }\n }\n } catch (\\Exception $e) {\n $this->log->error('[Hubspot] Failed to fetch associations', [\n 'from_object' => $fromObject,\n 'to_object' => $toObject,\n 'reason' => $e->getMessage(),\n ]);\n }\n }\n\n return $associationData;\n }\n\n /**\n * @throws \\Exception\n */\n private function getNoteAssociationType(NoteObject $noteObject): string\n {\n return match($noteObject) {\n NoteObject::Opportunity => 'note_to_deal',\n NoteObject::Lead, NoteObject::Contact => 'note_to_contact', // or 'note_to_lead' if your portal supports it\n NoteObject::Account => 'note_to_company',\n NoteObject::Call, NoteObject::Event => throw new \\Exception('Not supported'),\n };\n }\n\n /**\n * @throws \\Exception\n */\n private function getNoteObject(NoteObject $noteObject): string\n {\n return match($noteObject) {\n NoteObject::Opportunity => 'deal',\n NoteObject::Lead, NoteObject::Contact => 'contact',\n NoteObject::Account => 'company',\n NoteObject::Call, NoteObject::Event => throw new \\Exception('Not supported'),\n };\n }\n\n public function addAssociations(string $objectType, string $associationType, array $payload): Response\n {\n $endpoint = \"/crm/v4/associations/$objectType/$associationType/batch/create\";\n\n return $this->makeRequest($endpoint, 'POST', $payload);\n }\n\n public function removeAssociations(string $objectType, string $associationType, array $payload): Response\n {\n $endpoint = \"/crm/v4/associations/$objectType/$associationType/batch/archive\";\n\n return $this->makeRequest($endpoint, 'POST', $payload);\n }\n}","role_description":"text entry area","is_enabled":true,"is_focused":true,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Project","depth":3,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Project","depth":3,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"New File or Directory…","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Expand Selected","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Collapse All","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Options","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
1996073461129327348
|
8566805675520198815
|
visual_change
|
accessibility
|
NULL
|
Project: faVsco.js, menu
master, menu
Start Listen Project: faVsco.js, menu
master, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Search History
Hubspot
New Line
Replace History
Replace
New Line
Previous Occurrence
Next Occurrence
Search All
Search Backward
Search Forward
Match сase
Words
Regex
?
Close
[2026-05-07 12:28:10] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"d4ce87a9-6ca5-4efe-99b3-4220893270d0","trace_id":"724e8238-2ed5-4089-9509-9c7c12a3c373"}
[2026-05-07 12:28:10] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"d4ce87a9-6ca5-4efe-99b3-4220893270d0","trace_id":"724e8238-2ed5-4089-9509-9c7c12a3c373"}
[2026-05-07 12:28:10] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"d4ce87a9-6ca5-4efe-99b3-4220893270d0","trace_id":"724e8238-2ed5-4089-9509-9c7c12a3c373"}
[2026-05-07 12:28:14] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"172d1ae8-b8cc-4804-bed9-e32d074e265c","trace_id":"4817cdef-8d3e-4914-8bee-feffb18efe1b"}
[2026-05-07 12:28:14] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"172d1ae8-b8cc-4804-bed9-e32d074e265c","trace_id":"4817cdef-8d3e-4914-8bee-feffb18efe1b"}
[2026-05-07 12:28:17] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1499,"provider":"hubspot"} {"correlation_id":"273355f2-6315-4b20-bc9a-c26c681d6344","trace_id":"5ea79a26-c838-48e8-9913-93ad508146a6"}
[2026-05-07 12:28:17] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1499,"provider":"hubspot"} {"correlation_id":"273355f2-6315-4b20-bc9a-c26c681d6344","trace_id":"5ea79a26-c838-48e8-9913-93ad508146a6"}
[2026-05-07 12:28:17] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"273355f2-6315-4b20-bc9a-c26c681d6344","trace_id":"5ea79a26-c838-48e8-9913-93ad508146a6"}
[2026-05-07 12:28:17] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1499,"provider":"hubspot","refreshToken":"96f94c623a404e02ebdbf07f1b75707bb6cdbf848cbf45d418baf608c41a8d86","state":"connected"} {"correlation_id":"273355f2-6315-4b20-bc9a-c26c681d6344","trace_id":"5ea79a26-c838-48e8-9913-93ad508146a6"}
[2026-05-07 12:28:18] local.NOTICE: Monitoring start {"correlation_id":"31aa6b7d-00d6-448a-bdcc-a3d215b4aeb5","trace_id":"b8eb7fe5-8471-4ffb-9bfa-a804c8e1ff72"}
[2026-05-07 12:28:18] local.NOTICE: Monitoring end {"correlation_id":"31aa6b7d-00d6-448a-bdcc-a3d215b4aeb5","trace_id":"b8eb7fe5-8471-4ffb-9bfa-a804c8e1ff72"}
[2026-05-07 12:28:18] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"273355f2-6315-4b20-bc9a-c26c681d6344","trace_id":"5ea79a26-c838-48e8-9913-93ad508146a6"}
[2026-05-07 12:28:18] local.INFO: [SocialAccountObserver] Access token was modified, encrypting {"correlation_id":"273355f2-6315-4b20-bc9a-c26c681d6344","trace_id":"5ea79a26-c838-48e8-9913-93ad508146a6"}
[2026-05-07 12:28:18] local.INFO: [SocialAccountService] Token refreshed {"socialAccountId":1499,"provider":"hubspot","state":"connected"} {"correlation_id":"273355f2-6315-4b20-bc9a-c26c681d6344","trace_id":"5ea79a26-c838-48e8-9913-93ad508146a6"}
[2026-05-07 12:28:18] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {"crm_provider":"hubspot","crm_owner":148,"team_id":2} {"correlation_id":"273355f2-6315-4b20-bc9a-c26c681d6344","trace_id":"5ea79a26-c838-48e8-9913-93ad508146a6"}
[2026-05-07 12:28:19] local.INFO: [Hubspot] Failed to fetch opportunity {"crm_id":"374720564","reason":"[429] Client error: `GET https://api.hubapi.com/crm/v3/objects/deals/374720564?properties=hs_object_id%2Cdealname&associations=companies%2Ccontacts&archived=0` resulted in a `429 Too Many Requests` response:
{\"status\":\"error\",\"message\":\"You have reached your ten_secondly_rolling limit.\",\"errorType\":\"RATE_LIMIT\",\"correlationId\" (truncated...)
"} {"correlation_id":"273355f2-6315-4b20-bc9a-c26c681d6344","trace_id":"5ea79a26-c838-48e8-9913-93ad508146a6"}
[2026-05-07 12:28:19] local.ERROR: [429] Client error: `GET https://api.hubapi.com/crm/v3/objects/deals/374720564?properties=hs_object_id%2Cdealname&associations=companies%2Ccontacts&archived=0` resulted in a `429 Too Many Requests` response:
{"status":"error","message":"You have reached your ten_secondly_rolling limit.","errorType":"RATE_LIMIT","correlationId" (truncated...)
{"exception":"[object] (HubSpot\\Client\\Crm\\Deals\\ApiException(code: 429): [429] Client error: `GET https://api.hubapi.com/crm/v3/objects/deals/374720564?properties=hs_object_id%2Cdealname&associations=companies%2Ccontacts&archived=0` resulted in a `429 Too Many Requests` response:
{\"status\":\"error\",\"message\":\"You have reached your ten_secondly_rolling limit.\",\"errorType\":\"RATE_LIMIT\",\"correlationId\" (truncated...)
at /home/jiminny/vendor/hubspot/api-client/codegen/Crm/Deals/Api/BasicApi.php:704)
[stacktrace]
#0 /home/jiminny/vendor/hubspot/api-client/codegen/Crm/Deals/Api/BasicApi.php(676): HubSpot\\Client\\Crm\\Deals\\Api\\BasicApi->getByIdWithHttpInfo('374720564', 'hs_object_id,de...', 'companies,conta...', false, NULL)
#1 /home/jiminny/app/Services/Crm/Hubspot/Client.php(212): HubSpot\\Client\\Crm\\Deals\\Api\\BasicApi->getById('374720564', 'hs_object_id,de...', 'companies,conta...')
#2 /home/jiminny/app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php(130): Jiminny\\Services\\Crm\\Hubspot\\Client->getOpportunityById('374720564', Array)
#3 /home/jiminny/app/Console/Commands/JiminnyDebugCommand.php(351): Jiminny\\Services\\Crm\\Hubspot\\Service->syncOpportunity('374720564')
#4 /home/jiminny/app/Console/Commands/JiminnyDebugCommand.php(44): Jiminny\\Console\\Commands\\JiminnyDebugCommand->rateLimit()
#5 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Jiminny\\Console\\Commands\\JiminnyDebugCommand->handle(Object(Jiminny\\Jobs\\JobDispatcher), Object(Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService), Object(Jiminny\\Repositories\\AutomatedReportsRepository), Object(Jiminny\\Services\\UserPilot\\UserPilotClient))
#6 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\Container\\BoundMethod::Illuminate\\Container\\{closure}()
#7 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\Container\\Util::unwrapIfClosure(Object(Closure))
#8 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\Container\\BoundMethod::callBoundMethod(Object(Illuminate\\Foundation\\Application), Array, Object(Closure))
#9 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\Container\\BoundMethod::call(Object(Illuminate\\Foundation\\Application), Array, Array, NULL)
#10 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(211): Illuminate\\Container\\Container->call(Array)
#11 /home/jiminny/vendor/symfony/console/Command/Command.php(341): Illuminate\\Console\\Command->execute(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Illuminate\\Console\\OutputStyle))
#12 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(180): Symfony\\Component\\Console\\Command\\Command->run(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Illuminate\\Console\\OutputStyle))
#13 /home/jiminny/vendor/symfony/console/Application.php(1117): Illuminate\\Console\\Command->run(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Symfony\\Component\\Console\\Output\\ConsoleOutput))
#14 /home/jiminny/vendor/symfony/console/Application.php(356): Symfony\\Component\\Console\\Application->doRunCommand(Object(Jiminny\\Console\\Commands\\JiminnyDebugCommand), Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Symfony\\Component\\Console\\Output\\ConsoleOutput))
#15 /home/jiminny/vendor/symfony/console/Application.php(195): Symfony\\Component\\Console\\Application->doRun(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Symfony\\Component\\Console\\Output\\ConsoleOutput))
#16 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(198): Symfony\\Component\\Console\\Application->run(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Symfony\\Component\\Console\\Output\\ConsoleOutput))
#17 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1235): Illuminate\\Foundation\\Console\\Kernel->handle(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Symfony\\Component\\Console\\Output\\ConsoleOutput))
#18 /home/jiminny/artisan(13): Illuminate\\Foundation\\Application->handleCommand(Object(Symfony\\Component\\Console\\Input\\ArgvInput))
#19 {main}
"} {"correlation_id":"273355f2-6315-4b20-bc9a-c26c681d6344","trace_id":"5ea79a26-c838-48e8-9913-93ad508146a6"}
[2026-05-07 12:28:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"dcb9b24b-e2e5-41fe-81db-212b3ca9ff7d","trace_id":"1ea62b83-9639-41e3-a523-26404c39fa80"}
[2026-05-07 12:28:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"dcb9b24b-e2e5-41fe-81db-212b3ca9ff7d","trace_id":"1ea62b83-9639-41e3-a523-26404c39fa80"}
[2026-05-07 12:28:24] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"d191d5c6-133f-43e1-8ed4-d285d0c768b8","trace_id":"67798138-bdb7-4bd7-8b32-377663219a88"}
[2026-05-07 12:28:24] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"d191d5c6-133f-43e1-8ed4-d285d0c768b8","trace_id":"67798138-bdb7-4bd7-8b32-377663219a88"}
[2026-05-07 12:28:24] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"d191d5c6-133f-43e1-8ed4-d285d0c768b8","trace_id":"67798138-bdb7-4bd7-8b32-377663219a88"}
[2026-05-07 12:28:24] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"d191d5c6-133f-43e1-8ed4-d285d0c768b8","trace_id":"67798138-bdb7-4bd7-8b32-377663219a88"}
[2026-05-07 12:28:27] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:count","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"a4e5e18f-9f8c-4196-ace0-bf664d4827d9","trace_id":"d75cb10b-4c76-4c00-84d4-26efeb738e17"}
[2026-05-07 12:28:27] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:26:00, 2026-05-07 12:28:00] {"correlation_id":"a4e5e18f-9f8c-4196-ace0-bf664d4827d9","trace_id":"d75cb10b-4c76-4c00-84d4-26efeb738e17"}
[2026-05-07 12:28:27] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:26:00, 2026-05-07 12:28:00] {"correlation_id":"a4e5e18f-9f8c-4196-ace0-bf664d4827d9","trace_id":"d75cb10b-4c76-4c00-84d4-26efeb738e17"}
[2026-05-07 12:28:27] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:count","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"a4e5e18f-9f8c-4196-ace0-bf664d4827d9","trace_id":"d75cb10b-4c76-4c00-84d4-26efeb738e17"}
[2026-05-07 12:28:30] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"calendar:sync","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:30] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:retry-failed","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"3789f06a-4f0c-4b12-be80-d6a36e089d1b","trace_id":"6ce89147-1624-456d-9e75-f4948f2c5db8"}
[2026-05-07 12:28:30] local.NOTICE: Calendar sync start {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:30] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:retry-failed","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"3789f06a-4f0c-4b12-be80-d6a36e089d1b","trace_id":"6ce89147-1624-456d-9e75-f4948f2c5db8"}
[2026-05-07 12:28:31] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1393,"provider":"google"} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:31] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1393,"provider":"google"} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:31] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:31] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1393,"provider":"google","refreshToken":"5aa7e2d96b53201cd16fca5d2e4ef3ad03320971fc064781d18aee3ae7b99fbf","state":"full-refresh"} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:31] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1393,"provider":"google","responseBody":{"error":"invalid_grant","error_description":"Account has been deleted"}} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:31] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:31] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1393,"provider":"google","reason":"Flow refresh required."} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:31] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1387,"provider":"google"} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:31] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1387,"provider":"google"} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:31] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:31] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1387,"provider":"google","refreshToken":"8157ac6de94842937194009e9c50e459253600f799dacf6a40755ffdbeb5bba6","state":"full-refresh"} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:31] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1387,"provider":"google","responseBody":{"error":"invalid_grant","error_description":"Account has been deleted"}} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:31] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:31] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1387,"provider":"google","reason":"Flow refresh required."} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:31] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1348,"provider":"google"} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:31] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1348,"provider":"google"} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:31] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:31] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1348,"provider":"google","refreshToken":"9e7d13d3032d0cb1b79d8e95aef01383e8e91eb52ff8ee960c8a0b6b95cd8c73","state":"full-refresh"} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:31] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1348,"provider":"google","responseBody":{"error":"invalid_grant","error_description":"Bad Request"}} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:31] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:31] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1348,"provider":"google","reason":"Flow refresh required."} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:31] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1361,"provider":"google"} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:31] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1361,"provider":"google"} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:31] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:31] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1361,"provider":"google","refreshToken":"6c843da199c2b9907445329304fcc4ec5057a4ee748d8299641764395c08e1fd","state":"full-refresh"} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:32] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1361,"provider":"google","responseBody":{"error":"invalid_grant","error_description":"Account has been deleted"}} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:32] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:32] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1361,"provider":"google","reason":"Flow refresh required."} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:32] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1310,"provider":"google"} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:32] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1310,"provider":"google"} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:32] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:32] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1310,"provider":"google","refreshToken":"e34818922c2830a660813a63f6169a4a9a992ae2cccd7dc8dd7796cfdb470ef1","state":"full-refresh"} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:32] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1310,"provider":"google","responseBody":{"error":"invalid_grant","error_description":"Bad Request"}} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:32] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:32] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1310,"provider":"google","reason":"Flow refresh required."} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:32] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1333,"provider":"google"} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:32] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1333,"provider":"google"} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:32] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:32] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1333,"provider":"google","refreshToken":"6c902986546d8e8da1dc539b046cdc1d458f519acc972e5b5f1d6a1a295165e0","state":"full-refresh"} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:32] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1333,"provider":"google","responseBody":{"error":"unauthorized_client","error_description":"Unauthorized"}} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:32] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:32] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1333,"provider":"google","reason":"Flow refresh required."} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:32] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1368,"provider":"google"} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:32] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1368,"provider":"google"} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:32] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:32] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1368,"provider":"google","refreshToken":"d2f128898ff8543bd16b69cfae37896ab85119b0f5ed2b431d739593bb600333","state":"full-refresh"} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:32] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1368,"provider":"google","responseBody":{"error":"invalid_grant","error_description":"Bad Request"}} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:32] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:32] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1368,"provider":"google","reason":"Flow refresh required."} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:32] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1365,"provider":"google"} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:32] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1365,"provider":"google"} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:32] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:32] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1365,"provider":"google","refreshToken":"7676e4a9afcd082b413248ab5ec6e487021fec6a9bdf315860a59cefad9caad8","state":"full-refresh"} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:33] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1365,"provider":"google","responseBody":{"error":"unauthorized_client","error_description":"Unauthorized"}} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:33] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:33] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1365,"provider":"google","reason":"Flow refresh required."} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:33] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1364,"provider":"google"} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:33] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1364,"provider":"google"} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:33] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:33] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1364,"provider":"google","refreshToken":"dd5882ebce76e645292ce33ae74238abbb77c0a4ecc6a2bfe723cad82e72ba8e","state":"full-refresh"} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:33] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1364,"provider":"google","responseBody":{"error":"unauthorized_client","error_description":"Unauthorized"}} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:33] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:33] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1364,"provider":"google","reason":"Flow refresh required."} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:33] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1370,"provider":"office"} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:33] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1370,"provider":"office"} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:33] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:33] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1370,"provider":"office","refreshToken":"b7ee8035306d0043cea6e00e7c4fe14f745e44074a1194db62a31cdf8b70af3e","state":"full-refresh"} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:33] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1370,"provider":"office","responseBody":"{\"error\":\"invalid_client\",\"error_description\":\"AADSTS7000215: Invalid client secret provided. Ensure the secret being sent in the request is the client secret value, not the client secret ID, for a secret added to app 'bbcbb2ef-6200-4fae-82bd-d81f5dd738da'. Trace ID: e890fdc1-dbe8-4a59-ae57-2af6bced3c00 Correlation ID: 57554cdf-16df-47f1-b0d9-5f0b8da37afe Timestamp: 2026-05-07 12:28:33Z\",\"error_codes\":[7000215],\"timestamp\":\"2026-05-07 12:28:33Z\",\"trace_id\":\"e890fdc1-dbe8-4a59-ae57-2af6bced3c00\",\"correlation_id\":\"57554cdf-16df-47f1-b0d9-5f0b8da37afe\",\"error_uri\":\"https://login.microsoftonline.com/error?code=7000215\"}"} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:33] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:33] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1370,"provider":"office","reason":"Flow refresh required."} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:33] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1202,"provider":"office"} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:33] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1202,"provider":"office"} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:33] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:33] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1202,"provider":"office","refreshToken":"b458799ccc29b21a6e2eb5260fdb63e49ccba21bf942a3973fb63799bd7f0afe","state":"full-refresh"} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:34] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1202,"provider":"office","responseBody":"{\"error\":\"invalid_client\",\"error_description\":\"AADSTS7000215: Invalid client secret provided. Ensure the secret being sent in the request is the client secret value, not the client secret ID, for a secret added to app 'bbcbb2ef-6200-4fae-82bd-d81f5dd738da'. Trace ID: 2a3e5b60-5770-46f2-aca6-7b0527363000 Correlation ID: 57bb0b73-9ea6-4bcf-a8f4-6e211dbb94e2 Timestamp: 2026-05-07 12:28:34Z\",\"error_codes\":[7000215],\"timestamp\":\"2026-05-07 12:28:34Z\",\"trace_id\":\"2a3e5b60-5770-46f2-aca6-7b0527363000\",\"correlation_id\":\"57bb0b73-9ea6-4bcf-a8f4-6e211dbb94e2\",\"error_uri\":\"https://login.microsoftonline.com/error?code=7000215\"}"} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:34] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:34] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1202,"provider":"office","reason":"Flow refresh required."} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:34] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1502,"provider":"google"} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:34] local.INFO: [SocialAccountService] Token retrieved {"socialAccountId":1502,"provider":"google"} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:34] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:34] local.INFO: Calendar sync job dispatched {"calendar_id":501} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:34] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1300,"provider":"google"} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:34] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1300,"provider":"google"} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:34] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:34] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1300,"provider":"google","refreshToken":"4b811db0725fd9602a95943519a7da935e2a5065da7d9ebfcb170752e3e1ddb8","state":"full-refresh"} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:34] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1300,"provider":"google","responseBody":{"error":"invalid_grant","error_description":"Account has been deleted"}} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:34] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:34] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1300,"provider":"google","reason":"Flow refresh required."} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:35] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1409,"provider":"google"} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:35] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1409,"provider":"google"} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:35] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:35] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1409,"provider":"google","refreshToken":"e2a3f2d06894894eed1ee87d9db1ace77d4d42ee6e1288a8940ad2c10333b0c4","state":"full-refresh"} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:35] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1409,"provider":"google","responseBody":{"error":"invalid_grant","error_description":"Bad Request"}} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:35] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:35] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1409,"provider":"google","reason":"Flow refresh required."} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:35] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1352,"provider":"google"} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:35] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1352,"provider":"google"} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:35] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:35] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1352,"provider":"google","refreshToken":"dd4b16b00fdc1216da6b717c02338c073636e29162826b2de6db3f064fc029eb","state":"full-refresh"} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:35] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1352,"provider":"google","responseBody":{"error":"unauthorized_client","error_description":"Unauthorized"}} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:35] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:35] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1352,"provider":"google","reason":"Flow refresh required."} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:35] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1296,"provider":"office"} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:35] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1296,"provider":"office"} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:35] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:35] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1296,"provider":"office","refreshToken":"011ae723c9d800c674e0b4be76f49fc046dac7d501b66c59ef0d9549cfa56ae5","state":"full-refresh"} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:35] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1502,"provider":"google"} {"correlation_id":"3015918c-9edf-487d-b1d0-97c9d00ea6b1","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:35] local.INFO: [SocialAccountService] Token retrieved {"socialAccountId":1502,"provider":"google"} {"correlation_id":"3015918c-9edf-487d-b1d0-97c9d00ea6b1","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:35] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"3015918c-9edf-487d-b1d0-97c9d00ea6b1","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:35] local.INFO: [Calendar] Processing sync {"calendarId":"a33076c1-8d97-431a-99f0-85c9524e118b","from":null,"to":null,"delta":"CIiFh8TP44kDEIiFh8TP44kDGAUgkZvkzgIokZvkzgI=","last_sync":"2024-12-09 07:12:53","dateMode":"daily"} {"correlation_id":"3015918c-9edf-487d-b1d0-97c9d00ea6b1","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:35] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {"crm_provider":"integration-app","crm_owner":1695,"team_id":3143} {"correlation_id":"3015918c-9edf-487d-b1d0-97c9d00ea6b1","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:35] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1502,"provider":"google"} {"correlation_id":"3015918c-9edf-487d-b1d0-97c9d00ea6b1","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:35] local.INFO: [SocialAccountService] Token retrieved {"socialAccountId":1502,"provider":"google"} {"correlation_id":"3015918c-9edf-487d-b1d0-97c9d00ea6b1","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:35] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"3015918c-9edf-487d-b1d0-97c9d00ea6b1","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:35] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1296,"provider":"office","responseBody":"{\"error\":\"invalid_client\",\"error_description\":\"AADSTS7000215: Invalid client secret provided. Ensure the secret being sent in the request is the client secret value, not the client secret ID, for a secret added to app 'bbcbb2ef-6200-4fae-82bd-d81f5dd738da'. Trace ID: 2e34e335-a76d-40e5-bc50-3861392e4c00 Correlation ID: 9db5b389-6165-4feb-8e6e-bedc369e1c87 Timestamp: 2026-05-07 12:28:35Z\",\"error_codes\":[7000215],\"timestamp\":\"2026-05-07 12:28:35Z\",\"trace_id\":\"2e34e335-a76d-40e5-bc50-3861392e4c00\",\"correlation_id\":\"9db5b389-6165-4feb-8e6e-bedc369e1c87\",\"error_uri\":\"https://login.microsoftonline.com/error?code=7000215\"}"} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:35] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:35] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1296,"provider":"office","reason":"Flow refresh required."} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:35] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":391,"provider":"office"} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:35] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":391,"provider":"office"} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:35] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:35] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":391,"provider":"office","refreshToken":"00045eebae0f39b34887c6d53f92ae78064f7145e1f4b67754aebd03cfb2d881","state":"full-refresh"} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:36] local.INFO: [Google Calendar] Failed to watch channel for calendar {"calendarId":"a33076c1-8d97-431a-99f0-85c9524e118b","code":400,"reason":"{
\"error\": {
\"errors\": [
{
\"domain\": \"global\",
\"reason\": \"push.webhookUrlNotHttps\",
\"message\": \"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\"
}
],
\"code\": 400,
\"message\": \"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\"
}
}"} {"correlation_id":"3015918c-9edf-487d-b1d0-97c9d00ea6b1","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:36] local.WARNING: [Calendar] Sync failed {"calendarId":"a33076c1-8d97-431a-99f0-85c9524e118b","code":400,"reason":"{
\"error\": {
\"errors\": [
{
\"domain\": \"global\",
\"reason\": \"push.webhookUrlNotHttps\",
\"message\": \"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\"
}
],
\"code\": 400,
\"message\": \"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\"
}
}"} {"correlation_id":"3015918c-9edf-487d-b1d0-97c9d00ea6b1","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:36] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":391,"provider":"office","responseBody":"{\"error\":\"invalid_client\",\"error_description\":\"AADSTS7000215: Invalid client secret provided. Ensure the secret being sent in the request is the client secret value, not the client secret ID, for a secret added to app 'bbcbb2ef-6200-4fae-82bd-d81f5dd738da'. Trace ID: 6eba7173-b781-4e55-b1fb-1087ed023000 Correlation ID: 3086e346-c6eb-4f1c-8b1d-a477ce3821f4 Timestamp: 2026-05-07 12:28:36Z\",\"error_codes\":[7000215],\"timestamp\":\"2026-05-07 12:28:36Z\",\"trace_id\":\"6eba7173-b781-4e55-b1fb-1087ed023000\",\"correlation_id\":\"3086e346-c6eb-4f1c-8b1d-a477ce3821f4\",\"error_uri\":\"https://login.microsoftonline.com/error?code=7000215\"}"} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:36] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:36] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":391,"provider":"office","reason":"Flow refresh required."} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:37] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1271,"provider":"office"} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:37] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1271,"provider":"office"} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:37] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:37] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1271,"provider":"office","refreshToken":"118cde2c06993147b07ccaec4cbcd5026a819dea6c71081166a492933e392afb","state":"full-refresh"} {"correlation_id":"d543a089-fd32-4522-9ffe-1494e562b741","trace_id":"564a362b-7ddb-49f0-a33a-b807b0440231"}
[2026-05-07 12:28:37] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1271,"provider":"office","responseBody":"{\"error\":\"invalid_client\",\"error_description\":\"AADSTS7000215: Invalid client secret provided...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
3617
|
NULL
|
0
|
2026-05-07T12:30:22.133731+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-07/1778 /Users/lukas/.screenpipe/data/data/2026-05-07/1778157022133_m2.jpg...
|
Claude
|
Claude
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Skip to content
Skip to content
Click to collapse
Skip to content
Skip to content
Click to collapse
⌘B
Drag to resize
Open sidebar
Chat
Cowork
Code
New chat ⌘N
New chat
⌘N
Projects
Artifacts
Customize
Pinned
Bulgarian citizenship application process for EU residents
More options for Bulgarian citizenship application process for EU residents
Dawarich location tracking project
More options for Dawarich location tracking project
Recents
View all
HubSpot rate limit implementation strategy
More options for HubSpot rate limit implementation strategy
Screenpipe retention policy code location
More options for Screenpipe retention policy code location
Viewing retention policy in screenpipe
More options for Viewing retention policy in screenpipe
Clean shot x video recording termination issue
More options for Clean shot x video recording termination issue
HubSpot rate limit handling with executeRequest
More options for HubSpot rate limit handling with executeRequest
Untitled
More options
💬 Screen pipe. Is there ability…
More options for 💬 Screen pipe. Is there ability…
SMB mount access inconsistency between Finder and iTerm
More options for SMB mount access inconsistency between Finder and iTerm
💬 What is the best switch I can…
More options for 💬 What is the best switch I can…
Permission denied on screenpipe volume
More options for Permission denied on screenpipe volume
Screenpipe sync database attachment error
More options for Screenpipe sync database attachment error
Last swimming outing with Dani
More options for Last swimming outing with Dani
Definition of incarcerated
More options for Definition of incarcerated
Chromecast remote volume buttons not working
More options for Chromecast remote volume buttons not working
Salesforce API errors with Organization and FieldDefinition queries
More options for Salesforce API errors with Organization and FieldDefinition queries
Daily activity summary from screenpipe data
More options for Daily activity summary from screenpipe data
MacBook unexpected restarts and kanji screen
More options for MacBook unexpected restarts and kanji screen
Security patch review and testing guidance
More options for Security patch review and testing guidance
Food calorie values reference
More options for Food calorie values reference
Tracking location history from last week
More options for Tracking location history from last week
Lukas Pro
Get apps and extensions
HubSpot rate limit implementation strategy, rename chat
HubSpot rate limit implementation strategy
More options for HubSpot rate limit implementation strategy
Close
Share chat
Claude finished the response
You said: So just a solution for rate limit implementation.
You said: So just a solution for rate limit implementation.
So just a solution for rate limit implementation. The situation currently is that there are some daily and secondary limits for HubSpot. I would like to make sure I never reach a 429 error rate limit. The requests can come from any flow. It can be:
updating activity (engagement, meeting, call, note)
searching for a company or contact
updating deal
patching IDs
Review what the limit is at the moment in the HubSpot documentation and then think of the solution:
where to store it
how to read it
how to work with multiple jobs
how to work with paginated requests Let's consider a situation when there are 600 opportunities to sync. What would be the flow? How would the rate limit be recognized? How would it be handled? What are the potential issues? [API usage guidelines and limits - HubSpot docs](
https://developers.hubspot.com/docs/developer-tooling/platform/usage-guidelines
https://developers.hubspot.com/docs/developer-tooling/platform/usage-guidelines
). Example of such a error Client error:
POST https://api.hubapi.com/crm/v3/objects/contact/search
resulted in a
429 Too Many Requests
response: {"status":"error","message":"You have reached your secondly limit.","errorType":"RATE_LIMIT","correlationId":"019dffc4-4 (truncated...). Think carefully about the implementation and potential issue and bottlenecks.
Show more
10:42
Retry
Edit
Copy
Claude responded: Current HubSpot limits (Apr 2026)
Claude responded: Current HubSpot limits (Apr 2026)
Synthesized HubSpot rate limit architecture with Redis storage and sliding window algorithms
Synthesized HubSpot rate limit architecture with Redis storage and sliding window algorithms
Current HubSpot limits (Apr 2026)
Current HubSpot limits (Apr 2026)
For privately distributed apps (which is what Jiminny presumably uses with HubSpot), the limits are layered: a per-app burst window of 100/10s on Free/Starter, 190/10s on Pro/Enterprise, or 250/10s with the API Limit Increase add-on
, plus a per-account daily cap of 250k / 625k / 1M depending on tier — shared across all private apps in the account
. The burst window is per app; the daily quota is per portal.
hubspot
hubspot
hubspot
hubspot
The Search API is special: five requests per second per account, capped at 200 records per page, with a hard 10,000-result ceiling per query
. That's the limit the 429 in your example is hitting (
secondly limit
on
/crm/v3/objects/contact/search
). It's a separate bucket from the 190/10s, and critically, search responses do not include the
X-HubSpot-RateLimit-*
headers
— you can't read remaining capacity off the response, you have to track it yourself.
hubspot
hubspot
hubspot
hubspot
Non-search endpoints return
X-HubSpot-RateLimit-Remaining
,
-Max
, and
-Interval-Milliseconds
. The daily headers are not returned for OAuth-authenticated calls
, so for those you check the account-info endpoint or maintain your own counter. There's also a soft rule: errors should stay under 5% of total daily requests
— that's enforced for marketplace listing, but it's also a sane operational target.
hubspot
hubspot
hubspot
hubspot
So you have
four buckets
to track at minimum: app-burst (10s sliding), search-secondly (1s sliding), account-daily (24h fixed, midnight in HubSpot's TZ), and per-app daily share (your own budgeting on top of the account cap).
Where to store it
Where to store it
Redis. It's the only realistic option once you have multiple queue workers — DB-backed counters serialize too much, and in-process state can't coordinate across workers. Laravel already speaks Redis natively, and you get atomic
INCR
/
EXPIRE
plus Lua scripting for true CAS semantics.
Key layout I'd use:
Copy to clipboard
hubspot:rl:burst:{portalId}:{appId} ZSET (sliding 10s)
hubspot:rl:search:{portalId} ZSET (sliding 1s)
hubspot:rl:daily:{portalId} STRING + TTL to midnight TZ
hubspot:rl:meta:{portalId} HASH (last seen headers)
The two short-window buckets are sliding-window-log (Redis ZSET, score =
microtime
, member = unique request id). Lua script removes entries older than the window, counts remaining slots, and only adds the new one if there's room — all atomic. Fixed windows are simpler but allow 2× the limit at the boundary, which on a 5/s window is brutal.
The daily bucket is a plain
INCR
with TTL set to seconds-until-midnight in
HubSpot's account timezone
, not yours — Sofia is UTC+2/+3 but your portal might be set to US Eastern. Get this once and cache it.
How to read it
How to read it
Two-phase: optimistic pre-check, authoritative post-update.
Before a call, run the Lua acquire script. If it returns "denied," sleep until a slot frees up (the script can return ms-until-next-slot) or push the job back to the queue with a delay. Don't busy-loop.
After the call, parse
X-HubSpot-RateLimit-Remaining
/
-Max
/
-Interval-Milliseconds
and store them in
hubspot:rl:meta:{portalId}
. This is your reality check — if your local counter says 50 remaining but HubSpot's header says 5, you trust HubSpot and clamp your counter. This handles clock drift, missed accounting (e.g., crashed worker that took a token but never made the request), and other apps in the same account consuming the daily budget invisibly.
For search specifically, since headers don't come back, the local counter
is
the source of truth — meaning if you ever crash mid-flight, you've under-counted. Always release tokens on connection-level failure but
not
on 429 (you really did make that request).
How to work with multiple jobs
How to work with multiple jobs
The queue layer needs to enforce concurrency separately from the rate limiter. Both work together:
Concurrency cap
via
Queue::throttle()
or a Redis semaphore — limits how many sync workers run in parallel against HubSpot. Without this, you can have 50 workers all blocked waiting for tokens, which is wasteful and creates retry storms.
Per-tenant fairness
— if you sync many Jiminny customers into different HubSpot portals, each portal has its own bucket but you still want one slow portal not to starve others. Either separate queues per portal or a fair-share scheduler.
Priority lanes
— webhook-driven updates (user-visible latency) should outrank background batch syncs. Two queues:
hubspot-priority
and
hubspot-bulk
, with priority workers taking 70% of the burst budget and bulk taking 30% (enforce via separate sub-buckets if you really want hard separation, otherwise just pull from priority first).
Backoff on 429
— respect the
Retry-After
header. If absent, exponential with jitter (e.g.,
min(2^attempt * 250ms, 30s) ± 20%
). The jitter is non-negotiable; without it, simultaneous 429s retry in lockstep and you get thundering-herd 429s on retry.
How to work with paginated requests
How to work with paginated requests
The trap is treating "fetch all" as one logical operation. Each page is its own API call and competes for tokens with everything else.
Two practical rules:
Don't hold the worker idle while paginating.
If page N takes 500ms and page N+1 needs to wait 800ms for a token, you've burned 800ms of worker time doing nothing. Instead, fetch page N, dispatch the
processing
of page N as a separate job, and queue a "fetch page N+1" job with a delay equal to the wait time. Each page becomes its own atomic unit.
Always batch where HubSpot offers it.
POST /crm/v3/objects/{type}/batch/{read|update|create}
accepts up to 100 IDs per call. For your "patching IDs" flow this is the difference between 600 calls and 6.
Walkthrough: 600 opportunities
Walkthrough: 600 opportunities
Naive flow (one PATCH per deal): 600 calls. At 190/10s that's ~32s of API time, well under daily. You'd hit burst easily without throttling. Plus likely 1-3 search calls upfront and N association calls.
Sane flow:
Identify deltas
— if you can avoid Search at all, do. Use
lastmodifieddate
filter on a single search if you must, paginate at limit=200. For 600 deals that's 3 search calls @ 5/s = ~600ms naturally throttled.
Batch read
current state —
POST /crm/v3/objects/deals/batch/read
with 100 IDs per call → 6 calls. Burst weight 6.
Compute diff
in your code (no API).
Batch update
—
POST /crm/v3/objects/deals/batch/update
with 100 per call → 6 calls.
Associations
—
POST /crm/v4/associations/{from}/{to}/batch/create
if needed → another few batch calls.
Total: ~15-20 API calls for 600 deals. Burst budget consumed: 20/190 over ~5s. Daily impact: trivial.
Recognition: pre-check denies if
<weight>
slots aren't free; on 429 the response surfaces
policyName
(DAILY/SECONDLY) — log it, push the job back with
Retry-After
delay, increment a metric so you can alarm on sustained 429 rate.
Pitfalls & bottlenecks worth pre-empting
Pitfalls & bottlenecks worth pre-empting
Daily quota is shared across the whole portal
, including any n8n flows, other private apps, marketing automation calling APIs, etc. Budget for ~70-80% of the documented limit, not 100%. Add an internal per-app daily cap so a runaway sync can't starve other apps.
Search is uniquely fragile
: separate 5/s bucket, no headers to read, 10k-result cap per query. If you ever hit 10k+ deals matching a filter, partition by
hs_object_id
ranges or by
lastmodifieddate
windows.
Retry storms after HubSpot incidents
— always jitter, always cap total retries (e.g., 5 attempts, then dead-letter).
Webhook → sync → webhook loops
— when your update fires a HubSpot webhook that triggers another sync. Tag your own writes (e.g., a custom property
jy_last_sync_id
) and ignore webhooks where it just changed.
Token refresh
— OAuth refresh itself counts against burst. Cache the access token in Redis with TTL =
expires_in - 60s
, single-flight the refresh (only one worker refreshes; others wait on a lock).
Search latency for fresh writes
— newly created/updated objects don't appear in search instantly. Don't write-then-search; use returned IDs directly.
Clock skew
— Redis is authoritative. Don't use
time()
from each worker for window scoring; use
redis.call('TIME')
inside the Lua script.
Dead workers with held tokens
— sliding-window-log handles this naturally because tokens expire by score; token-bucket implementations need explicit release-on-crash logic.
The 5% error rule
counts every 429 toward your error budget, even successfully retried ones. If your pre-check is working well, 429s should be near zero — if they're not, your pre-check is wrong, not just slow.
Phantom contention with Laravel
RateLimited
middleware
: it's per-job-class by default, not per-portal. If your
SyncDealJob
and
UpdateActivityJob
are different classes both calling HubSpot, they don't share a Laravel-level limiter — you need a single
HubspotRateLimiter
service that everything routes through.
If you want, I can sketch the Lua script for the sliding-window acquire and the Laravel service wrapper around it.
Copy
Give positive feedback
Give negative feedback
Retry
You said: What will happen if there are two different types of rate limits?
You said: What will happen if there are two different types of rate limits?
What will happen if there are two different types of rate limits?
Search requests that have 5 requests per second
The other rate limit that has, let's say, 100 requests per 10 seconds How do these work together? Is there some conflict? Can I reach the limit with one request and block either as well, or are these separated? Can I still continue making search requests once I hit the normal requests limits?
13:40
Retry
Edit
Copy
Claude responded: They're independent buckets — with one shared bucket on top.
Claude responded: They're independent buckets — with one shared bucket on top.
Analyzed independent rate limit buckets and their practical interactions
Analyzed independent rate limit buckets and their practical interactions
They're independent buckets — with one shared bucket on top.
The three buckets and what each call hits
The three buckets and what each call hits
Copy to clipboard
┌──────────────────┐
Search request ──→ │ Search: 5/sec │ ──┐
└──────────────────┘ │
├──→ ┌─────────────────┐
┌──────────────────┐ │ │ Daily: 250k–1M │
Non-search call ──→ │ Burst: 190/10s │ ──┘ │ (per portal) │
└──────────────────┘ └─────────────────┘
A search call is only metered against the search bucket and the daily bucket. A non-search call (batch read/update, single PATCH, associations, etc.) is only metered against the burst bucket and the daily bucket. The two short-window buckets do not share counters.
What this means practically
What this means practically
Hitting search secondly limit (5/s):
Only further
/search
calls 429. Your batch reads, batch updates, single PATCHes, association calls — all keep working at full burst speed. This is actually useful: if your sync is bottlenecked on Search, you can pivot to using
lastmodifieddate
filters via batch endpoints, or use the IDs you already have to do batch reads, while Search cools off.
Hitting burst limit (190/10s):
Only non-search calls 429. You can still issue Search calls at 5/s. Useful for: continuing to identify deltas for queueing while in-flight updates drain, or refreshing a small set of records via Search even though your write pipeline is paused.
Hitting daily limit:
Everything stops. Search and non-search alike. Doesn't unblock until midnight in your portal's configured timezone — and remember this is shared across every private app in the portal, plus n8n flows, marketing tools, anything else hitting the API with that account.
So can one type of request block the other?
So can one type of request block the other?
Search → Burst:
No.
Saturating Search at 50 calls per 10s leaves your full 190/10s burst untouched.
Burst → Search:
No.
Saturating burst leaves Search's 5/s untouched.
Either → Daily:
Yes
, but only by contributing to the same daily counter. It's volume that kills you here, not the type.
In theory you can sustain ~50 search + ~190 other =
~240 calls per 10 seconds
indefinitely (until daily runs out), because the two buckets bill independently.
Implementation consequence
Implementation consequence
Your rate limiter needs to know which bucket a request hits before it acquires. Cleanest pattern:
Copy to clipboard
php
$limiter
->
acquire
(
'search'
,
$weight
=
1
)
;
// for search endpoints only
$limiter
->
acquire
(
'burst'
,
$weight
=
1
)
;
// for everything else
$limiter
->
acquire
(
'daily'
,
$weight
=
1
)
;
// every call, both kinds
In Redis: three separate keys, three separate Lua acquire scripts (or one script with a bucket parameter). A search call calls
acquire('search')
+
acquire('daily')
. A batch update calls
acquire('burst')
+
acquire('daily')
.
One subtle pitfall: when you backoff on a 429,
inspect
policyName
in the response body
to know which bucket actually fired. If you see
SECONDLY
from a search endpoint, you only need to delay search-bound jobs — burst-bound jobs in the queue can keep running. If you blanket-pause everything on any 429, you waste capacity on the bucket that's still healthy. Two queues (or two throttle keys) make this clean; one global pause is the lazy version.
The other subtlety: the burst response gives you
X-HubSpot-RateLimit-Remaining
to clamp local state against, but search doesn't return those headers. So your search counter is unverified — be slightly more conservative there (e.g., budget 4/s instead of 5) to absorb the unaccounted-for calls.
Copy
Give positive feedback
Give negative feedback
Retry
You said: Ok, so what will happen each time I make a request?
You said: Ok, so what will happen each time I make a request?
Ok, so what will happen each time I make a request? Let's say I have 100,000 requests to make that are instant. Do I need to increment each request based on the type? For example, if there is a search request, I need to increment both the search bucket and also the daily bucket. If it's a burst, then I can go to the daily and burst buckets. If I need to check if it can make a call, do I need to see both the daily and search, or burst, respectively? Isn't that too heavy for the infrastructure, adding additional load to each request?
13:44
Retry
Edit
Copy
Claude responded: Yes, your understanding is correct — every request must check and reserve from each bucket it applies to, atomically, before the call goes out.
Claude responded: Yes, your understanding is correct — every request must check and reserve from each bucket it applies to, atomically, before the call goes out.
Analyzed per-request overhead concerns and quantified Redis performance impact
Analyzed per-request overhead concerns and quantified Redis performance impact
Yes, your understanding is correct — every request must check and reserve from each bucket it applies to, atomically, before the call goes out. But the overhead is much smaller than it sounds, and importantly, it's nowhere near your bottleneck.
What "two buckets per request" actually costs
What "two buckets per request" actually costs
Each request makes
one round trip to Redis
— not two — because you fold both bucket checks into a single Lua script that runs atomically server-side:
Copy to clipboard
lua
-- KEYS[1] = burst bucket key (or search)
-- KEYS[2] = daily bucket key
-- ARGV[1] = now (ms) ARGV[2] = window_ms
-- ARGV[3] = bucket_max ARGV[4] = daily_max
-- ARGV[5] = request_id ARGV[6] = daily_ttl
-- Trim sliding window
redis
.
call
(
'ZREMRANGEBYSCORE'
,
KEYS
[
1
]
,
0
,
ARGV
[
1
]
-
ARGV
[
2
]
)
local
burst_used
=
redis
.
call
(
'ZCARD'
,
KEYS
[
1
]...
|
[{"role":"AXLink","text":& [{"role":"AXLink","text":"Skip to content","depth":14,"bounds":{"left":0.029587766,"top":0.03830806,"width":0.0003324468,"height":0.0007980846},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Skip to content","depth":15,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Click to collapse","depth":16,"bounds":{"left":0.10239362,"top":0.06703911,"width":0.030585106,"height":0.011971269},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.10239362,"top":0.06703911,"width":0.0029920214,"height":0.011971269}},{"char_start":1,"char_count":16,"bounds":{"left":0.10538564,"top":0.06703911,"width":0.027925532,"height":0.011971269}}],"role_description":"text"},{"role":"AXStaticText","text":"⌘B","depth":16,"bounds":{"left":0.1349734,"top":0.06703911,"width":0.0063164895,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Drag to resize","depth":16,"bounds":{"left":0.10239362,"top":0.079010375,"width":0.025930852,"height":0.011971269},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.10239362,"top":0.079010375,"width":0.0029920214,"height":0.011971269}},{"char_start":1,"char_count":13,"bounds":{"left":0.10538564,"top":0.079010375,"width":0.022938829,"height":0.011971269}}],"role_description":"text"},{"role":"AXButton","text":"Open sidebar","depth":14,"bounds":{"left":0.029920213,"top":0.02793296,"width":0.00930851,"height":0.022346368},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Chat","depth":16,"bounds":{"left":0.004986702,"top":0.059856344,"width":0.025930852,"height":0.022346368},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Cowork","depth":16,"bounds":{"left":0.03158245,"top":0.059856344,"width":0.03125,"height":0.022346368},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code","depth":16,"bounds":{"left":0.0631649,"top":0.059856344,"width":0.026928192,"height":0.022346368},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"New chat ⌘N","depth":15,"bounds":{"left":0.0043218085,"top":0.08938547,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"New chat","depth":16,"bounds":{"left":0.014295213,"top":0.0933759,"width":0.018949468,"height":0.012769354},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.014295213,"top":0.0933759,"width":0.003656915,"height":0.013567438}},{"char_start":1,"char_count":7,"bounds":{"left":0.01761968,"top":0.0933759,"width":0.015957447,"height":0.013567438}}],"role_description":"text"},{"role":"AXStaticText","text":"⌘N","depth":17,"bounds":{"left":0.08178192,"top":0.0933759,"width":0.006981383,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Projects","depth":15,"bounds":{"left":0.0043218085,"top":0.110135674,"width":0.08643617,"height":0.019952115},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Artifacts","depth":15,"bounds":{"left":0.0043218085,"top":0.1300878,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Customize","depth":15,"bounds":{"left":0.0043218085,"top":0.15003991,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Pinned","depth":16,"bounds":{"left":0.0063164895,"top":0.18914606,"width":0.08377659,"height":0.013567438},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXButton","text":"Bulgarian citizenship application process for EU residents","depth":18,"bounds":{"left":0.0043218085,"top":0.20590582,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Bulgarian citizenship application process for EU residents","depth":19,"bounds":{"left":0.08344415,"top":0.20909816,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Dawarich location tracking project","depth":18,"bounds":{"left":0.0043218085,"top":0.22745411,"width":0.08643617,"height":0.019952115},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Dawarich location tracking project","depth":19,"bounds":{"left":0.08344415,"top":0.22984837,"width":0.005984043,"height":0.015163607},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Recents","depth":16,"bounds":{"left":0.0063164895,"top":0.25698325,"width":0.06349734,"height":0.012769354},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXButton","text":"View all","depth":16,"bounds":{"left":0.07114362,"top":0.25698325,"width":0.018949468,"height":0.012769354},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"HubSpot rate limit implementation strategy","depth":18,"bounds":{"left":0.0043218085,"top":0.27294493,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for HubSpot rate limit implementation strategy","depth":19,"bounds":{"left":0.08344415,"top":0.27613726,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Screenpipe retention policy code location","depth":18,"bounds":{"left":0.0043218085,"top":0.29449323,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Screenpipe retention policy code location","depth":19,"bounds":{"left":0.08344415,"top":0.29768556,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Viewing retention policy in screenpipe","depth":18,"bounds":{"left":0.0043218085,"top":0.31524342,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Viewing retention policy in screenpipe","depth":19,"bounds":{"left":0.08344415,"top":0.31843576,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Clean shot x video recording termination issue","depth":18,"bounds":{"left":0.0043218085,"top":0.3367917,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Clean shot x video recording termination issue","depth":19,"bounds":{"left":0.08344415,"top":0.33998403,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"HubSpot rate limit handling with executeRequest","depth":18,"bounds":{"left":0.0043218085,"top":0.3575419,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for HubSpot rate limit handling with executeRequest","depth":19,"bounds":{"left":0.08344415,"top":0.36073422,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Untitled","depth":18,"bounds":{"left":0.0043218085,"top":0.3790902,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options","depth":19,"bounds":{"left":0.08344415,"top":0.38228253,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"💬 Screen pipe. Is there ability…","depth":18,"bounds":{"left":0.0043218085,"top":0.39984038,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for 💬 Screen pipe. Is there ability…","depth":19,"bounds":{"left":0.08344415,"top":0.40303272,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"SMB mount access inconsistency between Finder and iTerm","depth":18,"bounds":{"left":0.0043218085,"top":0.42138866,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for SMB mount access inconsistency between Finder and iTerm","depth":19,"bounds":{"left":0.08344415,"top":0.4237829,"width":0.005984043,"height":0.015163607},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"💬 What is the best switch I can…","depth":18,"bounds":{"left":0.0043218085,"top":0.44213888,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for 💬 What is the best switch I can…","depth":19,"bounds":{"left":0.08344415,"top":0.44533122,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Permission denied on screenpipe volume","depth":18,"bounds":{"left":0.0043218085,"top":0.46288908,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Permission denied on screenpipe volume","depth":19,"bounds":{"left":0.08344415,"top":0.4660814,"width":0.005984043,"height":0.015163607},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Screenpipe sync database attachment error","depth":18,"bounds":{"left":0.0043218085,"top":0.48443735,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Screenpipe sync database attachment error","depth":19,"bounds":{"left":0.08344415,"top":0.48762968,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Last swimming outing with Dani","depth":18,"bounds":{"left":0.0043218085,"top":0.5051876,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Last swimming outing with Dani","depth":19,"bounds":{"left":0.08344415,"top":0.5083799,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Definition of incarcerated","depth":18,"bounds":{"left":0.0043218085,"top":0.52673584,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Definition of incarcerated","depth":19,"bounds":{"left":0.08344415,"top":0.52992815,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Chromecast remote volume buttons not working","depth":18,"bounds":{"left":0.0043218085,"top":0.547486,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Chromecast remote volume buttons not working","depth":19,"bounds":{"left":0.08344415,"top":0.5506784,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Salesforce API errors with Organization and FieldDefinition queries","depth":18,"bounds":{"left":0.0043218085,"top":0.56903434,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Salesforce API errors with Organization and FieldDefinition queries","depth":19,"bounds":{"left":0.08344415,"top":0.57222664,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Daily activity summary from screenpipe data","depth":18,"bounds":{"left":0.0043218085,"top":0.5897845,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Daily activity summary from screenpipe data","depth":19,"bounds":{"left":0.08344415,"top":0.59297687,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"MacBook unexpected restarts and kanji screen","depth":18,"bounds":{"left":0.0043218085,"top":0.6113328,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for MacBook unexpected restarts and kanji screen","depth":19,"bounds":{"left":0.08344415,"top":0.61452514,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Security patch review and testing guidance","depth":18,"bounds":{"left":0.0043218085,"top":0.632083,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Security patch review and testing guidance","depth":19,"bounds":{"left":0.08344415,"top":0.63527536,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Food calorie values reference","depth":18,"bounds":{"left":0.0043218085,"top":0.65363127,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Food calorie values reference","depth":19,"bounds":{"left":0.08344415,"top":0.65682364,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Tracking location history from last week","depth":18,"bounds":{"left":0.0043218085,"top":0.6743815,"width":0.08643617,"height":0.011173184},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Tracking location history from last week","depth":19,"bounds":{"left":0.08344415,"top":0.6775738,"width":0.005984043,"height":0.007980846},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"Lukas Pro","depth":15,"bounds":{"left":0.0043218085,"top":0.6943336,"width":0.037898935,"height":0.01915403},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Get apps and extensions","depth":15,"bounds":{"left":0.08277926,"top":0.6943336,"width":0.007978723,"height":0.01915403},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"HubSpot rate limit implementation strategy, rename chat","depth":20,"bounds":{"left":0.043218084,"top":0.02793296,"width":0.09773936,"height":0.022346368},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"HubSpot rate limit implementation strategy","depth":22,"bounds":{"left":0.04454787,"top":0.031923383,"width":0.09507979,"height":0.014365523},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.04454787,"top":0.031923383,"width":0.003656915,"height":0.014365523}},{"char_start":1,"char_count":41,"bounds":{"left":0.048204787,"top":0.031923383,"width":0.09142287,"height":0.014365523}}],"role_description":"text"},{"role":"AXPopUpButton","text":"More options for HubSpot rate limit implementation strategy","depth":20,"bounds":{"left":0.14128989,"top":0.02793296,"width":0.0066489363,"height":0.022346368},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close","depth":22,"bounds":{"left":0.22240691,"top":0.026336791,"width":0.010638298,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Share chat","depth":22,"bounds":{"left":0.234375,"top":0.026336791,"width":0.010638298,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Claude finished the response","depth":22,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"You said: So just a solution for rate limit implementation.","depth":21,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"You said: So just a solution for rate limit implementation.","depth":22,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"So just a solution for rate limit implementation. The situation currently is that there are some daily and secondary limits for HubSpot. I would like to make sure I never reach a 429 error rate limit. The requests can come from any flow. It can be:","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"updating activity (engagement, meeting, call, note)","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"searching for a company or contact","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"updating deal","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"patching IDs\nReview what the limit is at the moment in the HubSpot documentation and then think of the solution:","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"where to store it","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"how to read it","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"how to work with multiple jobs","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"how to work with paginated requests Let's consider a situation when there are 600 opportunities to sync. What would be the flow? How would the rate limit be recognized? How would it be handled? What are the potential issues? [API usage guidelines and limits - HubSpot docs](","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXLink","text":"https://developers.hubspot.com/docs/developer-tooling/platform/usage-guidelines","depth":26,"on_screen":false,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"https://developers.hubspot.com/docs/developer-tooling/platform/usage-guidelines","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"). Example of such a error Client error:","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"POST https://api.hubapi.com/crm/v3/objects/contact/search","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"resulted in a","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"429 Too Many Requests","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"response: {\"status\":\"error\",\"message\":\"You have reached your secondly limit.\",\"errorType\":\"RATE_LIMIT\",\"correlationId\":\"019dffc4-4 (truncated...). Think carefully about the implementation and potential issue and bottlenecks.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Show more","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:42","depth":23,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Retry","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Edit","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Copy","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXHeading","text":"Claude responded: Current HubSpot limits (Apr 2026)","depth":22,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"Claude responded: Current HubSpot limits (Apr 2026)","depth":23,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Synthesized HubSpot rate limit architecture with Redis storage and sliding window algorithms","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Synthesized HubSpot rate limit architecture with Redis storage and sliding window algorithms","depth":24,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"Current HubSpot limits (Apr 2026)","depth":25,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"Current HubSpot limits (Apr 2026)","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"For privately distributed apps (which is what Jiminny presumably uses with HubSpot), the limits are layered: a per-app burst window of 100/10s on Free/Starter, 190/10s on Pro/Enterprise, or 250/10s with the API Limit Increase add-on","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", plus a per-account daily cap of 250k / 625k / 1M depending on tier — shared across all private apps in the account","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":". The burst window is per app; the daily quota is per portal.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXLink","text":"hubspot","depth":27,"on_screen":false,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"hubspot","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXLink","text":"hubspot","depth":27,"on_screen":false,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"hubspot","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"The Search API is special: five requests per second per account, capped at 200 records per page, with a hard 10,000-result ceiling per query","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":". That's the limit the 429 in your example is hitting (","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"secondly limit","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"on","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/crm/v3/objects/contact/search","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"). It's a separate bucket from the 190/10s, and critically, search responses do not include the","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"X-HubSpot-RateLimit-*","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"headers","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— you can't read remaining capacity off the response, you have to track it yourself.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXLink","text":"hubspot","depth":27,"on_screen":false,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"hubspot","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXLink","text":"hubspot","depth":27,"on_screen":false,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"hubspot","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Non-search endpoints return","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"X-HubSpot-RateLimit-Remaining","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":",","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"-Max","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", and","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"-Interval-Milliseconds","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":". The daily headers are not returned for OAuth-authenticated calls","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", so for those you check the account-info endpoint or maintain your own counter. There's also a soft rule: errors should stay under 5% of total daily requests","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— that's enforced for marketplace listing, but it's also a sane operational target.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXLink","text":"hubspot","depth":27,"on_screen":false,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"hubspot","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXLink","text":"hubspot","depth":27,"on_screen":false,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"hubspot","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"So you have","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"four buckets","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"to track at minimum: app-burst (10s sliding), search-secondly (1s sliding), account-daily (24h fixed, midnight in HubSpot's TZ), and per-app daily share (your own budgeting on top of the account cap).","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"Where to store it","depth":25,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"Where to store it","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Redis. It's the only realistic option once you have multiple queue workers — DB-backed counters serialize too much, and in-process state can't coordinate across workers. Laravel already speaks Redis natively, and you get atomic","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"INCR","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"EXPIRE","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"plus Lua scripting for true CAS semantics.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Key layout I'd use:","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Copy to clipboard","depth":28,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"hubspot:rl:burst:{portalId}:{appId} ZSET (sliding 10s)","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"hubspot:rl:search:{portalId} ZSET (sliding 1s)","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"hubspot:rl:daily:{portalId} STRING + TTL to midnight TZ","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"hubspot:rl:meta:{portalId} HASH (last seen headers)","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"The two short-window buckets are sliding-window-log (Redis ZSET, score =","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"microtime","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", member = unique request id). Lua script removes entries older than the window, counts remaining slots, and only adds the new one if there's room — all atomic. Fixed windows are simpler but allow 2× the limit at the boundary, which on a 5/s window is brutal.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"The daily bucket is a plain","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"INCR","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"with TTL set to seconds-until-midnight in","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"HubSpot's account timezone","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", not yours — Sofia is UTC+2/+3 but your portal might be set to US Eastern. Get this once and cache it.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"How to read it","depth":25,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"How to read it","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Two-phase: optimistic pre-check, authoritative post-update.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Before a call, run the Lua acquire script. If it returns \"denied,\" sleep until a slot frees up (the script can return ms-until-next-slot) or push the job back to the queue with a delay. Don't busy-loop.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"After the call, parse","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"X-HubSpot-RateLimit-Remaining","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"-Max","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"-Interval-Milliseconds","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"and store them in","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"hubspot:rl:meta:{portalId}","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":". This is your reality check — if your local counter says 50 remaining but HubSpot's header says 5, you trust HubSpot and clamp your counter. This handles clock drift, missed accounting (e.g., crashed worker that took a token but never made the request), and other apps in the same account consuming the daily budget invisibly.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"For search specifically, since headers don't come back, the local counter","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"is","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"the source of truth — meaning if you ever crash mid-flight, you've under-counted. Always release tokens on connection-level failure but","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"not","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"on 429 (you really did make that request).","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"How to work with multiple jobs","depth":25,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"How to work with multiple jobs","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"The queue layer needs to enforce concurrency separately from the rate limiter. Both work together:","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Concurrency cap","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"via","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Queue::throttle()","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"or a Redis semaphore — limits how many sync workers run in parallel against HubSpot. Without this, you can have 50 workers all blocked waiting for tokens, which is wasteful and creates retry storms.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Per-tenant fairness","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— if you sync many Jiminny customers into different HubSpot portals, each portal has its own bucket but you still want one slow portal not to starve others. Either separate queues per portal or a fair-share scheduler.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Priority lanes","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— webhook-driven updates (user-visible latency) should outrank background batch syncs. Two queues:","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"hubspot-priority","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"and","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"hubspot-bulk","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", with priority workers taking 70% of the burst budget and bulk taking 30% (enforce via separate sub-buckets if you really want hard separation, otherwise just pull from priority first).","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Backoff on 429","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— respect the","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Retry-After","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"header. If absent, exponential with jitter (e.g.,","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"min(2^attempt * 250ms, 30s) ± 20%","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"). The jitter is non-negotiable; without it, simultaneous 429s retry in lockstep and you get thundering-herd 429s on retry.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"How to work with paginated requests","depth":25,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"How to work with paginated requests","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"The trap is treating \"fetch all\" as one logical operation. Each page is its own API call and competes for tokens with everything else.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Two practical rules:","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Don't hold the worker idle while paginating.","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"If page N takes 500ms and page N+1 needs to wait 800ms for a token, you've burned 800ms of worker time doing nothing. Instead, fetch page N, dispatch the","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"processing","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"of page N as a separate job, and queue a \"fetch page N+1\" job with a delay equal to the wait time. Each page becomes its own atomic unit.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Always batch where HubSpot offers it.","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"POST /crm/v3/objects/{type}/batch/{read|update|create}","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"accepts up to 100 IDs per call. For your \"patching IDs\" flow this is the difference between 600 calls and 6.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"Walkthrough: 600 opportunities","depth":25,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"Walkthrough: 600 opportunities","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Naive flow (one PATCH per deal): 600 calls. At 190/10s that's ~32s of API time, well under daily. You'd hit burst easily without throttling. Plus likely 1-3 search calls upfront and N association calls.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Sane flow:","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Identify deltas","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— if you can avoid Search at all, do. Use","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"lastmodifieddate","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"filter on a single search if you must, paginate at limit=200. For 600 deals that's 3 search calls @ 5/s = ~600ms naturally throttled.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Batch read","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"current state —","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"POST /crm/v3/objects/deals/batch/read","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"with 100 IDs per call → 6 calls. Burst weight 6.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Compute diff","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"in your code (no API).","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Batch update","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"—","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"POST /crm/v3/objects/deals/batch/update","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"with 100 per call → 6 calls.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Associations","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"—","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"POST /crm/v4/associations/{from}/{to}/batch/create","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"if needed → another few batch calls.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Total: ~15-20 API calls for 600 deals. Burst budget consumed: 20/190 over ~5s. Daily impact: trivial.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Recognition: pre-check denies if","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"<weight>","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"slots aren't free; on 429 the response surfaces","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"policyName","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"(DAILY/SECONDLY) — log it, push the job back with","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Retry-After","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"delay, increment a metric so you can alarm on sustained 429 rate.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"Pitfalls & bottlenecks worth pre-empting","depth":25,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"Pitfalls & bottlenecks worth pre-empting","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Daily quota is shared across the whole portal","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", including any n8n flows, other private apps, marketing automation calling APIs, etc. Budget for ~70-80% of the documented limit, not 100%. Add an internal per-app daily cap so a runaway sync can't starve other apps.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Search is uniquely fragile","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":": separate 5/s bucket, no headers to read, 10k-result cap per query. If you ever hit 10k+ deals matching a filter, partition by","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"hs_object_id","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"ranges or by","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"lastmodifieddate","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"windows.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Retry storms after HubSpot incidents","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— always jitter, always cap total retries (e.g., 5 attempts, then dead-letter).","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Webhook → sync → webhook loops","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— when your update fires a HubSpot webhook that triggers another sync. Tag your own writes (e.g., a custom property","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"jy_last_sync_id","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":") and ignore webhooks where it just changed.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Token refresh","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— OAuth refresh itself counts against burst. Cache the access token in Redis with TTL =","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"expires_in - 60s","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", single-flight the refresh (only one worker refreshes; others wait on a lock).","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Search latency for fresh writes","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— newly created/updated objects don't appear in search instantly. Don't write-then-search; use returned IDs directly.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Clock skew","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— Redis is authoritative. Don't use","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"time()","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"from each worker for window scoring; use","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"redis.call('TIME')","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"inside the Lua script.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Dead workers with held tokens","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— sliding-window-log handles this naturally because tokens expire by score; token-bucket implementations need explicit release-on-crash logic.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"The 5% error rule","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"counts every 429 toward your error budget, even successfully retried ones. If your pre-check is working well, 429s should be near zero — if they're not, your pre-check is wrong, not just slow.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Phantom contention with Laravel","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"RateLimited","depth":29,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"middleware","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":": it's per-job-class by default, not per-portal. If your","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"SyncDealJob","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"and","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"UpdateActivityJob","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"are different classes both calling HubSpot, they don't share a Laravel-level limiter — you need a single","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"HubspotRateLimiter","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"service that everything routes through.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"If you want, I can sketch the Lua script for the sliding-window acquire and the Laravel service wrapper around it.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Copy","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Give positive feedback","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Give negative feedback","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Retry","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXHeading","text":"You said: What will happen if there are two different types of rate limits?","depth":21,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"You said: What will happen if there are two different types of rate limits?","depth":22,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"What will happen if there are two different types of rate limits?","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Search requests that have 5 requests per second","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"The other rate limit that has, let's say, 100 requests per 10 seconds How do these work together? Is there some conflict? Can I reach the limit with one request and block either as well, or are these separated? Can I still continue making search requests once I hit the normal requests limits?","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"13:40","depth":23,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Retry","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Edit","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Copy","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXHeading","text":"Claude responded: They're independent buckets — with one shared bucket on top.","depth":22,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"Claude responded: They're independent buckets — with one shared bucket on top.","depth":23,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Analyzed independent rate limit buckets and their practical interactions","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Analyzed independent rate limit buckets and their practical interactions","depth":24,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"They're independent buckets — with one shared bucket on top.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"The three buckets and what each call hits","depth":25,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"The three buckets and what each call hits","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Copy to clipboard","depth":28,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"┌──────────────────┐","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Search request ──→ │ Search: 5/sec │ ──┐","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"└──────────────────┘ │","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"├──→ ┌─────────────────┐","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"┌──────────────────┐ │ │ Daily: 250k–1M │","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Non-search call ──→ │ Burst: 190/10s │ ──┘ │ (per portal) │","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"└──────────────────┘ └─────────────────┘","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"A search call is only metered against the search bucket and the daily bucket. A non-search call (batch read/update, single PATCH, associations, etc.) is only metered against the burst bucket and the daily bucket. The two short-window buckets do not share counters.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"What this means practically","depth":25,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"What this means practically","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Hitting search secondly limit (5/s):","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Only further","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/search","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"calls 429. Your batch reads, batch updates, single PATCHes, association calls — all keep working at full burst speed. This is actually useful: if your sync is bottlenecked on Search, you can pivot to using","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"lastmodifieddate","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"filters via batch endpoints, or use the IDs you already have to do batch reads, while Search cools off.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Hitting burst limit (190/10s):","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Only non-search calls 429. You can still issue Search calls at 5/s. Useful for: continuing to identify deltas for queueing while in-flight updates drain, or refreshing a small set of records via Search even though your write pipeline is paused.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Hitting daily limit:","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Everything stops. Search and non-search alike. Doesn't unblock until midnight in your portal's configured timezone — and remember this is shared across every private app in the portal, plus n8n flows, marketing tools, anything else hitting the API with that account.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"So can one type of request block the other?","depth":25,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"So can one type of request block the other?","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Search → Burst:","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"No.","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Saturating Search at 50 calls per 10s leaves your full 190/10s burst untouched.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Burst → Search:","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"No.","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Saturating burst leaves Search's 5/s untouched.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Either → Daily:","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Yes","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", but only by contributing to the same daily counter. It's volume that kills you here, not the type.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"In theory you can sustain ~50 search + ~190 other =","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"~240 calls per 10 seconds","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"indefinitely (until daily runs out), because the two buckets bill independently.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"Implementation consequence","depth":25,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"Implementation consequence","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Your rate limiter needs to know which bucket a request hits before it acquires. Cleanest pattern:","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Copy to clipboard","depth":28,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"php","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"$limiter","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"->","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"acquire","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"(","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"'search'","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":",","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"$weight","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"=","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":")","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":";","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"// for search endpoints only","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"$limiter","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"->","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"acquire","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"(","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"'burst'","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":",","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"$weight","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"=","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":")","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":";","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"// for everything else","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"$limiter","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"->","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"acquire","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"(","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"'daily'","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":",","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"$weight","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"=","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":")","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":";","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"// every call, both kinds","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"In Redis: three separate keys, three separate Lua acquire scripts (or one script with a bucket parameter). A search call calls","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"acquire('search')","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"acquire('daily')","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":". A batch update calls","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"acquire('burst')","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"+","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"acquire('daily')","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":".","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"One subtle pitfall: when you backoff on a 429,","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"inspect","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"policyName","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"in the response body","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"to know which bucket actually fired. If you see","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"SECONDLY","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"from a search endpoint, you only need to delay search-bound jobs — burst-bound jobs in the queue can keep running. If you blanket-pause everything on any 429, you waste capacity on the bucket that's still healthy. Two queues (or two throttle keys) make this clean; one global pause is the lazy version.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"The other subtlety: the burst response gives you","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"X-HubSpot-RateLimit-Remaining","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"to clamp local state against, but search doesn't return those headers. So your search counter is unverified — be slightly more conservative there (e.g., budget 4/s instead of 5) to absorb the unaccounted-for calls.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Copy","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Give positive feedback","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Give negative feedback","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Retry","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXHeading","text":"You said: Ok, so what will happen each time I make a request?","depth":21,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"You said: Ok, so what will happen each time I make a request?","depth":22,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Ok, so what will happen each time I make a request? Let's say I have 100,000 requests to make that are instant. Do I need to increment each request based on the type? For example, if there is a search request, I need to increment both the search bucket and also the daily bucket. If it's a burst, then I can go to the daily and burst buckets. If I need to check if it can make a call, do I need to see both the daily and search, or burst, respectively? Isn't that too heavy for the infrastructure, adding additional load to each request?","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"13:44","depth":23,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Retry","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Edit","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Copy","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXHeading","text":"Claude responded: Yes, your understanding is correct — every request must check and reserve from each bucket it applies to, atomically, before the call goes out.","depth":22,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"Claude responded: Yes, your understanding is correct — every request must check and reserve from each bucket it applies to, atomically, before the call goes out.","depth":23,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Analyzed per-request overhead concerns and quantified Redis performance impact","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Analyzed per-request overhead concerns and quantified Redis performance impact","depth":24,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Yes, your understanding is correct — every request must check and reserve from each bucket it applies to, atomically, before the call goes out. But the overhead is much smaller than it sounds, and importantly, it's nowhere near your bottleneck.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"What \"two buckets per request\" actually costs","depth":25,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"What \"two buckets per request\" actually costs","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Each request makes","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"one round trip to Redis","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— not two — because you fold both bucket checks into a single Lua script that runs atomically server-side:","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Copy to clipboard","depth":28,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"lua","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"-- KEYS[1] = burst bucket key (or search)","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"-- KEYS[2] = daily bucket key","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"-- ARGV[1] = now (ms) ARGV[2] = window_ms","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"-- ARGV[3] = bucket_max ARGV[4] = daily_max","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"-- ARGV[5] = request_id ARGV[6] = daily_ttl","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"-- Trim sliding window","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"redis","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":".","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"call","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"(","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"'ZREMRANGEBYSCORE'","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":",","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"KEYS","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"[","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"]","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":",","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"0","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":",","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"ARGV","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"[","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"]","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"-","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"ARGV","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"[","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"2","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"]","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":")","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"local","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"burst_used","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"=","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"redis","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":".","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"call","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"(","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"'ZCARD'","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":",","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"KEYS","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"[","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"]","depth":28,"on_screen":false,"role_description":"text"}]...
|
1778263816875622558
|
-6913325059417482156
|
visual_change
|
accessibility
|
NULL
|
Skip to content
Skip to content
Click to collapse
Skip to content
Skip to content
Click to collapse
⌘B
Drag to resize
Open sidebar
Chat
Cowork
Code
New chat ⌘N
New chat
⌘N
Projects
Artifacts
Customize
Pinned
Bulgarian citizenship application process for EU residents
More options for Bulgarian citizenship application process for EU residents
Dawarich location tracking project
More options for Dawarich location tracking project
Recents
View all
HubSpot rate limit implementation strategy
More options for HubSpot rate limit implementation strategy
Screenpipe retention policy code location
More options for Screenpipe retention policy code location
Viewing retention policy in screenpipe
More options for Viewing retention policy in screenpipe
Clean shot x video recording termination issue
More options for Clean shot x video recording termination issue
HubSpot rate limit handling with executeRequest
More options for HubSpot rate limit handling with executeRequest
Untitled
More options
💬 Screen pipe. Is there ability…
More options for 💬 Screen pipe. Is there ability…
SMB mount access inconsistency between Finder and iTerm
More options for SMB mount access inconsistency between Finder and iTerm
💬 What is the best switch I can…
More options for 💬 What is the best switch I can…
Permission denied on screenpipe volume
More options for Permission denied on screenpipe volume
Screenpipe sync database attachment error
More options for Screenpipe sync database attachment error
Last swimming outing with Dani
More options for Last swimming outing with Dani
Definition of incarcerated
More options for Definition of incarcerated
Chromecast remote volume buttons not working
More options for Chromecast remote volume buttons not working
Salesforce API errors with Organization and FieldDefinition queries
More options for Salesforce API errors with Organization and FieldDefinition queries
Daily activity summary from screenpipe data
More options for Daily activity summary from screenpipe data
MacBook unexpected restarts and kanji screen
More options for MacBook unexpected restarts and kanji screen
Security patch review and testing guidance
More options for Security patch review and testing guidance
Food calorie values reference
More options for Food calorie values reference
Tracking location history from last week
More options for Tracking location history from last week
Lukas Pro
Get apps and extensions
HubSpot rate limit implementation strategy, rename chat
HubSpot rate limit implementation strategy
More options for HubSpot rate limit implementation strategy
Close
Share chat
Claude finished the response
You said: So just a solution for rate limit implementation.
You said: So just a solution for rate limit implementation.
So just a solution for rate limit implementation. The situation currently is that there are some daily and secondary limits for HubSpot. I would like to make sure I never reach a 429 error rate limit. The requests can come from any flow. It can be:
updating activity (engagement, meeting, call, note)
searching for a company or contact
updating deal
patching IDs
Review what the limit is at the moment in the HubSpot documentation and then think of the solution:
where to store it
how to read it
how to work with multiple jobs
how to work with paginated requests Let's consider a situation when there are 600 opportunities to sync. What would be the flow? How would the rate limit be recognized? How would it be handled? What are the potential issues? [API usage guidelines and limits - HubSpot docs](
https://developers.hubspot.com/docs/developer-tooling/platform/usage-guidelines
https://developers.hubspot.com/docs/developer-tooling/platform/usage-guidelines
). Example of such a error Client error:
POST https://api.hubapi.com/crm/v3/objects/contact/search
resulted in a
429 Too Many Requests
response: {"status":"error","message":"You have reached your secondly limit.","errorType":"RATE_LIMIT","correlationId":"019dffc4-4 (truncated...). Think carefully about the implementation and potential issue and bottlenecks.
Show more
10:42
Retry
Edit
Copy
Claude responded: Current HubSpot limits (Apr 2026)
Claude responded: Current HubSpot limits (Apr 2026)
Synthesized HubSpot rate limit architecture with Redis storage and sliding window algorithms
Synthesized HubSpot rate limit architecture with Redis storage and sliding window algorithms
Current HubSpot limits (Apr 2026)
Current HubSpot limits (Apr 2026)
For privately distributed apps (which is what Jiminny presumably uses with HubSpot), the limits are layered: a per-app burst window of 100/10s on Free/Starter, 190/10s on Pro/Enterprise, or 250/10s with the API Limit Increase add-on
, plus a per-account daily cap of 250k / 625k / 1M depending on tier — shared across all private apps in the account
. The burst window is per app; the daily quota is per portal.
hubspot
hubspot
hubspot
hubspot
The Search API is special: five requests per second per account, capped at 200 records per page, with a hard 10,000-result ceiling per query
. That's the limit the 429 in your example is hitting (
secondly limit
on
/crm/v3/objects/contact/search
). It's a separate bucket from the 190/10s, and critically, search responses do not include the
X-HubSpot-RateLimit-*
headers
— you can't read remaining capacity off the response, you have to track it yourself.
hubspot
hubspot
hubspot
hubspot
Non-search endpoints return
X-HubSpot-RateLimit-Remaining
,
-Max
, and
-Interval-Milliseconds
. The daily headers are not returned for OAuth-authenticated calls
, so for those you check the account-info endpoint or maintain your own counter. There's also a soft rule: errors should stay under 5% of total daily requests
— that's enforced for marketplace listing, but it's also a sane operational target.
hubspot
hubspot
hubspot
hubspot
So you have
four buckets
to track at minimum: app-burst (10s sliding), search-secondly (1s sliding), account-daily (24h fixed, midnight in HubSpot's TZ), and per-app daily share (your own budgeting on top of the account cap).
Where to store it
Where to store it
Redis. It's the only realistic option once you have multiple queue workers — DB-backed counters serialize too much, and in-process state can't coordinate across workers. Laravel already speaks Redis natively, and you get atomic
INCR
/
EXPIRE
plus Lua scripting for true CAS semantics.
Key layout I'd use:
Copy to clipboard
hubspot:rl:burst:{portalId}:{appId} ZSET (sliding 10s)
hubspot:rl:search:{portalId} ZSET (sliding 1s)
hubspot:rl:daily:{portalId} STRING + TTL to midnight TZ
hubspot:rl:meta:{portalId} HASH (last seen headers)
The two short-window buckets are sliding-window-log (Redis ZSET, score =
microtime
, member = unique request id). Lua script removes entries older than the window, counts remaining slots, and only adds the new one if there's room — all atomic. Fixed windows are simpler but allow 2× the limit at the boundary, which on a 5/s window is brutal.
The daily bucket is a plain
INCR
with TTL set to seconds-until-midnight in
HubSpot's account timezone
, not yours — Sofia is UTC+2/+3 but your portal might be set to US Eastern. Get this once and cache it.
How to read it
How to read it
Two-phase: optimistic pre-check, authoritative post-update.
Before a call, run the Lua acquire script. If it returns "denied," sleep until a slot frees up (the script can return ms-until-next-slot) or push the job back to the queue with a delay. Don't busy-loop.
After the call, parse
X-HubSpot-RateLimit-Remaining
/
-Max
/
-Interval-Milliseconds
and store them in
hubspot:rl:meta:{portalId}
. This is your reality check — if your local counter says 50 remaining but HubSpot's header says 5, you trust HubSpot and clamp your counter. This handles clock drift, missed accounting (e.g., crashed worker that took a token but never made the request), and other apps in the same account consuming the daily budget invisibly.
For search specifically, since headers don't come back, the local counter
is
the source of truth — meaning if you ever crash mid-flight, you've under-counted. Always release tokens on connection-level failure but
not
on 429 (you really did make that request).
How to work with multiple jobs
How to work with multiple jobs
The queue layer needs to enforce concurrency separately from the rate limiter. Both work together:
Concurrency cap
via
Queue::throttle()
or a Redis semaphore — limits how many sync workers run in parallel against HubSpot. Without this, you can have 50 workers all blocked waiting for tokens, which is wasteful and creates retry storms.
Per-tenant fairness
— if you sync many Jiminny customers into different HubSpot portals, each portal has its own bucket but you still want one slow portal not to starve others. Either separate queues per portal or a fair-share scheduler.
Priority lanes
— webhook-driven updates (user-visible latency) should outrank background batch syncs. Two queues:
hubspot-priority
and
hubspot-bulk
, with priority workers taking 70% of the burst budget and bulk taking 30% (enforce via separate sub-buckets if you really want hard separation, otherwise just pull from priority first).
Backoff on 429
— respect the
Retry-After
header. If absent, exponential with jitter (e.g.,
min(2^attempt * 250ms, 30s) ± 20%
). The jitter is non-negotiable; without it, simultaneous 429s retry in lockstep and you get thundering-herd 429s on retry.
How to work with paginated requests
How to work with paginated requests
The trap is treating "fetch all" as one logical operation. Each page is its own API call and competes for tokens with everything else.
Two practical rules:
Don't hold the worker idle while paginating.
If page N takes 500ms and page N+1 needs to wait 800ms for a token, you've burned 800ms of worker time doing nothing. Instead, fetch page N, dispatch the
processing
of page N as a separate job, and queue a "fetch page N+1" job with a delay equal to the wait time. Each page becomes its own atomic unit.
Always batch where HubSpot offers it.
POST /crm/v3/objects/{type}/batch/{read|update|create}
accepts up to 100 IDs per call. For your "patching IDs" flow this is the difference between 600 calls and 6.
Walkthrough: 600 opportunities
Walkthrough: 600 opportunities
Naive flow (one PATCH per deal): 600 calls. At 190/10s that's ~32s of API time, well under daily. You'd hit burst easily without throttling. Plus likely 1-3 search calls upfront and N association calls.
Sane flow:
Identify deltas
— if you can avoid Search at all, do. Use
lastmodifieddate
filter on a single search if you must, paginate at limit=200. For 600 deals that's 3 search calls @ 5/s = ~600ms naturally throttled.
Batch read
current state —
POST /crm/v3/objects/deals/batch/read
with 100 IDs per call → 6 calls. Burst weight 6.
Compute diff
in your code (no API).
Batch update
—
POST /crm/v3/objects/deals/batch/update
with 100 per call → 6 calls.
Associations
—
POST /crm/v4/associations/{from}/{to}/batch/create
if needed → another few batch calls.
Total: ~15-20 API calls for 600 deals. Burst budget consumed: 20/190 over ~5s. Daily impact: trivial.
Recognition: pre-check denies if
<weight>
slots aren't free; on 429 the response surfaces
policyName
(DAILY/SECONDLY) — log it, push the job back with
Retry-After
delay, increment a metric so you can alarm on sustained 429 rate.
Pitfalls & bottlenecks worth pre-empting
Pitfalls & bottlenecks worth pre-empting
Daily quota is shared across the whole portal
, including any n8n flows, other private apps, marketing automation calling APIs, etc. Budget for ~70-80% of the documented limit, not 100%. Add an internal per-app daily cap so a runaway sync can't starve other apps.
Search is uniquely fragile
: separate 5/s bucket, no headers to read, 10k-result cap per query. If you ever hit 10k+ deals matching a filter, partition by
hs_object_id
ranges or by
lastmodifieddate
windows.
Retry storms after HubSpot incidents
— always jitter, always cap total retries (e.g., 5 attempts, then dead-letter).
Webhook → sync → webhook loops
— when your update fires a HubSpot webhook that triggers another sync. Tag your own writes (e.g., a custom property
jy_last_sync_id
) and ignore webhooks where it just changed.
Token refresh
— OAuth refresh itself counts against burst. Cache the access token in Redis with TTL =
expires_in - 60s
, single-flight the refresh (only one worker refreshes; others wait on a lock).
Search latency for fresh writes
— newly created/updated objects don't appear in search instantly. Don't write-then-search; use returned IDs directly.
Clock skew
— Redis is authoritative. Don't use
time()
from each worker for window scoring; use
redis.call('TIME')
inside the Lua script.
Dead workers with held tokens
— sliding-window-log handles this naturally because tokens expire by score; token-bucket implementations need explicit release-on-crash logic.
The 5% error rule
counts every 429 toward your error budget, even successfully retried ones. If your pre-check is working well, 429s should be near zero — if they're not, your pre-check is wrong, not just slow.
Phantom contention with Laravel
RateLimited
middleware
: it's per-job-class by default, not per-portal. If your
SyncDealJob
and
UpdateActivityJob
are different classes both calling HubSpot, they don't share a Laravel-level limiter — you need a single
HubspotRateLimiter
service that everything routes through.
If you want, I can sketch the Lua script for the sliding-window acquire and the Laravel service wrapper around it.
Copy
Give positive feedback
Give negative feedback
Retry
You said: What will happen if there are two different types of rate limits?
You said: What will happen if there are two different types of rate limits?
What will happen if there are two different types of rate limits?
Search requests that have 5 requests per second
The other rate limit that has, let's say, 100 requests per 10 seconds How do these work together? Is there some conflict? Can I reach the limit with one request and block either as well, or are these separated? Can I still continue making search requests once I hit the normal requests limits?
13:40
Retry
Edit
Copy
Claude responded: They're independent buckets — with one shared bucket on top.
Claude responded: They're independent buckets — with one shared bucket on top.
Analyzed independent rate limit buckets and their practical interactions
Analyzed independent rate limit buckets and their practical interactions
They're independent buckets — with one shared bucket on top.
The three buckets and what each call hits
The three buckets and what each call hits
Copy to clipboard
┌──────────────────┐
Search request ──→ │ Search: 5/sec │ ──┐
└──────────────────┘ │
├──→ ┌─────────────────┐
┌──────────────────┐ │ │ Daily: 250k–1M │
Non-search call ──→ │ Burst: 190/10s │ ──┘ │ (per portal) │
└──────────────────┘ └─────────────────┘
A search call is only metered against the search bucket and the daily bucket. A non-search call (batch read/update, single PATCH, associations, etc.) is only metered against the burst bucket and the daily bucket. The two short-window buckets do not share counters.
What this means practically
What this means practically
Hitting search secondly limit (5/s):
Only further
/search
calls 429. Your batch reads, batch updates, single PATCHes, association calls — all keep working at full burst speed. This is actually useful: if your sync is bottlenecked on Search, you can pivot to using
lastmodifieddate
filters via batch endpoints, or use the IDs you already have to do batch reads, while Search cools off.
Hitting burst limit (190/10s):
Only non-search calls 429. You can still issue Search calls at 5/s. Useful for: continuing to identify deltas for queueing while in-flight updates drain, or refreshing a small set of records via Search even though your write pipeline is paused.
Hitting daily limit:
Everything stops. Search and non-search alike. Doesn't unblock until midnight in your portal's configured timezone — and remember this is shared across every private app in the portal, plus n8n flows, marketing tools, anything else hitting the API with that account.
So can one type of request block the other?
So can one type of request block the other?
Search → Burst:
No.
Saturating Search at 50 calls per 10s leaves your full 190/10s burst untouched.
Burst → Search:
No.
Saturating burst leaves Search's 5/s untouched.
Either → Daily:
Yes
, but only by contributing to the same daily counter. It's volume that kills you here, not the type.
In theory you can sustain ~50 search + ~190 other =
~240 calls per 10 seconds
indefinitely (until daily runs out), because the two buckets bill independently.
Implementation consequence
Implementation consequence
Your rate limiter needs to know which bucket a request hits before it acquires. Cleanest pattern:
Copy to clipboard
php
$limiter
->
acquire
(
'search'
,
$weight
=
1
)
;
// for search endpoints only
$limiter
->
acquire
(
'burst'
,
$weight
=
1
)
;
// for everything else
$limiter
->
acquire
(
'daily'
,
$weight
=
1
)
;
// every call, both kinds
In Redis: three separate keys, three separate Lua acquire scripts (or one script with a bucket parameter). A search call calls
acquire('search')
+
acquire('daily')
. A batch update calls
acquire('burst')
+
acquire('daily')
.
One subtle pitfall: when you backoff on a 429,
inspect
policyName
in the response body
to know which bucket actually fired. If you see
SECONDLY
from a search endpoint, you only need to delay search-bound jobs — burst-bound jobs in the queue can keep running. If you blanket-pause everything on any 429, you waste capacity on the bucket that's still healthy. Two queues (or two throttle keys) make this clean; one global pause is the lazy version.
The other subtlety: the burst response gives you
X-HubSpot-RateLimit-Remaining
to clamp local state against, but search doesn't return those headers. So your search counter is unverified — be slightly more conservative there (e.g., budget 4/s instead of 5) to absorb the unaccounted-for calls.
Copy
Give positive feedback
Give negative feedback
Retry
You said: Ok, so what will happen each time I make a request?
You said: Ok, so what will happen each time I make a request?
Ok, so what will happen each time I make a request? Let's say I have 100,000 requests to make that are instant. Do I need to increment each request based on the type? For example, if there is a search request, I need to increment both the search bucket and also the daily bucket. If it's a burst, then I can go to the daily and burst buckets. If I need to check if it can make a call, do I need to see both the daily and search, or burst, respectively? Isn't that too heavy for the infrastructure, adding additional load to each request?
13:44
Retry
Edit
Copy
Claude responded: Yes, your understanding is correct — every request must check and reserve from each bucket it applies to, atomically, before the call goes out.
Claude responded: Yes, your understanding is correct — every request must check and reserve from each bucket it applies to, atomically, before the call goes out.
Analyzed per-request overhead concerns and quantified Redis performance impact
Analyzed per-request overhead concerns and quantified Redis performance impact
Yes, your understanding is correct — every request must check and reserve from each bucket it applies to, atomically, before the call goes out. But the overhead is much smaller than it sounds, and importantly, it's nowhere near your bottleneck.
What "two buckets per request" actually costs
What "two buckets per request" actually costs
Each request makes
one round trip to Redis
— not two — because you fold both bucket checks into a single Lua script that runs atomically server-side:
Copy to clipboard
lua
-- KEYS[1] = burst bucket key (or search)
-- KEYS[2] = daily bucket key
-- ARGV[1] = now (ms) ARGV[2] = window_ms
-- ARGV[3] = bucket_max ARGV[4] = daily_max
-- ARGV[5] = request_id ARGV[6] = daily_ttl
-- Trim sliding window
redis
.
call
(
'ZREMRANGEBYSCORE'
,
KEYS
[
1
]
,
0
,
ARGV
[
1
]
-
ARGV
[
2
]
)
local
burst_used
=
redis
.
call
(
'ZCARD'
,
KEYS
[
1
]...
|
3615
|
NULL
|
NULL
|
NULL
|
|
3679
|
NULL
|
0
|
2026-05-07T12:35:40.497608+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-07/1778 /Users/lukas/.screenpipe/data/data/2026-05-07/1778157340497_m1.jpg...
|
PhpStorm
|
faVsco.js – JiminnyDebugCommand.php
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
master, menu
Start Listen Project: faVsco.js, menu
master, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
Editor for custom.log
Sync Changes
Hide This Notification
Code changed:
Hide
5
120
4
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Console\Commands;
use Carbon\Carbon;
use Carbon\CarbonImmutable;
use Illuminate\Console\Command;
use InvalidArgumentException;
use Jiminny\Jobs\AutomatedReports\RequestGenerateAskJiminnyReportJob;
use Jiminny\Jobs\AutomatedReports\SendReportMailJob;
use Jiminny\Jobs\JobDispatcherInterface;
use Jiminny\Models\Activity;
use Jiminny\Models\AutomatedReport;
use Jiminny\Models\AutomatedReportResult;
use Jiminny\Models\Team;
use Jiminny\Models\User;
use Jiminny\Repositories\AutomatedReportsRepository;
use Jiminny\Services\Activity\CrmOwnerResolver;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Jiminny\Services\UserPilot\UserPilotClient;
/**
* Class JiminnyDebugCommand
*
* @package Jiminny\Console\Commands
*/
class JiminnyDebugCommand extends Command
{
public const string FREQUENCY_DAILY = 'daily';
public const string FREQUENCY_WEEKLY = 'weekly';
public const string FREQUENCY_MONTHLY = 'monthly';
public const string FREQUENCY_QUARTERLY = 'quarterly';
public const string FREQUENCY_ONE_OFF = 'one_off';
protected $signature = 'jiminny:debug';
public function handle(
JobDispatcherInterface $jobDispatcher,
AutomatedReportsService $automatedReportsService,
AutomatedReportsRepository $automatedReportsRepository,
UserPilotClient $userPilotClient
): void {
$this->rateLimit();
exit(1);
$report = AutomatedReport::find(71);
$last = AutomatedReportResult::query()
->where('report_id', $report->getId())
->whereIn('status', [AutomatedReportResult::STATUS_DEFAULT, AutomatedReportResult::STATUS_FAILED])
// ->where('reason', '!=', AutomatedReportResult::REASON_NOT_ENOUGH_ACTIVITIES)
->whereDate('created_at', CarbonImmutable::now()->toDateString())
->latest()
->first();
$this->info("Last: {$last->getId()}");
exit(1);
$user = User::find(143);
// $count = $automatedReportsRepository->countUserReports($user);
// $this->info("Count: {$count}");
// $count = $automatedReportsRepository->countAllUserReports($user);
// $this->info("All count: {$count}");
$payload = [
'report_type' => 'ask_jiminny',
'frequency' => 'weekly',
];
$userPilotClient->track($user, 'ask-jiminny-report-generated', $payload);
exit(1);
$now = Carbon::now()->subDay(1);
$this->info("Now: {$now->toDateTimeString()}");
$weekStart = Carbon::getWeekStartsAt();
$this->info("Now: {$weekStart}");
// $from = $now->copy()->previousWeekday()->startOfDay();
// $to = $now->copy()->previousWeekday()->endOfDay();
// $fromOld = $now->copy()->subWeeks(1)->startOfDay();
// $toOld = $now->copy()->subDay()->endOfDay();
// $fromNew = $now->copy()->subWeek()->startOfWeek();
// $toNew = $now->copy()->subWeek()->endOfWeek();
// $fromOld = $now->copy()->subMonths(1)->startOfDay();
// $toOld = $now->copy()->subDay()->endOfDay();
// $fromNew = $now->copy()->subMonthNoOverflow()->startOfMonth();
// $toNew = $now->copy()->subMonthNoOverflow()->endOfMonth();
$fromOld = $now->copy()->subMonths(3)->startOfDay();
$toOld = $now->copy()->subDay()->endOfDay();
$fromNew = $now->copy()->subQuarterNoOverflow()->startOfQuarter();
$toNew = $now->copy()->subQuarterNoOverflow()->endOfQuarter();
$this->info("From old: {$fromOld->toDateTimeString()}");
$this->info("To old: {$toOld->toDateTimeString()}");
$this->info("From new: {$fromNew->toDateTimeString()}");
$this->info("To new: {$toNew->toDateTimeString()}");
exit(1);
$report = AutomatedReport::find(71);
$job = new RequestGenerateAskJiminnyReportJob($report->getUuid());
$jobDispatcher->dispatch($job);
exit(1);
// $this->formatDate($jobDispatcher);
// $this->sendMail($jobDispatcher, $automatedReportsService);
// $this->crmService();
$this->getPayload($automatedReportsService);
exit(1);
}
private function crmService()
{
$activity = Activity::find(418141);
$team = Team::find(19);
$config = $team->getCrmConfiguration();
$crmResolver = app(CrmOwnerResolver::class, [
'team' => $team,
'integrationAdmin' => $team->getOwner(),
'providerSlug' => $config->getProviderName(),
]);
$crmService = $crmResolver->prepareCrmService();
$crmService->createTranscriptNotes($activity);
}
private function sendMail(JobDispatcherInterface $jobDispatcher, AutomatedReportsService $automatedReportsService)
{
$reportUuid = '';
// $report = $automatedReportsService->getReportResult($reportUuid);
$report = AutomatedReportResult::find(275);
$validRecipients = $automatedReportsService->getValidRecipientUsers(
$report->getReport(),
includeJiminny: true,
);
$recipient = $validRecipients[0];
$fileName = $automatedReportsService->getReportFileName($report);
$typeName = $report->getReport()->getCustomName()
?? $automatedReportsService->getReportTypeName($report);
$teamsName = $automatedReportsService->getReportTeamsName($report);
$periodName = $automatedReportsService->getReportPeriodName($report);
$s3Path = $automatedReportsService->getMediaPath($report);
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$fileName ' . PHP_EOL . print_r($fileName, true));
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$typeName ' . PHP_EOL . print_r($typeName, true));
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$teamsName ' . PHP_EOL . print_r($teamsName, true));
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$periodName ' . PHP_EOL . print_r($periodName, true));
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$s3Path ' . PHP_EOL . print_r($s3Path, true));
$jobDispatcher->dispatch(
new SendReportMailJob(
reportUuid: $report->getUuid(),
s3Path: $s3Path,
recipientEmail: $recipient['email'],
recipientName: $recipient['name'] ?? null,
fileName: $fileName,
typeName: $typeName,
teamsName: $teamsName,
periodName: $periodName,
isAskJiminny: true,
)
);
exit(1);
}
private function formatDate(JobDispatcherInterface $jobDispatcher): void
{
$customName = 'Custom report name';
// $frequency = self::FREQUENCY_DAILY;
// $frequency = self::FREQUENCY_WEEKLY;
$frequency = self::FREQUENCY_MONTHLY;
// $frequency = self::FREQUENCY_QUARTERLY;
// $frequency = self::FREQUENCY_ONE_OFF;
$period = $this->calculateFromAndToDatePeriod($frequency);
$from = $period['fromDate'];
$to = $period['toDate'];
$periodName = $this->formatReportPeriodName($frequency, $from, $to);
$filenameSuffix = null;
if ($customName) {
if ($filenameSuffix) {
$customName .= " {$filenameSuffix}";
}
$result = $this->sanitizeFileName("{$customName} - {$periodName}");
}
$this->info($result);
}
public function calculateFromAndToDatePeriod(
string $frequency,
?Carbon $fromDate = null,
?Carbon $toDate = null
): array {
if ($frequency === self::FREQUENCY_ONE_OFF) {
return [
'fromDate' => $fromDate,
'toDate' => $toDate,
];
}
$now = Carbon::now();
return match ($frequency) {
self::FREQUENCY_DAILY => [
'fromDate' => $now->copy()->subDay()->startOfDay(),
'toDate' => $now->copy()->subDay()->endOfDay(),
],
self::FREQUENCY_WEEKLY => [
'fromDate' => $now->copy()->subWeeks(1)->startOfDay(),
'toDate' => $now->copy()->subDay()->endOfDay(),
],
self::FREQUENCY_MONTHLY => [
'fromDate' => $now->copy()->subMonths(1)->startOfDay(),
'toDate' => $now->copy()->subDay()->endOfDay(),
],
self::FREQUENCY_QUARTERLY => [
'fromDate' => $now->copy()->subMonths(3)->startOfDay(),
'toDate' => $now->copy()->subDay()->endOfDay(),
],
default => throw new InvalidArgumentException("Unsupported frequency: {$frequency}"),
};
}
private function formatReportPeriodName(string $frequency, Carbon $from, Carbon $to): string
{
$fromYear = $from->format('Y');
$toYear = $to->format('Y');
$differentYears = $fromYear !== $toYear;
switch ($frequency) {
case self::FREQUENCY_DAILY:
return $from->format('j M Y');
case self::FREQUENCY_QUARTERLY:
// 'Jan-Mar 2025' or 'Nov 2024-Jan 2025' if years differ
$startMonth = $from->format('M');
$endMonth = $to->copy()->subMonth();
$endMonthName = $endMonth->format('M');
$endMonthYear = $endMonth->format('Y');
if ($differentYears) {
return "{$startMonth} {$fromYear} - {$endMonthName} {$endMonthYear}";
}
return "{$startMonth} - {$endMonthName} {$toYear}";
case self::FREQUENCY_MONTHLY:
// 'May 2025' - monthly reports are always within the same year
return $from->format('M Y');
case self::FREQUENCY_WEEKLY:
// '4 - 8 Aug 2025', '27 Oct - 3 Nov 2025', or '28 Dec 2024 - 3 Jan 2025' if years differ
$startDay = $from->format('j');
$endDay = $to->format('j');
$startMonth = $from->format('M');
$endMonth = $to->format('M');
if ($differentYears) {
return "{$startDay} {$startMonth} {$fromYear} - {$endDay} {$endMonth} {$toYear}";
}
if ($startMonth !== $endMonth) {
return "{$startDay} {$startMonth} - {$endDay} {$endMonth} {$toYear}";
}
return "{$startDay} - {$endDay} {$endMonth} {$toYear}";
case self::FREQUENCY_ONE_OFF:
// '2 May-31 May 2025' or '15 Dec 2024-15 Jan 2025' if years differ
$startDay = $from->format('j');
$startMonth = $from->format('M');
$endDay = $to->format('j');
$endMonth = $to->format('M');
// If same month and year, use a format like '2-31 May 2025'
if ($startMonth === $endMonth && ! $differentYears) {
return "{$startDay} - {$endDay} {$startMonth} {$toYear}";
}
// If different years, include both years
if ($differentYears) {
return "{$startDay} {$startMonth} {$fromYear} - {$endDay} {$endMonth} {$toYear}";
}
// Same year but different months
return "{$startDay} {$startMonth} - {$endDay} {$endMonth} {$toYear}";
default:
// Default format for unknown frequencies
return $from->format('j M Y') . ' - ' . $to->format('j M Y');
}
}
public function sanitizeFileName(string $fileName): string
{
return str_replace(['/', '\\'], '-', $fileName);
}
private function getPayload(AutomatedReportsService $automatedReportsService)
{
$reportResult = AutomatedReportResult::find(269);
$automatedReport = $reportResult->getReport();
$activityIds = [1,2,3];
$payload = $automatedReportsService->getAskJiminnyGenerateReportPayload(
automatedReport: $automatedReport,
reportResult: $reportResult,
activityIds: $activityIds,
);
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$payload ' . PHP_EOL . print_r($payload, true));
}
private function rateLimit()
{
$team = Team::find(2);
$config = $team->getCrmConfiguration();
$crmResolver = app(CrmOwnerResolver::class, [
'team' => $team,
'integrationAdmin' => $team->getOwner(),
'providerSlug' => $config->getProviderName(),
]);
$crmService = $crmResolver->prepareCrmService();
for ($i = 0 ; $i < 10; $i++) {
if ($i % 25 === 0) {
// $this->info("Syncing opportunity {$i}");
$this->info("Matching contact {$i}");
}
// $crmService->syncOpportunity('374720564');
$crmService->matchExactlyByEmail('[EMAIL]');
}
}
}
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"on_screen":true,"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"master, menu","depth":5,"on_screen":true,"help_text":"Git Branch: master<br/>Some incoming commits are not fetched<br/>","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Start Listening for PHP Debug Connections","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"AskJiminnyReportActivityServiceTest","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'AskJiminnyReportActivityServiceTest'","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'AskJiminnyReportActivityServiceTest'","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More Actions","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JetBrains AI","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Search Everywhere","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"IDE and Project Settings","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.088194445,"height":0.027777778},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"Editor for custom.log","depth":4,"on_screen":true,"role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.088194445,"height":0.027777778},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"5","depth":4,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"120","depth":4,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"4","depth":4,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Highlighted Error","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Console\\Commands;\n\nuse Carbon\\Carbon;\nuse Carbon\\CarbonImmutable;\nuse Illuminate\\Console\\Command;\nuse InvalidArgumentException;\nuse Jiminny\\Jobs\\AutomatedReports\\RequestGenerateAskJiminnyReportJob;\nuse Jiminny\\Jobs\\AutomatedReports\\SendReportMailJob;\nuse Jiminny\\Jobs\\JobDispatcherInterface;\nuse Jiminny\\Models\\Activity;\nuse Jiminny\\Models\\AutomatedReport;\nuse Jiminny\\Models\\AutomatedReportResult;\nuse Jiminny\\Models\\Team;\nuse Jiminny\\Models\\User;\nuse Jiminny\\Repositories\\AutomatedReportsRepository;\nuse Jiminny\\Services\\Activity\\CrmOwnerResolver;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Jiminny\\Services\\UserPilot\\UserPilotClient;\n\n/**\n * Class JiminnyDebugCommand\n *\n * @package Jiminny\\Console\\Commands\n */\nclass JiminnyDebugCommand extends Command\n{\n public const string FREQUENCY_DAILY = 'daily';\n public const string FREQUENCY_WEEKLY = 'weekly';\n public const string FREQUENCY_MONTHLY = 'monthly';\n public const string FREQUENCY_QUARTERLY = 'quarterly';\n public const string FREQUENCY_ONE_OFF = 'one_off';\n protected $signature = 'jiminny:debug';\n\n public function handle(\n JobDispatcherInterface $jobDispatcher,\n AutomatedReportsService $automatedReportsService,\n AutomatedReportsRepository $automatedReportsRepository,\n UserPilotClient $userPilotClient\n ): void {\n $this->rateLimit();\n exit(1);\n\n\n\n $report = AutomatedReport::find(71);\n $last = AutomatedReportResult::query()\n ->where('report_id', $report->getId())\n ->whereIn('status', [AutomatedReportResult::STATUS_DEFAULT, AutomatedReportResult::STATUS_FAILED])\n// ->where('reason', '!=', AutomatedReportResult::REASON_NOT_ENOUGH_ACTIVITIES)\n ->whereDate('created_at', CarbonImmutable::now()->toDateString())\n ->latest()\n ->first();\n\n $this->info(\"Last: {$last->getId()}\");\n\n exit(1);\n\n $user = User::find(143);\n // $count = $automatedReportsRepository->countUserReports($user);\n // $this->info(\"Count: {$count}\");\n // $count = $automatedReportsRepository->countAllUserReports($user);\n // $this->info(\"All count: {$count}\");\n\n $payload = [\n 'report_type' => 'ask_jiminny',\n 'frequency' => 'weekly',\n ];\n $userPilotClient->track($user, 'ask-jiminny-report-generated', $payload);\n\n exit(1);\n\n $now = Carbon::now()->subDay(1);\n $this->info(\"Now: {$now->toDateTimeString()}\");\n $weekStart = Carbon::getWeekStartsAt();\n $this->info(\"Now: {$weekStart}\");\n\n // $from = $now->copy()->previousWeekday()->startOfDay();\n // $to = $now->copy()->previousWeekday()->endOfDay();\n\n // $fromOld = $now->copy()->subWeeks(1)->startOfDay();\n // $toOld = $now->copy()->subDay()->endOfDay();\n // $fromNew = $now->copy()->subWeek()->startOfWeek();\n // $toNew = $now->copy()->subWeek()->endOfWeek();\n\n // $fromOld = $now->copy()->subMonths(1)->startOfDay();\n // $toOld = $now->copy()->subDay()->endOfDay();\n // $fromNew = $now->copy()->subMonthNoOverflow()->startOfMonth();\n // $toNew = $now->copy()->subMonthNoOverflow()->endOfMonth();\n\n $fromOld = $now->copy()->subMonths(3)->startOfDay();\n $toOld = $now->copy()->subDay()->endOfDay();\n $fromNew = $now->copy()->subQuarterNoOverflow()->startOfQuarter();\n $toNew = $now->copy()->subQuarterNoOverflow()->endOfQuarter();\n\n $this->info(\"From old: {$fromOld->toDateTimeString()}\");\n $this->info(\"To old: {$toOld->toDateTimeString()}\");\n $this->info(\"From new: {$fromNew->toDateTimeString()}\");\n $this->info(\"To new: {$toNew->toDateTimeString()}\");\n\n exit(1);\n\n $report = AutomatedReport::find(71);\n\n $job = new RequestGenerateAskJiminnyReportJob($report->getUuid());\n $jobDispatcher->dispatch($job);\n\n exit(1);\n\n\n // $this->formatDate($jobDispatcher);\n // $this->sendMail($jobDispatcher, $automatedReportsService);\n // $this->crmService();\n\n $this->getPayload($automatedReportsService);\n\n exit(1);\n }\n\n\n\n private function crmService()\n {\n $activity = Activity::find(418141);\n\n $team = Team::find(19);\n $config = $team->getCrmConfiguration();\n\n $crmResolver = app(CrmOwnerResolver::class, [\n 'team' => $team,\n 'integrationAdmin' => $team->getOwner(),\n 'providerSlug' => $config->getProviderName(),\n ]);\n\n $crmService = $crmResolver->prepareCrmService();\n\n $crmService->createTranscriptNotes($activity);\n }\n\n private function sendMail(JobDispatcherInterface $jobDispatcher, AutomatedReportsService $automatedReportsService)\n {\n $reportUuid = '';\n // $report = $automatedReportsService->getReportResult($reportUuid);\n $report = AutomatedReportResult::find(275);\n $validRecipients = $automatedReportsService->getValidRecipientUsers(\n $report->getReport(),\n includeJiminny: true,\n );\n\n $recipient = $validRecipients[0];\n\n $fileName = $automatedReportsService->getReportFileName($report);\n $typeName = $report->getReport()->getCustomName()\n ?? $automatedReportsService->getReportTypeName($report);\n $teamsName = $automatedReportsService->getReportTeamsName($report);\n $periodName = $automatedReportsService->getReportPeriodName($report);\n $s3Path = $automatedReportsService->getMediaPath($report);\n\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$fileName ' . PHP_EOL . print_r($fileName, true));\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$typeName ' . PHP_EOL . print_r($typeName, true));\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$teamsName ' . PHP_EOL . print_r($teamsName, true));\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$periodName ' . PHP_EOL . print_r($periodName, true));\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$s3Path ' . PHP_EOL . print_r($s3Path, true));\n\n $jobDispatcher->dispatch(\n new SendReportMailJob(\n reportUuid: $report->getUuid(),\n s3Path: $s3Path,\n recipientEmail: $recipient['email'],\n recipientName: $recipient['name'] ?? null,\n fileName: $fileName,\n typeName: $typeName,\n teamsName: $teamsName,\n periodName: $periodName,\n isAskJiminny: true,\n )\n );\n\n exit(1);\n }\n\n private function formatDate(JobDispatcherInterface $jobDispatcher): void\n {\n $customName = 'Custom report name';\n // $frequency = self::FREQUENCY_DAILY;\n // $frequency = self::FREQUENCY_WEEKLY;\n $frequency = self::FREQUENCY_MONTHLY;\n // $frequency = self::FREQUENCY_QUARTERLY;\n // $frequency = self::FREQUENCY_ONE_OFF;\n $period = $this->calculateFromAndToDatePeriod($frequency);\n $from = $period['fromDate'];\n $to = $period['toDate'];\n $periodName = $this->formatReportPeriodName($frequency, $from, $to);\n $filenameSuffix = null;\n\n if ($customName) {\n if ($filenameSuffix) {\n $customName .= \" {$filenameSuffix}\";\n }\n\n $result = $this->sanitizeFileName(\"{$customName} - {$periodName}\");\n }\n\n $this->info($result);\n }\n\n public function calculateFromAndToDatePeriod(\n string $frequency,\n ?Carbon $fromDate = null,\n ?Carbon $toDate = null\n ): array {\n if ($frequency === self::FREQUENCY_ONE_OFF) {\n return [\n 'fromDate' => $fromDate,\n 'toDate' => $toDate,\n ];\n }\n\n $now = Carbon::now();\n\n return match ($frequency) {\n self::FREQUENCY_DAILY => [\n 'fromDate' => $now->copy()->subDay()->startOfDay(),\n 'toDate' => $now->copy()->subDay()->endOfDay(),\n ],\n self::FREQUENCY_WEEKLY => [\n 'fromDate' => $now->copy()->subWeeks(1)->startOfDay(),\n 'toDate' => $now->copy()->subDay()->endOfDay(),\n ],\n self::FREQUENCY_MONTHLY => [\n 'fromDate' => $now->copy()->subMonths(1)->startOfDay(),\n 'toDate' => $now->copy()->subDay()->endOfDay(),\n ],\n self::FREQUENCY_QUARTERLY => [\n 'fromDate' => $now->copy()->subMonths(3)->startOfDay(),\n 'toDate' => $now->copy()->subDay()->endOfDay(),\n ],\n default => throw new InvalidArgumentException(\"Unsupported frequency: {$frequency}\"),\n };\n }\n\n private function formatReportPeriodName(string $frequency, Carbon $from, Carbon $to): string\n {\n $fromYear = $from->format('Y');\n $toYear = $to->format('Y');\n $differentYears = $fromYear !== $toYear;\n\n switch ($frequency) {\n case self::FREQUENCY_DAILY:\n return $from->format('j M Y');\n\n case self::FREQUENCY_QUARTERLY:\n // 'Jan-Mar 2025' or 'Nov 2024-Jan 2025' if years differ\n $startMonth = $from->format('M');\n $endMonth = $to->copy()->subMonth();\n $endMonthName = $endMonth->format('M');\n $endMonthYear = $endMonth->format('Y');\n\n if ($differentYears) {\n return \"{$startMonth} {$fromYear} - {$endMonthName} {$endMonthYear}\";\n }\n\n return \"{$startMonth} - {$endMonthName} {$toYear}\";\n\n case self::FREQUENCY_MONTHLY:\n // 'May 2025' - monthly reports are always within the same year\n return $from->format('M Y');\n\n case self::FREQUENCY_WEEKLY:\n // '4 - 8 Aug 2025', '27 Oct - 3 Nov 2025', or '28 Dec 2024 - 3 Jan 2025' if years differ\n $startDay = $from->format('j');\n $endDay = $to->format('j');\n $startMonth = $from->format('M');\n $endMonth = $to->format('M');\n\n if ($differentYears) {\n return \"{$startDay} {$startMonth} {$fromYear} - {$endDay} {$endMonth} {$toYear}\";\n }\n\n if ($startMonth !== $endMonth) {\n return \"{$startDay} {$startMonth} - {$endDay} {$endMonth} {$toYear}\";\n }\n\n return \"{$startDay} - {$endDay} {$endMonth} {$toYear}\";\n\n case self::FREQUENCY_ONE_OFF:\n // '2 May-31 May 2025' or '15 Dec 2024-15 Jan 2025' if years differ\n $startDay = $from->format('j');\n $startMonth = $from->format('M');\n $endDay = $to->format('j');\n $endMonth = $to->format('M');\n\n // If same month and year, use a format like '2-31 May 2025'\n if ($startMonth === $endMonth && ! $differentYears) {\n return \"{$startDay} - {$endDay} {$startMonth} {$toYear}\";\n }\n\n // If different years, include both years\n if ($differentYears) {\n return \"{$startDay} {$startMonth} {$fromYear} - {$endDay} {$endMonth} {$toYear}\";\n }\n\n // Same year but different months\n return \"{$startDay} {$startMonth} - {$endDay} {$endMonth} {$toYear}\";\n\n default:\n // Default format for unknown frequencies\n return $from->format('j M Y') . ' - ' . $to->format('j M Y');\n }\n }\n\n public function sanitizeFileName(string $fileName): string\n {\n return str_replace(['/', '\\\\'], '-', $fileName);\n }\n\n private function getPayload(AutomatedReportsService $automatedReportsService)\n {\n $reportResult = AutomatedReportResult::find(269);\n $automatedReport = $reportResult->getReport();\n $activityIds = [1,2,3];\n $payload = $automatedReportsService->getAskJiminnyGenerateReportPayload(\n automatedReport: $automatedReport,\n reportResult: $reportResult,\n activityIds: $activityIds,\n );\n\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$payload ' . PHP_EOL . print_r($payload, true));\n }\n\n private function rateLimit()\n {\n $team = Team::find(2);\n $config = $team->getCrmConfiguration();\n\n $crmResolver = app(CrmOwnerResolver::class, [\n 'team' => $team,\n 'integrationAdmin' => $team->getOwner(),\n 'providerSlug' => $config->getProviderName(),\n ]);\n\n $crmService = $crmResolver->prepareCrmService();\n\n for ($i = 0 ; $i < 10; $i++) {\n if ($i % 25 === 0) {\n// $this->info(\"Syncing opportunity {$i}\");\n $this->info(\"Matching contact {$i}\");\n }\n// $crmService->syncOpportunity('374720564');\n $crmService->matchExactlyByEmail('coolrobot@hubspot.com');\n }\n }\n}","depth":4,"on_screen":true,"value":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Console\\Commands;\n\nuse Carbon\\Carbon;\nuse Carbon\\CarbonImmutable;\nuse Illuminate\\Console\\Command;\nuse InvalidArgumentException;\nuse Jiminny\\Jobs\\AutomatedReports\\RequestGenerateAskJiminnyReportJob;\nuse Jiminny\\Jobs\\AutomatedReports\\SendReportMailJob;\nuse Jiminny\\Jobs\\JobDispatcherInterface;\nuse Jiminny\\Models\\Activity;\nuse Jiminny\\Models\\AutomatedReport;\nuse Jiminny\\Models\\AutomatedReportResult;\nuse Jiminny\\Models\\Team;\nuse Jiminny\\Models\\User;\nuse Jiminny\\Repositories\\AutomatedReportsRepository;\nuse Jiminny\\Services\\Activity\\CrmOwnerResolver;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Jiminny\\Services\\UserPilot\\UserPilotClient;\n\n/**\n * Class JiminnyDebugCommand\n *\n * @package Jiminny\\Console\\Commands\n */\nclass JiminnyDebugCommand extends Command\n{\n public const string FREQUENCY_DAILY = 'daily';\n public const string FREQUENCY_WEEKLY = 'weekly';\n public const string FREQUENCY_MONTHLY = 'monthly';\n public const string FREQUENCY_QUARTERLY = 'quarterly';\n public const string FREQUENCY_ONE_OFF = 'one_off';\n protected $signature = 'jiminny:debug';\n\n public function handle(\n JobDispatcherInterface $jobDispatcher,\n AutomatedReportsService $automatedReportsService,\n AutomatedReportsRepository $automatedReportsRepository,\n UserPilotClient $userPilotClient\n ): void {\n $this->rateLimit();\n exit(1);\n\n\n\n $report = AutomatedReport::find(71);\n $last = AutomatedReportResult::query()\n ->where('report_id', $report->getId())\n ->whereIn('status', [AutomatedReportResult::STATUS_DEFAULT, AutomatedReportResult::STATUS_FAILED])\n// ->where('reason', '!=', AutomatedReportResult::REASON_NOT_ENOUGH_ACTIVITIES)\n ->whereDate('created_at', CarbonImmutable::now()->toDateString())\n ->latest()\n ->first();\n\n $this->info(\"Last: {$last->getId()}\");\n\n exit(1);\n\n $user = User::find(143);\n // $count = $automatedReportsRepository->countUserReports($user);\n // $this->info(\"Count: {$count}\");\n // $count = $automatedReportsRepository->countAllUserReports($user);\n // $this->info(\"All count: {$count}\");\n\n $payload = [\n 'report_type' => 'ask_jiminny',\n 'frequency' => 'weekly',\n ];\n $userPilotClient->track($user, 'ask-jiminny-report-generated', $payload);\n\n exit(1);\n\n $now = Carbon::now()->subDay(1);\n $this->info(\"Now: {$now->toDateTimeString()}\");\n $weekStart = Carbon::getWeekStartsAt();\n $this->info(\"Now: {$weekStart}\");\n\n // $from = $now->copy()->previousWeekday()->startOfDay();\n // $to = $now->copy()->previousWeekday()->endOfDay();\n\n // $fromOld = $now->copy()->subWeeks(1)->startOfDay();\n // $toOld = $now->copy()->subDay()->endOfDay();\n // $fromNew = $now->copy()->subWeek()->startOfWeek();\n // $toNew = $now->copy()->subWeek()->endOfWeek();\n\n // $fromOld = $now->copy()->subMonths(1)->startOfDay();\n // $toOld = $now->copy()->subDay()->endOfDay();\n // $fromNew = $now->copy()->subMonthNoOverflow()->startOfMonth();\n // $toNew = $now->copy()->subMonthNoOverflow()->endOfMonth();\n\n $fromOld = $now->copy()->subMonths(3)->startOfDay();\n $toOld = $now->copy()->subDay()->endOfDay();\n $fromNew = $now->copy()->subQuarterNoOverflow()->startOfQuarter();\n $toNew = $now->copy()->subQuarterNoOverflow()->endOfQuarter();\n\n $this->info(\"From old: {$fromOld->toDateTimeString()}\");\n $this->info(\"To old: {$toOld->toDateTimeString()}\");\n $this->info(\"From new: {$fromNew->toDateTimeString()}\");\n $this->info(\"To new: {$toNew->toDateTimeString()}\");\n\n exit(1);\n\n $report = AutomatedReport::find(71);\n\n $job = new RequestGenerateAskJiminnyReportJob($report->getUuid());\n $jobDispatcher->dispatch($job);\n\n exit(1);\n\n\n // $this->formatDate($jobDispatcher);\n // $this->sendMail($jobDispatcher, $automatedReportsService);\n // $this->crmService();\n\n $this->getPayload($automatedReportsService);\n\n exit(1);\n }\n\n\n\n private function crmService()\n {\n $activity = Activity::find(418141);\n\n $team = Team::find(19);\n $config = $team->getCrmConfiguration();\n\n $crmResolver = app(CrmOwnerResolver::class, [\n 'team' => $team,\n 'integrationAdmin' => $team->getOwner(),\n 'providerSlug' => $config->getProviderName(),\n ]);\n\n $crmService = $crmResolver->prepareCrmService();\n\n $crmService->createTranscriptNotes($activity);\n }\n\n private function sendMail(JobDispatcherInterface $jobDispatcher, AutomatedReportsService $automatedReportsService)\n {\n $reportUuid = '';\n // $report = $automatedReportsService->getReportResult($reportUuid);\n $report = AutomatedReportResult::find(275);\n $validRecipients = $automatedReportsService->getValidRecipientUsers(\n $report->getReport(),\n includeJiminny: true,\n );\n\n $recipient = $validRecipients[0];\n\n $fileName = $automatedReportsService->getReportFileName($report);\n $typeName = $report->getReport()->getCustomName()\n ?? $automatedReportsService->getReportTypeName($report);\n $teamsName = $automatedReportsService->getReportTeamsName($report);\n $periodName = $automatedReportsService->getReportPeriodName($report);\n $s3Path = $automatedReportsService->getMediaPath($report);\n\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$fileName ' . PHP_EOL . print_r($fileName, true));\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$typeName ' . PHP_EOL . print_r($typeName, true));\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$teamsName ' . PHP_EOL . print_r($teamsName, true));\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$periodName ' . PHP_EOL . print_r($periodName, true));\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$s3Path ' . PHP_EOL . print_r($s3Path, true));\n\n $jobDispatcher->dispatch(\n new SendReportMailJob(\n reportUuid: $report->getUuid(),\n s3Path: $s3Path,\n recipientEmail: $recipient['email'],\n recipientName: $recipient['name'] ?? null,\n fileName: $fileName,\n typeName: $typeName,\n teamsName: $teamsName,\n periodName: $periodName,\n isAskJiminny: true,\n )\n );\n\n exit(1);\n }\n\n private function formatDate(JobDispatcherInterface $jobDispatcher): void\n {\n $customName = 'Custom report name';\n // $frequency = self::FREQUENCY_DAILY;\n // $frequency = self::FREQUENCY_WEEKLY;\n $frequency = self::FREQUENCY_MONTHLY;\n // $frequency = self::FREQUENCY_QUARTERLY;\n // $frequency = self::FREQUENCY_ONE_OFF;\n $period = $this->calculateFromAndToDatePeriod($frequency);\n $from = $period['fromDate'];\n $to = $period['toDate'];\n $periodName = $this->formatReportPeriodName($frequency, $from, $to);\n $filenameSuffix = null;\n\n if ($customName) {\n if ($filenameSuffix) {\n $customName .= \" {$filenameSuffix}\";\n }\n\n $result = $this->sanitizeFileName(\"{$customName} - {$periodName}\");\n }\n\n $this->info($result);\n }\n\n public function calculateFromAndToDatePeriod(\n string $frequency,\n ?Carbon $fromDate = null,\n ?Carbon $toDate = null\n ): array {\n if ($frequency === self::FREQUENCY_ONE_OFF) {\n return [\n 'fromDate' => $fromDate,\n 'toDate' => $toDate,\n ];\n }\n\n $now = Carbon::now();\n\n return match ($frequency) {\n self::FREQUENCY_DAILY => [\n 'fromDate' => $now->copy()->subDay()->startOfDay(),\n 'toDate' => $now->copy()->subDay()->endOfDay(),\n ],\n self::FREQUENCY_WEEKLY => [\n 'fromDate' => $now->copy()->subWeeks(1)->startOfDay(),\n 'toDate' => $now->copy()->subDay()->endOfDay(),\n ],\n self::FREQUENCY_MONTHLY => [\n 'fromDate' => $now->copy()->subMonths(1)->startOfDay(),\n 'toDate' => $now->copy()->subDay()->endOfDay(),\n ],\n self::FREQUENCY_QUARTERLY => [\n 'fromDate' => $now->copy()->subMonths(3)->startOfDay(),\n 'toDate' => $now->copy()->subDay()->endOfDay(),\n ],\n default => throw new InvalidArgumentException(\"Unsupported frequency: {$frequency}\"),\n };\n }\n\n private function formatReportPeriodName(string $frequency, Carbon $from, Carbon $to): string\n {\n $fromYear = $from->format('Y');\n $toYear = $to->format('Y');\n $differentYears = $fromYear !== $toYear;\n\n switch ($frequency) {\n case self::FREQUENCY_DAILY:\n return $from->format('j M Y');\n\n case self::FREQUENCY_QUARTERLY:\n // 'Jan-Mar 2025' or 'Nov 2024-Jan 2025' if years differ\n $startMonth = $from->format('M');\n $endMonth = $to->copy()->subMonth();\n $endMonthName = $endMonth->format('M');\n $endMonthYear = $endMonth->format('Y');\n\n if ($differentYears) {\n return \"{$startMonth} {$fromYear} - {$endMonthName} {$endMonthYear}\";\n }\n\n return \"{$startMonth} - {$endMonthName} {$toYear}\";\n\n case self::FREQUENCY_MONTHLY:\n // 'May 2025' - monthly reports are always within the same year\n return $from->format('M Y');\n\n case self::FREQUENCY_WEEKLY:\n // '4 - 8 Aug 2025', '27 Oct - 3 Nov 2025', or '28 Dec 2024 - 3 Jan 2025' if years differ\n $startDay = $from->format('j');\n $endDay = $to->format('j');\n $startMonth = $from->format('M');\n $endMonth = $to->format('M');\n\n if ($differentYears) {\n return \"{$startDay} {$startMonth} {$fromYear} - {$endDay} {$endMonth} {$toYear}\";\n }\n\n if ($startMonth !== $endMonth) {\n return \"{$startDay} {$startMonth} - {$endDay} {$endMonth} {$toYear}\";\n }\n\n return \"{$startDay} - {$endDay} {$endMonth} {$toYear}\";\n\n case self::FREQUENCY_ONE_OFF:\n // '2 May-31 May 2025' or '15 Dec 2024-15 Jan 2025' if years differ\n $startDay = $from->format('j');\n $startMonth = $from->format('M');\n $endDay = $to->format('j');\n $endMonth = $to->format('M');\n\n // If same month and year, use a format like '2-31 May 2025'\n if ($startMonth === $endMonth && ! $differentYears) {\n return \"{$startDay} - {$endDay} {$startMonth} {$toYear}\";\n }\n\n // If different years, include both years\n if ($differentYears) {\n return \"{$startDay} {$startMonth} {$fromYear} - {$endDay} {$endMonth} {$toYear}\";\n }\n\n // Same year but different months\n return \"{$startDay} {$startMonth} - {$endDay} {$endMonth} {$toYear}\";\n\n default:\n // Default format for unknown frequencies\n return $from->format('j M Y') . ' - ' . $to->format('j M Y');\n }\n }\n\n public function sanitizeFileName(string $fileName): string\n {\n return str_replace(['/', '\\\\'], '-', $fileName);\n }\n\n private function getPayload(AutomatedReportsService $automatedReportsService)\n {\n $reportResult = AutomatedReportResult::find(269);\n $automatedReport = $reportResult->getReport();\n $activityIds = [1,2,3];\n $payload = $automatedReportsService->getAskJiminnyGenerateReportPayload(\n automatedReport: $automatedReport,\n reportResult: $reportResult,\n activityIds: $activityIds,\n );\n\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$payload ' . PHP_EOL . print_r($payload, true));\n }\n\n private function rateLimit()\n {\n $team = Team::find(2);\n $config = $team->getCrmConfiguration();\n\n $crmResolver = app(CrmOwnerResolver::class, [\n 'team' => $team,\n 'integrationAdmin' => $team->getOwner(),\n 'providerSlug' => $config->getProviderName(),\n ]);\n\n $crmService = $crmResolver->prepareCrmService();\n\n for ($i = 0 ; $i < 10; $i++) {\n if ($i % 25 === 0) {\n// $this->info(\"Syncing opportunity {$i}\");\n $this->info(\"Matching contact {$i}\");\n }\n// $crmService->syncOpportunity('374720564');\n $crmService->matchExactlyByEmail('coolrobot@hubspot.com');\n }\n }\n}","role_description":"text entry area","is_enabled":true,"is_focused":true,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Project","depth":3,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Project","depth":3,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"New File or Directory…","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Expand Selected","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Collapse All","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Options","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
-5974274438448015472
|
3603858491526180235
|
click
|
accessibility
|
NULL
|
Project: faVsco.js, menu
master, menu
Start Listen Project: faVsco.js, menu
master, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
Editor for custom.log
Sync Changes
Hide This Notification
Code changed:
Hide
5
120
4
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Console\Commands;
use Carbon\Carbon;
use Carbon\CarbonImmutable;
use Illuminate\Console\Command;
use InvalidArgumentException;
use Jiminny\Jobs\AutomatedReports\RequestGenerateAskJiminnyReportJob;
use Jiminny\Jobs\AutomatedReports\SendReportMailJob;
use Jiminny\Jobs\JobDispatcherInterface;
use Jiminny\Models\Activity;
use Jiminny\Models\AutomatedReport;
use Jiminny\Models\AutomatedReportResult;
use Jiminny\Models\Team;
use Jiminny\Models\User;
use Jiminny\Repositories\AutomatedReportsRepository;
use Jiminny\Services\Activity\CrmOwnerResolver;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Jiminny\Services\UserPilot\UserPilotClient;
/**
* Class JiminnyDebugCommand
*
* @package Jiminny\Console\Commands
*/
class JiminnyDebugCommand extends Command
{
public const string FREQUENCY_DAILY = 'daily';
public const string FREQUENCY_WEEKLY = 'weekly';
public const string FREQUENCY_MONTHLY = 'monthly';
public const string FREQUENCY_QUARTERLY = 'quarterly';
public const string FREQUENCY_ONE_OFF = 'one_off';
protected $signature = 'jiminny:debug';
public function handle(
JobDispatcherInterface $jobDispatcher,
AutomatedReportsService $automatedReportsService,
AutomatedReportsRepository $automatedReportsRepository,
UserPilotClient $userPilotClient
): void {
$this->rateLimit();
exit(1);
$report = AutomatedReport::find(71);
$last = AutomatedReportResult::query()
->where('report_id', $report->getId())
->whereIn('status', [AutomatedReportResult::STATUS_DEFAULT, AutomatedReportResult::STATUS_FAILED])
// ->where('reason', '!=', AutomatedReportResult::REASON_NOT_ENOUGH_ACTIVITIES)
->whereDate('created_at', CarbonImmutable::now()->toDateString())
->latest()
->first();
$this->info("Last: {$last->getId()}");
exit(1);
$user = User::find(143);
// $count = $automatedReportsRepository->countUserReports($user);
// $this->info("Count: {$count}");
// $count = $automatedReportsRepository->countAllUserReports($user);
// $this->info("All count: {$count}");
$payload = [
'report_type' => 'ask_jiminny',
'frequency' => 'weekly',
];
$userPilotClient->track($user, 'ask-jiminny-report-generated', $payload);
exit(1);
$now = Carbon::now()->subDay(1);
$this->info("Now: {$now->toDateTimeString()}");
$weekStart = Carbon::getWeekStartsAt();
$this->info("Now: {$weekStart}");
// $from = $now->copy()->previousWeekday()->startOfDay();
// $to = $now->copy()->previousWeekday()->endOfDay();
// $fromOld = $now->copy()->subWeeks(1)->startOfDay();
// $toOld = $now->copy()->subDay()->endOfDay();
// $fromNew = $now->copy()->subWeek()->startOfWeek();
// $toNew = $now->copy()->subWeek()->endOfWeek();
// $fromOld = $now->copy()->subMonths(1)->startOfDay();
// $toOld = $now->copy()->subDay()->endOfDay();
// $fromNew = $now->copy()->subMonthNoOverflow()->startOfMonth();
// $toNew = $now->copy()->subMonthNoOverflow()->endOfMonth();
$fromOld = $now->copy()->subMonths(3)->startOfDay();
$toOld = $now->copy()->subDay()->endOfDay();
$fromNew = $now->copy()->subQuarterNoOverflow()->startOfQuarter();
$toNew = $now->copy()->subQuarterNoOverflow()->endOfQuarter();
$this->info("From old: {$fromOld->toDateTimeString()}");
$this->info("To old: {$toOld->toDateTimeString()}");
$this->info("From new: {$fromNew->toDateTimeString()}");
$this->info("To new: {$toNew->toDateTimeString()}");
exit(1);
$report = AutomatedReport::find(71);
$job = new RequestGenerateAskJiminnyReportJob($report->getUuid());
$jobDispatcher->dispatch($job);
exit(1);
// $this->formatDate($jobDispatcher);
// $this->sendMail($jobDispatcher, $automatedReportsService);
// $this->crmService();
$this->getPayload($automatedReportsService);
exit(1);
}
private function crmService()
{
$activity = Activity::find(418141);
$team = Team::find(19);
$config = $team->getCrmConfiguration();
$crmResolver = app(CrmOwnerResolver::class, [
'team' => $team,
'integrationAdmin' => $team->getOwner(),
'providerSlug' => $config->getProviderName(),
]);
$crmService = $crmResolver->prepareCrmService();
$crmService->createTranscriptNotes($activity);
}
private function sendMail(JobDispatcherInterface $jobDispatcher, AutomatedReportsService $automatedReportsService)
{
$reportUuid = '';
// $report = $automatedReportsService->getReportResult($reportUuid);
$report = AutomatedReportResult::find(275);
$validRecipients = $automatedReportsService->getValidRecipientUsers(
$report->getReport(),
includeJiminny: true,
);
$recipient = $validRecipients[0];
$fileName = $automatedReportsService->getReportFileName($report);
$typeName = $report->getReport()->getCustomName()
?? $automatedReportsService->getReportTypeName($report);
$teamsName = $automatedReportsService->getReportTeamsName($report);
$periodName = $automatedReportsService->getReportPeriodName($report);
$s3Path = $automatedReportsService->getMediaPath($report);
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$fileName ' . PHP_EOL . print_r($fileName, true));
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$typeName ' . PHP_EOL . print_r($typeName, true));
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$teamsName ' . PHP_EOL . print_r($teamsName, true));
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$periodName ' . PHP_EOL . print_r($periodName, true));
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$s3Path ' . PHP_EOL . print_r($s3Path, true));
$jobDispatcher->dispatch(
new SendReportMailJob(
reportUuid: $report->getUuid(),
s3Path: $s3Path,
recipientEmail: $recipient['email'],
recipientName: $recipient['name'] ?? null,
fileName: $fileName,
typeName: $typeName,
teamsName: $teamsName,
periodName: $periodName,
isAskJiminny: true,
)
);
exit(1);
}
private function formatDate(JobDispatcherInterface $jobDispatcher): void
{
$customName = 'Custom report name';
// $frequency = self::FREQUENCY_DAILY;
// $frequency = self::FREQUENCY_WEEKLY;
$frequency = self::FREQUENCY_MONTHLY;
// $frequency = self::FREQUENCY_QUARTERLY;
// $frequency = self::FREQUENCY_ONE_OFF;
$period = $this->calculateFromAndToDatePeriod($frequency);
$from = $period['fromDate'];
$to = $period['toDate'];
$periodName = $this->formatReportPeriodName($frequency, $from, $to);
$filenameSuffix = null;
if ($customName) {
if ($filenameSuffix) {
$customName .= " {$filenameSuffix}";
}
$result = $this->sanitizeFileName("{$customName} - {$periodName}");
}
$this->info($result);
}
public function calculateFromAndToDatePeriod(
string $frequency,
?Carbon $fromDate = null,
?Carbon $toDate = null
): array {
if ($frequency === self::FREQUENCY_ONE_OFF) {
return [
'fromDate' => $fromDate,
'toDate' => $toDate,
];
}
$now = Carbon::now();
return match ($frequency) {
self::FREQUENCY_DAILY => [
'fromDate' => $now->copy()->subDay()->startOfDay(),
'toDate' => $now->copy()->subDay()->endOfDay(),
],
self::FREQUENCY_WEEKLY => [
'fromDate' => $now->copy()->subWeeks(1)->startOfDay(),
'toDate' => $now->copy()->subDay()->endOfDay(),
],
self::FREQUENCY_MONTHLY => [
'fromDate' => $now->copy()->subMonths(1)->startOfDay(),
'toDate' => $now->copy()->subDay()->endOfDay(),
],
self::FREQUENCY_QUARTERLY => [
'fromDate' => $now->copy()->subMonths(3)->startOfDay(),
'toDate' => $now->copy()->subDay()->endOfDay(),
],
default => throw new InvalidArgumentException("Unsupported frequency: {$frequency}"),
};
}
private function formatReportPeriodName(string $frequency, Carbon $from, Carbon $to): string
{
$fromYear = $from->format('Y');
$toYear = $to->format('Y');
$differentYears = $fromYear !== $toYear;
switch ($frequency) {
case self::FREQUENCY_DAILY:
return $from->format('j M Y');
case self::FREQUENCY_QUARTERLY:
// 'Jan-Mar 2025' or 'Nov 2024-Jan 2025' if years differ
$startMonth = $from->format('M');
$endMonth = $to->copy()->subMonth();
$endMonthName = $endMonth->format('M');
$endMonthYear = $endMonth->format('Y');
if ($differentYears) {
return "{$startMonth} {$fromYear} - {$endMonthName} {$endMonthYear}";
}
return "{$startMonth} - {$endMonthName} {$toYear}";
case self::FREQUENCY_MONTHLY:
// 'May 2025' - monthly reports are always within the same year
return $from->format('M Y');
case self::FREQUENCY_WEEKLY:
// '4 - 8 Aug 2025', '27 Oct - 3 Nov 2025', or '28 Dec 2024 - 3 Jan 2025' if years differ
$startDay = $from->format('j');
$endDay = $to->format('j');
$startMonth = $from->format('M');
$endMonth = $to->format('M');
if ($differentYears) {
return "{$startDay} {$startMonth} {$fromYear} - {$endDay} {$endMonth} {$toYear}";
}
if ($startMonth !== $endMonth) {
return "{$startDay} {$startMonth} - {$endDay} {$endMonth} {$toYear}";
}
return "{$startDay} - {$endDay} {$endMonth} {$toYear}";
case self::FREQUENCY_ONE_OFF:
// '2 May-31 May 2025' or '15 Dec 2024-15 Jan 2025' if years differ
$startDay = $from->format('j');
$startMonth = $from->format('M');
$endDay = $to->format('j');
$endMonth = $to->format('M');
// If same month and year, use a format like '2-31 May 2025'
if ($startMonth === $endMonth && ! $differentYears) {
return "{$startDay} - {$endDay} {$startMonth} {$toYear}";
}
// If different years, include both years
if ($differentYears) {
return "{$startDay} {$startMonth} {$fromYear} - {$endDay} {$endMonth} {$toYear}";
}
// Same year but different months
return "{$startDay} {$startMonth} - {$endDay} {$endMonth} {$toYear}";
default:
// Default format for unknown frequencies
return $from->format('j M Y') . ' - ' . $to->format('j M Y');
}
}
public function sanitizeFileName(string $fileName): string
{
return str_replace(['/', '\\'], '-', $fileName);
}
private function getPayload(AutomatedReportsService $automatedReportsService)
{
$reportResult = AutomatedReportResult::find(269);
$automatedReport = $reportResult->getReport();
$activityIds = [1,2,3];
$payload = $automatedReportsService->getAskJiminnyGenerateReportPayload(
automatedReport: $automatedReport,
reportResult: $reportResult,
activityIds: $activityIds,
);
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$payload ' . PHP_EOL . print_r($payload, true));
}
private function rateLimit()
{
$team = Team::find(2);
$config = $team->getCrmConfiguration();
$crmResolver = app(CrmOwnerResolver::class, [
'team' => $team,
'integrationAdmin' => $team->getOwner(),
'providerSlug' => $config->getProviderName(),
]);
$crmService = $crmResolver->prepareCrmService();
for ($i = 0 ; $i < 10; $i++) {
if ($i % 25 === 0) {
// $this->info("Syncing opportunity {$i}");
$this->info("Matching contact {$i}");
}
// $crmService->syncOpportunity('374720564');
$crmService->matchExactlyByEmail('[EMAIL]');
}
}
}
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
3678
|
NULL
|
NULL
|
NULL
|
|
3680
|
NULL
|
0
|
2026-05-07T12:35:40.497883+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-07/1778 /Users/lukas/.screenpipe/data/data/2026-05-07/1778157340497_m2.jpg...
|
PhpStorm
|
faVsco.js – JiminnyDebugCommand.php
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
master, menu
Start Listen Project: faVsco.js, menu
master, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
Editor for custom.log
Sync Changes
Hide This Notification
Code changed:
Hide
5
120
4
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Console\Commands;
use Carbon\Carbon;
use Carbon\CarbonImmutable;
use Illuminate\Console\Command;
use InvalidArgumentException;
use Jiminny\Jobs\AutomatedReports\RequestGenerateAskJiminnyReportJob;
use Jiminny\Jobs\AutomatedReports\SendReportMailJob;
use Jiminny\Jobs\JobDispatcherInterface;
use Jiminny\Models\Activity;
use Jiminny\Models\AutomatedReport;
use Jiminny\Models\AutomatedReportResult;
use Jiminny\Models\Team;
use Jiminny\Models\User;
use Jiminny\Repositories\AutomatedReportsRepository;
use Jiminny\Services\Activity\CrmOwnerResolver;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Jiminny\Services\UserPilot\UserPilotClient;
/**
* Class JiminnyDebugCommand
*
* @package Jiminny\Console\Commands
*/
class JiminnyDebugCommand extends Command
{
public const string FREQUENCY_DAILY = 'daily';
public const string FREQUENCY_WEEKLY = 'weekly';
public const string FREQUENCY_MONTHLY = 'monthly';
public const string FREQUENCY_QUARTERLY = 'quarterly';
public const string FREQUENCY_ONE_OFF = 'one_off';
protected $signature = 'jiminny:debug';
public function handle(
JobDispatcherInterface $jobDispatcher,
AutomatedReportsService $automatedReportsService,
AutomatedReportsRepository $automatedReportsRepository,
UserPilotClient $userPilotClient
): void {
$this->rateLimit();
exit(1);
$report = AutomatedReport::find(71);
$last = AutomatedReportResult::query()
->where('report_id', $report->getId())
->whereIn('status', [AutomatedReportResult::STATUS_DEFAULT, AutomatedReportResult::STATUS_FAILED])
// ->where('reason', '!=', AutomatedReportResult::REASON_NOT_ENOUGH_ACTIVITIES)
->whereDate('created_at', CarbonImmutable::now()->toDateString())
->latest()
->first();
$this->info("Last: {$last->getId()}");
exit(1);
$user = User::find(143);
// $count = $automatedReportsRepository->countUserReports($user);
// $this->info("Count: {$count}");
// $count = $automatedReportsRepository->countAllUserReports($user);
// $this->info("All count: {$count}");
$payload = [
'report_type' => 'ask_jiminny',
'frequency' => 'weekly',
];
$userPilotClient->track($user, 'ask-jiminny-report-generated', $payload);
exit(1);
$now = Carbon::now()->subDay(1);
$this->info("Now: {$now->toDateTimeString()}");
$weekStart = Carbon::getWeekStartsAt();
$this->info("Now: {$weekStart}");
// $from = $now->copy()->previousWeekday()->startOfDay();
// $to = $now->copy()->previousWeekday()->endOfDay();
// $fromOld = $now->copy()->subWeeks(1)->startOfDay();
// $toOld = $now->copy()->subDay()->endOfDay();
// $fromNew = $now->copy()->subWeek()->startOfWeek();
// $toNew = $now->copy()->subWeek()->endOfWeek();
// $fromOld = $now->copy()->subMonths(1)->startOfDay();
// $toOld = $now->copy()->subDay()->endOfDay();
// $fromNew = $now->copy()->subMonthNoOverflow()->startOfMonth();
// $toNew = $now->copy()->subMonthNoOverflow()->endOfMonth();
$fromOld = $now->copy()->subMonths(3)->startOfDay();
$toOld = $now->copy()->subDay()->endOfDay();
$fromNew = $now->copy()->subQuarterNoOverflow()->startOfQuarter();
$toNew = $now->copy()->subQuarterNoOverflow()->endOfQuarter();
$this->info("From old: {$fromOld->toDateTimeString()}");
$this->info("To old: {$toOld->toDateTimeString()}");
$this->info("From new: {$fromNew->toDateTimeString()}");
$this->info("To new: {$toNew->toDateTimeString()}");
exit(1);
$report = AutomatedReport::find(71);
$job = new RequestGenerateAskJiminnyReportJob($report->getUuid());
$jobDispatcher->dispatch($job);
exit(1);
// $this->formatDate($jobDispatcher);
// $this->sendMail($jobDispatcher, $automatedReportsService);
// $this->crmService();
$this->getPayload($automatedReportsService);
exit(1);
}
private function crmService()
{
$activity = Activity::find(418141);
$team = Team::find(19);
$config = $team->getCrmConfiguration();
$crmResolver = app(CrmOwnerResolver::class, [
'team' => $team,
'integrationAdmin' => $team->getOwner(),
'providerSlug' => $config->getProviderName(),
]);
$crmService = $crmResolver->prepareCrmService();
$crmService->createTranscriptNotes($activity);
}
private function sendMail(JobDispatcherInterface $jobDispatcher, AutomatedReportsService $automatedReportsService)
{
$reportUuid = '';
// $report = $automatedReportsService->getReportResult($reportUuid);
$report = AutomatedReportResult::find(275);
$validRecipients = $automatedReportsService->getValidRecipientUsers(
$report->getReport(),
includeJiminny: true,
);
$recipient = $validRecipients[0];
$fileName = $automatedReportsService->getReportFileName($report);
$typeName = $report->getReport()->getCustomName()
?? $automatedReportsService->getReportTypeName($report);
$teamsName = $automatedReportsService->getReportTeamsName($report);
$periodName = $automatedReportsService->getReportPeriodName($report);
$s3Path = $automatedReportsService->getMediaPath($report);
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$fileName ' . PHP_EOL . print_r($fileName, true));
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$typeName ' . PHP_EOL . print_r($typeName, true));
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$teamsName ' . PHP_EOL . print_r($teamsName, true));
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$periodName ' . PHP_EOL . print_r($periodName, true));
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$s3Path ' . PHP_EOL . print_r($s3Path, true));
$jobDispatcher->dispatch(
new SendReportMailJob(
reportUuid: $report->getUuid(),
s3Path: $s3Path,
recipientEmail: $recipient['email'],
recipientName: $recipient['name'] ?? null,
fileName: $fileName,
typeName: $typeName,
teamsName: $teamsName,
periodName: $periodName,
isAskJiminny: true,
)
);
exit(1);
}
private function formatDate(JobDispatcherInterface $jobDispatcher): void
{
$customName = 'Custom report name';
// $frequency = self::FREQUENCY_DAILY;
// $frequency = self::FREQUENCY_WEEKLY;
$frequency = self::FREQUENCY_MONTHLY;
// $frequency = self::FREQUENCY_QUARTERLY;
// $frequency = self::FREQUENCY_ONE_OFF;
$period = $this->calculateFromAndToDatePeriod($frequency);
$from = $period['fromDate'];
$to = $period['toDate'];
$periodName = $this->formatReportPeriodName($frequency, $from, $to);
$filenameSuffix = null;
if ($customName) {
if ($filenameSuffix) {
$customName .= " {$filenameSuffix}";
}
$result = $this->sanitizeFileName("{$customName} - {$periodName}");
}
$this->info($result);
}
public function calculateFromAndToDatePeriod(
string $frequency,
?Carbon $fromDate = null,
?Carbon $toDate = null
): array {
if ($frequency === self::FREQUENCY_ONE_OFF) {
return [
'fromDate' => $fromDate,
'toDate' => $toDate,
];
}
$now = Carbon::now();
return match ($frequency) {
self::FREQUENCY_DAILY => [
'fromDate' => $now->copy()->subDay()->startOfDay(),
'toDate' => $now->copy()->subDay()->endOfDay(),
],
self::FREQUENCY_WEEKLY => [
'fromDate' => $now->copy()->subWeeks(1)->startOfDay(),
'toDate' => $now->copy()->subDay()->endOfDay(),
],
self::FREQUENCY_MONTHLY => [
'fromDate' => $now->copy()->subMonths(1)->startOfDay(),
'toDate' => $now->copy()->subDay()->endOfDay(),
],
self::FREQUENCY_QUARTERLY => [
'fromDate' => $now->copy()->subMonths(3)->startOfDay(),
'toDate' => $now->copy()->subDay()->endOfDay(),
],
default => throw new InvalidArgumentException("Unsupported frequency: {$frequency}"),
};
}
private function formatReportPeriodName(string $frequency, Carbon $from, Carbon $to): string
{
$fromYear = $from->format('Y');
$toYear = $to->format('Y');
$differentYears = $fromYear !== $toYear;
switch ($frequency) {
case self::FREQUENCY_DAILY:
return $from->format('j M Y');
case self::FREQUENCY_QUARTERLY:
// 'Jan-Mar 2025' or 'Nov 2024-Jan 2025' if years differ
$startMonth = $from->format('M');
$endMonth = $to->copy()->subMonth();
$endMonthName = $endMonth->format('M');
$endMonthYear = $endMonth->format('Y');
if ($differentYears) {
return "{$startMonth} {$fromYear} - {$endMonthName} {$endMonthYear}";
}
return "{$startMonth} - {$endMonthName} {$toYear}";
case self::FREQUENCY_MONTHLY:
// 'May 2025' - monthly reports are always within the same year
return $from->format('M Y');
case self::FREQUENCY_WEEKLY:
// '4 - 8 Aug 2025', '27 Oct - 3 Nov 2025', or '28 Dec 2024 - 3 Jan 2025' if years differ
$startDay = $from->format('j');
$endDay = $to->format('j');
$startMonth = $from->format('M');
$endMonth = $to->format('M');
if ($differentYears) {
return "{$startDay} {$startMonth} {$fromYear} - {$endDay} {$endMonth} {$toYear}";
}
if ($startMonth !== $endMonth) {
return "{$startDay} {$startMonth} - {$endDay} {$endMonth} {$toYear}";
}
return "{$startDay} - {$endDay} {$endMonth} {$toYear}";
case self::FREQUENCY_ONE_OFF:
// '2 May-31 May 2025' or '15 Dec 2024-15 Jan 2025' if years differ
$startDay = $from->format('j');
$startMonth = $from->format('M');
$endDay = $to->format('j');
$endMonth = $to->format('M');
// If same month and year, use a format like '2-31 May 2025'
if ($startMonth === $endMonth && ! $differentYears) {
return "{$startDay} - {$endDay} {$startMonth} {$toYear}";
}
// If different years, include both years
if ($differentYears) {
return "{$startDay} {$startMonth} {$fromYear} - {$endDay} {$endMonth} {$toYear}";
}
// Same year but different months
return "{$startDay} {$startMonth} - {$endDay} {$endMonth} {$toYear}";
default:
// Default format for unknown frequencies
return $from->format('j M Y') . ' - ' . $to->format('j M Y');
}
}
public function sanitizeFileName(string $fileName): string
{
return str_replace(['/', '\\'], '-', $fileName);
}
private function getPayload(AutomatedReportsService $automatedReportsService)
{
$reportResult = AutomatedReportResult::find(269);
$automatedReport = $reportResult->getReport();
$activityIds = [1,2,3];
$payload = $automatedReportsService->getAskJiminnyGenerateReportPayload(
automatedReport: $automatedReport,
reportResult: $reportResult,
activityIds: $activityIds,
);
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$payload ' . PHP_EOL . print_r($payload, true));
}
private function rateLimit()
{
$team = Team::find(2);
$config = $team->getCrmConfiguration();
$crmResolver = app(CrmOwnerResolver::class, [
'team' => $team,
'integrationAdmin' => $team->getOwner(),
'providerSlug' => $config->getProviderName(),
]);
$crmService = $crmResolver->prepareCrmService();
for ($i = 0 ; $i < 10; $i++) {
if ($i % 25 === 0) {
// $this->info("Syncing opportunity {$i}");
$this->info("Matching contact {$i}");
}
// $crmService->syncOpportunity('374720564');
$crmService->matchExactlyByEmail('[EMAIL]');
}
}
}
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"bounds":{"left":0.025930852,"top":0.019952115,"width":0.03856383,"height":0.025538707},"on_screen":true,"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"master, menu","depth":5,"bounds":{"left":0.064494684,"top":0.019952115,"width":0.040226065,"height":0.025538707},"on_screen":true,"help_text":"Git Branch: master<br/>Some incoming commits are not fetched<br/>","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Start Listening for PHP Debug Connections","depth":5,"bounds":{"left":0.8081782,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"AskJiminnyReportActivityServiceTest","depth":6,"bounds":{"left":0.8234708,"top":0.019952115,"width":0.09208777,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'AskJiminnyReportActivityServiceTest'","depth":6,"bounds":{"left":0.9155585,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'AskJiminnyReportActivityServiceTest'","depth":6,"bounds":{"left":0.9268617,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More Actions","depth":6,"bounds":{"left":0.9381649,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JetBrains AI","depth":5,"bounds":{"left":0.96609044,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Search Everywhere","depth":5,"bounds":{"left":0.9773936,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"IDE and Project Settings","depth":5,"bounds":{"left":0.9886968,"top":0.019952115,"width":0.011303186,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.042220745,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"Editor for custom.log","depth":4,"bounds":{"left":0.5475399,"top":0.0726257,"width":0.44082448,"height":0.9066241},"on_screen":true,"role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.042220745,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"5","depth":4,"bounds":{"left":0.48038563,"top":0.19952115,"width":0.007978723,"height":0.015163607},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"120","depth":4,"bounds":{"left":0.49035904,"top":0.19952115,"width":0.011968086,"height":0.015163607},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"4","depth":4,"bounds":{"left":0.5043218,"top":0.19952115,"width":0.007978723,"height":0.015163607},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"bounds":{"left":0.51396275,"top":0.19792499,"width":0.00731383,"height":0.018355945},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Highlighted Error","depth":4,"bounds":{"left":0.5212766,"top":0.19792499,"width":0.006981383,"height":0.018355945},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Console\\Commands;\n\nuse Carbon\\Carbon;\nuse Carbon\\CarbonImmutable;\nuse Illuminate\\Console\\Command;\nuse InvalidArgumentException;\nuse Jiminny\\Jobs\\AutomatedReports\\RequestGenerateAskJiminnyReportJob;\nuse Jiminny\\Jobs\\AutomatedReports\\SendReportMailJob;\nuse Jiminny\\Jobs\\JobDispatcherInterface;\nuse Jiminny\\Models\\Activity;\nuse Jiminny\\Models\\AutomatedReport;\nuse Jiminny\\Models\\AutomatedReportResult;\nuse Jiminny\\Models\\Team;\nuse Jiminny\\Models\\User;\nuse Jiminny\\Repositories\\AutomatedReportsRepository;\nuse Jiminny\\Services\\Activity\\CrmOwnerResolver;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Jiminny\\Services\\UserPilot\\UserPilotClient;\n\n/**\n * Class JiminnyDebugCommand\n *\n * @package Jiminny\\Console\\Commands\n */\nclass JiminnyDebugCommand extends Command\n{\n public const string FREQUENCY_DAILY = 'daily';\n public const string FREQUENCY_WEEKLY = 'weekly';\n public const string FREQUENCY_MONTHLY = 'monthly';\n public const string FREQUENCY_QUARTERLY = 'quarterly';\n public const string FREQUENCY_ONE_OFF = 'one_off';\n protected $signature = 'jiminny:debug';\n\n public function handle(\n JobDispatcherInterface $jobDispatcher,\n AutomatedReportsService $automatedReportsService,\n AutomatedReportsRepository $automatedReportsRepository,\n UserPilotClient $userPilotClient\n ): void {\n $this->rateLimit();\n exit(1);\n\n\n\n $report = AutomatedReport::find(71);\n $last = AutomatedReportResult::query()\n ->where('report_id', $report->getId())\n ->whereIn('status', [AutomatedReportResult::STATUS_DEFAULT, AutomatedReportResult::STATUS_FAILED])\n// ->where('reason', '!=', AutomatedReportResult::REASON_NOT_ENOUGH_ACTIVITIES)\n ->whereDate('created_at', CarbonImmutable::now()->toDateString())\n ->latest()\n ->first();\n\n $this->info(\"Last: {$last->getId()}\");\n\n exit(1);\n\n $user = User::find(143);\n // $count = $automatedReportsRepository->countUserReports($user);\n // $this->info(\"Count: {$count}\");\n // $count = $automatedReportsRepository->countAllUserReports($user);\n // $this->info(\"All count: {$count}\");\n\n $payload = [\n 'report_type' => 'ask_jiminny',\n 'frequency' => 'weekly',\n ];\n $userPilotClient->track($user, 'ask-jiminny-report-generated', $payload);\n\n exit(1);\n\n $now = Carbon::now()->subDay(1);\n $this->info(\"Now: {$now->toDateTimeString()}\");\n $weekStart = Carbon::getWeekStartsAt();\n $this->info(\"Now: {$weekStart}\");\n\n // $from = $now->copy()->previousWeekday()->startOfDay();\n // $to = $now->copy()->previousWeekday()->endOfDay();\n\n // $fromOld = $now->copy()->subWeeks(1)->startOfDay();\n // $toOld = $now->copy()->subDay()->endOfDay();\n // $fromNew = $now->copy()->subWeek()->startOfWeek();\n // $toNew = $now->copy()->subWeek()->endOfWeek();\n\n // $fromOld = $now->copy()->subMonths(1)->startOfDay();\n // $toOld = $now->copy()->subDay()->endOfDay();\n // $fromNew = $now->copy()->subMonthNoOverflow()->startOfMonth();\n // $toNew = $now->copy()->subMonthNoOverflow()->endOfMonth();\n\n $fromOld = $now->copy()->subMonths(3)->startOfDay();\n $toOld = $now->copy()->subDay()->endOfDay();\n $fromNew = $now->copy()->subQuarterNoOverflow()->startOfQuarter();\n $toNew = $now->copy()->subQuarterNoOverflow()->endOfQuarter();\n\n $this->info(\"From old: {$fromOld->toDateTimeString()}\");\n $this->info(\"To old: {$toOld->toDateTimeString()}\");\n $this->info(\"From new: {$fromNew->toDateTimeString()}\");\n $this->info(\"To new: {$toNew->toDateTimeString()}\");\n\n exit(1);\n\n $report = AutomatedReport::find(71);\n\n $job = new RequestGenerateAskJiminnyReportJob($report->getUuid());\n $jobDispatcher->dispatch($job);\n\n exit(1);\n\n\n // $this->formatDate($jobDispatcher);\n // $this->sendMail($jobDispatcher, $automatedReportsService);\n // $this->crmService();\n\n $this->getPayload($automatedReportsService);\n\n exit(1);\n }\n\n\n\n private function crmService()\n {\n $activity = Activity::find(418141);\n\n $team = Team::find(19);\n $config = $team->getCrmConfiguration();\n\n $crmResolver = app(CrmOwnerResolver::class, [\n 'team' => $team,\n 'integrationAdmin' => $team->getOwner(),\n 'providerSlug' => $config->getProviderName(),\n ]);\n\n $crmService = $crmResolver->prepareCrmService();\n\n $crmService->createTranscriptNotes($activity);\n }\n\n private function sendMail(JobDispatcherInterface $jobDispatcher, AutomatedReportsService $automatedReportsService)\n {\n $reportUuid = '';\n // $report = $automatedReportsService->getReportResult($reportUuid);\n $report = AutomatedReportResult::find(275);\n $validRecipients = $automatedReportsService->getValidRecipientUsers(\n $report->getReport(),\n includeJiminny: true,\n );\n\n $recipient = $validRecipients[0];\n\n $fileName = $automatedReportsService->getReportFileName($report);\n $typeName = $report->getReport()->getCustomName()\n ?? $automatedReportsService->getReportTypeName($report);\n $teamsName = $automatedReportsService->getReportTeamsName($report);\n $periodName = $automatedReportsService->getReportPeriodName($report);\n $s3Path = $automatedReportsService->getMediaPath($report);\n\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$fileName ' . PHP_EOL . print_r($fileName, true));\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$typeName ' . PHP_EOL . print_r($typeName, true));\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$teamsName ' . PHP_EOL . print_r($teamsName, true));\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$periodName ' . PHP_EOL . print_r($periodName, true));\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$s3Path ' . PHP_EOL . print_r($s3Path, true));\n\n $jobDispatcher->dispatch(\n new SendReportMailJob(\n reportUuid: $report->getUuid(),\n s3Path: $s3Path,\n recipientEmail: $recipient['email'],\n recipientName: $recipient['name'] ?? null,\n fileName: $fileName,\n typeName: $typeName,\n teamsName: $teamsName,\n periodName: $periodName,\n isAskJiminny: true,\n )\n );\n\n exit(1);\n }\n\n private function formatDate(JobDispatcherInterface $jobDispatcher): void\n {\n $customName = 'Custom report name';\n // $frequency = self::FREQUENCY_DAILY;\n // $frequency = self::FREQUENCY_WEEKLY;\n $frequency = self::FREQUENCY_MONTHLY;\n // $frequency = self::FREQUENCY_QUARTERLY;\n // $frequency = self::FREQUENCY_ONE_OFF;\n $period = $this->calculateFromAndToDatePeriod($frequency);\n $from = $period['fromDate'];\n $to = $period['toDate'];\n $periodName = $this->formatReportPeriodName($frequency, $from, $to);\n $filenameSuffix = null;\n\n if ($customName) {\n if ($filenameSuffix) {\n $customName .= \" {$filenameSuffix}\";\n }\n\n $result = $this->sanitizeFileName(\"{$customName} - {$periodName}\");\n }\n\n $this->info($result);\n }\n\n public function calculateFromAndToDatePeriod(\n string $frequency,\n ?Carbon $fromDate = null,\n ?Carbon $toDate = null\n ): array {\n if ($frequency === self::FREQUENCY_ONE_OFF) {\n return [\n 'fromDate' => $fromDate,\n 'toDate' => $toDate,\n ];\n }\n\n $now = Carbon::now();\n\n return match ($frequency) {\n self::FREQUENCY_DAILY => [\n 'fromDate' => $now->copy()->subDay()->startOfDay(),\n 'toDate' => $now->copy()->subDay()->endOfDay(),\n ],\n self::FREQUENCY_WEEKLY => [\n 'fromDate' => $now->copy()->subWeeks(1)->startOfDay(),\n 'toDate' => $now->copy()->subDay()->endOfDay(),\n ],\n self::FREQUENCY_MONTHLY => [\n 'fromDate' => $now->copy()->subMonths(1)->startOfDay(),\n 'toDate' => $now->copy()->subDay()->endOfDay(),\n ],\n self::FREQUENCY_QUARTERLY => [\n 'fromDate' => $now->copy()->subMonths(3)->startOfDay(),\n 'toDate' => $now->copy()->subDay()->endOfDay(),\n ],\n default => throw new InvalidArgumentException(\"Unsupported frequency: {$frequency}\"),\n };\n }\n\n private function formatReportPeriodName(string $frequency, Carbon $from, Carbon $to): string\n {\n $fromYear = $from->format('Y');\n $toYear = $to->format('Y');\n $differentYears = $fromYear !== $toYear;\n\n switch ($frequency) {\n case self::FREQUENCY_DAILY:\n return $from->format('j M Y');\n\n case self::FREQUENCY_QUARTERLY:\n // 'Jan-Mar 2025' or 'Nov 2024-Jan 2025' if years differ\n $startMonth = $from->format('M');\n $endMonth = $to->copy()->subMonth();\n $endMonthName = $endMonth->format('M');\n $endMonthYear = $endMonth->format('Y');\n\n if ($differentYears) {\n return \"{$startMonth} {$fromYear} - {$endMonthName} {$endMonthYear}\";\n }\n\n return \"{$startMonth} - {$endMonthName} {$toYear}\";\n\n case self::FREQUENCY_MONTHLY:\n // 'May 2025' - monthly reports are always within the same year\n return $from->format('M Y');\n\n case self::FREQUENCY_WEEKLY:\n // '4 - 8 Aug 2025', '27 Oct - 3 Nov 2025', or '28 Dec 2024 - 3 Jan 2025' if years differ\n $startDay = $from->format('j');\n $endDay = $to->format('j');\n $startMonth = $from->format('M');\n $endMonth = $to->format('M');\n\n if ($differentYears) {\n return \"{$startDay} {$startMonth} {$fromYear} - {$endDay} {$endMonth} {$toYear}\";\n }\n\n if ($startMonth !== $endMonth) {\n return \"{$startDay} {$startMonth} - {$endDay} {$endMonth} {$toYear}\";\n }\n\n return \"{$startDay} - {$endDay} {$endMonth} {$toYear}\";\n\n case self::FREQUENCY_ONE_OFF:\n // '2 May-31 May 2025' or '15 Dec 2024-15 Jan 2025' if years differ\n $startDay = $from->format('j');\n $startMonth = $from->format('M');\n $endDay = $to->format('j');\n $endMonth = $to->format('M');\n\n // If same month and year, use a format like '2-31 May 2025'\n if ($startMonth === $endMonth && ! $differentYears) {\n return \"{$startDay} - {$endDay} {$startMonth} {$toYear}\";\n }\n\n // If different years, include both years\n if ($differentYears) {\n return \"{$startDay} {$startMonth} {$fromYear} - {$endDay} {$endMonth} {$toYear}\";\n }\n\n // Same year but different months\n return \"{$startDay} {$startMonth} - {$endDay} {$endMonth} {$toYear}\";\n\n default:\n // Default format for unknown frequencies\n return $from->format('j M Y') . ' - ' . $to->format('j M Y');\n }\n }\n\n public function sanitizeFileName(string $fileName): string\n {\n return str_replace(['/', '\\\\'], '-', $fileName);\n }\n\n private function getPayload(AutomatedReportsService $automatedReportsService)\n {\n $reportResult = AutomatedReportResult::find(269);\n $automatedReport = $reportResult->getReport();\n $activityIds = [1,2,3];\n $payload = $automatedReportsService->getAskJiminnyGenerateReportPayload(\n automatedReport: $automatedReport,\n reportResult: $reportResult,\n activityIds: $activityIds,\n );\n\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$payload ' . PHP_EOL . print_r($payload, true));\n }\n\n private function rateLimit()\n {\n $team = Team::find(2);\n $config = $team->getCrmConfiguration();\n\n $crmResolver = app(CrmOwnerResolver::class, [\n 'team' => $team,\n 'integrationAdmin' => $team->getOwner(),\n 'providerSlug' => $config->getProviderName(),\n ]);\n\n $crmService = $crmResolver->prepareCrmService();\n\n for ($i = 0 ; $i < 10; $i++) {\n if ($i % 25 === 0) {\n// $this->info(\"Syncing opportunity {$i}\");\n $this->info(\"Matching contact {$i}\");\n }\n// $crmService->syncOpportunity('374720564');\n $crmService->matchExactlyByEmail('coolrobot@hubspot.com');\n }\n }\n}","depth":4,"on_screen":true,"value":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Console\\Commands;\n\nuse Carbon\\Carbon;\nuse Carbon\\CarbonImmutable;\nuse Illuminate\\Console\\Command;\nuse InvalidArgumentException;\nuse Jiminny\\Jobs\\AutomatedReports\\RequestGenerateAskJiminnyReportJob;\nuse Jiminny\\Jobs\\AutomatedReports\\SendReportMailJob;\nuse Jiminny\\Jobs\\JobDispatcherInterface;\nuse Jiminny\\Models\\Activity;\nuse Jiminny\\Models\\AutomatedReport;\nuse Jiminny\\Models\\AutomatedReportResult;\nuse Jiminny\\Models\\Team;\nuse Jiminny\\Models\\User;\nuse Jiminny\\Repositories\\AutomatedReportsRepository;\nuse Jiminny\\Services\\Activity\\CrmOwnerResolver;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Jiminny\\Services\\UserPilot\\UserPilotClient;\n\n/**\n * Class JiminnyDebugCommand\n *\n * @package Jiminny\\Console\\Commands\n */\nclass JiminnyDebugCommand extends Command\n{\n public const string FREQUENCY_DAILY = 'daily';\n public const string FREQUENCY_WEEKLY = 'weekly';\n public const string FREQUENCY_MONTHLY = 'monthly';\n public const string FREQUENCY_QUARTERLY = 'quarterly';\n public const string FREQUENCY_ONE_OFF = 'one_off';\n protected $signature = 'jiminny:debug';\n\n public function handle(\n JobDispatcherInterface $jobDispatcher,\n AutomatedReportsService $automatedReportsService,\n AutomatedReportsRepository $automatedReportsRepository,\n UserPilotClient $userPilotClient\n ): void {\n $this->rateLimit();\n exit(1);\n\n\n\n $report = AutomatedReport::find(71);\n $last = AutomatedReportResult::query()\n ->where('report_id', $report->getId())\n ->whereIn('status', [AutomatedReportResult::STATUS_DEFAULT, AutomatedReportResult::STATUS_FAILED])\n// ->where('reason', '!=', AutomatedReportResult::REASON_NOT_ENOUGH_ACTIVITIES)\n ->whereDate('created_at', CarbonImmutable::now()->toDateString())\n ->latest()\n ->first();\n\n $this->info(\"Last: {$last->getId()}\");\n\n exit(1);\n\n $user = User::find(143);\n // $count = $automatedReportsRepository->countUserReports($user);\n // $this->info(\"Count: {$count}\");\n // $count = $automatedReportsRepository->countAllUserReports($user);\n // $this->info(\"All count: {$count}\");\n\n $payload = [\n 'report_type' => 'ask_jiminny',\n 'frequency' => 'weekly',\n ];\n $userPilotClient->track($user, 'ask-jiminny-report-generated', $payload);\n\n exit(1);\n\n $now = Carbon::now()->subDay(1);\n $this->info(\"Now: {$now->toDateTimeString()}\");\n $weekStart = Carbon::getWeekStartsAt();\n $this->info(\"Now: {$weekStart}\");\n\n // $from = $now->copy()->previousWeekday()->startOfDay();\n // $to = $now->copy()->previousWeekday()->endOfDay();\n\n // $fromOld = $now->copy()->subWeeks(1)->startOfDay();\n // $toOld = $now->copy()->subDay()->endOfDay();\n // $fromNew = $now->copy()->subWeek()->startOfWeek();\n // $toNew = $now->copy()->subWeek()->endOfWeek();\n\n // $fromOld = $now->copy()->subMonths(1)->startOfDay();\n // $toOld = $now->copy()->subDay()->endOfDay();\n // $fromNew = $now->copy()->subMonthNoOverflow()->startOfMonth();\n // $toNew = $now->copy()->subMonthNoOverflow()->endOfMonth();\n\n $fromOld = $now->copy()->subMonths(3)->startOfDay();\n $toOld = $now->copy()->subDay()->endOfDay();\n $fromNew = $now->copy()->subQuarterNoOverflow()->startOfQuarter();\n $toNew = $now->copy()->subQuarterNoOverflow()->endOfQuarter();\n\n $this->info(\"From old: {$fromOld->toDateTimeString()}\");\n $this->info(\"To old: {$toOld->toDateTimeString()}\");\n $this->info(\"From new: {$fromNew->toDateTimeString()}\");\n $this->info(\"To new: {$toNew->toDateTimeString()}\");\n\n exit(1);\n\n $report = AutomatedReport::find(71);\n\n $job = new RequestGenerateAskJiminnyReportJob($report->getUuid());\n $jobDispatcher->dispatch($job);\n\n exit(1);\n\n\n // $this->formatDate($jobDispatcher);\n // $this->sendMail($jobDispatcher, $automatedReportsService);\n // $this->crmService();\n\n $this->getPayload($automatedReportsService);\n\n exit(1);\n }\n\n\n\n private function crmService()\n {\n $activity = Activity::find(418141);\n\n $team = Team::find(19);\n $config = $team->getCrmConfiguration();\n\n $crmResolver = app(CrmOwnerResolver::class, [\n 'team' => $team,\n 'integrationAdmin' => $team->getOwner(),\n 'providerSlug' => $config->getProviderName(),\n ]);\n\n $crmService = $crmResolver->prepareCrmService();\n\n $crmService->createTranscriptNotes($activity);\n }\n\n private function sendMail(JobDispatcherInterface $jobDispatcher, AutomatedReportsService $automatedReportsService)\n {\n $reportUuid = '';\n // $report = $automatedReportsService->getReportResult($reportUuid);\n $report = AutomatedReportResult::find(275);\n $validRecipients = $automatedReportsService->getValidRecipientUsers(\n $report->getReport(),\n includeJiminny: true,\n );\n\n $recipient = $validRecipients[0];\n\n $fileName = $automatedReportsService->getReportFileName($report);\n $typeName = $report->getReport()->getCustomName()\n ?? $automatedReportsService->getReportTypeName($report);\n $teamsName = $automatedReportsService->getReportTeamsName($report);\n $periodName = $automatedReportsService->getReportPeriodName($report);\n $s3Path = $automatedReportsService->getMediaPath($report);\n\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$fileName ' . PHP_EOL . print_r($fileName, true));\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$typeName ' . PHP_EOL . print_r($typeName, true));\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$teamsName ' . PHP_EOL . print_r($teamsName, true));\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$periodName ' . PHP_EOL . print_r($periodName, true));\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$s3Path ' . PHP_EOL . print_r($s3Path, true));\n\n $jobDispatcher->dispatch(\n new SendReportMailJob(\n reportUuid: $report->getUuid(),\n s3Path: $s3Path,\n recipientEmail: $recipient['email'],\n recipientName: $recipient['name'] ?? null,\n fileName: $fileName,\n typeName: $typeName,\n teamsName: $teamsName,\n periodName: $periodName,\n isAskJiminny: true,\n )\n );\n\n exit(1);\n }\n\n private function formatDate(JobDispatcherInterface $jobDispatcher): void\n {\n $customName = 'Custom report name';\n // $frequency = self::FREQUENCY_DAILY;\n // $frequency = self::FREQUENCY_WEEKLY;\n $frequency = self::FREQUENCY_MONTHLY;\n // $frequency = self::FREQUENCY_QUARTERLY;\n // $frequency = self::FREQUENCY_ONE_OFF;\n $period = $this->calculateFromAndToDatePeriod($frequency);\n $from = $period['fromDate'];\n $to = $period['toDate'];\n $periodName = $this->formatReportPeriodName($frequency, $from, $to);\n $filenameSuffix = null;\n\n if ($customName) {\n if ($filenameSuffix) {\n $customName .= \" {$filenameSuffix}\";\n }\n\n $result = $this->sanitizeFileName(\"{$customName} - {$periodName}\");\n }\n\n $this->info($result);\n }\n\n public function calculateFromAndToDatePeriod(\n string $frequency,\n ?Carbon $fromDate = null,\n ?Carbon $toDate = null\n ): array {\n if ($frequency === self::FREQUENCY_ONE_OFF) {\n return [\n 'fromDate' => $fromDate,\n 'toDate' => $toDate,\n ];\n }\n\n $now = Carbon::now();\n\n return match ($frequency) {\n self::FREQUENCY_DAILY => [\n 'fromDate' => $now->copy()->subDay()->startOfDay(),\n 'toDate' => $now->copy()->subDay()->endOfDay(),\n ],\n self::FREQUENCY_WEEKLY => [\n 'fromDate' => $now->copy()->subWeeks(1)->startOfDay(),\n 'toDate' => $now->copy()->subDay()->endOfDay(),\n ],\n self::FREQUENCY_MONTHLY => [\n 'fromDate' => $now->copy()->subMonths(1)->startOfDay(),\n 'toDate' => $now->copy()->subDay()->endOfDay(),\n ],\n self::FREQUENCY_QUARTERLY => [\n 'fromDate' => $now->copy()->subMonths(3)->startOfDay(),\n 'toDate' => $now->copy()->subDay()->endOfDay(),\n ],\n default => throw new InvalidArgumentException(\"Unsupported frequency: {$frequency}\"),\n };\n }\n\n private function formatReportPeriodName(string $frequency, Carbon $from, Carbon $to): string\n {\n $fromYear = $from->format('Y');\n $toYear = $to->format('Y');\n $differentYears = $fromYear !== $toYear;\n\n switch ($frequency) {\n case self::FREQUENCY_DAILY:\n return $from->format('j M Y');\n\n case self::FREQUENCY_QUARTERLY:\n // 'Jan-Mar 2025' or 'Nov 2024-Jan 2025' if years differ\n $startMonth = $from->format('M');\n $endMonth = $to->copy()->subMonth();\n $endMonthName = $endMonth->format('M');\n $endMonthYear = $endMonth->format('Y');\n\n if ($differentYears) {\n return \"{$startMonth} {$fromYear} - {$endMonthName} {$endMonthYear}\";\n }\n\n return \"{$startMonth} - {$endMonthName} {$toYear}\";\n\n case self::FREQUENCY_MONTHLY:\n // 'May 2025' - monthly reports are always within the same year\n return $from->format('M Y');\n\n case self::FREQUENCY_WEEKLY:\n // '4 - 8 Aug 2025', '27 Oct - 3 Nov 2025', or '28 Dec 2024 - 3 Jan 2025' if years differ\n $startDay = $from->format('j');\n $endDay = $to->format('j');\n $startMonth = $from->format('M');\n $endMonth = $to->format('M');\n\n if ($differentYears) {\n return \"{$startDay} {$startMonth} {$fromYear} - {$endDay} {$endMonth} {$toYear}\";\n }\n\n if ($startMonth !== $endMonth) {\n return \"{$startDay} {$startMonth} - {$endDay} {$endMonth} {$toYear}\";\n }\n\n return \"{$startDay} - {$endDay} {$endMonth} {$toYear}\";\n\n case self::FREQUENCY_ONE_OFF:\n // '2 May-31 May 2025' or '15 Dec 2024-15 Jan 2025' if years differ\n $startDay = $from->format('j');\n $startMonth = $from->format('M');\n $endDay = $to->format('j');\n $endMonth = $to->format('M');\n\n // If same month and year, use a format like '2-31 May 2025'\n if ($startMonth === $endMonth && ! $differentYears) {\n return \"{$startDay} - {$endDay} {$startMonth} {$toYear}\";\n }\n\n // If different years, include both years\n if ($differentYears) {\n return \"{$startDay} {$startMonth} {$fromYear} - {$endDay} {$endMonth} {$toYear}\";\n }\n\n // Same year but different months\n return \"{$startDay} {$startMonth} - {$endDay} {$endMonth} {$toYear}\";\n\n default:\n // Default format for unknown frequencies\n return $from->format('j M Y') . ' - ' . $to->format('j M Y');\n }\n }\n\n public function sanitizeFileName(string $fileName): string\n {\n return str_replace(['/', '\\\\'], '-', $fileName);\n }\n\n private function getPayload(AutomatedReportsService $automatedReportsService)\n {\n $reportResult = AutomatedReportResult::find(269);\n $automatedReport = $reportResult->getReport();\n $activityIds = [1,2,3];\n $payload = $automatedReportsService->getAskJiminnyGenerateReportPayload(\n automatedReport: $automatedReport,\n reportResult: $reportResult,\n activityIds: $activityIds,\n );\n\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$payload ' . PHP_EOL . print_r($payload, true));\n }\n\n private function rateLimit()\n {\n $team = Team::find(2);\n $config = $team->getCrmConfiguration();\n\n $crmResolver = app(CrmOwnerResolver::class, [\n 'team' => $team,\n 'integrationAdmin' => $team->getOwner(),\n 'providerSlug' => $config->getProviderName(),\n ]);\n\n $crmService = $crmResolver->prepareCrmService();\n\n for ($i = 0 ; $i < 10; $i++) {\n if ($i % 25 === 0) {\n// $this->info(\"Syncing opportunity {$i}\");\n $this->info(\"Matching contact {$i}\");\n }\n// $crmService->syncOpportunity('374720564');\n $crmService->matchExactlyByEmail('coolrobot@hubspot.com');\n }\n }\n}","role_description":"text entry area","is_enabled":true,"is_focused":true,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Project","depth":3,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Project","depth":3,"bounds":{"left":0.011968086,"top":0.047885075,"width":0.024268618,"height":0.024740623},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"New File or Directory…","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Expand Selected","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Collapse All","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Options","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
-5974274438448015472
|
3603858491526180235
|
click
|
accessibility
|
NULL
|
Project: faVsco.js, menu
master, menu
Start Listen Project: faVsco.js, menu
master, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
Editor for custom.log
Sync Changes
Hide This Notification
Code changed:
Hide
5
120
4
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Console\Commands;
use Carbon\Carbon;
use Carbon\CarbonImmutable;
use Illuminate\Console\Command;
use InvalidArgumentException;
use Jiminny\Jobs\AutomatedReports\RequestGenerateAskJiminnyReportJob;
use Jiminny\Jobs\AutomatedReports\SendReportMailJob;
use Jiminny\Jobs\JobDispatcherInterface;
use Jiminny\Models\Activity;
use Jiminny\Models\AutomatedReport;
use Jiminny\Models\AutomatedReportResult;
use Jiminny\Models\Team;
use Jiminny\Models\User;
use Jiminny\Repositories\AutomatedReportsRepository;
use Jiminny\Services\Activity\CrmOwnerResolver;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Jiminny\Services\UserPilot\UserPilotClient;
/**
* Class JiminnyDebugCommand
*
* @package Jiminny\Console\Commands
*/
class JiminnyDebugCommand extends Command
{
public const string FREQUENCY_DAILY = 'daily';
public const string FREQUENCY_WEEKLY = 'weekly';
public const string FREQUENCY_MONTHLY = 'monthly';
public const string FREQUENCY_QUARTERLY = 'quarterly';
public const string FREQUENCY_ONE_OFF = 'one_off';
protected $signature = 'jiminny:debug';
public function handle(
JobDispatcherInterface $jobDispatcher,
AutomatedReportsService $automatedReportsService,
AutomatedReportsRepository $automatedReportsRepository,
UserPilotClient $userPilotClient
): void {
$this->rateLimit();
exit(1);
$report = AutomatedReport::find(71);
$last = AutomatedReportResult::query()
->where('report_id', $report->getId())
->whereIn('status', [AutomatedReportResult::STATUS_DEFAULT, AutomatedReportResult::STATUS_FAILED])
// ->where('reason', '!=', AutomatedReportResult::REASON_NOT_ENOUGH_ACTIVITIES)
->whereDate('created_at', CarbonImmutable::now()->toDateString())
->latest()
->first();
$this->info("Last: {$last->getId()}");
exit(1);
$user = User::find(143);
// $count = $automatedReportsRepository->countUserReports($user);
// $this->info("Count: {$count}");
// $count = $automatedReportsRepository->countAllUserReports($user);
// $this->info("All count: {$count}");
$payload = [
'report_type' => 'ask_jiminny',
'frequency' => 'weekly',
];
$userPilotClient->track($user, 'ask-jiminny-report-generated', $payload);
exit(1);
$now = Carbon::now()->subDay(1);
$this->info("Now: {$now->toDateTimeString()}");
$weekStart = Carbon::getWeekStartsAt();
$this->info("Now: {$weekStart}");
// $from = $now->copy()->previousWeekday()->startOfDay();
// $to = $now->copy()->previousWeekday()->endOfDay();
// $fromOld = $now->copy()->subWeeks(1)->startOfDay();
// $toOld = $now->copy()->subDay()->endOfDay();
// $fromNew = $now->copy()->subWeek()->startOfWeek();
// $toNew = $now->copy()->subWeek()->endOfWeek();
// $fromOld = $now->copy()->subMonths(1)->startOfDay();
// $toOld = $now->copy()->subDay()->endOfDay();
// $fromNew = $now->copy()->subMonthNoOverflow()->startOfMonth();
// $toNew = $now->copy()->subMonthNoOverflow()->endOfMonth();
$fromOld = $now->copy()->subMonths(3)->startOfDay();
$toOld = $now->copy()->subDay()->endOfDay();
$fromNew = $now->copy()->subQuarterNoOverflow()->startOfQuarter();
$toNew = $now->copy()->subQuarterNoOverflow()->endOfQuarter();
$this->info("From old: {$fromOld->toDateTimeString()}");
$this->info("To old: {$toOld->toDateTimeString()}");
$this->info("From new: {$fromNew->toDateTimeString()}");
$this->info("To new: {$toNew->toDateTimeString()}");
exit(1);
$report = AutomatedReport::find(71);
$job = new RequestGenerateAskJiminnyReportJob($report->getUuid());
$jobDispatcher->dispatch($job);
exit(1);
// $this->formatDate($jobDispatcher);
// $this->sendMail($jobDispatcher, $automatedReportsService);
// $this->crmService();
$this->getPayload($automatedReportsService);
exit(1);
}
private function crmService()
{
$activity = Activity::find(418141);
$team = Team::find(19);
$config = $team->getCrmConfiguration();
$crmResolver = app(CrmOwnerResolver::class, [
'team' => $team,
'integrationAdmin' => $team->getOwner(),
'providerSlug' => $config->getProviderName(),
]);
$crmService = $crmResolver->prepareCrmService();
$crmService->createTranscriptNotes($activity);
}
private function sendMail(JobDispatcherInterface $jobDispatcher, AutomatedReportsService $automatedReportsService)
{
$reportUuid = '';
// $report = $automatedReportsService->getReportResult($reportUuid);
$report = AutomatedReportResult::find(275);
$validRecipients = $automatedReportsService->getValidRecipientUsers(
$report->getReport(),
includeJiminny: true,
);
$recipient = $validRecipients[0];
$fileName = $automatedReportsService->getReportFileName($report);
$typeName = $report->getReport()->getCustomName()
?? $automatedReportsService->getReportTypeName($report);
$teamsName = $automatedReportsService->getReportTeamsName($report);
$periodName = $automatedReportsService->getReportPeriodName($report);
$s3Path = $automatedReportsService->getMediaPath($report);
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$fileName ' . PHP_EOL . print_r($fileName, true));
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$typeName ' . PHP_EOL . print_r($typeName, true));
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$teamsName ' . PHP_EOL . print_r($teamsName, true));
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$periodName ' . PHP_EOL . print_r($periodName, true));
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$s3Path ' . PHP_EOL . print_r($s3Path, true));
$jobDispatcher->dispatch(
new SendReportMailJob(
reportUuid: $report->getUuid(),
s3Path: $s3Path,
recipientEmail: $recipient['email'],
recipientName: $recipient['name'] ?? null,
fileName: $fileName,
typeName: $typeName,
teamsName: $teamsName,
periodName: $periodName,
isAskJiminny: true,
)
);
exit(1);
}
private function formatDate(JobDispatcherInterface $jobDispatcher): void
{
$customName = 'Custom report name';
// $frequency = self::FREQUENCY_DAILY;
// $frequency = self::FREQUENCY_WEEKLY;
$frequency = self::FREQUENCY_MONTHLY;
// $frequency = self::FREQUENCY_QUARTERLY;
// $frequency = self::FREQUENCY_ONE_OFF;
$period = $this->calculateFromAndToDatePeriod($frequency);
$from = $period['fromDate'];
$to = $period['toDate'];
$periodName = $this->formatReportPeriodName($frequency, $from, $to);
$filenameSuffix = null;
if ($customName) {
if ($filenameSuffix) {
$customName .= " {$filenameSuffix}";
}
$result = $this->sanitizeFileName("{$customName} - {$periodName}");
}
$this->info($result);
}
public function calculateFromAndToDatePeriod(
string $frequency,
?Carbon $fromDate = null,
?Carbon $toDate = null
): array {
if ($frequency === self::FREQUENCY_ONE_OFF) {
return [
'fromDate' => $fromDate,
'toDate' => $toDate,
];
}
$now = Carbon::now();
return match ($frequency) {
self::FREQUENCY_DAILY => [
'fromDate' => $now->copy()->subDay()->startOfDay(),
'toDate' => $now->copy()->subDay()->endOfDay(),
],
self::FREQUENCY_WEEKLY => [
'fromDate' => $now->copy()->subWeeks(1)->startOfDay(),
'toDate' => $now->copy()->subDay()->endOfDay(),
],
self::FREQUENCY_MONTHLY => [
'fromDate' => $now->copy()->subMonths(1)->startOfDay(),
'toDate' => $now->copy()->subDay()->endOfDay(),
],
self::FREQUENCY_QUARTERLY => [
'fromDate' => $now->copy()->subMonths(3)->startOfDay(),
'toDate' => $now->copy()->subDay()->endOfDay(),
],
default => throw new InvalidArgumentException("Unsupported frequency: {$frequency}"),
};
}
private function formatReportPeriodName(string $frequency, Carbon $from, Carbon $to): string
{
$fromYear = $from->format('Y');
$toYear = $to->format('Y');
$differentYears = $fromYear !== $toYear;
switch ($frequency) {
case self::FREQUENCY_DAILY:
return $from->format('j M Y');
case self::FREQUENCY_QUARTERLY:
// 'Jan-Mar 2025' or 'Nov 2024-Jan 2025' if years differ
$startMonth = $from->format('M');
$endMonth = $to->copy()->subMonth();
$endMonthName = $endMonth->format('M');
$endMonthYear = $endMonth->format('Y');
if ($differentYears) {
return "{$startMonth} {$fromYear} - {$endMonthName} {$endMonthYear}";
}
return "{$startMonth} - {$endMonthName} {$toYear}";
case self::FREQUENCY_MONTHLY:
// 'May 2025' - monthly reports are always within the same year
return $from->format('M Y');
case self::FREQUENCY_WEEKLY:
// '4 - 8 Aug 2025', '27 Oct - 3 Nov 2025', or '28 Dec 2024 - 3 Jan 2025' if years differ
$startDay = $from->format('j');
$endDay = $to->format('j');
$startMonth = $from->format('M');
$endMonth = $to->format('M');
if ($differentYears) {
return "{$startDay} {$startMonth} {$fromYear} - {$endDay} {$endMonth} {$toYear}";
}
if ($startMonth !== $endMonth) {
return "{$startDay} {$startMonth} - {$endDay} {$endMonth} {$toYear}";
}
return "{$startDay} - {$endDay} {$endMonth} {$toYear}";
case self::FREQUENCY_ONE_OFF:
// '2 May-31 May 2025' or '15 Dec 2024-15 Jan 2025' if years differ
$startDay = $from->format('j');
$startMonth = $from->format('M');
$endDay = $to->format('j');
$endMonth = $to->format('M');
// If same month and year, use a format like '2-31 May 2025'
if ($startMonth === $endMonth && ! $differentYears) {
return "{$startDay} - {$endDay} {$startMonth} {$toYear}";
}
// If different years, include both years
if ($differentYears) {
return "{$startDay} {$startMonth} {$fromYear} - {$endDay} {$endMonth} {$toYear}";
}
// Same year but different months
return "{$startDay} {$startMonth} - {$endDay} {$endMonth} {$toYear}";
default:
// Default format for unknown frequencies
return $from->format('j M Y') . ' - ' . $to->format('j M Y');
}
}
public function sanitizeFileName(string $fileName): string
{
return str_replace(['/', '\\'], '-', $fileName);
}
private function getPayload(AutomatedReportsService $automatedReportsService)
{
$reportResult = AutomatedReportResult::find(269);
$automatedReport = $reportResult->getReport();
$activityIds = [1,2,3];
$payload = $automatedReportsService->getAskJiminnyGenerateReportPayload(
automatedReport: $automatedReport,
reportResult: $reportResult,
activityIds: $activityIds,
);
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$payload ' . PHP_EOL . print_r($payload, true));
}
private function rateLimit()
{
$team = Team::find(2);
$config = $team->getCrmConfiguration();
$crmResolver = app(CrmOwnerResolver::class, [
'team' => $team,
'integrationAdmin' => $team->getOwner(),
'providerSlug' => $config->getProviderName(),
]);
$crmService = $crmResolver->prepareCrmService();
for ($i = 0 ; $i < 10; $i++) {
if ($i % 25 === 0) {
// $this->info("Syncing opportunity {$i}");
$this->info("Matching contact {$i}");
}
// $crmService->syncOpportunity('374720564');
$crmService->matchExactlyByEmail('[EMAIL]');
}
}
}
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
3677
|
NULL
|
NULL
|
NULL
|
|
3781
|
NULL
|
0
|
2026-05-07T12:40:43.644456+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-07/1778 /Users/lukas/.screenpipe/data/data/2026-05-07/1778157643644_m2.jpg...
|
PhpStorm
|
faVsco.js – MatchActivityCrmData.php
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
master, menu
Start Listen Project: faVsco.js, menu
master, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
A
1
Select All
5190
5190
0
4e3f2289-a3d2-5235-b410-b94ebb547490
4e3f2289-a3d2-5235-b410-b94ebb547490
Umbrella Corp
2
2
0
2
2
0
1212213464
1212213464
Umbrella Corp
430
430
0
579583316
579583316
Umbrella Corp
Umbrella Corp
Umbrella Corp
Umbrella Corp
[PHONE]
[PHONE]
Umbrella Corp
<null>
<null>
Umbrella Corp
<null>
<null>
Umbrella Corp
umbrellacorp.com
umbrellacorp.com
Umbrella Corp
/abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4/avatars/1212213464.png
/abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4/avatars/1212213464.png
Umbrella Corp
<null>
<null>
Umbrella Corp
0
0
0
<null>
<null>
Umbrella Corp
2026-03-30 06:44:25
2026-03-30 06:44:25
Umbrella Corp
2019-02-01 15:39:53
2019-02-01 15:39:53
Umbrella Corp
2026-03-30 06:44:25
2026-03-30 06:44:25
Umbrella Corp
id = 5190
Editor...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"bounds":{"left":0.025930852,"top":0.019952115,"width":0.03856383,"height":0.025538707},"on_screen":true,"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"master, menu","depth":5,"bounds":{"left":0.064494684,"top":0.019952115,"width":0.040226065,"height":0.025538707},"on_screen":true,"help_text":"Git Branch: master<br/>Some incoming commits are not fetched<br/>","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Start Listening for PHP Debug Connections","depth":5,"bounds":{"left":0.8081782,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"AskJiminnyReportActivityServiceTest","depth":6,"bounds":{"left":0.8234708,"top":0.019952115,"width":0.09208777,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'AskJiminnyReportActivityServiceTest'","depth":6,"bounds":{"left":0.9155585,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'AskJiminnyReportActivityServiceTest'","depth":6,"bounds":{"left":0.9268617,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More Actions","depth":6,"bounds":{"left":0.9381649,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JetBrains AI","depth":5,"bounds":{"left":0.96609044,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Search Everywhere","depth":5,"bounds":{"left":0.9773936,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"IDE and Project Settings","depth":5,"bounds":{"left":0.9886968,"top":0.019952115,"width":0.011303186,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"A","depth":4,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":5,"bounds":{"left":0.27027926,"top":1.0,"width":0.0039893617,"height":0.0},"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Select All","depth":4,"bounds":{"left":0.52859044,"top":0.118914604,"width":0.07180851,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"5190","depth":6,"bounds":{"left":0.6007314,"top":0.14046289,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"5190","depth":7,"bounds":{"left":0.6007314,"top":0.14046289,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"0","depth":8,"bounds":{"left":0.27027926,"top":1.0,"width":0.098071806,"height":0.0},"on_screen":false,"value":"0","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"4e3f2289-a3d2-5235-b410-b94ebb547490","depth":6,"bounds":{"left":0.6007314,"top":0.16201118,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"4e3f2289-a3d2-5235-b410-b94ebb547490","depth":7,"bounds":{"left":0.6007314,"top":0.16201118,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"Umbrella Corp","depth":8,"bounds":{"left":0.27027926,"top":1.0,"width":0.098071806,"height":0.0},"on_screen":false,"value":"Umbrella Corp","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"2","depth":6,"bounds":{"left":0.6007314,"top":0.18355946,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"2","depth":7,"bounds":{"left":0.6007314,"top":0.18355946,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"0","depth":8,"bounds":{"left":0.27027926,"top":1.0,"width":0.098071806,"height":0.0},"on_screen":false,"value":"0","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"2","depth":6,"bounds":{"left":0.6007314,"top":0.20510775,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"2","depth":7,"bounds":{"left":0.6007314,"top":0.20510775,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"0","depth":8,"bounds":{"left":0.27027926,"top":1.0,"width":0.098071806,"height":0.0},"on_screen":false,"value":"0","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"1212213464","depth":6,"bounds":{"left":0.6007314,"top":0.22665602,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"1212213464","depth":7,"bounds":{"left":0.6007314,"top":0.22665602,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"Umbrella Corp","depth":8,"bounds":{"left":0.27027926,"top":1.0,"width":0.098071806,"height":0.0},"on_screen":false,"value":"Umbrella Corp","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"430","depth":6,"bounds":{"left":0.6007314,"top":0.2482043,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"430","depth":7,"bounds":{"left":0.6007314,"top":0.2482043,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"0","depth":8,"bounds":{"left":0.27027926,"top":1.0,"width":0.098071806,"height":0.0},"on_screen":false,"value":"0","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"579583316","depth":6,"bounds":{"left":0.6007314,"top":0.2697526,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"579583316","depth":7,"bounds":{"left":0.6007314,"top":0.2697526,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"Umbrella Corp","depth":8,"bounds":{"left":0.27027926,"top":1.0,"width":0.098071806,"height":0.0},"on_screen":false,"value":"Umbrella Corp","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"Umbrella Corp","depth":6,"bounds":{"left":0.6007314,"top":0.29130086,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"Umbrella Corp","depth":7,"bounds":{"left":0.6007314,"top":0.29130086,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"Umbrella Corp","depth":8,"bounds":{"left":0.27027926,"top":1.0,"width":0.098071806,"height":0.0},"on_screen":false,"value":"Umbrella Corp","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"661-244-6711","depth":6,"bounds":{"left":0.6007314,"top":0.31284916,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"661-244-6711","depth":7,"bounds":{"left":0.6007314,"top":0.31284916,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"Umbrella Corp","depth":8,"bounds":{"left":0.27027926,"top":1.0,"width":0.098071806,"height":0.0},"on_screen":false,"value":"Umbrella Corp","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"<null>","depth":6,"bounds":{"left":0.6007314,"top":0.33439744,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"<null>","depth":7,"bounds":{"left":0.6007314,"top":0.33439744,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"Umbrella Corp","depth":8,"bounds":{"left":0.27027926,"top":1.0,"width":0.098071806,"height":0.0},"on_screen":false,"value":"Umbrella Corp","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"<null>","depth":6,"bounds":{"left":0.6007314,"top":0.35594574,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"<null>","depth":7,"bounds":{"left":0.6007314,"top":0.35594574,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"Umbrella Corp","depth":8,"bounds":{"left":0.27027926,"top":1.0,"width":0.098071806,"height":0.0},"on_screen":false,"value":"Umbrella Corp","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"umbrellacorp.com","depth":6,"bounds":{"left":0.6007314,"top":0.377494,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"umbrellacorp.com","depth":7,"bounds":{"left":0.6007314,"top":0.377494,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"Umbrella Corp","depth":8,"bounds":{"left":0.27027926,"top":1.0,"width":0.098071806,"height":0.0},"on_screen":false,"value":"Umbrella Corp","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"/abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4/avatars/1212213464.png","depth":6,"bounds":{"left":0.6007314,"top":0.3990423,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"/abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4/avatars/1212213464.png","depth":7,"bounds":{"left":0.6007314,"top":0.3990423,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"Umbrella Corp","depth":8,"bounds":{"left":0.27027926,"top":1.0,"width":0.098071806,"height":0.0},"on_screen":false,"value":"Umbrella Corp","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"<null>","depth":6,"bounds":{"left":0.6007314,"top":0.42059058,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"<null>","depth":7,"bounds":{"left":0.6007314,"top":0.42059058,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"Umbrella Corp","depth":8,"bounds":{"left":0.27027926,"top":1.0,"width":0.098071806,"height":0.0},"on_screen":false,"value":"Umbrella Corp","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"0","depth":6,"bounds":{"left":0.6007314,"top":0.44213888,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"0","depth":7,"bounds":{"left":0.6007314,"top":0.44213888,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"0","depth":8,"bounds":{"left":0.27027926,"top":1.0,"width":0.098071806,"height":0.0},"on_screen":false,"value":"0","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"<null>","depth":6,"bounds":{"left":0.6007314,"top":0.46368715,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"<null>","depth":7,"bounds":{"left":0.6007314,"top":0.46368715,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"Umbrella Corp","depth":8,"bounds":{"left":0.27027926,"top":1.0,"width":0.098071806,"height":0.0},"on_screen":false,"value":"Umbrella Corp","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"2026-03-30 06:44:25","depth":6,"bounds":{"left":0.6007314,"top":0.48523542,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"2026-03-30 06:44:25","depth":7,"bounds":{"left":0.6007314,"top":0.48523542,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"Umbrella Corp","depth":8,"bounds":{"left":0.27027926,"top":1.0,"width":0.098071806,"height":0.0},"on_screen":false,"value":"Umbrella Corp","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"2019-02-01 15:39:53","depth":6,"bounds":{"left":0.6007314,"top":0.5067837,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"2019-02-01 15:39:53","depth":7,"bounds":{"left":0.6007314,"top":0.5067837,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"Umbrella Corp","depth":8,"bounds":{"left":0.27027926,"top":1.0,"width":0.098071806,"height":0.0},"on_screen":false,"value":"Umbrella Corp","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"2026-03-30 06:44:25","depth":6,"bounds":{"left":0.6007314,"top":0.528332,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"2026-03-30 06:44:25","depth":7,"bounds":{"left":0.6007314,"top":0.528332,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"Umbrella Corp","depth":8,"bounds":{"left":0.27027926,"top":1.0,"width":0.098071806,"height":0.0},"on_screen":false,"value":"Umbrella Corp","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"id = 5190","depth":4,"bounds":{"left":0.5382314,"top":0.09976058,"width":0.08045213,"height":0.014365523},"on_screen":true,"value":"id = 5190","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"Editor","depth":4,"bounds":{"left":0.63829786,"top":0.09976058,"width":0.34574467,"height":0.014365523},"on_screen":true,"role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
-5699873674798819258
|
-9177001522953722122
|
click
|
accessibility
|
NULL
|
Project: faVsco.js, menu
master, menu
Start Listen Project: faVsco.js, menu
master, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
A
1
Select All
5190
5190
0
4e3f2289-a3d2-5235-b410-b94ebb547490
4e3f2289-a3d2-5235-b410-b94ebb547490
Umbrella Corp
2
2
0
2
2
0
1212213464
1212213464
Umbrella Corp
430
430
0
579583316
579583316
Umbrella Corp
Umbrella Corp
Umbrella Corp
Umbrella Corp
[PHONE]
[PHONE]
Umbrella Corp
<null>
<null>
Umbrella Corp
<null>
<null>
Umbrella Corp
umbrellacorp.com
umbrellacorp.com
Umbrella Corp
/abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4/avatars/1212213464.png
/abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4/avatars/1212213464.png
Umbrella Corp
<null>
<null>
Umbrella Corp
0
0
0
<null>
<null>
Umbrella Corp
2026-03-30 06:44:25
2026-03-30 06:44:25
Umbrella Corp
2019-02-01 15:39:53
2019-02-01 15:39:53
Umbrella Corp
2026-03-30 06:44:25
2026-03-30 06:44:25
Umbrella Corp
id = 5190
Editor...
|
3780
|
NULL
|
NULL
|
NULL
|
|
3782
|
NULL
|
0
|
2026-05-07T12:40:43.744480+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-07/1778 /Users/lukas/.screenpipe/data/data/2026-05-07/1778157643744_m1.jpg...
|
PhpStorm
|
faVsco.js – MatchActivityCrmData.php
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
master, menu
Start Listen Project: faVsco.js, menu
master, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
A
1
Select All
5190
5190
0
4e3f2289-a3d2-5235-b410-b94ebb547490
4e3f2289-a3d2-5235-b410-b94ebb547490
Umbrella Corp
2
2
0
2
2
0
1212213464
1212213464
Umbrella Corp
430
430
0
579583316
579583316
Umbrella Corp
Umbrella Corp
Umbrella Corp
Umbrella Corp
[PHONE]
[PHONE]
Umbrella Corp
<null>
<null>
Umbrella Corp
<null>
<null>
Umbrella Corp
umbrellacorp.com
umbrellacorp.com
Umbrella Corp
/abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4/avatars/1212213464.png
/abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4/avatars/1212213464.png
Umbrella Corp
<null>
<null>
Umbrella Corp
0
0
0
<null>
<null>
Umbrella Corp
2026-03-30 06:44:25
2026-03-30 06:44:25
Umbrella Corp
2019-02-01 15:39:53
2019-02-01 15:39:53
Umbrella Corp
2026-03-30 06:44:25
2026-03-30 06:44:25
Umbrella Corp
id = 5190
Editor
1 row
Reload Page
Table Result Auto Refresh
Cancel Running Statements
Add Row
Delete Row
Revert Selected
Preview Pending Changes
Submit
Tx: Auto
DDL
Find on Current Page
Table Result Local Filter
Record View
Table Coloring Options
Show Geo Viewer
Show Chart
CSV
Export Data…
Copy to Database…
Compare Data
View as
Show Options Menu
Sync Changes
Hide This Notification
Code changed:
Hide
8
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Jobs\Crm;
use Exception;
use Illuminate\Contracts\Queue\ShouldBeUnique;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Database\Connection;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Queue\SerializesModels;
use Illuminate\Support\Facades\Log;
use Jiminny\Component\Queue\Constants;
use Jiminny\Exceptions\InvalidArgumentException;
use Jiminny\Jobs\Job;
use Jiminny\Models\Activity;
use Jiminny\Models\Crm\Configuration;
use Jiminny\Repositories\ActivityRepository;
use Jiminny\Services\Crm\CrmActivityService;
use Psr\Container\ContainerExceptionInterface;
use Psr\Container\NotFoundExceptionInterface;
use Throwable;
class MatchActivityCrmData extends Job implements ShouldQueue, ShouldBeUnique
{
use InteractsWithQueue;
use SerializesModels;
public int $tries = 3;
private int $activityId;
private ?Configuration $fromConfiguration;
private bool $remoteSearch;
public function __construct(
int $activityId,
?Configuration $fromConfiguration = null,
bool $remoteSearch = false,
) {
$this->activityId = $activityId;
$this->fromConfiguration = $fromConfiguration;
$this->remoteSearch = $remoteSearch;
$this->onQueue(Constants::QUEUE_ANALYTICS_LOW);
}
public function uniqueId(): string
{
$configId = $this->fromConfiguration?->getId() ?? 0;
$remote = $this->remoteSearch ? 'remote' : 'local';
return "$this->activityId:$configId:$remote";
}
public function timeout(): int
{
return 300; // 5 minutes max execution time
}
public function uniqueFor(): int
{
return $this->timeout() + 60; // timeout + 1 minute buffer
}
public function backoff(): array
{
return [30, 90, 180];
}
/**
* @throws ContainerExceptionInterface
* @throws NotFoundExceptionInterface
* @throws Exception|Throwable
*/
public function handle(
ActivityRepository $activityRepository,
CrmActivityService $crmActivityService,
Connection $connection,
): void {
$activity = $activityRepository->findById($this->activityId);
if ($activity === null) {
throw new InvalidArgumentException('[MatchActivityCrmData] Cannot find activity.');
}
try {
$connection->transaction(function () use ($activity, $crmActivityService, $activityRepository) {
Log::info('[MatchActivityCrmData] Starting CRM data matching', [
'activity' => $this->activityId,
'remote_search' => $this->remoteSearch,
'set_configuration' => $this->fromConfiguration?->getId(),
'old_state' => [
'lead_id' => $activity->getLead()?->getId(),
'contact_id' => $activity->getContact()?->getId(),
'account_id' => $activity->getAccount()?->getId(),
'opportunity_id' => $activity->getOpportunity()?->getId(),
'stage_id' => $activity->getStage()?->getId(),
],
]);
$this->resetCrmMappings($activity, $activityRepository);
$this->switchCrmConfigurationIfNeeded($activity);
$activity->refresh();
$crmActivityService->updateCrmData(
activity: $activity,
remoteSearch: $this->remoteSearch,
);
$hasMatch = $activity->getLead() !== null
|| $activity->getContact() !== null
|| $activity->getAccount() !== null
|| $activity->getOpportunity() !== null;
if ($hasMatch) {
Log::info('[MatchActivityCrmData] Successfully matched CRM data', [
'activity' => $this->activityId,
'remote_search' => $this->remoteSearch,
'lead_id' => $activity->getLead()?->getId(),
'contact_id' => $activity->getContact()?->getId(),
'account_id' => $activity->getAccount()?->getId(),
'opportunity_id' => $activity->getOpportunity()?->getId(),
'stage_id' => $activity->getStage()?->getId(),
]);
} else {
Log::info('[MatchActivityCrmData] No CRM match found', [
'activity' => $this->activityId,
'remote_search' => $this->remoteSearch,
]);
}
});
} catch (Throwable $e) {
Log::error('[MatchActivityCrmData] Failed to match CRM data', [
'activity' => $this->activityId,
'remote_search' => $this->remoteSearch,
'exception' => $e->getMessage(),
'trace' => $e->getTraceAsString(),
]);
throw $e;
}
}
public function failed(Throwable $exception): void
{
Log::error('[MatchActivityCrmData] Job permanently failed after all retries', [
'activity' => $this->activityId,
'remote_search' => $this->remoteSearch,
'from_configuration' => $this->fromConfiguration?->getId(),
'exception' => $exception->getMessage(),
'attempts' => $this->attempts(),
]);
}
private function resetCrmMappings(
Activity $activity,
ActivityRepository $activityRepository
): void {
$activity->update([
'lead_id' => null,
'contact_id' => null,
'account_id' => null,
'opportunity_id' => null,
'stage_id' => null,
]);
$participantsOldState = $activityRepository->getActivityParticipants($activity)
->map(function ($participant) {
return [
'id' => $participant->id,
'user_id' => $participant->user_id,
'contact_id' => $participant->contact_id,
'lead_id' => $participant->lead_id,
];
});
if ($participantsOldState->isNotEmpty()) {
Log::info('[MatchActivityCrmData] Participants old state', [
'activity' => $this->activityId,
'participants' => $participantsOldState->toArray(),
]);
}
$activity->participants()->update([
'user_id' => null,
'contact_id' => null,
'lead_id' => null,
]);
}
private function switchCrmConfigurationIfNeeded(Activity $activity): void
{
if ($this->fromConfiguration === null) {
return;
}
if ($activity->getCrm()?->getId() === $this->fromConfiguration->getId()) {
return;
}
Log::info('[MatchActivityCrmData] Switching CRM configuration', [
'activity' => $this->activityId,
'old_configuration' => $activity->getCrm()?->getId(),
'new_configuration' => $this->fromConfiguration->getId(),
]);
$activity->update([
'crm_configuration_id' => $this->fromConfiguration->getId(),
'crm_provider_id' => null,
]);
}
}
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"on_screen":true,"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"master, menu","depth":5,"on_screen":true,"help_text":"Git Branch: master<br/>Some incoming commits are not fetched<br/>","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Start Listening for PHP Debug Connections","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"AskJiminnyReportActivityServiceTest","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'AskJiminnyReportActivityServiceTest'","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'AskJiminnyReportActivityServiceTest'","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More Actions","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JetBrains AI","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Search Everywhere","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"IDE and Project Settings","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"A","depth":4,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":5,"bounds":{"left":0.0,"top":0.0,"width":0.008333334,"height":0.03},"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Select All","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"5190","depth":6,"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"5190","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"0","depth":8,"bounds":{"left":0.0,"top":0.0,"width":0.2048611,"height":0.024444444},"on_screen":false,"value":"0","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"4e3f2289-a3d2-5235-b410-b94ebb547490","depth":6,"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"4e3f2289-a3d2-5235-b410-b94ebb547490","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"Umbrella Corp","depth":8,"bounds":{"left":0.0,"top":0.0,"width":0.2048611,"height":0.024444444},"on_screen":false,"value":"Umbrella Corp","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"2","depth":6,"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"2","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"0","depth":8,"bounds":{"left":0.0,"top":0.0,"width":0.2048611,"height":0.024444444},"on_screen":false,"value":"0","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"2","depth":6,"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"2","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"0","depth":8,"bounds":{"left":0.0,"top":0.0,"width":0.2048611,"height":0.024444444},"on_screen":false,"value":"0","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"1212213464","depth":6,"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"1212213464","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"Umbrella Corp","depth":8,"bounds":{"left":0.0,"top":0.0,"width":0.2048611,"height":0.024444444},"on_screen":false,"value":"Umbrella Corp","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"430","depth":6,"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"430","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"0","depth":8,"bounds":{"left":0.0,"top":0.0,"width":0.2048611,"height":0.024444444},"on_screen":false,"value":"0","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"579583316","depth":6,"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"579583316","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"Umbrella Corp","depth":8,"bounds":{"left":0.0,"top":0.0,"width":0.2048611,"height":0.024444444},"on_screen":false,"value":"Umbrella Corp","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"Umbrella Corp","depth":6,"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"Umbrella Corp","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"Umbrella Corp","depth":8,"bounds":{"left":0.0,"top":0.0,"width":0.2048611,"height":0.024444444},"on_screen":false,"value":"Umbrella Corp","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"661-244-6711","depth":6,"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"661-244-6711","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"Umbrella Corp","depth":8,"bounds":{"left":0.0,"top":0.0,"width":0.2048611,"height":0.024444444},"on_screen":false,"value":"Umbrella Corp","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"<null>","depth":6,"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"<null>","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"Umbrella Corp","depth":8,"bounds":{"left":0.0,"top":0.0,"width":0.2048611,"height":0.024444444},"on_screen":false,"value":"Umbrella Corp","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"<null>","depth":6,"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"<null>","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"Umbrella Corp","depth":8,"bounds":{"left":0.0,"top":0.0,"width":0.2048611,"height":0.024444444},"on_screen":false,"value":"Umbrella Corp","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"umbrellacorp.com","depth":6,"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"umbrellacorp.com","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"Umbrella Corp","depth":8,"bounds":{"left":0.0,"top":0.0,"width":0.2048611,"height":0.024444444},"on_screen":false,"value":"Umbrella Corp","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"/abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4/avatars/1212213464.png","depth":6,"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"/abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4/avatars/1212213464.png","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"Umbrella Corp","depth":8,"bounds":{"left":0.0,"top":0.0,"width":0.2048611,"height":0.024444444},"on_screen":false,"value":"Umbrella Corp","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"<null>","depth":6,"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"<null>","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"Umbrella Corp","depth":8,"bounds":{"left":0.0,"top":0.0,"width":0.2048611,"height":0.024444444},"on_screen":false,"value":"Umbrella Corp","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"0","depth":6,"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"0","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"0","depth":8,"bounds":{"left":0.0,"top":0.0,"width":0.2048611,"height":0.024444444},"on_screen":false,"value":"0","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"<null>","depth":6,"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"<null>","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"Umbrella Corp","depth":8,"bounds":{"left":0.0,"top":0.0,"width":0.2048611,"height":0.024444444},"on_screen":false,"value":"Umbrella Corp","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"2026-03-30 06:44:25","depth":6,"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"2026-03-30 06:44:25","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"Umbrella Corp","depth":8,"bounds":{"left":0.0,"top":0.0,"width":0.2048611,"height":0.024444444},"on_screen":false,"value":"Umbrella Corp","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"2019-02-01 15:39:53","depth":6,"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"2019-02-01 15:39:53","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"Umbrella Corp","depth":8,"bounds":{"left":0.0,"top":0.0,"width":0.2048611,"height":0.024444444},"on_screen":false,"value":"Umbrella Corp","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"2026-03-30 06:44:25","depth":6,"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"2026-03-30 06:44:25","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"Umbrella Corp","depth":8,"bounds":{"left":0.0,"top":0.0,"width":0.2048611,"height":0.024444444},"on_screen":false,"value":"Umbrella Corp","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"id = 5190","depth":4,"on_screen":true,"value":"id = 5190","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"Editor","depth":4,"on_screen":true,"role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"1 row","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reload Page","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Table Result Auto Refresh","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Cancel Running Statements","depth":4,"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add Row","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Delete Row","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Revert Selected","depth":4,"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Preview Pending Changes","depth":4,"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Submit","depth":4,"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Tx: Auto","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"DDL","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Find on Current Page","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Table Result Local Filter","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Record View","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Table Coloring Options","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Show Geo Viewer","depth":4,"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Show Chart","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"CSV","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Export Data…","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Copy to Database…","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Compare Data","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"View as","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Show Options Menu","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.088194445,"height":0.027777778},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"8","depth":4,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Highlighted Error","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Jobs\\Crm;\n\nuse Exception;\nuse Illuminate\\Contracts\\Queue\\ShouldBeUnique;\nuse Illuminate\\Contracts\\Queue\\ShouldQueue;\nuse Illuminate\\Database\\Connection;\nuse Illuminate\\Queue\\InteractsWithQueue;\nuse Illuminate\\Queue\\SerializesModels;\nuse Illuminate\\Support\\Facades\\Log;\nuse Jiminny\\Component\\Queue\\Constants;\nuse Jiminny\\Exceptions\\InvalidArgumentException;\nuse Jiminny\\Jobs\\Job;\nuse Jiminny\\Models\\Activity;\nuse Jiminny\\Models\\Crm\\Configuration;\nuse Jiminny\\Repositories\\ActivityRepository;\nuse Jiminny\\Services\\Crm\\CrmActivityService;\nuse Psr\\Container\\ContainerExceptionInterface;\nuse Psr\\Container\\NotFoundExceptionInterface;\nuse Throwable;\n\nclass MatchActivityCrmData extends Job implements ShouldQueue, ShouldBeUnique\n{\n use InteractsWithQueue;\n use SerializesModels;\n\n public int $tries = 3;\n\n private int $activityId;\n private ?Configuration $fromConfiguration;\n private bool $remoteSearch;\n\n public function __construct(\n int $activityId,\n ?Configuration $fromConfiguration = null,\n bool $remoteSearch = false,\n ) {\n $this->activityId = $activityId;\n $this->fromConfiguration = $fromConfiguration;\n $this->remoteSearch = $remoteSearch;\n\n $this->onQueue(Constants::QUEUE_ANALYTICS_LOW);\n }\n\n public function uniqueId(): string\n {\n $configId = $this->fromConfiguration?->getId() ?? 0;\n $remote = $this->remoteSearch ? 'remote' : 'local';\n\n return \"$this->activityId:$configId:$remote\";\n }\n\n public function timeout(): int\n {\n return 300; // 5 minutes max execution time\n }\n\n public function uniqueFor(): int\n {\n return $this->timeout() + 60; // timeout + 1 minute buffer\n }\n\n public function backoff(): array\n {\n return [30, 90, 180];\n }\n\n /**\n * @throws ContainerExceptionInterface\n * @throws NotFoundExceptionInterface\n * @throws Exception|Throwable\n */\n public function handle(\n ActivityRepository $activityRepository,\n CrmActivityService $crmActivityService,\n Connection $connection,\n ): void {\n $activity = $activityRepository->findById($this->activityId);\n if ($activity === null) {\n throw new InvalidArgumentException('[MatchActivityCrmData] Cannot find activity.');\n }\n\n try {\n $connection->transaction(function () use ($activity, $crmActivityService, $activityRepository) {\n Log::info('[MatchActivityCrmData] Starting CRM data matching', [\n 'activity' => $this->activityId,\n 'remote_search' => $this->remoteSearch,\n 'set_configuration' => $this->fromConfiguration?->getId(),\n 'old_state' => [\n 'lead_id' => $activity->getLead()?->getId(),\n 'contact_id' => $activity->getContact()?->getId(),\n 'account_id' => $activity->getAccount()?->getId(),\n 'opportunity_id' => $activity->getOpportunity()?->getId(),\n 'stage_id' => $activity->getStage()?->getId(),\n ],\n ]);\n\n $this->resetCrmMappings($activity, $activityRepository);\n\n $this->switchCrmConfigurationIfNeeded($activity);\n\n $activity->refresh();\n\n $crmActivityService->updateCrmData(\n activity: $activity,\n remoteSearch: $this->remoteSearch,\n );\n\n $hasMatch = $activity->getLead() !== null\n || $activity->getContact() !== null\n || $activity->getAccount() !== null\n || $activity->getOpportunity() !== null;\n\n if ($hasMatch) {\n Log::info('[MatchActivityCrmData] Successfully matched CRM data', [\n 'activity' => $this->activityId,\n 'remote_search' => $this->remoteSearch,\n 'lead_id' => $activity->getLead()?->getId(),\n 'contact_id' => $activity->getContact()?->getId(),\n 'account_id' => $activity->getAccount()?->getId(),\n 'opportunity_id' => $activity->getOpportunity()?->getId(),\n 'stage_id' => $activity->getStage()?->getId(),\n ]);\n } else {\n Log::info('[MatchActivityCrmData] No CRM match found', [\n 'activity' => $this->activityId,\n 'remote_search' => $this->remoteSearch,\n ]);\n }\n });\n } catch (Throwable $e) {\n Log::error('[MatchActivityCrmData] Failed to match CRM data', [\n 'activity' => $this->activityId,\n 'remote_search' => $this->remoteSearch,\n 'exception' => $e->getMessage(),\n 'trace' => $e->getTraceAsString(),\n ]);\n\n throw $e;\n }\n }\n\n public function failed(Throwable $exception): void\n {\n Log::error('[MatchActivityCrmData] Job permanently failed after all retries', [\n 'activity' => $this->activityId,\n 'remote_search' => $this->remoteSearch,\n 'from_configuration' => $this->fromConfiguration?->getId(),\n 'exception' => $exception->getMessage(),\n 'attempts' => $this->attempts(),\n ]);\n }\n\n private function resetCrmMappings(\n Activity $activity,\n ActivityRepository $activityRepository\n ): void {\n $activity->update([\n 'lead_id' => null,\n 'contact_id' => null,\n 'account_id' => null,\n 'opportunity_id' => null,\n 'stage_id' => null,\n ]);\n\n $participantsOldState = $activityRepository->getActivityParticipants($activity)\n ->map(function ($participant) {\n return [\n 'id' => $participant->id,\n 'user_id' => $participant->user_id,\n 'contact_id' => $participant->contact_id,\n 'lead_id' => $participant->lead_id,\n ];\n });\n\n if ($participantsOldState->isNotEmpty()) {\n Log::info('[MatchActivityCrmData] Participants old state', [\n 'activity' => $this->activityId,\n 'participants' => $participantsOldState->toArray(),\n ]);\n }\n\n $activity->participants()->update([\n 'user_id' => null,\n 'contact_id' => null,\n 'lead_id' => null,\n ]);\n }\n\n private function switchCrmConfigurationIfNeeded(Activity $activity): void\n {\n if ($this->fromConfiguration === null) {\n return;\n }\n\n if ($activity->getCrm()?->getId() === $this->fromConfiguration->getId()) {\n return;\n }\n\n Log::info('[MatchActivityCrmData] Switching CRM configuration', [\n 'activity' => $this->activityId,\n 'old_configuration' => $activity->getCrm()?->getId(),\n 'new_configuration' => $this->fromConfiguration->getId(),\n ]);\n\n $activity->update([\n 'crm_configuration_id' => $this->fromConfiguration->getId(),\n 'crm_provider_id' => null,\n ]);\n }\n}","depth":4,"on_screen":true,"value":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Jobs\\Crm;\n\nuse Exception;\nuse Illuminate\\Contracts\\Queue\\ShouldBeUnique;\nuse Illuminate\\Contracts\\Queue\\ShouldQueue;\nuse Illuminate\\Database\\Connection;\nuse Illuminate\\Queue\\InteractsWithQueue;\nuse Illuminate\\Queue\\SerializesModels;\nuse Illuminate\\Support\\Facades\\Log;\nuse Jiminny\\Component\\Queue\\Constants;\nuse Jiminny\\Exceptions\\InvalidArgumentException;\nuse Jiminny\\Jobs\\Job;\nuse Jiminny\\Models\\Activity;\nuse Jiminny\\Models\\Crm\\Configuration;\nuse Jiminny\\Repositories\\ActivityRepository;\nuse Jiminny\\Services\\Crm\\CrmActivityService;\nuse Psr\\Container\\ContainerExceptionInterface;\nuse Psr\\Container\\NotFoundExceptionInterface;\nuse Throwable;\n\nclass MatchActivityCrmData extends Job implements ShouldQueue, ShouldBeUnique\n{\n use InteractsWithQueue;\n use SerializesModels;\n\n public int $tries = 3;\n\n private int $activityId;\n private ?Configuration $fromConfiguration;\n private bool $remoteSearch;\n\n public function __construct(\n int $activityId,\n ?Configuration $fromConfiguration = null,\n bool $remoteSearch = false,\n ) {\n $this->activityId = $activityId;\n $this->fromConfiguration = $fromConfiguration;\n $this->remoteSearch = $remoteSearch;\n\n $this->onQueue(Constants::QUEUE_ANALYTICS_LOW);\n }\n\n public function uniqueId(): string\n {\n $configId = $this->fromConfiguration?->getId() ?? 0;\n $remote = $this->remoteSearch ? 'remote' : 'local';\n\n return \"$this->activityId:$configId:$remote\";\n }\n\n public function timeout(): int\n {\n return 300; // 5 minutes max execution time\n }\n\n public function uniqueFor(): int\n {\n return $this->timeout() + 60; // timeout + 1 minute buffer\n }\n\n public function backoff(): array\n {\n return [30, 90, 180];\n }\n\n /**\n * @throws ContainerExceptionInterface\n * @throws NotFoundExceptionInterface\n * @throws Exception|Throwable\n */\n public function handle(\n ActivityRepository $activityRepository,\n CrmActivityService $crmActivityService,\n Connection $connection,\n ): void {\n $activity = $activityRepository->findById($this->activityId);\n if ($activity === null) {\n throw new InvalidArgumentException('[MatchActivityCrmData] Cannot find activity.');\n }\n\n try {\n $connection->transaction(function () use ($activity, $crmActivityService, $activityRepository) {\n Log::info('[MatchActivityCrmData] Starting CRM data matching', [\n 'activity' => $this->activityId,\n 'remote_search' => $this->remoteSearch,\n 'set_configuration' => $this->fromConfiguration?->getId(),\n 'old_state' => [\n 'lead_id' => $activity->getLead()?->getId(),\n 'contact_id' => $activity->getContact()?->getId(),\n 'account_id' => $activity->getAccount()?->getId(),\n 'opportunity_id' => $activity->getOpportunity()?->getId(),\n 'stage_id' => $activity->getStage()?->getId(),\n ],\n ]);\n\n $this->resetCrmMappings($activity, $activityRepository);\n\n $this->switchCrmConfigurationIfNeeded($activity);\n\n $activity->refresh();\n\n $crmActivityService->updateCrmData(\n activity: $activity,\n remoteSearch: $this->remoteSearch,\n );\n\n $hasMatch = $activity->getLead() !== null\n || $activity->getContact() !== null\n || $activity->getAccount() !== null\n || $activity->getOpportunity() !== null;\n\n if ($hasMatch) {\n Log::info('[MatchActivityCrmData] Successfully matched CRM data', [\n 'activity' => $this->activityId,\n 'remote_search' => $this->remoteSearch,\n 'lead_id' => $activity->getLead()?->getId(),\n 'contact_id' => $activity->getContact()?->getId(),\n 'account_id' => $activity->getAccount()?->getId(),\n 'opportunity_id' => $activity->getOpportunity()?->getId(),\n 'stage_id' => $activity->getStage()?->getId(),\n ]);\n } else {\n Log::info('[MatchActivityCrmData] No CRM match found', [\n 'activity' => $this->activityId,\n 'remote_search' => $this->remoteSearch,\n ]);\n }\n });\n } catch (Throwable $e) {\n Log::error('[MatchActivityCrmData] Failed to match CRM data', [\n 'activity' => $this->activityId,\n 'remote_search' => $this->remoteSearch,\n 'exception' => $e->getMessage(),\n 'trace' => $e->getTraceAsString(),\n ]);\n\n throw $e;\n }\n }\n\n public function failed(Throwable $exception): void\n {\n Log::error('[MatchActivityCrmData] Job permanently failed after all retries', [\n 'activity' => $this->activityId,\n 'remote_search' => $this->remoteSearch,\n 'from_configuration' => $this->fromConfiguration?->getId(),\n 'exception' => $exception->getMessage(),\n 'attempts' => $this->attempts(),\n ]);\n }\n\n private function resetCrmMappings(\n Activity $activity,\n ActivityRepository $activityRepository\n ): void {\n $activity->update([\n 'lead_id' => null,\n 'contact_id' => null,\n 'account_id' => null,\n 'opportunity_id' => null,\n 'stage_id' => null,\n ]);\n\n $participantsOldState = $activityRepository->getActivityParticipants($activity)\n ->map(function ($participant) {\n return [\n 'id' => $participant->id,\n 'user_id' => $participant->user_id,\n 'contact_id' => $participant->contact_id,\n 'lead_id' => $participant->lead_id,\n ];\n });\n\n if ($participantsOldState->isNotEmpty()) {\n Log::info('[MatchActivityCrmData] Participants old state', [\n 'activity' => $this->activityId,\n 'participants' => $participantsOldState->toArray(),\n ]);\n }\n\n $activity->participants()->update([\n 'user_id' => null,\n 'contact_id' => null,\n 'lead_id' => null,\n ]);\n }\n\n private function switchCrmConfigurationIfNeeded(Activity $activity): void\n {\n if ($this->fromConfiguration === null) {\n return;\n }\n\n if ($activity->getCrm()?->getId() === $this->fromConfiguration->getId()) {\n return;\n }\n\n Log::info('[MatchActivityCrmData] Switching CRM configuration', [\n 'activity' => $this->activityId,\n 'old_configuration' => $activity->getCrm()?->getId(),\n 'new_configuration' => $this->fromConfiguration->getId(),\n ]);\n\n $activity->update([\n 'crm_configuration_id' => $this->fromConfiguration->getId(),\n 'crm_provider_id' => null,\n ]);\n }\n}","role_description":"text entry area","is_enabled":true,"is_focused":true,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Project","depth":3,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Project","depth":3,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"New File or Directory…","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Expand Selected","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Collapse All","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Options","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
-7745782060890281856
|
5513544986711540284
|
click
|
accessibility
|
NULL
|
Project: faVsco.js, menu
master, menu
Start Listen Project: faVsco.js, menu
master, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
A
1
Select All
5190
5190
0
4e3f2289-a3d2-5235-b410-b94ebb547490
4e3f2289-a3d2-5235-b410-b94ebb547490
Umbrella Corp
2
2
0
2
2
0
1212213464
1212213464
Umbrella Corp
430
430
0
579583316
579583316
Umbrella Corp
Umbrella Corp
Umbrella Corp
Umbrella Corp
[PHONE]
[PHONE]
Umbrella Corp
<null>
<null>
Umbrella Corp
<null>
<null>
Umbrella Corp
umbrellacorp.com
umbrellacorp.com
Umbrella Corp
/abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4/avatars/1212213464.png
/abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4/avatars/1212213464.png
Umbrella Corp
<null>
<null>
Umbrella Corp
0
0
0
<null>
<null>
Umbrella Corp
2026-03-30 06:44:25
2026-03-30 06:44:25
Umbrella Corp
2019-02-01 15:39:53
2019-02-01 15:39:53
Umbrella Corp
2026-03-30 06:44:25
2026-03-30 06:44:25
Umbrella Corp
id = 5190
Editor
1 row
Reload Page
Table Result Auto Refresh
Cancel Running Statements
Add Row
Delete Row
Revert Selected
Preview Pending Changes
Submit
Tx: Auto
DDL
Find on Current Page
Table Result Local Filter
Record View
Table Coloring Options
Show Geo Viewer
Show Chart
CSV
Export Data…
Copy to Database…
Compare Data
View as
Show Options Menu
Sync Changes
Hide This Notification
Code changed:
Hide
8
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Jobs\Crm;
use Exception;
use Illuminate\Contracts\Queue\ShouldBeUnique;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Database\Connection;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Queue\SerializesModels;
use Illuminate\Support\Facades\Log;
use Jiminny\Component\Queue\Constants;
use Jiminny\Exceptions\InvalidArgumentException;
use Jiminny\Jobs\Job;
use Jiminny\Models\Activity;
use Jiminny\Models\Crm\Configuration;
use Jiminny\Repositories\ActivityRepository;
use Jiminny\Services\Crm\CrmActivityService;
use Psr\Container\ContainerExceptionInterface;
use Psr\Container\NotFoundExceptionInterface;
use Throwable;
class MatchActivityCrmData extends Job implements ShouldQueue, ShouldBeUnique
{
use InteractsWithQueue;
use SerializesModels;
public int $tries = 3;
private int $activityId;
private ?Configuration $fromConfiguration;
private bool $remoteSearch;
public function __construct(
int $activityId,
?Configuration $fromConfiguration = null,
bool $remoteSearch = false,
) {
$this->activityId = $activityId;
$this->fromConfiguration = $fromConfiguration;
$this->remoteSearch = $remoteSearch;
$this->onQueue(Constants::QUEUE_ANALYTICS_LOW);
}
public function uniqueId(): string
{
$configId = $this->fromConfiguration?->getId() ?? 0;
$remote = $this->remoteSearch ? 'remote' : 'local';
return "$this->activityId:$configId:$remote";
}
public function timeout(): int
{
return 300; // 5 minutes max execution time
}
public function uniqueFor(): int
{
return $this->timeout() + 60; // timeout + 1 minute buffer
}
public function backoff(): array
{
return [30, 90, 180];
}
/**
* @throws ContainerExceptionInterface
* @throws NotFoundExceptionInterface
* @throws Exception|Throwable
*/
public function handle(
ActivityRepository $activityRepository,
CrmActivityService $crmActivityService,
Connection $connection,
): void {
$activity = $activityRepository->findById($this->activityId);
if ($activity === null) {
throw new InvalidArgumentException('[MatchActivityCrmData] Cannot find activity.');
}
try {
$connection->transaction(function () use ($activity, $crmActivityService, $activityRepository) {
Log::info('[MatchActivityCrmData] Starting CRM data matching', [
'activity' => $this->activityId,
'remote_search' => $this->remoteSearch,
'set_configuration' => $this->fromConfiguration?->getId(),
'old_state' => [
'lead_id' => $activity->getLead()?->getId(),
'contact_id' => $activity->getContact()?->getId(),
'account_id' => $activity->getAccount()?->getId(),
'opportunity_id' => $activity->getOpportunity()?->getId(),
'stage_id' => $activity->getStage()?->getId(),
],
]);
$this->resetCrmMappings($activity, $activityRepository);
$this->switchCrmConfigurationIfNeeded($activity);
$activity->refresh();
$crmActivityService->updateCrmData(
activity: $activity,
remoteSearch: $this->remoteSearch,
);
$hasMatch = $activity->getLead() !== null
|| $activity->getContact() !== null
|| $activity->getAccount() !== null
|| $activity->getOpportunity() !== null;
if ($hasMatch) {
Log::info('[MatchActivityCrmData] Successfully matched CRM data', [
'activity' => $this->activityId,
'remote_search' => $this->remoteSearch,
'lead_id' => $activity->getLead()?->getId(),
'contact_id' => $activity->getContact()?->getId(),
'account_id' => $activity->getAccount()?->getId(),
'opportunity_id' => $activity->getOpportunity()?->getId(),
'stage_id' => $activity->getStage()?->getId(),
]);
} else {
Log::info('[MatchActivityCrmData] No CRM match found', [
'activity' => $this->activityId,
'remote_search' => $this->remoteSearch,
]);
}
});
} catch (Throwable $e) {
Log::error('[MatchActivityCrmData] Failed to match CRM data', [
'activity' => $this->activityId,
'remote_search' => $this->remoteSearch,
'exception' => $e->getMessage(),
'trace' => $e->getTraceAsString(),
]);
throw $e;
}
}
public function failed(Throwable $exception): void
{
Log::error('[MatchActivityCrmData] Job permanently failed after all retries', [
'activity' => $this->activityId,
'remote_search' => $this->remoteSearch,
'from_configuration' => $this->fromConfiguration?->getId(),
'exception' => $exception->getMessage(),
'attempts' => $this->attempts(),
]);
}
private function resetCrmMappings(
Activity $activity,
ActivityRepository $activityRepository
): void {
$activity->update([
'lead_id' => null,
'contact_id' => null,
'account_id' => null,
'opportunity_id' => null,
'stage_id' => null,
]);
$participantsOldState = $activityRepository->getActivityParticipants($activity)
->map(function ($participant) {
return [
'id' => $participant->id,
'user_id' => $participant->user_id,
'contact_id' => $participant->contact_id,
'lead_id' => $participant->lead_id,
];
});
if ($participantsOldState->isNotEmpty()) {
Log::info('[MatchActivityCrmData] Participants old state', [
'activity' => $this->activityId,
'participants' => $participantsOldState->toArray(),
]);
}
$activity->participants()->update([
'user_id' => null,
'contact_id' => null,
'lead_id' => null,
]);
}
private function switchCrmConfigurationIfNeeded(Activity $activity): void
{
if ($this->fromConfiguration === null) {
return;
}
if ($activity->getCrm()?->getId() === $this->fromConfiguration->getId()) {
return;
}
Log::info('[MatchActivityCrmData] Switching CRM configuration', [
'activity' => $this->activityId,
'old_configuration' => $activity->getCrm()?->getId(),
'new_configuration' => $this->fromConfiguration->getId(),
]);
$activity->update([
'crm_configuration_id' => $this->fromConfiguration->getId(),
'crm_provider_id' => null,
]);
}
}
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
3779
|
NULL
|
NULL
|
NULL
|
|
3866
|
NULL
|
0
|
2026-05-07T12:45:44.657455+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-07/1778 /Users/lukas/.screenpipe/data/data/2026-05-07/1778157944657_m2.jpg...
|
PhpStorm
|
faVsco.js – Hubspot/Service.php
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
master, menu
Start Listen Project: faVsco.js, menu
master, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
A
1
Select All
5190
5190
0
4e3f2289-a3d2-5235-b410-b94ebb547490
4e3f2289-a3d2-5235-b410-b94ebb547490
Umbrella Corp
2
2
0
2
2
0
1212213464
1212213464
Umbrella Corp
430
430
0
579583316
579583316
Umbrella Corp
Umbrella Corp
Umbrella Corp
Umbrella Corp
[PHONE]
[PHONE]
Umbrella Corp
<null>
<null>
Umbrella Corp
<null>
<null>
Umbrella Corp
umbrellacorp.com
umbrellacorp.com
Umbrella Corp
/abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4/avatars/1212213464.png
/abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4/avatars/1212213464.png
Umbrella Corp
<null>
<null>
Umbrella Corp
0
0
0...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"bounds":{"left":0.025930852,"top":0.019952115,"width":0.03856383,"height":0.025538707},"on_screen":true,"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"master, menu","depth":5,"bounds":{"left":0.064494684,"top":0.019952115,"width":0.040226065,"height":0.025538707},"on_screen":true,"help_text":"Git Branch: master<br/>Some incoming commits are not fetched<br/>","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Start Listening for PHP Debug Connections","depth":5,"bounds":{"left":0.8081782,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"AskJiminnyReportActivityServiceTest","depth":6,"bounds":{"left":0.8234708,"top":0.019952115,"width":0.09208777,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'AskJiminnyReportActivityServiceTest'","depth":6,"bounds":{"left":0.9155585,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'AskJiminnyReportActivityServiceTest'","depth":6,"bounds":{"left":0.9268617,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More Actions","depth":6,"bounds":{"left":0.9381649,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JetBrains AI","depth":5,"bounds":{"left":0.96609044,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Search Everywhere","depth":5,"bounds":{"left":0.9773936,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"IDE and Project Settings","depth":5,"bounds":{"left":0.9886968,"top":0.019952115,"width":0.011303186,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"A","depth":4,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":5,"bounds":{"left":0.27027926,"top":1.0,"width":0.0039893617,"height":0.0},"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Select All","depth":4,"bounds":{"left":0.52859044,"top":0.118914604,"width":0.07180851,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"5190","depth":6,"bounds":{"left":0.6007314,"top":0.14046289,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"5190","depth":7,"bounds":{"left":0.6007314,"top":0.14046289,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"0","depth":8,"bounds":{"left":0.27027926,"top":1.0,"width":0.098071806,"height":0.0},"on_screen":false,"value":"0","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"4e3f2289-a3d2-5235-b410-b94ebb547490","depth":6,"bounds":{"left":0.6007314,"top":0.16201118,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"4e3f2289-a3d2-5235-b410-b94ebb547490","depth":7,"bounds":{"left":0.6007314,"top":0.16201118,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"Umbrella Corp","depth":8,"bounds":{"left":0.27027926,"top":1.0,"width":0.098071806,"height":0.0},"on_screen":false,"value":"Umbrella Corp","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"2","depth":6,"bounds":{"left":0.6007314,"top":0.18355946,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"2","depth":7,"bounds":{"left":0.6007314,"top":0.18355946,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"0","depth":8,"bounds":{"left":0.27027926,"top":1.0,"width":0.098071806,"height":0.0},"on_screen":false,"value":"0","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"2","depth":6,"bounds":{"left":0.6007314,"top":0.20510775,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"2","depth":7,"bounds":{"left":0.6007314,"top":0.20510775,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"0","depth":8,"bounds":{"left":0.27027926,"top":1.0,"width":0.098071806,"height":0.0},"on_screen":false,"value":"0","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"1212213464","depth":6,"bounds":{"left":0.6007314,"top":0.22665602,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"1212213464","depth":7,"bounds":{"left":0.6007314,"top":0.22665602,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"Umbrella Corp","depth":8,"bounds":{"left":0.27027926,"top":1.0,"width":0.098071806,"height":0.0},"on_screen":false,"value":"Umbrella Corp","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"430","depth":6,"bounds":{"left":0.6007314,"top":0.2482043,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"430","depth":7,"bounds":{"left":0.6007314,"top":0.2482043,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"0","depth":8,"bounds":{"left":0.27027926,"top":1.0,"width":0.098071806,"height":0.0},"on_screen":false,"value":"0","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"579583316","depth":6,"bounds":{"left":0.6007314,"top":0.2697526,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"579583316","depth":7,"bounds":{"left":0.6007314,"top":0.2697526,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"Umbrella Corp","depth":8,"bounds":{"left":0.27027926,"top":1.0,"width":0.098071806,"height":0.0},"on_screen":false,"value":"Umbrella Corp","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"Umbrella Corp","depth":6,"bounds":{"left":0.6007314,"top":0.29130086,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"Umbrella Corp","depth":7,"bounds":{"left":0.6007314,"top":0.29130086,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"Umbrella Corp","depth":8,"bounds":{"left":0.27027926,"top":1.0,"width":0.098071806,"height":0.0},"on_screen":false,"value":"Umbrella Corp","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"661-244-6711","depth":6,"bounds":{"left":0.6007314,"top":0.31284916,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"661-244-6711","depth":7,"bounds":{"left":0.6007314,"top":0.31284916,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"Umbrella Corp","depth":8,"bounds":{"left":0.27027926,"top":1.0,"width":0.098071806,"height":0.0},"on_screen":false,"value":"Umbrella Corp","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"<null>","depth":6,"bounds":{"left":0.6007314,"top":0.33439744,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"<null>","depth":7,"bounds":{"left":0.6007314,"top":0.33439744,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"Umbrella Corp","depth":8,"bounds":{"left":0.27027926,"top":1.0,"width":0.098071806,"height":0.0},"on_screen":false,"value":"Umbrella Corp","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"<null>","depth":6,"bounds":{"left":0.6007314,"top":0.35594574,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"<null>","depth":7,"bounds":{"left":0.6007314,"top":0.35594574,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"Umbrella Corp","depth":8,"bounds":{"left":0.27027926,"top":1.0,"width":0.098071806,"height":0.0},"on_screen":false,"value":"Umbrella Corp","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"umbrellacorp.com","depth":6,"bounds":{"left":0.6007314,"top":0.377494,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"umbrellacorp.com","depth":7,"bounds":{"left":0.6007314,"top":0.377494,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"Umbrella Corp","depth":8,"bounds":{"left":0.27027926,"top":1.0,"width":0.098071806,"height":0.0},"on_screen":false,"value":"Umbrella Corp","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"/abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4/avatars/1212213464.png","depth":6,"bounds":{"left":0.6007314,"top":0.3990423,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"/abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4/avatars/1212213464.png","depth":7,"bounds":{"left":0.6007314,"top":0.3990423,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"Umbrella Corp","depth":8,"bounds":{"left":0.27027926,"top":1.0,"width":0.098071806,"height":0.0},"on_screen":false,"value":"Umbrella Corp","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"<null>","depth":6,"bounds":{"left":0.6007314,"top":0.42059058,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"<null>","depth":7,"bounds":{"left":0.6007314,"top":0.42059058,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"Umbrella Corp","depth":8,"bounds":{"left":0.27027926,"top":1.0,"width":0.098071806,"height":0.0},"on_screen":false,"value":"Umbrella Corp","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"0","depth":6,"bounds":{"left":0.6007314,"top":0.44213888,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"0","depth":7,"bounds":{"left":0.6007314,"top":0.44213888,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"0","depth":8,"bounds":{"left":0.27027926,"top":1.0,"width":0.098071806,"height":0.0},"on_screen":false,"value":"0","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
-1886533851580046755
|
-9177055708194027818
|
click
|
accessibility
|
NULL
|
Project: faVsco.js, menu
master, menu
Start Listen Project: faVsco.js, menu
master, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
A
1
Select All
5190
5190
0
4e3f2289-a3d2-5235-b410-b94ebb547490
4e3f2289-a3d2-5235-b410-b94ebb547490
Umbrella Corp
2
2
0
2
2
0
1212213464
1212213464
Umbrella Corp
430
430
0
579583316
579583316
Umbrella Corp
Umbrella Corp
Umbrella Corp
Umbrella Corp
[PHONE]
[PHONE]
Umbrella Corp
<null>
<null>
Umbrella Corp
<null>
<null>
Umbrella Corp
umbrellacorp.com
umbrellacorp.com
Umbrella Corp
/abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4/avatars/1212213464.png
/abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4/avatars/1212213464.png
Umbrella Corp
<null>
<null>
Umbrella Corp
0
0
0...
|
3864
|
NULL
|
NULL
|
NULL
|
|
3868
|
NULL
|
0
|
2026-05-07T12:45:53.800487+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-07/1778 /Users/lukas/.screenpipe/data/data/2026-05-07/1778157953800_m1.jpg...
|
PhpStorm
|
faVsco.js – Hubspot/Service.php
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
master, menu
Start Listen Project: faVsco.js, menu
master, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
A
1
Select All
5190
5190
0
4e3f2289-a3d2-5235-b410-b94ebb547490
4e3f2289-a3d2-5235-b410-b94ebb547490
Umbrella Corp
2
2
0
2
2
0
1212213464
1212213464
Umbrella Corp
430
430
0
579583316
579583316
Umbrella Corp
Umbrella Corp
Umbrella Corp
Umbrella Corp
[PHONE]
[PHONE]
Umbrella Corp
<null>
<null>
Umbrella Corp
<null>
<null>
Umbrella Corp
umbrellacorp.com
umbrellacorp.com
Umbrella Corp
/abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4/avatars/1212213464.png
/abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4/avatars/1212213464.png
Umbrella Corp
<null>
<null>
Umbrella Corp
0
0
0
<null>
<null>
Umbrella Corp
2026-03-30 06:44:25
2026-03-30 06:44:25
Umbrella Corp
2019-02-01 15:39:53
2019-02-01 15:39:53
Umbrella Corp
2026-03-30 06:44:25
2026-03-30 06:44:25
Umbrella Corp
id = 5190
Editor
1 row
Reload Page
Table Result Auto Refresh
Cancel Running Statements
Add Row
Delete Row
Revert Selected
Preview Pending Changes
Submit
Tx: Auto
DDL
Find on Current Page
Table Result Local Filter
Record View
Table Coloring Options
Show Geo Viewer
Show Chart
CSV
Export Data…
Copy to Database…
Compare Data
View as
Show Options Menu
Sync Changes
Hide This Notification...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"on_screen":true,"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"master, menu","depth":5,"on_screen":true,"help_text":"Git Branch: master<br/>Some incoming commits are not fetched<br/>","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Start Listening for PHP Debug Connections","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"AskJiminnyReportActivityServiceTest","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'AskJiminnyReportActivityServiceTest'","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'AskJiminnyReportActivityServiceTest'","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More Actions","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JetBrains AI","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Search Everywhere","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"IDE and Project Settings","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"A","depth":4,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":5,"bounds":{"left":0.0,"top":0.0,"width":0.008333334,"height":0.03},"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Select All","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"5190","depth":6,"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"5190","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"0","depth":8,"bounds":{"left":0.0,"top":0.0,"width":0.2048611,"height":0.024444444},"on_screen":false,"value":"0","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"4e3f2289-a3d2-5235-b410-b94ebb547490","depth":6,"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"4e3f2289-a3d2-5235-b410-b94ebb547490","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"Umbrella Corp","depth":8,"bounds":{"left":0.0,"top":0.0,"width":0.2048611,"height":0.024444444},"on_screen":false,"value":"Umbrella Corp","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"2","depth":6,"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"2","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"0","depth":8,"bounds":{"left":0.0,"top":0.0,"width":0.2048611,"height":0.024444444},"on_screen":false,"value":"0","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"2","depth":6,"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"2","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"0","depth":8,"bounds":{"left":0.0,"top":0.0,"width":0.2048611,"height":0.024444444},"on_screen":false,"value":"0","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"1212213464","depth":6,"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"1212213464","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"Umbrella Corp","depth":8,"bounds":{"left":0.0,"top":0.0,"width":0.2048611,"height":0.024444444},"on_screen":false,"value":"Umbrella Corp","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"430","depth":6,"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"430","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"0","depth":8,"bounds":{"left":0.0,"top":0.0,"width":0.2048611,"height":0.024444444},"on_screen":false,"value":"0","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"579583316","depth":6,"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"579583316","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"Umbrella Corp","depth":8,"bounds":{"left":0.0,"top":0.0,"width":0.2048611,"height":0.024444444},"on_screen":false,"value":"Umbrella Corp","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"Umbrella Corp","depth":6,"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"Umbrella Corp","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"Umbrella Corp","depth":8,"bounds":{"left":0.0,"top":0.0,"width":0.2048611,"height":0.024444444},"on_screen":false,"value":"Umbrella Corp","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"661-244-6711","depth":6,"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"661-244-6711","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"Umbrella Corp","depth":8,"bounds":{"left":0.0,"top":0.0,"width":0.2048611,"height":0.024444444},"on_screen":false,"value":"Umbrella Corp","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"<null>","depth":6,"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"<null>","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"Umbrella Corp","depth":8,"bounds":{"left":0.0,"top":0.0,"width":0.2048611,"height":0.024444444},"on_screen":false,"value":"Umbrella Corp","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"<null>","depth":6,"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"<null>","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"Umbrella Corp","depth":8,"bounds":{"left":0.0,"top":0.0,"width":0.2048611,"height":0.024444444},"on_screen":false,"value":"Umbrella Corp","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"umbrellacorp.com","depth":6,"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"umbrellacorp.com","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"Umbrella Corp","depth":8,"bounds":{"left":0.0,"top":0.0,"width":0.2048611,"height":0.024444444},"on_screen":false,"value":"Umbrella Corp","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"/abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4/avatars/1212213464.png","depth":6,"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"/abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4/avatars/1212213464.png","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"Umbrella Corp","depth":8,"bounds":{"left":0.0,"top":0.0,"width":0.2048611,"height":0.024444444},"on_screen":false,"value":"Umbrella Corp","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"<null>","depth":6,"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"<null>","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"Umbrella Corp","depth":8,"bounds":{"left":0.0,"top":0.0,"width":0.2048611,"height":0.024444444},"on_screen":false,"value":"Umbrella Corp","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"0","depth":6,"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"0","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"0","depth":8,"bounds":{"left":0.0,"top":0.0,"width":0.2048611,"height":0.024444444},"on_screen":false,"value":"0","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"<null>","depth":6,"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"<null>","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"Umbrella Corp","depth":8,"bounds":{"left":0.0,"top":0.0,"width":0.2048611,"height":0.024444444},"on_screen":false,"value":"Umbrella Corp","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"2026-03-30 06:44:25","depth":6,"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"2026-03-30 06:44:25","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"Umbrella Corp","depth":8,"bounds":{"left":0.0,"top":0.0,"width":0.2048611,"height":0.024444444},"on_screen":false,"value":"Umbrella Corp","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"2019-02-01 15:39:53","depth":6,"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"2019-02-01 15:39:53","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"Umbrella Corp","depth":8,"bounds":{"left":0.0,"top":0.0,"width":0.2048611,"height":0.024444444},"on_screen":false,"value":"Umbrella Corp","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"2026-03-30 06:44:25","depth":6,"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"2026-03-30 06:44:25","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"Umbrella Corp","depth":8,"bounds":{"left":0.0,"top":0.0,"width":0.2048611,"height":0.024444444},"on_screen":false,"value":"Umbrella Corp","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"id = 5190","depth":4,"on_screen":true,"value":"id = 5190","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"Editor","depth":4,"on_screen":true,"role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"1 row","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reload Page","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Table Result Auto Refresh","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Cancel Running Statements","depth":4,"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add Row","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Delete Row","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Revert Selected","depth":4,"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Preview Pending Changes","depth":4,"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Submit","depth":4,"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Tx: Auto","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"DDL","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Find on Current Page","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Table Result Local Filter","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Record View","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Table Coloring Options","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Show Geo Viewer","depth":4,"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Show Chart","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"CSV","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Export Data…","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Copy to Database…","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Compare Data","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"View as","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Show Options Menu","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
2626923852791894954
|
-9102742740994890020
|
click
|
accessibility
|
NULL
|
Project: faVsco.js, menu
master, menu
Start Listen Project: faVsco.js, menu
master, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
A
1
Select All
5190
5190
0
4e3f2289-a3d2-5235-b410-b94ebb547490
4e3f2289-a3d2-5235-b410-b94ebb547490
Umbrella Corp
2
2
0
2
2
0
1212213464
1212213464
Umbrella Corp
430
430
0
579583316
579583316
Umbrella Corp
Umbrella Corp
Umbrella Corp
Umbrella Corp
[PHONE]
[PHONE]
Umbrella Corp
<null>
<null>
Umbrella Corp
<null>
<null>
Umbrella Corp
umbrellacorp.com
umbrellacorp.com
Umbrella Corp
/abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4/avatars/1212213464.png
/abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4/avatars/1212213464.png
Umbrella Corp
<null>
<null>
Umbrella Corp
0
0
0
<null>
<null>
Umbrella Corp
2026-03-30 06:44:25
2026-03-30 06:44:25
Umbrella Corp
2019-02-01 15:39:53
2019-02-01 15:39:53
Umbrella Corp
2026-03-30 06:44:25
2026-03-30 06:44:25
Umbrella Corp
id = 5190
Editor
1 row
Reload Page
Table Result Auto Refresh
Cancel Running Statements
Add Row
Delete Row
Revert Selected
Preview Pending Changes
Submit
Tx: Auto
DDL
Find on Current Page
Table Result Local Filter
Record View
Table Coloring Options
Show Geo Viewer
Show Chart
CSV
Export Data…
Copy to Database…
Compare Data
View as
Show Options Menu
Sync Changes
Hide This Notification...
|
3867
|
NULL
|
NULL
|
NULL
|
|
3923
|
NULL
|
0
|
2026-05-07T12:51:04.329577+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-07/1778 /Users/lukas/.screenpipe/data/data/2026-05-07/1778158264329_m2.jpg...
|
PhpStorm
|
faVsco.js – custom.log
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
master, menu
Start Listen Project: faVsco.js, menu
master, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
Editor for custom.log
Sync Changes
Hide This Notification
Code changed:
Hide
5
120
5
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Console\Commands;
use Carbon\Carbon;
use Carbon\CarbonImmutable;
use Illuminate\Console\Command;
use InvalidArgumentException;
use Jiminny\Jobs\AutomatedReports\RequestGenerateAskJiminnyReportJob;
use Jiminny\Jobs\AutomatedReports\SendReportMailJob;
use Jiminny\Jobs\JobDispatcherInterface;
use Jiminny\Models\Activity;
use Jiminny\Models\AutomatedReport;
use Jiminny\Models\AutomatedReportResult;
use Jiminny\Models\Team;
use Jiminny\Models\User;
use Jiminny\Repositories\AutomatedReportsRepository;
use Jiminny\Services\Activity\CrmOwnerResolver;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Jiminny\Services\UserPilot\UserPilotClient;
/**
* Class JiminnyDebugCommand
*
* @package Jiminny\Console\Commands
*/
class JiminnyDebugCommand extends Command
{
public const string FREQUENCY_DAILY = 'daily';
public const string FREQUENCY_WEEKLY = 'weekly';
public const string FREQUENCY_MONTHLY = 'monthly';
public const string FREQUENCY_QUARTERLY = 'quarterly';
public const string FREQUENCY_ONE_OFF = 'one_off';
protected $signature = 'jiminny:debug';
public function handle(
JobDispatcherInterface $jobDispatcher,
AutomatedReportsService $automatedReportsService,
AutomatedReportsRepository $automatedReportsRepository,
UserPilotClient $userPilotClient
): void {
$this->rateLimit();
exit(1);
$report = AutomatedReport::find(71);
$last = AutomatedReportResult::query()
->where('report_id', $report->getId())
->whereIn('status', [AutomatedReportResult::STATUS_DEFAULT, AutomatedReportResult::STATUS_FAILED])
// ->where('reason', '!=', AutomatedReportResult::REASON_NOT_ENOUGH_ACTIVITIES)
->whereDate('created_at', CarbonImmutable::now()->toDateString())
->latest()
->first();
$this->info("Last: {$last->getId()}");
exit(1);
$user = User::find(143);
// $count = $automatedReportsRepository->countUserReports($user);
// $this->info("Count: {$count}");
// $count = $automatedReportsRepository->countAllUserReports($user);
// $this->info("All count: {$count}");
$payload = [
'report_type' => 'ask_jiminny',
'frequency' => 'weekly',
];
$userPilotClient->track($user, 'ask-jiminny-report-generated', $payload);
exit(1);
$now = Carbon::now()->subDay(1);
$this->info("Now: {$now->toDateTimeString()}");
$weekStart = Carbon::getWeekStartsAt();
$this->info("Now: {$weekStart}");
// $from = $now->copy()->previousWeekday()->startOfDay();
// $to = $now->copy()->previousWeekday()->endOfDay();
// $fromOld = $now->copy()->subWeeks(1)->startOfDay();
// $toOld = $now->copy()->subDay()->endOfDay();
// $fromNew = $now->copy()->subWeek()->startOfWeek();
// $toNew = $now->copy()->subWeek()->endOfWeek();
// $fromOld = $now->copy()->subMonths(1)->startOfDay();
// $toOld = $now->copy()->subDay()->endOfDay();
// $fromNew = $now->copy()->subMonthNoOverflow()->startOfMonth();
// $toNew = $now->copy()->subMonthNoOverflow()->endOfMonth();
$fromOld = $now->copy()->subMonths(3)->startOfDay();
$toOld = $now->copy()->subDay()->endOfDay();
$fromNew = $now->copy()->subQuarterNoOverflow()->startOfQuarter();
$toNew = $now->copy()->subQuarterNoOverflow()->endOfQuarter();
$this->info("From old: {$fromOld->toDateTimeString()}");
$this->info("To old: {$toOld->toDateTimeString()}");
$this->info("From new: {$fromNew->toDateTimeString()}");
$this->info("To new: {$toNew->toDateTimeString()}");
exit(1);
$report = AutomatedReport::find(71);
$job = new RequestGenerateAskJiminnyReportJob($report->getUuid());
$jobDispatcher->dispatch($job);
exit(1);
// $this->formatDate($jobDispatcher);
// $this->sendMail($jobDispatcher, $automatedReportsService);
// $this->crmService();
$this->getPayload($automatedReportsService);
exit(1);
}
private function crmService()
{
$activity = Activity::find(418141);
$team = Team::find(19);
$config = $team->getCrmConfiguration();
$crmResolver = app(CrmOwnerResolver::class, [
'team' => $team,
'integrationAdmin' => $team->getOwner(),
'providerSlug' => $config->getProviderName(),
]);
$crmService = $crmResolver->prepareCrmService();
$crmService->createTranscriptNotes($activity);
}
private function sendMail(JobDispatcherInterface $jobDispatcher, AutomatedReportsService $automatedReportsService)
{
$reportUuid = '';
// $report = $automatedReportsService->getReportResult($reportUuid);
$report = AutomatedReportResult::find(275);
$validRecipients = $automatedReportsService->getValidRecipientUsers(
$report->getReport(),
includeJiminny: true,
);
$recipient = $validRecipients[0];
$fileName = $automatedReportsService->getReportFileName($report);
$typeName = $report->getReport()->getCustomName()
?? $automatedReportsService->getReportTypeName($report);
$teamsName = $automatedReportsService->getReportTeamsName($report);
$periodName = $automatedReportsService->getReportPeriodName($report);
$s3Path = $automatedReportsService->getMediaPath($report);
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$fileName ' . PHP_EOL . print_r($fileName, true));
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$typeName ' . PHP_EOL . print_r($typeName, true));
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$teamsName ' . PHP_EOL . print_r($teamsName, true));
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$periodName ' . PHP_EOL . print_r($periodName, true));
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$s3Path ' . PHP_EOL . print_r($s3Path, true));
$jobDispatcher->dispatch(
new SendReportMailJob(
reportUuid: $report->getUuid(),
s3Path: $s3Path,
recipientEmail: $recipient['email'],
recipientName: $recipient['name'] ?? null,
fileName: $fileName,
typeName: $typeName,
teamsName: $teamsName,
periodName: $periodName,
isAskJiminny: true,
)
);
exit(1);
}
private function formatDate(JobDispatcherInterface $jobDispatcher): void
{
$customName = 'Custom report name';
// $frequency = self::FREQUENCY_DAILY;
// $frequency = self::FREQUENCY_WEEKLY;
$frequency = self::FREQUENCY_MONTHLY;
// $frequency = self::FREQUENCY_QUARTERLY;
// $frequency = self::FREQUENCY_ONE_OFF;
$period = $this->calculateFromAndToDatePeriod($frequency);
$from = $period['fromDate'];
$to = $period['toDate'];
$periodName = $this->formatReportPeriodName($frequency, $from, $to);
$filenameSuffix = null;
if ($customName) {
if ($filenameSuffix) {
$customName .= " {$filenameSuffix}";
}
$result = $this->sanitizeFileName("{$customName} - {$periodName}");
}
$this->info($result);
}
public function calculateFromAndToDatePeriod(
string $frequency,
?Carbon $fromDate = null,
?Carbon $toDate = null
): array {
if ($frequency === self::FREQUENCY_ONE_OFF) {
return [
'fromDate' => $fromDate,
'toDate' => $toDate,
];
}
$now = Carbon::now();
return match ($frequency) {
self::FREQUENCY_DAILY => [
'fromDate' => $now->copy()->subDay()->startOfDay(),
'toDate' => $now->copy()->subDay()->endOfDay(),
],
self::FREQUENCY_WEEKLY => [
'fromDate' => $now->copy()->subWeeks(1)->startOfDay(),
'toDate' => $now->copy()->subDay()->endOfDay(),
],
self::FREQUENCY_MONTHLY => [
'fromDate' => $now->copy()->subMonths(1)->startOfDay(),
'toDate' => $now->copy()->subDay()->endOfDay(),
],
self::FREQUENCY_QUARTERLY => [
'fromDate' => $now->copy()->subMonths(3)->startOfDay(),
'toDate' => $now->copy()->subDay()->endOfDay(),
],
default => throw new InvalidArgumentException("Unsupported frequency: {$frequency}"),
};
}
private function formatReportPeriodName(string $frequency, Carbon $from, Carbon $to): string
{
$fromYear = $from->format('Y');
$toYear = $to->format('Y');
$differentYears = $fromYear !== $toYear;
switch ($frequency) {
case self::FREQUENCY_DAILY:
return $from->format('j M Y');
case self::FREQUENCY_QUARTERLY:
// 'Jan-Mar 2025' or 'Nov 2024-Jan 2025' if years differ
$startMonth = $from->format('M');
$endMonth = $to->copy()->subMonth();
$endMonthName = $endMonth->format('M');
$endMonthYear = $endMonth->format('Y');
if ($differentYears) {
return "{$startMonth} {$fromYear} - {$endMonthName} {$endMonthYear}";
}
return "{$startMonth} - {$endMonthName} {$toYear}";
case self::FREQUENCY_MONTHLY:
// 'May 2025' - monthly reports are always within the same year
return $from->format('M Y');
case self::FREQUENCY_WEEKLY:
// '4 - 8 Aug 2025', '27 Oct - 3 Nov 2025', or '28 Dec 2024 - 3 Jan 2025' if years differ
$startDay = $from->format('j');
$endDay = $to->format('j');
$startMonth = $from->format('M');
$endMonth = $to->format('M');
if ($differentYears) {
return "{$startDay} {$startMonth} {$fromYear} - {$endDay} {$endMonth} {$toYear}";
}
if ($startMonth !== $endMonth) {
return "{$startDay} {$startMonth} - {$endDay} {$endMonth} {$toYear}";
}
return "{$startDay} - {$endDay} {$endMonth} {$toYear}";
case self::FREQUENCY_ONE_OFF:
// '2 May-31 May 2025' or '15 Dec 2024-15 Jan 2025' if years differ
$startDay = $from->format('j');
$startMonth = $from->format('M');
$endDay = $to->format('j');
$endMonth = $to->format('M');
// If same month and year, use a format like '2-31 May 2025'
if ($startMonth === $endMonth && ! $differentYears) {
return "{$startDay} - {$endDay} {$startMonth} {$toYear}";
}
// If different years, include both years
if ($differentYears) {
return "{$startDay} {$startMonth} {$fromYear} - {$endDay} {$endMonth} {$toYear}";
}
// Same year but different months
return "{$startDay} {$startMonth} - {$endDay} {$endMonth} {$toYear}";
default:
// Default format for unknown frequencies
return $from->format('j M Y') . ' - ' . $to->format('j M Y');
}
}
public function sanitizeFileName(string $fileName): string
{
return str_replace(['/', '\\'], '-', $fileName);
}
private function getPayload(AutomatedReportsService $automatedReportsService)
{
$reportResult = AutomatedReportResult::find(269);
$automatedReport = $reportResult->getReport();
$activityIds = [1,2,3];
$payload = $automatedReportsService->getAskJiminnyGenerateReportPayload(
automatedReport: $automatedReport,
reportResult: $reportResult,
activityIds: $activityIds,
);
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$payload ' . PHP_EOL . print_r($payload, true));
}
private function rateLimit()
{
$team = Team::find(2);
$config = $team->getCrmConfiguration();
$crmResolver = app(CrmOwnerResolver::class, [
'team' => $team,
'integrationAdmin' => $team->getOwner(),
'providerSlug' => $config->getProviderName(),
]);
$crmService = $crmResolver->prepareCrmService();
for ($i = 0 ; $i < 10; $i++) {
// if ($i % 25 === 0) {
// $this->info("Syncing opportunity {$i}");
$this->info("Matching contact {$i}");
// }
// $crmService->syncOpportunity('374720564');
$crmService->matchByName('Robot');
}
}
}
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"bounds":{"left":0.025930852,"top":0.019952115,"width":0.03856383,"height":0.025538707},"on_screen":true,"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"master, menu","depth":5,"bounds":{"left":0.064494684,"top":0.019952115,"width":0.040226065,"height":0.025538707},"on_screen":true,"help_text":"Git Branch: master<br/>Some incoming commits are not fetched<br/>","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Start Listening for PHP Debug Connections","depth":5,"bounds":{"left":0.8081782,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"AskJiminnyReportActivityServiceTest","depth":6,"bounds":{"left":0.8234708,"top":0.019952115,"width":0.09208777,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'AskJiminnyReportActivityServiceTest'","depth":6,"bounds":{"left":0.9155585,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'AskJiminnyReportActivityServiceTest'","depth":6,"bounds":{"left":0.9268617,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More Actions","depth":6,"bounds":{"left":0.9381649,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JetBrains AI","depth":5,"bounds":{"left":0.96609044,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Search Everywhere","depth":5,"bounds":{"left":0.9773936,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"IDE and Project Settings","depth":5,"bounds":{"left":0.9886968,"top":0.019952115,"width":0.011303186,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.042220745,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"Editor for custom.log","depth":4,"bounds":{"left":0.5475399,"top":0.0726257,"width":0.44082448,"height":0.9066241},"on_screen":true,"role_description":"text entry area","is_enabled":true,"is_focused":true,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.042220745,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"5","depth":4,"bounds":{"left":0.48038563,"top":0.19952115,"width":0.007978723,"height":0.015163607},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"120","depth":4,"bounds":{"left":0.49035904,"top":0.19952115,"width":0.011968086,"height":0.015163607},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"5","depth":4,"bounds":{"left":0.5043218,"top":0.19952115,"width":0.007978723,"height":0.015163607},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"bounds":{"left":0.51396275,"top":0.19792499,"width":0.00731383,"height":0.018355945},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Highlighted Error","depth":4,"bounds":{"left":0.5212766,"top":0.19792499,"width":0.006981383,"height":0.018355945},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Console\\Commands;\n\nuse Carbon\\Carbon;\nuse Carbon\\CarbonImmutable;\nuse Illuminate\\Console\\Command;\nuse InvalidArgumentException;\nuse Jiminny\\Jobs\\AutomatedReports\\RequestGenerateAskJiminnyReportJob;\nuse Jiminny\\Jobs\\AutomatedReports\\SendReportMailJob;\nuse Jiminny\\Jobs\\JobDispatcherInterface;\nuse Jiminny\\Models\\Activity;\nuse Jiminny\\Models\\AutomatedReport;\nuse Jiminny\\Models\\AutomatedReportResult;\nuse Jiminny\\Models\\Team;\nuse Jiminny\\Models\\User;\nuse Jiminny\\Repositories\\AutomatedReportsRepository;\nuse Jiminny\\Services\\Activity\\CrmOwnerResolver;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Jiminny\\Services\\UserPilot\\UserPilotClient;\n\n/**\n * Class JiminnyDebugCommand\n *\n * @package Jiminny\\Console\\Commands\n */\nclass JiminnyDebugCommand extends Command\n{\n public const string FREQUENCY_DAILY = 'daily';\n public const string FREQUENCY_WEEKLY = 'weekly';\n public const string FREQUENCY_MONTHLY = 'monthly';\n public const string FREQUENCY_QUARTERLY = 'quarterly';\n public const string FREQUENCY_ONE_OFF = 'one_off';\n protected $signature = 'jiminny:debug';\n\n public function handle(\n JobDispatcherInterface $jobDispatcher,\n AutomatedReportsService $automatedReportsService,\n AutomatedReportsRepository $automatedReportsRepository,\n UserPilotClient $userPilotClient\n ): void {\n $this->rateLimit();\n exit(1);\n\n\n\n $report = AutomatedReport::find(71);\n $last = AutomatedReportResult::query()\n ->where('report_id', $report->getId())\n ->whereIn('status', [AutomatedReportResult::STATUS_DEFAULT, AutomatedReportResult::STATUS_FAILED])\n// ->where('reason', '!=', AutomatedReportResult::REASON_NOT_ENOUGH_ACTIVITIES)\n ->whereDate('created_at', CarbonImmutable::now()->toDateString())\n ->latest()\n ->first();\n\n $this->info(\"Last: {$last->getId()}\");\n\n exit(1);\n\n $user = User::find(143);\n // $count = $automatedReportsRepository->countUserReports($user);\n // $this->info(\"Count: {$count}\");\n // $count = $automatedReportsRepository->countAllUserReports($user);\n // $this->info(\"All count: {$count}\");\n\n $payload = [\n 'report_type' => 'ask_jiminny',\n 'frequency' => 'weekly',\n ];\n $userPilotClient->track($user, 'ask-jiminny-report-generated', $payload);\n\n exit(1);\n\n $now = Carbon::now()->subDay(1);\n $this->info(\"Now: {$now->toDateTimeString()}\");\n $weekStart = Carbon::getWeekStartsAt();\n $this->info(\"Now: {$weekStart}\");\n\n // $from = $now->copy()->previousWeekday()->startOfDay();\n // $to = $now->copy()->previousWeekday()->endOfDay();\n\n // $fromOld = $now->copy()->subWeeks(1)->startOfDay();\n // $toOld = $now->copy()->subDay()->endOfDay();\n // $fromNew = $now->copy()->subWeek()->startOfWeek();\n // $toNew = $now->copy()->subWeek()->endOfWeek();\n\n // $fromOld = $now->copy()->subMonths(1)->startOfDay();\n // $toOld = $now->copy()->subDay()->endOfDay();\n // $fromNew = $now->copy()->subMonthNoOverflow()->startOfMonth();\n // $toNew = $now->copy()->subMonthNoOverflow()->endOfMonth();\n\n $fromOld = $now->copy()->subMonths(3)->startOfDay();\n $toOld = $now->copy()->subDay()->endOfDay();\n $fromNew = $now->copy()->subQuarterNoOverflow()->startOfQuarter();\n $toNew = $now->copy()->subQuarterNoOverflow()->endOfQuarter();\n\n $this->info(\"From old: {$fromOld->toDateTimeString()}\");\n $this->info(\"To old: {$toOld->toDateTimeString()}\");\n $this->info(\"From new: {$fromNew->toDateTimeString()}\");\n $this->info(\"To new: {$toNew->toDateTimeString()}\");\n\n exit(1);\n\n $report = AutomatedReport::find(71);\n\n $job = new RequestGenerateAskJiminnyReportJob($report->getUuid());\n $jobDispatcher->dispatch($job);\n\n exit(1);\n\n\n // $this->formatDate($jobDispatcher);\n // $this->sendMail($jobDispatcher, $automatedReportsService);\n // $this->crmService();\n\n $this->getPayload($automatedReportsService);\n\n exit(1);\n }\n\n\n\n private function crmService()\n {\n $activity = Activity::find(418141);\n\n $team = Team::find(19);\n $config = $team->getCrmConfiguration();\n\n $crmResolver = app(CrmOwnerResolver::class, [\n 'team' => $team,\n 'integrationAdmin' => $team->getOwner(),\n 'providerSlug' => $config->getProviderName(),\n ]);\n\n $crmService = $crmResolver->prepareCrmService();\n\n $crmService->createTranscriptNotes($activity);\n }\n\n private function sendMail(JobDispatcherInterface $jobDispatcher, AutomatedReportsService $automatedReportsService)\n {\n $reportUuid = '';\n // $report = $automatedReportsService->getReportResult($reportUuid);\n $report = AutomatedReportResult::find(275);\n $validRecipients = $automatedReportsService->getValidRecipientUsers(\n $report->getReport(),\n includeJiminny: true,\n );\n\n $recipient = $validRecipients[0];\n\n $fileName = $automatedReportsService->getReportFileName($report);\n $typeName = $report->getReport()->getCustomName()\n ?? $automatedReportsService->getReportTypeName($report);\n $teamsName = $automatedReportsService->getReportTeamsName($report);\n $periodName = $automatedReportsService->getReportPeriodName($report);\n $s3Path = $automatedReportsService->getMediaPath($report);\n\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$fileName ' . PHP_EOL . print_r($fileName, true));\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$typeName ' . PHP_EOL . print_r($typeName, true));\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$teamsName ' . PHP_EOL . print_r($teamsName, true));\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$periodName ' . PHP_EOL . print_r($periodName, true));\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$s3Path ' . PHP_EOL . print_r($s3Path, true));\n\n $jobDispatcher->dispatch(\n new SendReportMailJob(\n reportUuid: $report->getUuid(),\n s3Path: $s3Path,\n recipientEmail: $recipient['email'],\n recipientName: $recipient['name'] ?? null,\n fileName: $fileName,\n typeName: $typeName,\n teamsName: $teamsName,\n periodName: $periodName,\n isAskJiminny: true,\n )\n );\n\n exit(1);\n }\n\n private function formatDate(JobDispatcherInterface $jobDispatcher): void\n {\n $customName = 'Custom report name';\n // $frequency = self::FREQUENCY_DAILY;\n // $frequency = self::FREQUENCY_WEEKLY;\n $frequency = self::FREQUENCY_MONTHLY;\n // $frequency = self::FREQUENCY_QUARTERLY;\n // $frequency = self::FREQUENCY_ONE_OFF;\n $period = $this->calculateFromAndToDatePeriod($frequency);\n $from = $period['fromDate'];\n $to = $period['toDate'];\n $periodName = $this->formatReportPeriodName($frequency, $from, $to);\n $filenameSuffix = null;\n\n if ($customName) {\n if ($filenameSuffix) {\n $customName .= \" {$filenameSuffix}\";\n }\n\n $result = $this->sanitizeFileName(\"{$customName} - {$periodName}\");\n }\n\n $this->info($result);\n }\n\n public function calculateFromAndToDatePeriod(\n string $frequency,\n ?Carbon $fromDate = null,\n ?Carbon $toDate = null\n ): array {\n if ($frequency === self::FREQUENCY_ONE_OFF) {\n return [\n 'fromDate' => $fromDate,\n 'toDate' => $toDate,\n ];\n }\n\n $now = Carbon::now();\n\n return match ($frequency) {\n self::FREQUENCY_DAILY => [\n 'fromDate' => $now->copy()->subDay()->startOfDay(),\n 'toDate' => $now->copy()->subDay()->endOfDay(),\n ],\n self::FREQUENCY_WEEKLY => [\n 'fromDate' => $now->copy()->subWeeks(1)->startOfDay(),\n 'toDate' => $now->copy()->subDay()->endOfDay(),\n ],\n self::FREQUENCY_MONTHLY => [\n 'fromDate' => $now->copy()->subMonths(1)->startOfDay(),\n 'toDate' => $now->copy()->subDay()->endOfDay(),\n ],\n self::FREQUENCY_QUARTERLY => [\n 'fromDate' => $now->copy()->subMonths(3)->startOfDay(),\n 'toDate' => $now->copy()->subDay()->endOfDay(),\n ],\n default => throw new InvalidArgumentException(\"Unsupported frequency: {$frequency}\"),\n };\n }\n\n private function formatReportPeriodName(string $frequency, Carbon $from, Carbon $to): string\n {\n $fromYear = $from->format('Y');\n $toYear = $to->format('Y');\n $differentYears = $fromYear !== $toYear;\n\n switch ($frequency) {\n case self::FREQUENCY_DAILY:\n return $from->format('j M Y');\n\n case self::FREQUENCY_QUARTERLY:\n // 'Jan-Mar 2025' or 'Nov 2024-Jan 2025' if years differ\n $startMonth = $from->format('M');\n $endMonth = $to->copy()->subMonth();\n $endMonthName = $endMonth->format('M');\n $endMonthYear = $endMonth->format('Y');\n\n if ($differentYears) {\n return \"{$startMonth} {$fromYear} - {$endMonthName} {$endMonthYear}\";\n }\n\n return \"{$startMonth} - {$endMonthName} {$toYear}\";\n\n case self::FREQUENCY_MONTHLY:\n // 'May 2025' - monthly reports are always within the same year\n return $from->format('M Y');\n\n case self::FREQUENCY_WEEKLY:\n // '4 - 8 Aug 2025', '27 Oct - 3 Nov 2025', or '28 Dec 2024 - 3 Jan 2025' if years differ\n $startDay = $from->format('j');\n $endDay = $to->format('j');\n $startMonth = $from->format('M');\n $endMonth = $to->format('M');\n\n if ($differentYears) {\n return \"{$startDay} {$startMonth} {$fromYear} - {$endDay} {$endMonth} {$toYear}\";\n }\n\n if ($startMonth !== $endMonth) {\n return \"{$startDay} {$startMonth} - {$endDay} {$endMonth} {$toYear}\";\n }\n\n return \"{$startDay} - {$endDay} {$endMonth} {$toYear}\";\n\n case self::FREQUENCY_ONE_OFF:\n // '2 May-31 May 2025' or '15 Dec 2024-15 Jan 2025' if years differ\n $startDay = $from->format('j');\n $startMonth = $from->format('M');\n $endDay = $to->format('j');\n $endMonth = $to->format('M');\n\n // If same month and year, use a format like '2-31 May 2025'\n if ($startMonth === $endMonth && ! $differentYears) {\n return \"{$startDay} - {$endDay} {$startMonth} {$toYear}\";\n }\n\n // If different years, include both years\n if ($differentYears) {\n return \"{$startDay} {$startMonth} {$fromYear} - {$endDay} {$endMonth} {$toYear}\";\n }\n\n // Same year but different months\n return \"{$startDay} {$startMonth} - {$endDay} {$endMonth} {$toYear}\";\n\n default:\n // Default format for unknown frequencies\n return $from->format('j M Y') . ' - ' . $to->format('j M Y');\n }\n }\n\n public function sanitizeFileName(string $fileName): string\n {\n return str_replace(['/', '\\\\'], '-', $fileName);\n }\n\n private function getPayload(AutomatedReportsService $automatedReportsService)\n {\n $reportResult = AutomatedReportResult::find(269);\n $automatedReport = $reportResult->getReport();\n $activityIds = [1,2,3];\n $payload = $automatedReportsService->getAskJiminnyGenerateReportPayload(\n automatedReport: $automatedReport,\n reportResult: $reportResult,\n activityIds: $activityIds,\n );\n\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$payload ' . PHP_EOL . print_r($payload, true));\n }\n\n private function rateLimit()\n {\n $team = Team::find(2);\n $config = $team->getCrmConfiguration();\n\n $crmResolver = app(CrmOwnerResolver::class, [\n 'team' => $team,\n 'integrationAdmin' => $team->getOwner(),\n 'providerSlug' => $config->getProviderName(),\n ]);\n\n $crmService = $crmResolver->prepareCrmService();\n\n for ($i = 0 ; $i < 10; $i++) {\n// if ($i % 25 === 0) {\n// $this->info(\"Syncing opportunity {$i}\");\n $this->info(\"Matching contact {$i}\");\n// }\n// $crmService->syncOpportunity('374720564');\n $crmService->matchByName('Robot');\n }\n }\n}","depth":4,"on_screen":true,"value":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Console\\Commands;\n\nuse Carbon\\Carbon;\nuse Carbon\\CarbonImmutable;\nuse Illuminate\\Console\\Command;\nuse InvalidArgumentException;\nuse Jiminny\\Jobs\\AutomatedReports\\RequestGenerateAskJiminnyReportJob;\nuse Jiminny\\Jobs\\AutomatedReports\\SendReportMailJob;\nuse Jiminny\\Jobs\\JobDispatcherInterface;\nuse Jiminny\\Models\\Activity;\nuse Jiminny\\Models\\AutomatedReport;\nuse Jiminny\\Models\\AutomatedReportResult;\nuse Jiminny\\Models\\Team;\nuse Jiminny\\Models\\User;\nuse Jiminny\\Repositories\\AutomatedReportsRepository;\nuse Jiminny\\Services\\Activity\\CrmOwnerResolver;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Jiminny\\Services\\UserPilot\\UserPilotClient;\n\n/**\n * Class JiminnyDebugCommand\n *\n * @package Jiminny\\Console\\Commands\n */\nclass JiminnyDebugCommand extends Command\n{\n public const string FREQUENCY_DAILY = 'daily';\n public const string FREQUENCY_WEEKLY = 'weekly';\n public const string FREQUENCY_MONTHLY = 'monthly';\n public const string FREQUENCY_QUARTERLY = 'quarterly';\n public const string FREQUENCY_ONE_OFF = 'one_off';\n protected $signature = 'jiminny:debug';\n\n public function handle(\n JobDispatcherInterface $jobDispatcher,\n AutomatedReportsService $automatedReportsService,\n AutomatedReportsRepository $automatedReportsRepository,\n UserPilotClient $userPilotClient\n ): void {\n $this->rateLimit();\n exit(1);\n\n\n\n $report = AutomatedReport::find(71);\n $last = AutomatedReportResult::query()\n ->where('report_id', $report->getId())\n ->whereIn('status', [AutomatedReportResult::STATUS_DEFAULT, AutomatedReportResult::STATUS_FAILED])\n// ->where('reason', '!=', AutomatedReportResult::REASON_NOT_ENOUGH_ACTIVITIES)\n ->whereDate('created_at', CarbonImmutable::now()->toDateString())\n ->latest()\n ->first();\n\n $this->info(\"Last: {$last->getId()}\");\n\n exit(1);\n\n $user = User::find(143);\n // $count = $automatedReportsRepository->countUserReports($user);\n // $this->info(\"Count: {$count}\");\n // $count = $automatedReportsRepository->countAllUserReports($user);\n // $this->info(\"All count: {$count}\");\n\n $payload = [\n 'report_type' => 'ask_jiminny',\n 'frequency' => 'weekly',\n ];\n $userPilotClient->track($user, 'ask-jiminny-report-generated', $payload);\n\n exit(1);\n\n $now = Carbon::now()->subDay(1);\n $this->info(\"Now: {$now->toDateTimeString()}\");\n $weekStart = Carbon::getWeekStartsAt();\n $this->info(\"Now: {$weekStart}\");\n\n // $from = $now->copy()->previousWeekday()->startOfDay();\n // $to = $now->copy()->previousWeekday()->endOfDay();\n\n // $fromOld = $now->copy()->subWeeks(1)->startOfDay();\n // $toOld = $now->copy()->subDay()->endOfDay();\n // $fromNew = $now->copy()->subWeek()->startOfWeek();\n // $toNew = $now->copy()->subWeek()->endOfWeek();\n\n // $fromOld = $now->copy()->subMonths(1)->startOfDay();\n // $toOld = $now->copy()->subDay()->endOfDay();\n // $fromNew = $now->copy()->subMonthNoOverflow()->startOfMonth();\n // $toNew = $now->copy()->subMonthNoOverflow()->endOfMonth();\n\n $fromOld = $now->copy()->subMonths(3)->startOfDay();\n $toOld = $now->copy()->subDay()->endOfDay();\n $fromNew = $now->copy()->subQuarterNoOverflow()->startOfQuarter();\n $toNew = $now->copy()->subQuarterNoOverflow()->endOfQuarter();\n\n $this->info(\"From old: {$fromOld->toDateTimeString()}\");\n $this->info(\"To old: {$toOld->toDateTimeString()}\");\n $this->info(\"From new: {$fromNew->toDateTimeString()}\");\n $this->info(\"To new: {$toNew->toDateTimeString()}\");\n\n exit(1);\n\n $report = AutomatedReport::find(71);\n\n $job = new RequestGenerateAskJiminnyReportJob($report->getUuid());\n $jobDispatcher->dispatch($job);\n\n exit(1);\n\n\n // $this->formatDate($jobDispatcher);\n // $this->sendMail($jobDispatcher, $automatedReportsService);\n // $this->crmService();\n\n $this->getPayload($automatedReportsService);\n\n exit(1);\n }\n\n\n\n private function crmService()\n {\n $activity = Activity::find(418141);\n\n $team = Team::find(19);\n $config = $team->getCrmConfiguration();\n\n $crmResolver = app(CrmOwnerResolver::class, [\n 'team' => $team,\n 'integrationAdmin' => $team->getOwner(),\n 'providerSlug' => $config->getProviderName(),\n ]);\n\n $crmService = $crmResolver->prepareCrmService();\n\n $crmService->createTranscriptNotes($activity);\n }\n\n private function sendMail(JobDispatcherInterface $jobDispatcher, AutomatedReportsService $automatedReportsService)\n {\n $reportUuid = '';\n // $report = $automatedReportsService->getReportResult($reportUuid);\n $report = AutomatedReportResult::find(275);\n $validRecipients = $automatedReportsService->getValidRecipientUsers(\n $report->getReport(),\n includeJiminny: true,\n );\n\n $recipient = $validRecipients[0];\n\n $fileName = $automatedReportsService->getReportFileName($report);\n $typeName = $report->getReport()->getCustomName()\n ?? $automatedReportsService->getReportTypeName($report);\n $teamsName = $automatedReportsService->getReportTeamsName($report);\n $periodName = $automatedReportsService->getReportPeriodName($report);\n $s3Path = $automatedReportsService->getMediaPath($report);\n\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$fileName ' . PHP_EOL . print_r($fileName, true));\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$typeName ' . PHP_EOL . print_r($typeName, true));\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$teamsName ' . PHP_EOL . print_r($teamsName, true));\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$periodName ' . PHP_EOL . print_r($periodName, true));\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$s3Path ' . PHP_EOL . print_r($s3Path, true));\n\n $jobDispatcher->dispatch(\n new SendReportMailJob(\n reportUuid: $report->getUuid(),\n s3Path: $s3Path,\n recipientEmail: $recipient['email'],\n recipientName: $recipient['name'] ?? null,\n fileName: $fileName,\n typeName: $typeName,\n teamsName: $teamsName,\n periodName: $periodName,\n isAskJiminny: true,\n )\n );\n\n exit(1);\n }\n\n private function formatDate(JobDispatcherInterface $jobDispatcher): void\n {\n $customName = 'Custom report name';\n // $frequency = self::FREQUENCY_DAILY;\n // $frequency = self::FREQUENCY_WEEKLY;\n $frequency = self::FREQUENCY_MONTHLY;\n // $frequency = self::FREQUENCY_QUARTERLY;\n // $frequency = self::FREQUENCY_ONE_OFF;\n $period = $this->calculateFromAndToDatePeriod($frequency);\n $from = $period['fromDate'];\n $to = $period['toDate'];\n $periodName = $this->formatReportPeriodName($frequency, $from, $to);\n $filenameSuffix = null;\n\n if ($customName) {\n if ($filenameSuffix) {\n $customName .= \" {$filenameSuffix}\";\n }\n\n $result = $this->sanitizeFileName(\"{$customName} - {$periodName}\");\n }\n\n $this->info($result);\n }\n\n public function calculateFromAndToDatePeriod(\n string $frequency,\n ?Carbon $fromDate = null,\n ?Carbon $toDate = null\n ): array {\n if ($frequency === self::FREQUENCY_ONE_OFF) {\n return [\n 'fromDate' => $fromDate,\n 'toDate' => $toDate,\n ];\n }\n\n $now = Carbon::now();\n\n return match ($frequency) {\n self::FREQUENCY_DAILY => [\n 'fromDate' => $now->copy()->subDay()->startOfDay(),\n 'toDate' => $now->copy()->subDay()->endOfDay(),\n ],\n self::FREQUENCY_WEEKLY => [\n 'fromDate' => $now->copy()->subWeeks(1)->startOfDay(),\n 'toDate' => $now->copy()->subDay()->endOfDay(),\n ],\n self::FREQUENCY_MONTHLY => [\n 'fromDate' => $now->copy()->subMonths(1)->startOfDay(),\n 'toDate' => $now->copy()->subDay()->endOfDay(),\n ],\n self::FREQUENCY_QUARTERLY => [\n 'fromDate' => $now->copy()->subMonths(3)->startOfDay(),\n 'toDate' => $now->copy()->subDay()->endOfDay(),\n ],\n default => throw new InvalidArgumentException(\"Unsupported frequency: {$frequency}\"),\n };\n }\n\n private function formatReportPeriodName(string $frequency, Carbon $from, Carbon $to): string\n {\n $fromYear = $from->format('Y');\n $toYear = $to->format('Y');\n $differentYears = $fromYear !== $toYear;\n\n switch ($frequency) {\n case self::FREQUENCY_DAILY:\n return $from->format('j M Y');\n\n case self::FREQUENCY_QUARTERLY:\n // 'Jan-Mar 2025' or 'Nov 2024-Jan 2025' if years differ\n $startMonth = $from->format('M');\n $endMonth = $to->copy()->subMonth();\n $endMonthName = $endMonth->format('M');\n $endMonthYear = $endMonth->format('Y');\n\n if ($differentYears) {\n return \"{$startMonth} {$fromYear} - {$endMonthName} {$endMonthYear}\";\n }\n\n return \"{$startMonth} - {$endMonthName} {$toYear}\";\n\n case self::FREQUENCY_MONTHLY:\n // 'May 2025' - monthly reports are always within the same year\n return $from->format('M Y');\n\n case self::FREQUENCY_WEEKLY:\n // '4 - 8 Aug 2025', '27 Oct - 3 Nov 2025', or '28 Dec 2024 - 3 Jan 2025' if years differ\n $startDay = $from->format('j');\n $endDay = $to->format('j');\n $startMonth = $from->format('M');\n $endMonth = $to->format('M');\n\n if ($differentYears) {\n return \"{$startDay} {$startMonth} {$fromYear} - {$endDay} {$endMonth} {$toYear}\";\n }\n\n if ($startMonth !== $endMonth) {\n return \"{$startDay} {$startMonth} - {$endDay} {$endMonth} {$toYear}\";\n }\n\n return \"{$startDay} - {$endDay} {$endMonth} {$toYear}\";\n\n case self::FREQUENCY_ONE_OFF:\n // '2 May-31 May 2025' or '15 Dec 2024-15 Jan 2025' if years differ\n $startDay = $from->format('j');\n $startMonth = $from->format('M');\n $endDay = $to->format('j');\n $endMonth = $to->format('M');\n\n // If same month and year, use a format like '2-31 May 2025'\n if ($startMonth === $endMonth && ! $differentYears) {\n return \"{$startDay} - {$endDay} {$startMonth} {$toYear}\";\n }\n\n // If different years, include both years\n if ($differentYears) {\n return \"{$startDay} {$startMonth} {$fromYear} - {$endDay} {$endMonth} {$toYear}\";\n }\n\n // Same year but different months\n return \"{$startDay} {$startMonth} - {$endDay} {$endMonth} {$toYear}\";\n\n default:\n // Default format for unknown frequencies\n return $from->format('j M Y') . ' - ' . $to->format('j M Y');\n }\n }\n\n public function sanitizeFileName(string $fileName): string\n {\n return str_replace(['/', '\\\\'], '-', $fileName);\n }\n\n private function getPayload(AutomatedReportsService $automatedReportsService)\n {\n $reportResult = AutomatedReportResult::find(269);\n $automatedReport = $reportResult->getReport();\n $activityIds = [1,2,3];\n $payload = $automatedReportsService->getAskJiminnyGenerateReportPayload(\n automatedReport: $automatedReport,\n reportResult: $reportResult,\n activityIds: $activityIds,\n );\n\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$payload ' . PHP_EOL . print_r($payload, true));\n }\n\n private function rateLimit()\n {\n $team = Team::find(2);\n $config = $team->getCrmConfiguration();\n\n $crmResolver = app(CrmOwnerResolver::class, [\n 'team' => $team,\n 'integrationAdmin' => $team->getOwner(),\n 'providerSlug' => $config->getProviderName(),\n ]);\n\n $crmService = $crmResolver->prepareCrmService();\n\n for ($i = 0 ; $i < 10; $i++) {\n// if ($i % 25 === 0) {\n// $this->info(\"Syncing opportunity {$i}\");\n $this->info(\"Matching contact {$i}\");\n// }\n// $crmService->syncOpportunity('374720564');\n $crmService->matchByName('Robot');\n }\n }\n}","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Project","depth":3,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Project","depth":3,"bounds":{"left":0.011968086,"top":0.047885075,"width":0.024268618,"height":0.024740623},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"New File or Directory…","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Expand Selected","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Collapse All","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Options","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
-8348027173667851869
|
3603296091339582859
|
click
|
accessibility
|
NULL
|
Project: faVsco.js, menu
master, menu
Start Listen Project: faVsco.js, menu
master, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
Editor for custom.log
Sync Changes
Hide This Notification
Code changed:
Hide
5
120
5
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Console\Commands;
use Carbon\Carbon;
use Carbon\CarbonImmutable;
use Illuminate\Console\Command;
use InvalidArgumentException;
use Jiminny\Jobs\AutomatedReports\RequestGenerateAskJiminnyReportJob;
use Jiminny\Jobs\AutomatedReports\SendReportMailJob;
use Jiminny\Jobs\JobDispatcherInterface;
use Jiminny\Models\Activity;
use Jiminny\Models\AutomatedReport;
use Jiminny\Models\AutomatedReportResult;
use Jiminny\Models\Team;
use Jiminny\Models\User;
use Jiminny\Repositories\AutomatedReportsRepository;
use Jiminny\Services\Activity\CrmOwnerResolver;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Jiminny\Services\UserPilot\UserPilotClient;
/**
* Class JiminnyDebugCommand
*
* @package Jiminny\Console\Commands
*/
class JiminnyDebugCommand extends Command
{
public const string FREQUENCY_DAILY = 'daily';
public const string FREQUENCY_WEEKLY = 'weekly';
public const string FREQUENCY_MONTHLY = 'monthly';
public const string FREQUENCY_QUARTERLY = 'quarterly';
public const string FREQUENCY_ONE_OFF = 'one_off';
protected $signature = 'jiminny:debug';
public function handle(
JobDispatcherInterface $jobDispatcher,
AutomatedReportsService $automatedReportsService,
AutomatedReportsRepository $automatedReportsRepository,
UserPilotClient $userPilotClient
): void {
$this->rateLimit();
exit(1);
$report = AutomatedReport::find(71);
$last = AutomatedReportResult::query()
->where('report_id', $report->getId())
->whereIn('status', [AutomatedReportResult::STATUS_DEFAULT, AutomatedReportResult::STATUS_FAILED])
// ->where('reason', '!=', AutomatedReportResult::REASON_NOT_ENOUGH_ACTIVITIES)
->whereDate('created_at', CarbonImmutable::now()->toDateString())
->latest()
->first();
$this->info("Last: {$last->getId()}");
exit(1);
$user = User::find(143);
// $count = $automatedReportsRepository->countUserReports($user);
// $this->info("Count: {$count}");
// $count = $automatedReportsRepository->countAllUserReports($user);
// $this->info("All count: {$count}");
$payload = [
'report_type' => 'ask_jiminny',
'frequency' => 'weekly',
];
$userPilotClient->track($user, 'ask-jiminny-report-generated', $payload);
exit(1);
$now = Carbon::now()->subDay(1);
$this->info("Now: {$now->toDateTimeString()}");
$weekStart = Carbon::getWeekStartsAt();
$this->info("Now: {$weekStart}");
// $from = $now->copy()->previousWeekday()->startOfDay();
// $to = $now->copy()->previousWeekday()->endOfDay();
// $fromOld = $now->copy()->subWeeks(1)->startOfDay();
// $toOld = $now->copy()->subDay()->endOfDay();
// $fromNew = $now->copy()->subWeek()->startOfWeek();
// $toNew = $now->copy()->subWeek()->endOfWeek();
// $fromOld = $now->copy()->subMonths(1)->startOfDay();
// $toOld = $now->copy()->subDay()->endOfDay();
// $fromNew = $now->copy()->subMonthNoOverflow()->startOfMonth();
// $toNew = $now->copy()->subMonthNoOverflow()->endOfMonth();
$fromOld = $now->copy()->subMonths(3)->startOfDay();
$toOld = $now->copy()->subDay()->endOfDay();
$fromNew = $now->copy()->subQuarterNoOverflow()->startOfQuarter();
$toNew = $now->copy()->subQuarterNoOverflow()->endOfQuarter();
$this->info("From old: {$fromOld->toDateTimeString()}");
$this->info("To old: {$toOld->toDateTimeString()}");
$this->info("From new: {$fromNew->toDateTimeString()}");
$this->info("To new: {$toNew->toDateTimeString()}");
exit(1);
$report = AutomatedReport::find(71);
$job = new RequestGenerateAskJiminnyReportJob($report->getUuid());
$jobDispatcher->dispatch($job);
exit(1);
// $this->formatDate($jobDispatcher);
// $this->sendMail($jobDispatcher, $automatedReportsService);
// $this->crmService();
$this->getPayload($automatedReportsService);
exit(1);
}
private function crmService()
{
$activity = Activity::find(418141);
$team = Team::find(19);
$config = $team->getCrmConfiguration();
$crmResolver = app(CrmOwnerResolver::class, [
'team' => $team,
'integrationAdmin' => $team->getOwner(),
'providerSlug' => $config->getProviderName(),
]);
$crmService = $crmResolver->prepareCrmService();
$crmService->createTranscriptNotes($activity);
}
private function sendMail(JobDispatcherInterface $jobDispatcher, AutomatedReportsService $automatedReportsService)
{
$reportUuid = '';
// $report = $automatedReportsService->getReportResult($reportUuid);
$report = AutomatedReportResult::find(275);
$validRecipients = $automatedReportsService->getValidRecipientUsers(
$report->getReport(),
includeJiminny: true,
);
$recipient = $validRecipients[0];
$fileName = $automatedReportsService->getReportFileName($report);
$typeName = $report->getReport()->getCustomName()
?? $automatedReportsService->getReportTypeName($report);
$teamsName = $automatedReportsService->getReportTeamsName($report);
$periodName = $automatedReportsService->getReportPeriodName($report);
$s3Path = $automatedReportsService->getMediaPath($report);
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$fileName ' . PHP_EOL . print_r($fileName, true));
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$typeName ' . PHP_EOL . print_r($typeName, true));
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$teamsName ' . PHP_EOL . print_r($teamsName, true));
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$periodName ' . PHP_EOL . print_r($periodName, true));
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$s3Path ' . PHP_EOL . print_r($s3Path, true));
$jobDispatcher->dispatch(
new SendReportMailJob(
reportUuid: $report->getUuid(),
s3Path: $s3Path,
recipientEmail: $recipient['email'],
recipientName: $recipient['name'] ?? null,
fileName: $fileName,
typeName: $typeName,
teamsName: $teamsName,
periodName: $periodName,
isAskJiminny: true,
)
);
exit(1);
}
private function formatDate(JobDispatcherInterface $jobDispatcher): void
{
$customName = 'Custom report name';
// $frequency = self::FREQUENCY_DAILY;
// $frequency = self::FREQUENCY_WEEKLY;
$frequency = self::FREQUENCY_MONTHLY;
// $frequency = self::FREQUENCY_QUARTERLY;
// $frequency = self::FREQUENCY_ONE_OFF;
$period = $this->calculateFromAndToDatePeriod($frequency);
$from = $period['fromDate'];
$to = $period['toDate'];
$periodName = $this->formatReportPeriodName($frequency, $from, $to);
$filenameSuffix = null;
if ($customName) {
if ($filenameSuffix) {
$customName .= " {$filenameSuffix}";
}
$result = $this->sanitizeFileName("{$customName} - {$periodName}");
}
$this->info($result);
}
public function calculateFromAndToDatePeriod(
string $frequency,
?Carbon $fromDate = null,
?Carbon $toDate = null
): array {
if ($frequency === self::FREQUENCY_ONE_OFF) {
return [
'fromDate' => $fromDate,
'toDate' => $toDate,
];
}
$now = Carbon::now();
return match ($frequency) {
self::FREQUENCY_DAILY => [
'fromDate' => $now->copy()->subDay()->startOfDay(),
'toDate' => $now->copy()->subDay()->endOfDay(),
],
self::FREQUENCY_WEEKLY => [
'fromDate' => $now->copy()->subWeeks(1)->startOfDay(),
'toDate' => $now->copy()->subDay()->endOfDay(),
],
self::FREQUENCY_MONTHLY => [
'fromDate' => $now->copy()->subMonths(1)->startOfDay(),
'toDate' => $now->copy()->subDay()->endOfDay(),
],
self::FREQUENCY_QUARTERLY => [
'fromDate' => $now->copy()->subMonths(3)->startOfDay(),
'toDate' => $now->copy()->subDay()->endOfDay(),
],
default => throw new InvalidArgumentException("Unsupported frequency: {$frequency}"),
};
}
private function formatReportPeriodName(string $frequency, Carbon $from, Carbon $to): string
{
$fromYear = $from->format('Y');
$toYear = $to->format('Y');
$differentYears = $fromYear !== $toYear;
switch ($frequency) {
case self::FREQUENCY_DAILY:
return $from->format('j M Y');
case self::FREQUENCY_QUARTERLY:
// 'Jan-Mar 2025' or 'Nov 2024-Jan 2025' if years differ
$startMonth = $from->format('M');
$endMonth = $to->copy()->subMonth();
$endMonthName = $endMonth->format('M');
$endMonthYear = $endMonth->format('Y');
if ($differentYears) {
return "{$startMonth} {$fromYear} - {$endMonthName} {$endMonthYear}";
}
return "{$startMonth} - {$endMonthName} {$toYear}";
case self::FREQUENCY_MONTHLY:
// 'May 2025' - monthly reports are always within the same year
return $from->format('M Y');
case self::FREQUENCY_WEEKLY:
// '4 - 8 Aug 2025', '27 Oct - 3 Nov 2025', or '28 Dec 2024 - 3 Jan 2025' if years differ
$startDay = $from->format('j');
$endDay = $to->format('j');
$startMonth = $from->format('M');
$endMonth = $to->format('M');
if ($differentYears) {
return "{$startDay} {$startMonth} {$fromYear} - {$endDay} {$endMonth} {$toYear}";
}
if ($startMonth !== $endMonth) {
return "{$startDay} {$startMonth} - {$endDay} {$endMonth} {$toYear}";
}
return "{$startDay} - {$endDay} {$endMonth} {$toYear}";
case self::FREQUENCY_ONE_OFF:
// '2 May-31 May 2025' or '15 Dec 2024-15 Jan 2025' if years differ
$startDay = $from->format('j');
$startMonth = $from->format('M');
$endDay = $to->format('j');
$endMonth = $to->format('M');
// If same month and year, use a format like '2-31 May 2025'
if ($startMonth === $endMonth && ! $differentYears) {
return "{$startDay} - {$endDay} {$startMonth} {$toYear}";
}
// If different years, include both years
if ($differentYears) {
return "{$startDay} {$startMonth} {$fromYear} - {$endDay} {$endMonth} {$toYear}";
}
// Same year but different months
return "{$startDay} {$startMonth} - {$endDay} {$endMonth} {$toYear}";
default:
// Default format for unknown frequencies
return $from->format('j M Y') . ' - ' . $to->format('j M Y');
}
}
public function sanitizeFileName(string $fileName): string
{
return str_replace(['/', '\\'], '-', $fileName);
}
private function getPayload(AutomatedReportsService $automatedReportsService)
{
$reportResult = AutomatedReportResult::find(269);
$automatedReport = $reportResult->getReport();
$activityIds = [1,2,3];
$payload = $automatedReportsService->getAskJiminnyGenerateReportPayload(
automatedReport: $automatedReport,
reportResult: $reportResult,
activityIds: $activityIds,
);
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$payload ' . PHP_EOL . print_r($payload, true));
}
private function rateLimit()
{
$team = Team::find(2);
$config = $team->getCrmConfiguration();
$crmResolver = app(CrmOwnerResolver::class, [
'team' => $team,
'integrationAdmin' => $team->getOwner(),
'providerSlug' => $config->getProviderName(),
]);
$crmService = $crmResolver->prepareCrmService();
for ($i = 0 ; $i < 10; $i++) {
// if ($i % 25 === 0) {
// $this->info("Syncing opportunity {$i}");
$this->info("Matching contact {$i}");
// }
// $crmService->syncOpportunity('374720564');
$crmService->matchByName('Robot');
}
}
}
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
3921
|
NULL
|
NULL
|
NULL
|
|
3924
|
NULL
|
0
|
2026-05-07T12:51:04.440857+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-07/1778 /Users/lukas/.screenpipe/data/data/2026-05-07/1778158264440_m1.jpg...
|
PhpStorm
|
faVsco.js – custom.log
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
master, menu
Start Listen Project: faVsco.js, menu
master, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
Editor for custom.log
Sync Changes
Hide This Notification
Code changed:
Hide
5
120
5
Previous Highlighted Error...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"on_screen":true,"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"master, menu","depth":5,"on_screen":true,"help_text":"Git Branch: master<br/>Some incoming commits are not fetched<br/>","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Start Listening for PHP Debug Connections","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"AskJiminnyReportActivityServiceTest","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'AskJiminnyReportActivityServiceTest'","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'AskJiminnyReportActivityServiceTest'","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More Actions","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JetBrains AI","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Search Everywhere","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"IDE and Project Settings","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.088194445,"height":0.027777778},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"Editor for custom.log","depth":4,"on_screen":true,"role_description":"text entry area","is_enabled":true,"is_focused":true,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.088194445,"height":0.027777778},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"5","depth":4,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"120","depth":4,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"5","depth":4,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"on_screen":true,"role_description":"button","is_focused":false,"is_selected":false,"is_expanded":false}]...
|
5160449999225645032
|
-8708811441753191486
|
click
|
hybrid
|
NULL
|
Project: faVsco.js, menu
master, menu
Start Listen Project: faVsco.js, menu
master, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
Editor for custom.log
Sync Changes
Hide This Notification
Code changed:
Hide
5
120
5
Previous Highlighted Error
iTerm2ShellEditViewSessionScriptsProfilesWindowHelp(wbl# Lukas/Stefka 121 • in 1h 39 m100% <478DEV (docker)DOCKERDEV (docker)882APP (-zsh)jiminny-worker-processing-4:jiminny-worker-processing-4_00: stoppedjiminny-worker-processing-5:jiminny-worker-processing-5_00: stoppedjiminny-worker-processing-delayed: jiminny-worker-processing-delayed_00: stoppedworker-analytics:worker-analytics_00: stoppedworker-download:worker-download_00: stoppedworker-crm-update:worker-crm-update_00: stoppedworker:worker_00: stoppedjiminny-worker-processing-1:jiminny-worker-processing-1_00: stoppedworker-audio:worker-audio_00: stoppedworker-calendar:worker-calendar_00:stoppedworker-conferences:worker-conferences_00:stoppedworker-crm-sync:worker-crm-sync_00:stoppedworker-emails:worker-emails_00:stoppedworker-es-update:worker-es-update_00: stoppedartisan-schedule:artisan-schedule_00: stoppedartisan-schedule:artisan-schedule_00: startedjiminny-worker-processing-1:jiminny-worker-processing-1_00: startedjiminny-worker-processing-2:jiminny-worker-processing-2_00: startedjiminny-worker-processing-3:jiminny-worker-processing-3_00: startedjiminny-worker-processing-4:jiminny-worker-processing-4_00: startedjiminny-worker-processing-5:j1minny-worker-processing-5_00: startedjiminny-worker-processing-delayed: jiminny-worker-processing-delayed_00: startedworker:worker_00: startedworker-analytics:worker-analytics_00: startedworker-audio:worker-audio_00: startedworker-calendar:worker-calendar_00: startedworker-conferences:worker-conferences_00: startedworker-crm-sync:worker-crm-sync_00: startedworker-crm-update:worker-crm-update_00: startedworker-download:worker-download_00: startedworker-emails:worker-emails_00: startedworker-es-update:worker-es-update_00:startedworker-nudges:worker-nudges_00: startedroot@docker_lamp_1:/home/jiminny# php artisan jiminny: debugMatching contact 0Matching contact 1Matching contact 2Matching contactMatchingcontact 4Matchingcontact 5Matching contact 6Matching contact 7Matching contact 8Matching contact 9root@docker_lamp_1:/home/jiminny# ]-zsh• $4screenpipe*-zshThu 7 May 15:51:04T₴1₴6DEV...
|
3922
|
NULL
|
NULL
|
NULL
|
|
3992
|
NULL
|
0
|
2026-05-07T12:56:04.133954+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-07/1778 /Users/lukas/.screenpipe/data/data/2026-05-07/1778158564133_m2.jpg...
|
PhpStorm
|
faVsco.js – HubspotPaginationService.php
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
master, menu
Start Listen Project: faVsco.js, menu
master, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
43
Previous Highlighted Error
Next Highlighted Error
[2026-05-07 12:52:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"fa8a3008-d298-4682-bbbc-fdc77520e0d7","trace_id":"7cfb2afb-9fc4-4a77-81be-65dce93c7d80"}
[2026-05-07 12:52:08] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"fa8a3008-d298-4682-bbbc-fdc77520e0d7","trace_id":"7cfb2afb-9fc4-4a77-81be-65dce93c7d80"}
[2026-05-07 12:52:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"fa8a3008-d298-4682-bbbc-fdc77520e0d7","trace_id":"7cfb2afb-9fc4-4a77-81be-65dce93c7d80"}
[2026-05-07 12:52:12] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"932ced9d-9804-48ed-976a-1f8bf5e75707","trace_id":"21bf320c-58f3-4082-831d-9f07f6c6a669"}
[2026-05-07 12:52:12] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"932ced9d-9804-48ed-976a-1f8bf5e75707","trace_id":"21bf320c-58f3-4082-831d-9f07f6c6a669"}
[2026-05-07 12:52:17] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1499,"provider":"hubspot"} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:17] local.INFO: [SocialAccountService] Token retrieved {"socialAccountId":1499,"provider":"hubspot"} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:17] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:17] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {"crm_provider":"hubspot","crm_owner":148,"team_id":2} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:17] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"[URL_WITH_CREDENTIALS] HubspotException
* @throws SocialAccountTokenInvalidException
* @throws BadRequest
*/
public function getPaginatedDataGenerator(
Client $client,
array $payload,
string $type,
int $offset = 0,
int &$total = 0,
?string &$lastRecordId = null
): \Generator {
$state = new PaginationState(offset: $offset);
$endpoint = Client::BASE_URL . "/crm/v3/objects/{$type}/search";
$defaultFilter = $payload['filters'] ?? [];
$resultsPerPage = PayloadBuilder::MAX_SEARCH_REQUEST_LIMIT;
$teamId = $client->getConfig()->getTeam()->getId();
$delay = $this->calculateDelayInMicroseconds();
do {
// if ($this->shouldStopPagination($state, $teamId)) {
// break;
// }
$payload = $this->handlePaginationStrategy($payload, $defaultFilter, $state, $resultsPerPage, $teamId);
// $this->validateTokenIfNeeded($client, $state);
// usleep($delay);
$page = $this->executeSearchRequest($client, $endpoint, $payload, $state);
// $state->setTotal($page['total'] ?? 0);
// $this->updateLastRecordId($page, $state);
//
// // Safely iterate over results with null check
// $results = $page['results'] ?? [];
// foreach ($results as $row) {
// $state->incrementTotalRecords();
// yield $row;
// }
//
// $state->setOffset($this->getNextOffset($page));
// $state->incrementRequestCount();
//
// $this->logPaginationProgress($state, $teamId, $endpoint);
} while ($state->offset && ! empty($page['results']));
// Log final pagination completion stats
$this->logger->info('[Hubspot] Pagination completed', [
'team_id' => $teamId,
'endpoint' => $endpoint,
'total_requests' => $state->requestCount,
'total_records_fetched' => $state->totalRecords,
'total_elapsed_seconds' => round($state->getElapsedSeconds(), 2),
'average_seconds_per_request' => $state->requestCount > 0 ? round($state->getElapsedSeconds() / $state->requestCount, 2) : 0,
]);
// Update reference parameters
$total = $state->total;
$lastRecordId = $state->lastRecordId;
}
private function shouldStopPagination(PaginationState $state, int $teamId): bool
{
if ($state->hasReachedSafetyLimit()) {
$this->logger->warning('[Hubspot] Reached maximum request limit during pagination', [
'team_id' => $teamId,
'safety_limit' => PaginationConfig::LOOP_SAFETY_LIMIT,
'total_fetched' => $state->totalRecords,
]);
return true;
}
return false;
}
private function handlePaginationStrategy(
array $payload,
array $defaultFilter,
PaginationState $state,
int $resultsPerPage,
int $teamId
): array {
if ($this->shouldSwitchToKeysetPagination($state, $resultsPerPage)) {
$payload['filters'] = $defaultFilter;
$payload['filters'][] = [
'propertyName' => 'hs_object_id',
'operator' => 'LT',
'value' => $state->lastRecordId,
];
$this->logger->info('[Hubspot] Search keyset pagination request', [
'team_id' => $teamId,
'sequence' => $state->requestCount,
'itemsPerPage' => $resultsPerPage,
'payload' => $payload,
'total' => $state->total,
]);
unset($payload['after']);
$state->setOffset(0);
}
if ($state->offset) {
$payload['after'] = $state->offset;
}
return $payload;
}
private function shouldSwitchToKeysetPagination(PaginationState $state, int $resultsPerPage): bool
{
// Check if we've hit the offset limit
$shouldSwitch = $state->requestCount > 0 && ($state->offset + $resultsPerPage) > PaginationConfig::TOTAL_QUERY_LIMIT;
if ($shouldSwitch && $state->lastRecordId === null) {
$this->logger->warning('[Hubspot] Cannot switch to keyset pagination: lastRecordId is null', [
'request_count' => $state->requestCount,
'current_offset' => $state->offset,
'results_per_page' => $resultsPerPage,
'total_query_limit' => PaginationConfig::TOTAL_QUERY_LIMIT,
]);
return false; // Continue with offset pagination
}
return $shouldSwitch;
}
private function validateTokenIfNeeded(Client $client, PaginationState $state): void
{
if ($state->shouldValidateToken()) {
$client->ensureValidToken();
$state->updateLastTokenCheck();
}
}
private function executeSearchRequest(Client $client, string $endpoint, array $payload, PaginationState $state): array
{
try {
$response = $client->getInstance()->getClient()->request('POST', $endpoint, ['json' => $payload]);
return $response->toArray();
} catch (\Exception $e) {
if ($client->isUnauthorizedException($e)) {
$this->logger->warning('[Hubspot] Got 401 during pagination, attempting token refresh', [
'team_id' => $client->getConfig()->getTeam()->getId(),
'error' => $e->getMessage(),
]);
$client->ensureValidToken();
$state->updateLastTokenCheck();
try {
$response = $client->getInstance()->getClient()->request('POST', $endpoint, ['json' => $payload]);
$this->logger->info('[Hubspot] Token refresh and retry successful', [
'team_id' => $client->getConfig()->getTeam()->getId(),
]);
return $response->toArray();
} catch (\Exception $retryException) {
$this->logger->error('[Hubspot] Retry request failed after token refresh', [
'team_id' => $client->getConfig()->getTeam()->getId(),
'original_error' => $e->getMessage(),
'retry_error' => $retryException->getMessage(),
]);
throw $retryException;
}
} else {
throw $e;
}
}
}
private function updateLastRecordId(array $page, PaginationState $state): void
{
$lastRecord = ! empty($page['results']) ? end($page['results']) : null;
$lastRecordId = $lastRecord['id'] ?? null;
$state->updateLastRecordId($lastRecordId);
}
private function getNextOffset(array $page): int
{
return isset($page['paging']['next']['after']) ? (int) $page['paging']['next']['after'] : 0;
}
private function logPaginationProgress(PaginationState $state, int $teamId, string $endpoint): void
{
if ($state->shouldLogProgress()) {
$this->logger->info('[Hubspot] Pagination progress log', [
'team_id' => $teamId,
'endpoint' => $endpoint,
'requests_made' => $state->requestCount,
'records_fetched' => $state->totalRecords,
'elapsed_seconds' => $state->getElapsedSeconds(),
]);
}
}
private function calculateDelayInMicroseconds(): int
{
return (int) (1 / PaginationConfig::SEARCH_RPS_LIMIT * 1000000);
}
}
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"bounds":{"left":0.025930852,"top":0.019952115,"width":0.03856383,"height":0.025538707},"on_screen":true,"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"master, menu","depth":5,"bounds":{"left":0.064494684,"top":0.019952115,"width":0.040226065,"height":0.025538707},"on_screen":true,"help_text":"Git Branch: master<br/>Some incoming commits are not fetched<br/>","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Start Listening for PHP Debug Connections","depth":5,"bounds":{"left":0.8081782,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"AskJiminnyReportActivityServiceTest","depth":6,"bounds":{"left":0.8234708,"top":0.019952115,"width":0.09208777,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'AskJiminnyReportActivityServiceTest'","depth":6,"bounds":{"left":0.9155585,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'AskJiminnyReportActivityServiceTest'","depth":6,"bounds":{"left":0.9268617,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More Actions","depth":6,"bounds":{"left":0.9381649,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JetBrains AI","depth":5,"bounds":{"left":0.96609044,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Search Everywhere","depth":5,"bounds":{"left":0.9773936,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"IDE and Project Settings","depth":5,"bounds":{"left":0.9886968,"top":0.019952115,"width":0.011303186,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.042220745,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"43","depth":4,"bounds":{"left":0.96210104,"top":0.07581804,"width":0.010305851,"height":0.015163607},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"bounds":{"left":0.9740692,"top":0.074221864,"width":0.00731383,"height":0.018355945},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Highlighted Error","depth":4,"bounds":{"left":0.98138297,"top":0.074221864,"width":0.006981383,"height":0.018355945},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"[2026-05-07 12:52:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"fa8a3008-d298-4682-bbbc-fdc77520e0d7\",\"trace_id\":\"7cfb2afb-9fc4-4a77-81be-65dce93c7d80\"}\n[2026-05-07 12:52:08] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"fa8a3008-d298-4682-bbbc-fdc77520e0d7\",\"trace_id\":\"7cfb2afb-9fc4-4a77-81be-65dce93c7d80\"}\n[2026-05-07 12:52:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"fa8a3008-d298-4682-bbbc-fdc77520e0d7\",\"trace_id\":\"7cfb2afb-9fc4-4a77-81be-65dce93c7d80\"}\n[2026-05-07 12:52:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"932ced9d-9804-48ed-976a-1f8bf5e75707\",\"trace_id\":\"21bf320c-58f3-4082-831d-9f07f6c6a669\"}\n[2026-05-07 12:52:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"932ced9d-9804-48ed-976a-1f8bf5e75707\",\"trace_id\":\"21bf320c-58f3-4082-831d-9f07f6c6a669\"}\n[2026-05-07 12:52:17] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:17] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:17] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:17] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":148,\"team_id\":2} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:17] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.55,\"average_seconds_per_request\":0.55} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:18] local.NOTICE: Monitoring start {\"correlation_id\":\"ae3ec78f-432c-4e22-b73b-0413af73d9f3\",\"trace_id\":\"c2feb517-0f2b-4ad9-bce5-4d57476a164b\"}\n[2026-05-07 12:52:18] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.51,\"average_seconds_per_request\":0.51} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:18] local.NOTICE: Monitoring end {\"correlation_id\":\"ae3ec78f-432c-4e22-b73b-0413af73d9f3\",\"trace_id\":\"c2feb517-0f2b-4ad9-bce5-4d57476a164b\"}\n[2026-05-07 12:52:18] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.48,\"average_seconds_per_request\":0.48} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:19] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.49,\"average_seconds_per_request\":0.49} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:19] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.49,\"average_seconds_per_request\":0.49} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"2bf2f73f-007c-4909-925e-f1749fbf87b3\",\"trace_id\":\"8429123c-d92c-48d9-a154-29bc0aa0e2a1\"}\n[2026-05-07 12:52:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"2bf2f73f-007c-4909-925e-f1749fbf87b3\",\"trace_id\":\"8429123c-d92c-48d9-a154-29bc0aa0e2a1\"}\n[2026-05-07 12:52:20] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.48,\"average_seconds_per_request\":0.48} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:20] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.62,\"average_seconds_per_request\":0.62} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:21] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.78,\"average_seconds_per_request\":0.78} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:22] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":1.21,\"average_seconds_per_request\":1.21} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:23] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.53,\"average_seconds_per_request\":0.53} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8\",\"trace_id\":\"64ccac6b-34f7-45ed-a8ac-b63adbb19107\"}\n[2026-05-07 12:52:25] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8\",\"trace_id\":\"64ccac6b-34f7-45ed-a8ac-b63adbb19107\"}\n[2026-05-07 12:52:26] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8\",\"trace_id\":\"64ccac6b-34f7-45ed-a8ac-b63adbb19107\"}\n[2026-05-07 12:52:26] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8\",\"trace_id\":\"64ccac6b-34f7-45ed-a8ac-b63adbb19107\"}\n[2026-05-07 12:52:28] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"6e1a36d0-a87a-455f-88b9-04f16718ea33\",\"trace_id\":\"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c\"}\n[2026-05-07 12:52:28] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:50:00, 2026-05-07 12:52:00] {\"correlation_id\":\"6e1a36d0-a87a-455f-88b9-04f16718ea33\",\"trace_id\":\"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c\"}\n[2026-05-07 12:52:28] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:50:00, 2026-05-07 12:52:00] {\"correlation_id\":\"6e1a36d0-a87a-455f-88b9-04f16718ea33\",\"trace_id\":\"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c\"}\n[2026-05-07 12:52:28] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"6e1a36d0-a87a-455f-88b9-04f16718ea33\",\"trace_id\":\"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c\"}\n[2026-05-07 12:52:31] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:create\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"80549428-beea-4a6c-97d3-818ca0f059f3\",\"trace_id\":\"55ddd59b-073b-4331-8cdb-baa869dcff70\"}\n[2026-05-07 12:52:31] local.INFO: [EmailSchedule] STARTING batch create {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"80549428-beea-4a6c-97d3-818ca0f059f3\",\"trace_id\":\"55ddd59b-073b-4331-8cdb-baa869dcff70\"}\n[2026-05-07 12:52:31] local.INFO: [EmailSchedule] FINISHED batch create {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"80549428-beea-4a6c-97d3-818ca0f059f3\",\"trace_id\":\"55ddd59b-073b-4331-8cdb-baa869dcff70\"}\n[2026-05-07 12:52:31] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:create\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"80549428-beea-4a6c-97d3-818ca0f059f3\",\"trace_id\":\"55ddd59b-073b-4331-8cdb-baa869dcff70\"}\n[2026-05-07 12:52:32] local.INFO: [Jiminny\\Jobs\\Mailbox\\CreateBatches] processed 2 inboxes and created 0 batches {\"userId\":null,\"batchSize\":30,\"maxBatches\":1000} {\"correlation_id\":\"92242bd6-7014-4487-a50b-1570e1a88e7a\",\"trace_id\":\"55ddd59b-073b-4331-8cdb-baa869dcff70\"}\n[2026-05-07 12:52:39] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"d467eace-3254-4ecc-8d8e-a94688d6d3ad\",\"trace_id\":\"5105ca8f-3c0d-4798-b748-5a7d6fbd7531\"}\n[2026-05-07 12:52:39] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"d467eace-3254-4ecc-8d8e-a94688d6d3ad\",\"trace_id\":\"5105ca8f-3c0d-4798-b748-5a7d6fbd7531\"}","depth":4,"bounds":{"left":0.5475399,"top":0.0726257,"width":0.4524601,"height":0.9066241},"on_screen":true,"value":"[2026-05-07 12:52:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"fa8a3008-d298-4682-bbbc-fdc77520e0d7\",\"trace_id\":\"7cfb2afb-9fc4-4a77-81be-65dce93c7d80\"}\n[2026-05-07 12:52:08] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"fa8a3008-d298-4682-bbbc-fdc77520e0d7\",\"trace_id\":\"7cfb2afb-9fc4-4a77-81be-65dce93c7d80\"}\n[2026-05-07 12:52:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"fa8a3008-d298-4682-bbbc-fdc77520e0d7\",\"trace_id\":\"7cfb2afb-9fc4-4a77-81be-65dce93c7d80\"}\n[2026-05-07 12:52:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"932ced9d-9804-48ed-976a-1f8bf5e75707\",\"trace_id\":\"21bf320c-58f3-4082-831d-9f07f6c6a669\"}\n[2026-05-07 12:52:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"932ced9d-9804-48ed-976a-1f8bf5e75707\",\"trace_id\":\"21bf320c-58f3-4082-831d-9f07f6c6a669\"}\n[2026-05-07 12:52:17] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:17] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:17] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:17] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":148,\"team_id\":2} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:17] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.55,\"average_seconds_per_request\":0.55} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:18] local.NOTICE: Monitoring start {\"correlation_id\":\"ae3ec78f-432c-4e22-b73b-0413af73d9f3\",\"trace_id\":\"c2feb517-0f2b-4ad9-bce5-4d57476a164b\"}\n[2026-05-07 12:52:18] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.51,\"average_seconds_per_request\":0.51} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:18] local.NOTICE: Monitoring end {\"correlation_id\":\"ae3ec78f-432c-4e22-b73b-0413af73d9f3\",\"trace_id\":\"c2feb517-0f2b-4ad9-bce5-4d57476a164b\"}\n[2026-05-07 12:52:18] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.48,\"average_seconds_per_request\":0.48} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:19] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.49,\"average_seconds_per_request\":0.49} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:19] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.49,\"average_seconds_per_request\":0.49} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"2bf2f73f-007c-4909-925e-f1749fbf87b3\",\"trace_id\":\"8429123c-d92c-48d9-a154-29bc0aa0e2a1\"}\n[2026-05-07 12:52:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"2bf2f73f-007c-4909-925e-f1749fbf87b3\",\"trace_id\":\"8429123c-d92c-48d9-a154-29bc0aa0e2a1\"}\n[2026-05-07 12:52:20] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.48,\"average_seconds_per_request\":0.48} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:20] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.62,\"average_seconds_per_request\":0.62} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:21] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.78,\"average_seconds_per_request\":0.78} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:22] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":1.21,\"average_seconds_per_request\":1.21} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:23] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.53,\"average_seconds_per_request\":0.53} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8\",\"trace_id\":\"64ccac6b-34f7-45ed-a8ac-b63adbb19107\"}\n[2026-05-07 12:52:25] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8\",\"trace_id\":\"64ccac6b-34f7-45ed-a8ac-b63adbb19107\"}\n[2026-05-07 12:52:26] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8\",\"trace_id\":\"64ccac6b-34f7-45ed-a8ac-b63adbb19107\"}\n[2026-05-07 12:52:26] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8\",\"trace_id\":\"64ccac6b-34f7-45ed-a8ac-b63adbb19107\"}\n[2026-05-07 12:52:28] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"6e1a36d0-a87a-455f-88b9-04f16718ea33\",\"trace_id\":\"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c\"}\n[2026-05-07 12:52:28] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:50:00, 2026-05-07 12:52:00] {\"correlation_id\":\"6e1a36d0-a87a-455f-88b9-04f16718ea33\",\"trace_id\":\"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c\"}\n[2026-05-07 12:52:28] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:50:00, 2026-05-07 12:52:00] {\"correlation_id\":\"6e1a36d0-a87a-455f-88b9-04f16718ea33\",\"trace_id\":\"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c\"}\n[2026-05-07 12:52:28] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"6e1a36d0-a87a-455f-88b9-04f16718ea33\",\"trace_id\":\"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c\"}\n[2026-05-07 12:52:31] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:create\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"80549428-beea-4a6c-97d3-818ca0f059f3\",\"trace_id\":\"55ddd59b-073b-4331-8cdb-baa869dcff70\"}\n[2026-05-07 12:52:31] local.INFO: [EmailSchedule] STARTING batch create {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"80549428-beea-4a6c-97d3-818ca0f059f3\",\"trace_id\":\"55ddd59b-073b-4331-8cdb-baa869dcff70\"}\n[2026-05-07 12:52:31] local.INFO: [EmailSchedule] FINISHED batch create {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"80549428-beea-4a6c-97d3-818ca0f059f3\",\"trace_id\":\"55ddd59b-073b-4331-8cdb-baa869dcff70\"}\n[2026-05-07 12:52:31] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:create\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"80549428-beea-4a6c-97d3-818ca0f059f3\",\"trace_id\":\"55ddd59b-073b-4331-8cdb-baa869dcff70\"}\n[2026-05-07 12:52:32] local.INFO: [Jiminny\\Jobs\\Mailbox\\CreateBatches] processed 2 inboxes and created 0 batches {\"userId\":null,\"batchSize\":30,\"maxBatches\":1000} {\"correlation_id\":\"92242bd6-7014-4487-a50b-1570e1a88e7a\",\"trace_id\":\"55ddd59b-073b-4331-8cdb-baa869dcff70\"}\n[2026-05-07 12:52:39] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"d467eace-3254-4ecc-8d8e-a94688d6d3ad\",\"trace_id\":\"5105ca8f-3c0d-4798-b748-5a7d6fbd7531\"}\n[2026-05-07 12:52:39] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"d467eace-3254-4ecc-8d8e-a94688d6d3ad\",\"trace_id\":\"5105ca8f-3c0d-4798-b748-5a7d6fbd7531\"}","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.042220745,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"1","depth":4,"bounds":{"left":0.49335107,"top":0.17478053,"width":0.00731383,"height":0.015163607},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"18","depth":4,"bounds":{"left":0.50265956,"top":0.17478053,"width":0.009640957,"height":0.015163607},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"bounds":{"left":0.51396275,"top":0.17318435,"width":0.00731383,"height":0.018355945},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Highlighted Error","depth":4,"bounds":{"left":0.5212766,"top":0.17318435,"width":0.006981383,"height":0.018355945},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Services\\Crm\\Hubspot\\Pagination;\n\nuse Jiminny\\Services\\Crm\\Hubspot\\Client;\nuse Jiminny\\Services\\Crm\\Hubspot\\PayloadBuilder;\nuse Psr\\Log\\LoggerInterface;\nuse SevenShores\\Hubspot\\Exceptions\\BadRequest;\nuse SevenShores\\Hubspot\\Exceptions\\HubspotException;\nuse Jiminny\\Exceptions\\SocialAccountTokenInvalidException;\n\nclass HubspotPaginationService\n{\n public function __construct(\n private LoggerInterface $logger\n ) {\n }\n\n /**\n * @throws HubspotException\n * @throws SocialAccountTokenInvalidException\n * @throws BadRequest\n */\n public function getPaginatedDataGenerator(\n Client $client,\n array $payload,\n string $type,\n int $offset = 0,\n int &$total = 0,\n ?string &$lastRecordId = null\n ): \\Generator {\n $state = new PaginationState(offset: $offset);\n $endpoint = Client::BASE_URL . \"/crm/v3/objects/{$type}/search\";\n $defaultFilter = $payload['filters'] ?? [];\n $resultsPerPage = PayloadBuilder::MAX_SEARCH_REQUEST_LIMIT;\n $teamId = $client->getConfig()->getTeam()->getId();\n $delay = $this->calculateDelayInMicroseconds();\n\n do {\n// if ($this->shouldStopPagination($state, $teamId)) {\n// break;\n// }\n\n $payload = $this->handlePaginationStrategy($payload, $defaultFilter, $state, $resultsPerPage, $teamId);\n\n// $this->validateTokenIfNeeded($client, $state);\n// usleep($delay);\n\n $page = $this->executeSearchRequest($client, $endpoint, $payload, $state);\n\n// $state->setTotal($page['total'] ?? 0);\n// $this->updateLastRecordId($page, $state);\n//\n// // Safely iterate over results with null check\n// $results = $page['results'] ?? [];\n// foreach ($results as $row) {\n// $state->incrementTotalRecords();\n// yield $row;\n// }\n//\n// $state->setOffset($this->getNextOffset($page));\n// $state->incrementRequestCount();\n//\n// $this->logPaginationProgress($state, $teamId, $endpoint);\n } while ($state->offset && ! empty($page['results']));\n\n // Log final pagination completion stats\n $this->logger->info('[Hubspot] Pagination completed', [\n 'team_id' => $teamId,\n 'endpoint' => $endpoint,\n 'total_requests' => $state->requestCount,\n 'total_records_fetched' => $state->totalRecords,\n 'total_elapsed_seconds' => round($state->getElapsedSeconds(), 2),\n 'average_seconds_per_request' => $state->requestCount > 0 ? round($state->getElapsedSeconds() / $state->requestCount, 2) : 0,\n ]);\n\n // Update reference parameters\n $total = $state->total;\n $lastRecordId = $state->lastRecordId;\n }\n\n private function shouldStopPagination(PaginationState $state, int $teamId): bool\n {\n if ($state->hasReachedSafetyLimit()) {\n $this->logger->warning('[Hubspot] Reached maximum request limit during pagination', [\n 'team_id' => $teamId,\n 'safety_limit' => PaginationConfig::LOOP_SAFETY_LIMIT,\n 'total_fetched' => $state->totalRecords,\n ]);\n\n return true;\n }\n\n return false;\n }\n\n private function handlePaginationStrategy(\n array $payload,\n array $defaultFilter,\n PaginationState $state,\n int $resultsPerPage,\n int $teamId\n ): array {\n if ($this->shouldSwitchToKeysetPagination($state, $resultsPerPage)) {\n $payload['filters'] = $defaultFilter;\n $payload['filters'][] = [\n 'propertyName' => 'hs_object_id',\n 'operator' => 'LT',\n 'value' => $state->lastRecordId,\n ];\n\n $this->logger->info('[Hubspot] Search keyset pagination request', [\n 'team_id' => $teamId,\n 'sequence' => $state->requestCount,\n 'itemsPerPage' => $resultsPerPage,\n 'payload' => $payload,\n 'total' => $state->total,\n ]);\n\n unset($payload['after']);\n $state->setOffset(0);\n }\n\n if ($state->offset) {\n $payload['after'] = $state->offset;\n }\n\n return $payload;\n }\n\n private function shouldSwitchToKeysetPagination(PaginationState $state, int $resultsPerPage): bool\n {\n // Check if we've hit the offset limit\n $shouldSwitch = $state->requestCount > 0 && ($state->offset + $resultsPerPage) > PaginationConfig::TOTAL_QUERY_LIMIT;\n\n if ($shouldSwitch && $state->lastRecordId === null) {\n $this->logger->warning('[Hubspot] Cannot switch to keyset pagination: lastRecordId is null', [\n 'request_count' => $state->requestCount,\n 'current_offset' => $state->offset,\n 'results_per_page' => $resultsPerPage,\n 'total_query_limit' => PaginationConfig::TOTAL_QUERY_LIMIT,\n ]);\n\n return false; // Continue with offset pagination\n }\n\n return $shouldSwitch;\n }\n\n private function validateTokenIfNeeded(Client $client, PaginationState $state): void\n {\n if ($state->shouldValidateToken()) {\n $client->ensureValidToken();\n $state->updateLastTokenCheck();\n }\n }\n\n private function executeSearchRequest(Client $client, string $endpoint, array $payload, PaginationState $state): array\n {\n try {\n $response = $client->getInstance()->getClient()->request('POST', $endpoint, ['json' => $payload]);\n\n return $response->toArray();\n } catch (\\Exception $e) {\n if ($client->isUnauthorizedException($e)) {\n $this->logger->warning('[Hubspot] Got 401 during pagination, attempting token refresh', [\n 'team_id' => $client->getConfig()->getTeam()->getId(),\n 'error' => $e->getMessage(),\n ]);\n\n $client->ensureValidToken();\n $state->updateLastTokenCheck();\n\n try {\n $response = $client->getInstance()->getClient()->request('POST', $endpoint, ['json' => $payload]);\n\n $this->logger->info('[Hubspot] Token refresh and retry successful', [\n 'team_id' => $client->getConfig()->getTeam()->getId(),\n ]);\n\n return $response->toArray();\n } catch (\\Exception $retryException) {\n $this->logger->error('[Hubspot] Retry request failed after token refresh', [\n 'team_id' => $client->getConfig()->getTeam()->getId(),\n 'original_error' => $e->getMessage(),\n 'retry_error' => $retryException->getMessage(),\n ]);\n\n throw $retryException;\n }\n } else {\n throw $e;\n }\n }\n }\n\n private function updateLastRecordId(array $page, PaginationState $state): void\n {\n $lastRecord = ! empty($page['results']) ? end($page['results']) : null;\n $lastRecordId = $lastRecord['id'] ?? null;\n $state->updateLastRecordId($lastRecordId);\n }\n\n private function getNextOffset(array $page): int\n {\n return isset($page['paging']['next']['after']) ? (int) $page['paging']['next']['after'] : 0;\n }\n\n private function logPaginationProgress(PaginationState $state, int $teamId, string $endpoint): void\n {\n if ($state->shouldLogProgress()) {\n $this->logger->info('[Hubspot] Pagination progress log', [\n 'team_id' => $teamId,\n 'endpoint' => $endpoint,\n 'requests_made' => $state->requestCount,\n 'records_fetched' => $state->totalRecords,\n 'elapsed_seconds' => $state->getElapsedSeconds(),\n ]);\n }\n }\n\n private function calculateDelayInMicroseconds(): int\n {\n return (int) (1 / PaginationConfig::SEARCH_RPS_LIMIT * 1000000);\n }\n}","depth":4,"on_screen":true,"value":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Services\\Crm\\Hubspot\\Pagination;\n\nuse Jiminny\\Services\\Crm\\Hubspot\\Client;\nuse Jiminny\\Services\\Crm\\Hubspot\\PayloadBuilder;\nuse Psr\\Log\\LoggerInterface;\nuse SevenShores\\Hubspot\\Exceptions\\BadRequest;\nuse SevenShores\\Hubspot\\Exceptions\\HubspotException;\nuse Jiminny\\Exceptions\\SocialAccountTokenInvalidException;\n\nclass HubspotPaginationService\n{\n public function __construct(\n private LoggerInterface $logger\n ) {\n }\n\n /**\n * @throws HubspotException\n * @throws SocialAccountTokenInvalidException\n * @throws BadRequest\n */\n public function getPaginatedDataGenerator(\n Client $client,\n array $payload,\n string $type,\n int $offset = 0,\n int &$total = 0,\n ?string &$lastRecordId = null\n ): \\Generator {\n $state = new PaginationState(offset: $offset);\n $endpoint = Client::BASE_URL . \"/crm/v3/objects/{$type}/search\";\n $defaultFilter = $payload['filters'] ?? [];\n $resultsPerPage = PayloadBuilder::MAX_SEARCH_REQUEST_LIMIT;\n $teamId = $client->getConfig()->getTeam()->getId();\n $delay = $this->calculateDelayInMicroseconds();\n\n do {\n// if ($this->shouldStopPagination($state, $teamId)) {\n// break;\n// }\n\n $payload = $this->handlePaginationStrategy($payload, $defaultFilter, $state, $resultsPerPage, $teamId);\n\n// $this->validateTokenIfNeeded($client, $state);\n// usleep($delay);\n\n $page = $this->executeSearchRequest($client, $endpoint, $payload, $state);\n\n// $state->setTotal($page['total'] ?? 0);\n// $this->updateLastRecordId($page, $state);\n//\n// // Safely iterate over results with null check\n// $results = $page['results'] ?? [];\n// foreach ($results as $row) {\n// $state->incrementTotalRecords();\n// yield $row;\n// }\n//\n// $state->setOffset($this->getNextOffset($page));\n// $state->incrementRequestCount();\n//\n// $this->logPaginationProgress($state, $teamId, $endpoint);\n } while ($state->offset && ! empty($page['results']));\n\n // Log final pagination completion stats\n $this->logger->info('[Hubspot] Pagination completed', [\n 'team_id' => $teamId,\n 'endpoint' => $endpoint,\n 'total_requests' => $state->requestCount,\n 'total_records_fetched' => $state->totalRecords,\n 'total_elapsed_seconds' => round($state->getElapsedSeconds(), 2),\n 'average_seconds_per_request' => $state->requestCount > 0 ? round($state->getElapsedSeconds() / $state->requestCount, 2) : 0,\n ]);\n\n // Update reference parameters\n $total = $state->total;\n $lastRecordId = $state->lastRecordId;\n }\n\n private function shouldStopPagination(PaginationState $state, int $teamId): bool\n {\n if ($state->hasReachedSafetyLimit()) {\n $this->logger->warning('[Hubspot] Reached maximum request limit during pagination', [\n 'team_id' => $teamId,\n 'safety_limit' => PaginationConfig::LOOP_SAFETY_LIMIT,\n 'total_fetched' => $state->totalRecords,\n ]);\n\n return true;\n }\n\n return false;\n }\n\n private function handlePaginationStrategy(\n array $payload,\n array $defaultFilter,\n PaginationState $state,\n int $resultsPerPage,\n int $teamId\n ): array {\n if ($this->shouldSwitchToKeysetPagination($state, $resultsPerPage)) {\n $payload['filters'] = $defaultFilter;\n $payload['filters'][] = [\n 'propertyName' => 'hs_object_id',\n 'operator' => 'LT',\n 'value' => $state->lastRecordId,\n ];\n\n $this->logger->info('[Hubspot] Search keyset pagination request', [\n 'team_id' => $teamId,\n 'sequence' => $state->requestCount,\n 'itemsPerPage' => $resultsPerPage,\n 'payload' => $payload,\n 'total' => $state->total,\n ]);\n\n unset($payload['after']);\n $state->setOffset(0);\n }\n\n if ($state->offset) {\n $payload['after'] = $state->offset;\n }\n\n return $payload;\n }\n\n private function shouldSwitchToKeysetPagination(PaginationState $state, int $resultsPerPage): bool\n {\n // Check if we've hit the offset limit\n $shouldSwitch = $state->requestCount > 0 && ($state->offset + $resultsPerPage) > PaginationConfig::TOTAL_QUERY_LIMIT;\n\n if ($shouldSwitch && $state->lastRecordId === null) {\n $this->logger->warning('[Hubspot] Cannot switch to keyset pagination: lastRecordId is null', [\n 'request_count' => $state->requestCount,\n 'current_offset' => $state->offset,\n 'results_per_page' => $resultsPerPage,\n 'total_query_limit' => PaginationConfig::TOTAL_QUERY_LIMIT,\n ]);\n\n return false; // Continue with offset pagination\n }\n\n return $shouldSwitch;\n }\n\n private function validateTokenIfNeeded(Client $client, PaginationState $state): void\n {\n if ($state->shouldValidateToken()) {\n $client->ensureValidToken();\n $state->updateLastTokenCheck();\n }\n }\n\n private function executeSearchRequest(Client $client, string $endpoint, array $payload, PaginationState $state): array\n {\n try {\n $response = $client->getInstance()->getClient()->request('POST', $endpoint, ['json' => $payload]);\n\n return $response->toArray();\n } catch (\\Exception $e) {\n if ($client->isUnauthorizedException($e)) {\n $this->logger->warning('[Hubspot] Got 401 during pagination, attempting token refresh', [\n 'team_id' => $client->getConfig()->getTeam()->getId(),\n 'error' => $e->getMessage(),\n ]);\n\n $client->ensureValidToken();\n $state->updateLastTokenCheck();\n\n try {\n $response = $client->getInstance()->getClient()->request('POST', $endpoint, ['json' => $payload]);\n\n $this->logger->info('[Hubspot] Token refresh and retry successful', [\n 'team_id' => $client->getConfig()->getTeam()->getId(),\n ]);\n\n return $response->toArray();\n } catch (\\Exception $retryException) {\n $this->logger->error('[Hubspot] Retry request failed after token refresh', [\n 'team_id' => $client->getConfig()->getTeam()->getId(),\n 'original_error' => $e->getMessage(),\n 'retry_error' => $retryException->getMessage(),\n ]);\n\n throw $retryException;\n }\n } else {\n throw $e;\n }\n }\n }\n\n private function updateLastRecordId(array $page, PaginationState $state): void\n {\n $lastRecord = ! empty($page['results']) ? end($page['results']) : null;\n $lastRecordId = $lastRecord['id'] ?? null;\n $state->updateLastRecordId($lastRecordId);\n }\n\n private function getNextOffset(array $page): int\n {\n return isset($page['paging']['next']['after']) ? (int) $page['paging']['next']['after'] : 0;\n }\n\n private function logPaginationProgress(PaginationState $state, int $teamId, string $endpoint): void\n {\n if ($state->shouldLogProgress()) {\n $this->logger->info('[Hubspot] Pagination progress log', [\n 'team_id' => $teamId,\n 'endpoint' => $endpoint,\n 'requests_made' => $state->requestCount,\n 'records_fetched' => $state->totalRecords,\n 'elapsed_seconds' => $state->getElapsedSeconds(),\n ]);\n }\n }\n\n private function calculateDelayInMicroseconds(): int\n {\n return (int) (1 / PaginationConfig::SEARCH_RPS_LIMIT * 1000000);\n }\n}","role_description":"text entry area","is_enabled":true,"is_focused":true,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Project","depth":3,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Project","depth":3,"bounds":{"left":0.011968086,"top":0.047885075,"width":0.024268618,"height":0.024740623},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"New File or Directory…","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Expand Selected","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Collapse All","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Options","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
4209796823680654992
|
-7156800611935973763
|
click
|
accessibility
|
NULL
|
Project: faVsco.js, menu
master, menu
Start Listen Project: faVsco.js, menu
master, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
43
Previous Highlighted Error
Next Highlighted Error
[2026-05-07 12:52:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"fa8a3008-d298-4682-bbbc-fdc77520e0d7","trace_id":"7cfb2afb-9fc4-4a77-81be-65dce93c7d80"}
[2026-05-07 12:52:08] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"fa8a3008-d298-4682-bbbc-fdc77520e0d7","trace_id":"7cfb2afb-9fc4-4a77-81be-65dce93c7d80"}
[2026-05-07 12:52:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"fa8a3008-d298-4682-bbbc-fdc77520e0d7","trace_id":"7cfb2afb-9fc4-4a77-81be-65dce93c7d80"}
[2026-05-07 12:52:12] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"932ced9d-9804-48ed-976a-1f8bf5e75707","trace_id":"21bf320c-58f3-4082-831d-9f07f6c6a669"}
[2026-05-07 12:52:12] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"932ced9d-9804-48ed-976a-1f8bf5e75707","trace_id":"21bf320c-58f3-4082-831d-9f07f6c6a669"}
[2026-05-07 12:52:17] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1499,"provider":"hubspot"} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:17] local.INFO: [SocialAccountService] Token retrieved {"socialAccountId":1499,"provider":"hubspot"} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:17] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:17] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {"crm_provider":"hubspot","crm_owner":148,"team_id":2} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:17] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"[URL_WITH_CREDENTIALS] HubspotException
* @throws SocialAccountTokenInvalidException
* @throws BadRequest
*/
public function getPaginatedDataGenerator(
Client $client,
array $payload,
string $type,
int $offset = 0,
int &$total = 0,
?string &$lastRecordId = null
): \Generator {
$state = new PaginationState(offset: $offset);
$endpoint = Client::BASE_URL . "/crm/v3/objects/{$type}/search";
$defaultFilter = $payload['filters'] ?? [];
$resultsPerPage = PayloadBuilder::MAX_SEARCH_REQUEST_LIMIT;
$teamId = $client->getConfig()->getTeam()->getId();
$delay = $this->calculateDelayInMicroseconds();
do {
// if ($this->shouldStopPagination($state, $teamId)) {
// break;
// }
$payload = $this->handlePaginationStrategy($payload, $defaultFilter, $state, $resultsPerPage, $teamId);
// $this->validateTokenIfNeeded($client, $state);
// usleep($delay);
$page = $this->executeSearchRequest($client, $endpoint, $payload, $state);
// $state->setTotal($page['total'] ?? 0);
// $this->updateLastRecordId($page, $state);
//
// // Safely iterate over results with null check
// $results = $page['results'] ?? [];
// foreach ($results as $row) {
// $state->incrementTotalRecords();
// yield $row;
// }
//
// $state->setOffset($this->getNextOffset($page));
// $state->incrementRequestCount();
//
// $this->logPaginationProgress($state, $teamId, $endpoint);
} while ($state->offset && ! empty($page['results']));
// Log final pagination completion stats
$this->logger->info('[Hubspot] Pagination completed', [
'team_id' => $teamId,
'endpoint' => $endpoint,
'total_requests' => $state->requestCount,
'total_records_fetched' => $state->totalRecords,
'total_elapsed_seconds' => round($state->getElapsedSeconds(), 2),
'average_seconds_per_request' => $state->requestCount > 0 ? round($state->getElapsedSeconds() / $state->requestCount, 2) : 0,
]);
// Update reference parameters
$total = $state->total;
$lastRecordId = $state->lastRecordId;
}
private function shouldStopPagination(PaginationState $state, int $teamId): bool
{
if ($state->hasReachedSafetyLimit()) {
$this->logger->warning('[Hubspot] Reached maximum request limit during pagination', [
'team_id' => $teamId,
'safety_limit' => PaginationConfig::LOOP_SAFETY_LIMIT,
'total_fetched' => $state->totalRecords,
]);
return true;
}
return false;
}
private function handlePaginationStrategy(
array $payload,
array $defaultFilter,
PaginationState $state,
int $resultsPerPage,
int $teamId
): array {
if ($this->shouldSwitchToKeysetPagination($state, $resultsPerPage)) {
$payload['filters'] = $defaultFilter;
$payload['filters'][] = [
'propertyName' => 'hs_object_id',
'operator' => 'LT',
'value' => $state->lastRecordId,
];
$this->logger->info('[Hubspot] Search keyset pagination request', [
'team_id' => $teamId,
'sequence' => $state->requestCount,
'itemsPerPage' => $resultsPerPage,
'payload' => $payload,
'total' => $state->total,
]);
unset($payload['after']);
$state->setOffset(0);
}
if ($state->offset) {
$payload['after'] = $state->offset;
}
return $payload;
}
private function shouldSwitchToKeysetPagination(PaginationState $state, int $resultsPerPage): bool
{
// Check if we've hit the offset limit
$shouldSwitch = $state->requestCount > 0 && ($state->offset + $resultsPerPage) > PaginationConfig::TOTAL_QUERY_LIMIT;
if ($shouldSwitch && $state->lastRecordId === null) {
$this->logger->warning('[Hubspot] Cannot switch to keyset pagination: lastRecordId is null', [
'request_count' => $state->requestCount,
'current_offset' => $state->offset,
'results_per_page' => $resultsPerPage,
'total_query_limit' => PaginationConfig::TOTAL_QUERY_LIMIT,
]);
return false; // Continue with offset pagination
}
return $shouldSwitch;
}
private function validateTokenIfNeeded(Client $client, PaginationState $state): void
{
if ($state->shouldValidateToken()) {
$client->ensureValidToken();
$state->updateLastTokenCheck();
}
}
private function executeSearchRequest(Client $client, string $endpoint, array $payload, PaginationState $state): array
{
try {
$response = $client->getInstance()->getClient()->request('POST', $endpoint, ['json' => $payload]);
return $response->toArray();
} catch (\Exception $e) {
if ($client->isUnauthorizedException($e)) {
$this->logger->warning('[Hubspot] Got 401 during pagination, attempting token refresh', [
'team_id' => $client->getConfig()->getTeam()->getId(),
'error' => $e->getMessage(),
]);
$client->ensureValidToken();
$state->updateLastTokenCheck();
try {
$response = $client->getInstance()->getClient()->request('POST', $endpoint, ['json' => $payload]);
$this->logger->info('[Hubspot] Token refresh and retry successful', [
'team_id' => $client->getConfig()->getTeam()->getId(),
]);
return $response->toArray();
} catch (\Exception $retryException) {
$this->logger->error('[Hubspot] Retry request failed after token refresh', [
'team_id' => $client->getConfig()->getTeam()->getId(),
'original_error' => $e->getMessage(),
'retry_error' => $retryException->getMessage(),
]);
throw $retryException;
}
} else {
throw $e;
}
}
}
private function updateLastRecordId(array $page, PaginationState $state): void
{
$lastRecord = ! empty($page['results']) ? end($page['results']) : null;
$lastRecordId = $lastRecord['id'] ?? null;
$state->updateLastRecordId($lastRecordId);
}
private function getNextOffset(array $page): int
{
return isset($page['paging']['next']['after']) ? (int) $page['paging']['next']['after'] : 0;
}
private function logPaginationProgress(PaginationState $state, int $teamId, string $endpoint): void
{
if ($state->shouldLogProgress()) {
$this->logger->info('[Hubspot] Pagination progress log', [
'team_id' => $teamId,
'endpoint' => $endpoint,
'requests_made' => $state->requestCount,
'records_fetched' => $state->totalRecords,
'elapsed_seconds' => $state->getElapsedSeconds(),
]);
}
}
private function calculateDelayInMicroseconds(): int
{
return (int) (1 / PaginationConfig::SEARCH_RPS_LIMIT * 1000000);
}
}
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
3993
|
NULL
|
0
|
2026-05-07T12:56:04.133930+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-07/1778 /Users/lukas/.screenpipe/data/data/2026-05-07/1778158564133_m1.jpg...
|
PhpStorm
|
faVsco.js – HubspotPaginationService.php
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
master, menu
Start Listen Project: faVsco.js, menu
master, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
43
Previous Highlighted Error
Next Highlighted Error
[2026-05-07 12:52:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"fa8a3008-d298-4682-bbbc-fdc77520e0d7","trace_id":"7cfb2afb-9fc4-4a77-81be-65dce93c7d80"}
[2026-05-07 12:52:08] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"fa8a3008-d298-4682-bbbc-fdc77520e0d7","trace_id":"7cfb2afb-9fc4-4a77-81be-65dce93c7d80"}
[2026-05-07 12:52:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"fa8a3008-d298-4682-bbbc-fdc77520e0d7","trace_id":"7cfb2afb-9fc4-4a77-81be-65dce93c7d80"}
[2026-05-07 12:52:12] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"932ced9d-9804-48ed-976a-1f8bf5e75707","trace_id":"21bf320c-58f3-4082-831d-9f07f6c6a669"}
[2026-05-07 12:52:12] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"932ced9d-9804-48ed-976a-1f8bf5e75707","trace_id":"21bf320c-58f3-4082-831d-9f07f6c6a669"}
[2026-05-07 12:52:17] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1499,"provider":"hubspot"} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:17] local.INFO: [SocialAccountService] Token retrieved {"socialAccountId":1499,"provider":"hubspot"} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:17] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:17] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {"crm_provider":"hubspot","crm_owner":148,"team_id":2} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:17] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"[URL_WITH_CREDENTIALS] HubspotException
* @throws SocialAccountTokenInvalidException
* @throws BadRequest
*/
public function getPaginatedDataGenerator(
Client $client,
array $payload,
string $type,
int $offset = 0,
int &$total = 0,
?string &$lastRecordId = null
): \Generator {
$state = new PaginationState(offset: $offset);
$endpoint = Client::BASE_URL . "/crm/v3/objects/{$type}/search";
$defaultFilter = $payload['filters'] ?? [];
$resultsPerPage = PayloadBuilder::MAX_SEARCH_REQUEST_LIMIT;
$teamId = $client->getConfig()->getTeam()->getId();
$delay = $this->calculateDelayInMicroseconds();
do {
// if ($this->shouldStopPagination($state, $teamId)) {
// break;
// }
$payload = $this->handlePaginationStrategy($payload, $defaultFilter, $state, $resultsPerPage, $teamId);
// $this->validateTokenIfNeeded($client, $state);
// usleep($delay);
$page = $this->executeSearchRequest($client, $endpoint, $payload, $state);
// $state->setTotal($page['total'] ?? 0);
// $this->updateLastRecordId($page, $state);
//
// // Safely iterate over results with null check
// $results = $page['results'] ?? [];
// foreach ($results as $row) {
// $state->incrementTotalRecords();
// yield $row;
// }
//
// $state->setOffset($this->getNextOffset($page));
// $state->incrementRequestCount();
//
// $this->logPaginationProgress($state, $teamId, $endpoint);
} while ($state->offset && ! empty($page['results']));
// Log final pagination completion stats
$this->logger->info('[Hubspot] Pagination completed', [
'team_id' => $teamId,
'endpoint' => $endpoint,
'total_requests' => $state->requestCount,
'total_records_fetched' => $state->totalRecords,
'total_elapsed_seconds' => round($state->getElapsedSeconds(), 2),
'average_seconds_per_request' => $state->requestCount > 0 ? round($state->getElapsedSeconds() / $state->requestCount, 2) : 0,
]);
// Update reference parameters
$total = $state->total;
$lastRecordId = $state->lastRecordId;
}
private function shouldStopPagination(PaginationState $state, int $teamId): bool
{
if ($state->hasReachedSafetyLimit()) {
$this->logger->warning('[Hubspot] Reached maximum request limit during pagination', [
'team_id' => $teamId,
'safety_limit' => PaginationConfig::LOOP_SAFETY_LIMIT,
'total_fetched' => $state->totalRecords,
]);
return true;
}
return false;
}
private function handlePaginationStrategy(
array $payload,
array $defaultFilter,
PaginationState $state,
int $resultsPerPage,
int $teamId
): array {
if ($this->shouldSwitchToKeysetPagination($state, $resultsPerPage)) {
$payload['filters'] = $defaultFilter;
$payload['filters'][] = [
'propertyName' => 'hs_object_id',
'operator' => 'LT',
'value' => $state->lastRecordId,
];
$this->logger->info('[Hubspot] Search keyset pagination request', [
'team_id' => $teamId,
'sequence' => $state->requestCount,
'itemsPerPage' => $resultsPerPage,
'payload' => $payload,
'total' => $state->total,
]);
unset($payload['after']);
$state->setOffset(0);
}
if ($state->offset) {
$payload['after'] = $state->offset;
}
return $payload;
}
private function shouldSwitchToKeysetPagination(PaginationState $state, int $resultsPerPage): bool
{
// Check if we've hit the offset limit
$shouldSwitch = $state->requestCount > 0 && ($state->offset + $resultsPerPage) > PaginationConfig::TOTAL_QUERY_LIMIT;
if ($shouldSwitch && $state->lastRecordId === null) {
$this->logger->warning('[Hubspot] Cannot switch to keyset pagination: lastRecordId is null', [
'request_count' => $state->requestCount,
'current_offset' => $state->offset,
'results_per_page' => $resultsPerPage,
'total_query_limit' => PaginationConfig::TOTAL_QUERY_LIMIT,
]);
return false; // Continue with offset pagination
}
return $shouldSwitch;
}
private function validateTokenIfNeeded(Client $client, PaginationState $state): void
{
if ($state->shouldValidateToken()) {
$client->ensureValidToken();
$state->updateLastTokenCheck();
}
}
private function executeSearchRequest(Client $client, string $endpoint, array $payload, PaginationState $state): array
{
try {
$response = $client->getInstance()->getClient()->request('POST', $endpoint, ['json' => $payload]);
return $response->toArray();
} catch (\Exception $e) {
if ($client->isUnauthorizedException($e)) {
$this->logger->warning('[Hubspot] Got 401 during pagination, attempting token refresh', [
'team_id' => $client->getConfig()->getTeam()->getId(),
'error' => $e->getMessage(),
]);
$client->ensureValidToken();
$state->updateLastTokenCheck();
try {
$response = $client->getInstance()->getClient()->request('POST', $endpoint, ['json' => $payload]);
$this->logger->info('[Hubspot] Token refresh and retry successful', [
'team_id' => $client->getConfig()->getTeam()->getId(),
]);
return $response->toArray();
} catch (\Exception $retryException) {
$this->logger->error('[Hubspot] Retry request failed after token refresh', [
'team_id' => $client->getConfig()->getTeam()->getId(),
'original_error' => $e->getMessage(),
'retry_error' => $retryException->getMessage(),
]);
throw $retryException;
}
} else {
throw $e;
}
}
}
private function updateLastRecordId(array $page, PaginationState $state): void
{
$lastRecord = ! empty($page['results']) ? end($page['results']) : null;
$lastRecordId = $lastRecord['id'] ?? null;
$state->updateLastRecordId($lastRecordId);
}
private function getNextOffset(array $page): int
{
return isset($page['paging']['next']['after']) ? (int) $page['paging']['next']['after'] : 0;
}
private function logPaginationProgress(PaginationState $state, int $teamId, string $endpoint): void
{
if ($state->shouldLogProgress()) {
$this->logger->info('[Hubspot] Pagination progress log', [
'team_id' => $teamId,
'endpoint' => $endpoint,
'requests_made' => $state->requestCount,
'records_fetched' => $state->totalRecords,
'elapsed_seconds' => $state->getElapsedSeconds(),
]);
}
}
private function calculateDelayInMicroseconds(): int
{
return (int) (1 / PaginationConfig::SEARCH_RPS_LIMIT * 1000000);
}
}
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"on_screen":true,"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"master, menu","depth":5,"on_screen":true,"help_text":"Git Branch: master<br/>Some incoming commits are not fetched<br/>","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Start Listening for PHP Debug Connections","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"AskJiminnyReportActivityServiceTest","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'AskJiminnyReportActivityServiceTest'","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'AskJiminnyReportActivityServiceTest'","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More Actions","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JetBrains AI","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Search Everywhere","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"IDE and Project Settings","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.088194445,"height":0.027777778},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"43","depth":4,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Highlighted Error","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"[2026-05-07 12:52:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"fa8a3008-d298-4682-bbbc-fdc77520e0d7\",\"trace_id\":\"7cfb2afb-9fc4-4a77-81be-65dce93c7d80\"}\n[2026-05-07 12:52:08] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"fa8a3008-d298-4682-bbbc-fdc77520e0d7\",\"trace_id\":\"7cfb2afb-9fc4-4a77-81be-65dce93c7d80\"}\n[2026-05-07 12:52:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"fa8a3008-d298-4682-bbbc-fdc77520e0d7\",\"trace_id\":\"7cfb2afb-9fc4-4a77-81be-65dce93c7d80\"}\n[2026-05-07 12:52:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"932ced9d-9804-48ed-976a-1f8bf5e75707\",\"trace_id\":\"21bf320c-58f3-4082-831d-9f07f6c6a669\"}\n[2026-05-07 12:52:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"932ced9d-9804-48ed-976a-1f8bf5e75707\",\"trace_id\":\"21bf320c-58f3-4082-831d-9f07f6c6a669\"}\n[2026-05-07 12:52:17] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:17] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:17] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:17] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":148,\"team_id\":2} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:17] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.55,\"average_seconds_per_request\":0.55} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:18] local.NOTICE: Monitoring start {\"correlation_id\":\"ae3ec78f-432c-4e22-b73b-0413af73d9f3\",\"trace_id\":\"c2feb517-0f2b-4ad9-bce5-4d57476a164b\"}\n[2026-05-07 12:52:18] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.51,\"average_seconds_per_request\":0.51} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:18] local.NOTICE: Monitoring end {\"correlation_id\":\"ae3ec78f-432c-4e22-b73b-0413af73d9f3\",\"trace_id\":\"c2feb517-0f2b-4ad9-bce5-4d57476a164b\"}\n[2026-05-07 12:52:18] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.48,\"average_seconds_per_request\":0.48} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:19] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.49,\"average_seconds_per_request\":0.49} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:19] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.49,\"average_seconds_per_request\":0.49} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"2bf2f73f-007c-4909-925e-f1749fbf87b3\",\"trace_id\":\"8429123c-d92c-48d9-a154-29bc0aa0e2a1\"}\n[2026-05-07 12:52:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"2bf2f73f-007c-4909-925e-f1749fbf87b3\",\"trace_id\":\"8429123c-d92c-48d9-a154-29bc0aa0e2a1\"}\n[2026-05-07 12:52:20] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.48,\"average_seconds_per_request\":0.48} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:20] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.62,\"average_seconds_per_request\":0.62} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:21] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.78,\"average_seconds_per_request\":0.78} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:22] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":1.21,\"average_seconds_per_request\":1.21} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:23] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.53,\"average_seconds_per_request\":0.53} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8\",\"trace_id\":\"64ccac6b-34f7-45ed-a8ac-b63adbb19107\"}\n[2026-05-07 12:52:25] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8\",\"trace_id\":\"64ccac6b-34f7-45ed-a8ac-b63adbb19107\"}\n[2026-05-07 12:52:26] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8\",\"trace_id\":\"64ccac6b-34f7-45ed-a8ac-b63adbb19107\"}\n[2026-05-07 12:52:26] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8\",\"trace_id\":\"64ccac6b-34f7-45ed-a8ac-b63adbb19107\"}\n[2026-05-07 12:52:28] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"6e1a36d0-a87a-455f-88b9-04f16718ea33\",\"trace_id\":\"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c\"}\n[2026-05-07 12:52:28] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:50:00, 2026-05-07 12:52:00] {\"correlation_id\":\"6e1a36d0-a87a-455f-88b9-04f16718ea33\",\"trace_id\":\"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c\"}\n[2026-05-07 12:52:28] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:50:00, 2026-05-07 12:52:00] {\"correlation_id\":\"6e1a36d0-a87a-455f-88b9-04f16718ea33\",\"trace_id\":\"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c\"}\n[2026-05-07 12:52:28] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"6e1a36d0-a87a-455f-88b9-04f16718ea33\",\"trace_id\":\"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c\"}\n[2026-05-07 12:52:31] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:create\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"80549428-beea-4a6c-97d3-818ca0f059f3\",\"trace_id\":\"55ddd59b-073b-4331-8cdb-baa869dcff70\"}\n[2026-05-07 12:52:31] local.INFO: [EmailSchedule] STARTING batch create {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"80549428-beea-4a6c-97d3-818ca0f059f3\",\"trace_id\":\"55ddd59b-073b-4331-8cdb-baa869dcff70\"}\n[2026-05-07 12:52:31] local.INFO: [EmailSchedule] FINISHED batch create {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"80549428-beea-4a6c-97d3-818ca0f059f3\",\"trace_id\":\"55ddd59b-073b-4331-8cdb-baa869dcff70\"}\n[2026-05-07 12:52:31] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:create\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"80549428-beea-4a6c-97d3-818ca0f059f3\",\"trace_id\":\"55ddd59b-073b-4331-8cdb-baa869dcff70\"}\n[2026-05-07 12:52:32] local.INFO: [Jiminny\\Jobs\\Mailbox\\CreateBatches] processed 2 inboxes and created 0 batches {\"userId\":null,\"batchSize\":30,\"maxBatches\":1000} {\"correlation_id\":\"92242bd6-7014-4487-a50b-1570e1a88e7a\",\"trace_id\":\"55ddd59b-073b-4331-8cdb-baa869dcff70\"}\n[2026-05-07 12:52:39] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"d467eace-3254-4ecc-8d8e-a94688d6d3ad\",\"trace_id\":\"5105ca8f-3c0d-4798-b748-5a7d6fbd7531\"}\n[2026-05-07 12:52:39] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"d467eace-3254-4ecc-8d8e-a94688d6d3ad\",\"trace_id\":\"5105ca8f-3c0d-4798-b748-5a7d6fbd7531\"}","depth":4,"on_screen":true,"value":"[2026-05-07 12:52:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"fa8a3008-d298-4682-bbbc-fdc77520e0d7\",\"trace_id\":\"7cfb2afb-9fc4-4a77-81be-65dce93c7d80\"}\n[2026-05-07 12:52:08] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"fa8a3008-d298-4682-bbbc-fdc77520e0d7\",\"trace_id\":\"7cfb2afb-9fc4-4a77-81be-65dce93c7d80\"}\n[2026-05-07 12:52:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"fa8a3008-d298-4682-bbbc-fdc77520e0d7\",\"trace_id\":\"7cfb2afb-9fc4-4a77-81be-65dce93c7d80\"}\n[2026-05-07 12:52:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"932ced9d-9804-48ed-976a-1f8bf5e75707\",\"trace_id\":\"21bf320c-58f3-4082-831d-9f07f6c6a669\"}\n[2026-05-07 12:52:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"932ced9d-9804-48ed-976a-1f8bf5e75707\",\"trace_id\":\"21bf320c-58f3-4082-831d-9f07f6c6a669\"}\n[2026-05-07 12:52:17] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:17] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:17] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:17] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":148,\"team_id\":2} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:17] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.55,\"average_seconds_per_request\":0.55} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:18] local.NOTICE: Monitoring start {\"correlation_id\":\"ae3ec78f-432c-4e22-b73b-0413af73d9f3\",\"trace_id\":\"c2feb517-0f2b-4ad9-bce5-4d57476a164b\"}\n[2026-05-07 12:52:18] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.51,\"average_seconds_per_request\":0.51} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:18] local.NOTICE: Monitoring end {\"correlation_id\":\"ae3ec78f-432c-4e22-b73b-0413af73d9f3\",\"trace_id\":\"c2feb517-0f2b-4ad9-bce5-4d57476a164b\"}\n[2026-05-07 12:52:18] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.48,\"average_seconds_per_request\":0.48} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:19] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.49,\"average_seconds_per_request\":0.49} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:19] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.49,\"average_seconds_per_request\":0.49} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"2bf2f73f-007c-4909-925e-f1749fbf87b3\",\"trace_id\":\"8429123c-d92c-48d9-a154-29bc0aa0e2a1\"}\n[2026-05-07 12:52:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"2bf2f73f-007c-4909-925e-f1749fbf87b3\",\"trace_id\":\"8429123c-d92c-48d9-a154-29bc0aa0e2a1\"}\n[2026-05-07 12:52:20] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.48,\"average_seconds_per_request\":0.48} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:20] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.62,\"average_seconds_per_request\":0.62} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:21] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.78,\"average_seconds_per_request\":0.78} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:22] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":1.21,\"average_seconds_per_request\":1.21} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:23] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.53,\"average_seconds_per_request\":0.53} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8\",\"trace_id\":\"64ccac6b-34f7-45ed-a8ac-b63adbb19107\"}\n[2026-05-07 12:52:25] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8\",\"trace_id\":\"64ccac6b-34f7-45ed-a8ac-b63adbb19107\"}\n[2026-05-07 12:52:26] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8\",\"trace_id\":\"64ccac6b-34f7-45ed-a8ac-b63adbb19107\"}\n[2026-05-07 12:52:26] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8\",\"trace_id\":\"64ccac6b-34f7-45ed-a8ac-b63adbb19107\"}\n[2026-05-07 12:52:28] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"6e1a36d0-a87a-455f-88b9-04f16718ea33\",\"trace_id\":\"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c\"}\n[2026-05-07 12:52:28] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:50:00, 2026-05-07 12:52:00] {\"correlation_id\":\"6e1a36d0-a87a-455f-88b9-04f16718ea33\",\"trace_id\":\"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c\"}\n[2026-05-07 12:52:28] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:50:00, 2026-05-07 12:52:00] {\"correlation_id\":\"6e1a36d0-a87a-455f-88b9-04f16718ea33\",\"trace_id\":\"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c\"}\n[2026-05-07 12:52:28] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"6e1a36d0-a87a-455f-88b9-04f16718ea33\",\"trace_id\":\"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c\"}\n[2026-05-07 12:52:31] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:create\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"80549428-beea-4a6c-97d3-818ca0f059f3\",\"trace_id\":\"55ddd59b-073b-4331-8cdb-baa869dcff70\"}\n[2026-05-07 12:52:31] local.INFO: [EmailSchedule] STARTING batch create {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"80549428-beea-4a6c-97d3-818ca0f059f3\",\"trace_id\":\"55ddd59b-073b-4331-8cdb-baa869dcff70\"}\n[2026-05-07 12:52:31] local.INFO: [EmailSchedule] FINISHED batch create {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"80549428-beea-4a6c-97d3-818ca0f059f3\",\"trace_id\":\"55ddd59b-073b-4331-8cdb-baa869dcff70\"}\n[2026-05-07 12:52:31] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:create\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"80549428-beea-4a6c-97d3-818ca0f059f3\",\"trace_id\":\"55ddd59b-073b-4331-8cdb-baa869dcff70\"}\n[2026-05-07 12:52:32] local.INFO: [Jiminny\\Jobs\\Mailbox\\CreateBatches] processed 2 inboxes and created 0 batches {\"userId\":null,\"batchSize\":30,\"maxBatches\":1000} {\"correlation_id\":\"92242bd6-7014-4487-a50b-1570e1a88e7a\",\"trace_id\":\"55ddd59b-073b-4331-8cdb-baa869dcff70\"}\n[2026-05-07 12:52:39] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"d467eace-3254-4ecc-8d8e-a94688d6d3ad\",\"trace_id\":\"5105ca8f-3c0d-4798-b748-5a7d6fbd7531\"}\n[2026-05-07 12:52:39] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"d467eace-3254-4ecc-8d8e-a94688d6d3ad\",\"trace_id\":\"5105ca8f-3c0d-4798-b748-5a7d6fbd7531\"}","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.088194445,"height":0.027777778},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"1","depth":4,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"18","depth":4,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Highlighted Error","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Services\\Crm\\Hubspot\\Pagination;\n\nuse Jiminny\\Services\\Crm\\Hubspot\\Client;\nuse Jiminny\\Services\\Crm\\Hubspot\\PayloadBuilder;\nuse Psr\\Log\\LoggerInterface;\nuse SevenShores\\Hubspot\\Exceptions\\BadRequest;\nuse SevenShores\\Hubspot\\Exceptions\\HubspotException;\nuse Jiminny\\Exceptions\\SocialAccountTokenInvalidException;\n\nclass HubspotPaginationService\n{\n public function __construct(\n private LoggerInterface $logger\n ) {\n }\n\n /**\n * @throws HubspotException\n * @throws SocialAccountTokenInvalidException\n * @throws BadRequest\n */\n public function getPaginatedDataGenerator(\n Client $client,\n array $payload,\n string $type,\n int $offset = 0,\n int &$total = 0,\n ?string &$lastRecordId = null\n ): \\Generator {\n $state = new PaginationState(offset: $offset);\n $endpoint = Client::BASE_URL . \"/crm/v3/objects/{$type}/search\";\n $defaultFilter = $payload['filters'] ?? [];\n $resultsPerPage = PayloadBuilder::MAX_SEARCH_REQUEST_LIMIT;\n $teamId = $client->getConfig()->getTeam()->getId();\n $delay = $this->calculateDelayInMicroseconds();\n\n do {\n// if ($this->shouldStopPagination($state, $teamId)) {\n// break;\n// }\n\n $payload = $this->handlePaginationStrategy($payload, $defaultFilter, $state, $resultsPerPage, $teamId);\n\n// $this->validateTokenIfNeeded($client, $state);\n// usleep($delay);\n\n $page = $this->executeSearchRequest($client, $endpoint, $payload, $state);\n\n// $state->setTotal($page['total'] ?? 0);\n// $this->updateLastRecordId($page, $state);\n//\n// // Safely iterate over results with null check\n// $results = $page['results'] ?? [];\n// foreach ($results as $row) {\n// $state->incrementTotalRecords();\n// yield $row;\n// }\n//\n// $state->setOffset($this->getNextOffset($page));\n// $state->incrementRequestCount();\n//\n// $this->logPaginationProgress($state, $teamId, $endpoint);\n } while ($state->offset && ! empty($page['results']));\n\n // Log final pagination completion stats\n $this->logger->info('[Hubspot] Pagination completed', [\n 'team_id' => $teamId,\n 'endpoint' => $endpoint,\n 'total_requests' => $state->requestCount,\n 'total_records_fetched' => $state->totalRecords,\n 'total_elapsed_seconds' => round($state->getElapsedSeconds(), 2),\n 'average_seconds_per_request' => $state->requestCount > 0 ? round($state->getElapsedSeconds() / $state->requestCount, 2) : 0,\n ]);\n\n // Update reference parameters\n $total = $state->total;\n $lastRecordId = $state->lastRecordId;\n }\n\n private function shouldStopPagination(PaginationState $state, int $teamId): bool\n {\n if ($state->hasReachedSafetyLimit()) {\n $this->logger->warning('[Hubspot] Reached maximum request limit during pagination', [\n 'team_id' => $teamId,\n 'safety_limit' => PaginationConfig::LOOP_SAFETY_LIMIT,\n 'total_fetched' => $state->totalRecords,\n ]);\n\n return true;\n }\n\n return false;\n }\n\n private function handlePaginationStrategy(\n array $payload,\n array $defaultFilter,\n PaginationState $state,\n int $resultsPerPage,\n int $teamId\n ): array {\n if ($this->shouldSwitchToKeysetPagination($state, $resultsPerPage)) {\n $payload['filters'] = $defaultFilter;\n $payload['filters'][] = [\n 'propertyName' => 'hs_object_id',\n 'operator' => 'LT',\n 'value' => $state->lastRecordId,\n ];\n\n $this->logger->info('[Hubspot] Search keyset pagination request', [\n 'team_id' => $teamId,\n 'sequence' => $state->requestCount,\n 'itemsPerPage' => $resultsPerPage,\n 'payload' => $payload,\n 'total' => $state->total,\n ]);\n\n unset($payload['after']);\n $state->setOffset(0);\n }\n\n if ($state->offset) {\n $payload['after'] = $state->offset;\n }\n\n return $payload;\n }\n\n private function shouldSwitchToKeysetPagination(PaginationState $state, int $resultsPerPage): bool\n {\n // Check if we've hit the offset limit\n $shouldSwitch = $state->requestCount > 0 && ($state->offset + $resultsPerPage) > PaginationConfig::TOTAL_QUERY_LIMIT;\n\n if ($shouldSwitch && $state->lastRecordId === null) {\n $this->logger->warning('[Hubspot] Cannot switch to keyset pagination: lastRecordId is null', [\n 'request_count' => $state->requestCount,\n 'current_offset' => $state->offset,\n 'results_per_page' => $resultsPerPage,\n 'total_query_limit' => PaginationConfig::TOTAL_QUERY_LIMIT,\n ]);\n\n return false; // Continue with offset pagination\n }\n\n return $shouldSwitch;\n }\n\n private function validateTokenIfNeeded(Client $client, PaginationState $state): void\n {\n if ($state->shouldValidateToken()) {\n $client->ensureValidToken();\n $state->updateLastTokenCheck();\n }\n }\n\n private function executeSearchRequest(Client $client, string $endpoint, array $payload, PaginationState $state): array\n {\n try {\n $response = $client->getInstance()->getClient()->request('POST', $endpoint, ['json' => $payload]);\n\n return $response->toArray();\n } catch (\\Exception $e) {\n if ($client->isUnauthorizedException($e)) {\n $this->logger->warning('[Hubspot] Got 401 during pagination, attempting token refresh', [\n 'team_id' => $client->getConfig()->getTeam()->getId(),\n 'error' => $e->getMessage(),\n ]);\n\n $client->ensureValidToken();\n $state->updateLastTokenCheck();\n\n try {\n $response = $client->getInstance()->getClient()->request('POST', $endpoint, ['json' => $payload]);\n\n $this->logger->info('[Hubspot] Token refresh and retry successful', [\n 'team_id' => $client->getConfig()->getTeam()->getId(),\n ]);\n\n return $response->toArray();\n } catch (\\Exception $retryException) {\n $this->logger->error('[Hubspot] Retry request failed after token refresh', [\n 'team_id' => $client->getConfig()->getTeam()->getId(),\n 'original_error' => $e->getMessage(),\n 'retry_error' => $retryException->getMessage(),\n ]);\n\n throw $retryException;\n }\n } else {\n throw $e;\n }\n }\n }\n\n private function updateLastRecordId(array $page, PaginationState $state): void\n {\n $lastRecord = ! empty($page['results']) ? end($page['results']) : null;\n $lastRecordId = $lastRecord['id'] ?? null;\n $state->updateLastRecordId($lastRecordId);\n }\n\n private function getNextOffset(array $page): int\n {\n return isset($page['paging']['next']['after']) ? (int) $page['paging']['next']['after'] : 0;\n }\n\n private function logPaginationProgress(PaginationState $state, int $teamId, string $endpoint): void\n {\n if ($state->shouldLogProgress()) {\n $this->logger->info('[Hubspot] Pagination progress log', [\n 'team_id' => $teamId,\n 'endpoint' => $endpoint,\n 'requests_made' => $state->requestCount,\n 'records_fetched' => $state->totalRecords,\n 'elapsed_seconds' => $state->getElapsedSeconds(),\n ]);\n }\n }\n\n private function calculateDelayInMicroseconds(): int\n {\n return (int) (1 / PaginationConfig::SEARCH_RPS_LIMIT * 1000000);\n }\n}","depth":4,"on_screen":true,"value":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Services\\Crm\\Hubspot\\Pagination;\n\nuse Jiminny\\Services\\Crm\\Hubspot\\Client;\nuse Jiminny\\Services\\Crm\\Hubspot\\PayloadBuilder;\nuse Psr\\Log\\LoggerInterface;\nuse SevenShores\\Hubspot\\Exceptions\\BadRequest;\nuse SevenShores\\Hubspot\\Exceptions\\HubspotException;\nuse Jiminny\\Exceptions\\SocialAccountTokenInvalidException;\n\nclass HubspotPaginationService\n{\n public function __construct(\n private LoggerInterface $logger\n ) {\n }\n\n /**\n * @throws HubspotException\n * @throws SocialAccountTokenInvalidException\n * @throws BadRequest\n */\n public function getPaginatedDataGenerator(\n Client $client,\n array $payload,\n string $type,\n int $offset = 0,\n int &$total = 0,\n ?string &$lastRecordId = null\n ): \\Generator {\n $state = new PaginationState(offset: $offset);\n $endpoint = Client::BASE_URL . \"/crm/v3/objects/{$type}/search\";\n $defaultFilter = $payload['filters'] ?? [];\n $resultsPerPage = PayloadBuilder::MAX_SEARCH_REQUEST_LIMIT;\n $teamId = $client->getConfig()->getTeam()->getId();\n $delay = $this->calculateDelayInMicroseconds();\n\n do {\n// if ($this->shouldStopPagination($state, $teamId)) {\n// break;\n// }\n\n $payload = $this->handlePaginationStrategy($payload, $defaultFilter, $state, $resultsPerPage, $teamId);\n\n// $this->validateTokenIfNeeded($client, $state);\n// usleep($delay);\n\n $page = $this->executeSearchRequest($client, $endpoint, $payload, $state);\n\n// $state->setTotal($page['total'] ?? 0);\n// $this->updateLastRecordId($page, $state);\n//\n// // Safely iterate over results with null check\n// $results = $page['results'] ?? [];\n// foreach ($results as $row) {\n// $state->incrementTotalRecords();\n// yield $row;\n// }\n//\n// $state->setOffset($this->getNextOffset($page));\n// $state->incrementRequestCount();\n//\n// $this->logPaginationProgress($state, $teamId, $endpoint);\n } while ($state->offset && ! empty($page['results']));\n\n // Log final pagination completion stats\n $this->logger->info('[Hubspot] Pagination completed', [\n 'team_id' => $teamId,\n 'endpoint' => $endpoint,\n 'total_requests' => $state->requestCount,\n 'total_records_fetched' => $state->totalRecords,\n 'total_elapsed_seconds' => round($state->getElapsedSeconds(), 2),\n 'average_seconds_per_request' => $state->requestCount > 0 ? round($state->getElapsedSeconds() / $state->requestCount, 2) : 0,\n ]);\n\n // Update reference parameters\n $total = $state->total;\n $lastRecordId = $state->lastRecordId;\n }\n\n private function shouldStopPagination(PaginationState $state, int $teamId): bool\n {\n if ($state->hasReachedSafetyLimit()) {\n $this->logger->warning('[Hubspot] Reached maximum request limit during pagination', [\n 'team_id' => $teamId,\n 'safety_limit' => PaginationConfig::LOOP_SAFETY_LIMIT,\n 'total_fetched' => $state->totalRecords,\n ]);\n\n return true;\n }\n\n return false;\n }\n\n private function handlePaginationStrategy(\n array $payload,\n array $defaultFilter,\n PaginationState $state,\n int $resultsPerPage,\n int $teamId\n ): array {\n if ($this->shouldSwitchToKeysetPagination($state, $resultsPerPage)) {\n $payload['filters'] = $defaultFilter;\n $payload['filters'][] = [\n 'propertyName' => 'hs_object_id',\n 'operator' => 'LT',\n 'value' => $state->lastRecordId,\n ];\n\n $this->logger->info('[Hubspot] Search keyset pagination request', [\n 'team_id' => $teamId,\n 'sequence' => $state->requestCount,\n 'itemsPerPage' => $resultsPerPage,\n 'payload' => $payload,\n 'total' => $state->total,\n ]);\n\n unset($payload['after']);\n $state->setOffset(0);\n }\n\n if ($state->offset) {\n $payload['after'] = $state->offset;\n }\n\n return $payload;\n }\n\n private function shouldSwitchToKeysetPagination(PaginationState $state, int $resultsPerPage): bool\n {\n // Check if we've hit the offset limit\n $shouldSwitch = $state->requestCount > 0 && ($state->offset + $resultsPerPage) > PaginationConfig::TOTAL_QUERY_LIMIT;\n\n if ($shouldSwitch && $state->lastRecordId === null) {\n $this->logger->warning('[Hubspot] Cannot switch to keyset pagination: lastRecordId is null', [\n 'request_count' => $state->requestCount,\n 'current_offset' => $state->offset,\n 'results_per_page' => $resultsPerPage,\n 'total_query_limit' => PaginationConfig::TOTAL_QUERY_LIMIT,\n ]);\n\n return false; // Continue with offset pagination\n }\n\n return $shouldSwitch;\n }\n\n private function validateTokenIfNeeded(Client $client, PaginationState $state): void\n {\n if ($state->shouldValidateToken()) {\n $client->ensureValidToken();\n $state->updateLastTokenCheck();\n }\n }\n\n private function executeSearchRequest(Client $client, string $endpoint, array $payload, PaginationState $state): array\n {\n try {\n $response = $client->getInstance()->getClient()->request('POST', $endpoint, ['json' => $payload]);\n\n return $response->toArray();\n } catch (\\Exception $e) {\n if ($client->isUnauthorizedException($e)) {\n $this->logger->warning('[Hubspot] Got 401 during pagination, attempting token refresh', [\n 'team_id' => $client->getConfig()->getTeam()->getId(),\n 'error' => $e->getMessage(),\n ]);\n\n $client->ensureValidToken();\n $state->updateLastTokenCheck();\n\n try {\n $response = $client->getInstance()->getClient()->request('POST', $endpoint, ['json' => $payload]);\n\n $this->logger->info('[Hubspot] Token refresh and retry successful', [\n 'team_id' => $client->getConfig()->getTeam()->getId(),\n ]);\n\n return $response->toArray();\n } catch (\\Exception $retryException) {\n $this->logger->error('[Hubspot] Retry request failed after token refresh', [\n 'team_id' => $client->getConfig()->getTeam()->getId(),\n 'original_error' => $e->getMessage(),\n 'retry_error' => $retryException->getMessage(),\n ]);\n\n throw $retryException;\n }\n } else {\n throw $e;\n }\n }\n }\n\n private function updateLastRecordId(array $page, PaginationState $state): void\n {\n $lastRecord = ! empty($page['results']) ? end($page['results']) : null;\n $lastRecordId = $lastRecord['id'] ?? null;\n $state->updateLastRecordId($lastRecordId);\n }\n\n private function getNextOffset(array $page): int\n {\n return isset($page['paging']['next']['after']) ? (int) $page['paging']['next']['after'] : 0;\n }\n\n private function logPaginationProgress(PaginationState $state, int $teamId, string $endpoint): void\n {\n if ($state->shouldLogProgress()) {\n $this->logger->info('[Hubspot] Pagination progress log', [\n 'team_id' => $teamId,\n 'endpoint' => $endpoint,\n 'requests_made' => $state->requestCount,\n 'records_fetched' => $state->totalRecords,\n 'elapsed_seconds' => $state->getElapsedSeconds(),\n ]);\n }\n }\n\n private function calculateDelayInMicroseconds(): int\n {\n return (int) (1 / PaginationConfig::SEARCH_RPS_LIMIT * 1000000);\n }\n}","role_description":"text entry area","is_enabled":true,"is_focused":true,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Project","depth":3,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Project","depth":3,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"New File or Directory…","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Expand Selected","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Collapse All","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Options","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
4209796823680654992
|
-7156800611935973763
|
click
|
accessibility
|
NULL
|
Project: faVsco.js, menu
master, menu
Start Listen Project: faVsco.js, menu
master, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
43
Previous Highlighted Error
Next Highlighted Error
[2026-05-07 12:52:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"fa8a3008-d298-4682-bbbc-fdc77520e0d7","trace_id":"7cfb2afb-9fc4-4a77-81be-65dce93c7d80"}
[2026-05-07 12:52:08] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"fa8a3008-d298-4682-bbbc-fdc77520e0d7","trace_id":"7cfb2afb-9fc4-4a77-81be-65dce93c7d80"}
[2026-05-07 12:52:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"fa8a3008-d298-4682-bbbc-fdc77520e0d7","trace_id":"7cfb2afb-9fc4-4a77-81be-65dce93c7d80"}
[2026-05-07 12:52:12] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"932ced9d-9804-48ed-976a-1f8bf5e75707","trace_id":"21bf320c-58f3-4082-831d-9f07f6c6a669"}
[2026-05-07 12:52:12] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"932ced9d-9804-48ed-976a-1f8bf5e75707","trace_id":"21bf320c-58f3-4082-831d-9f07f6c6a669"}
[2026-05-07 12:52:17] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1499,"provider":"hubspot"} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:17] local.INFO: [SocialAccountService] Token retrieved {"socialAccountId":1499,"provider":"hubspot"} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:17] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:17] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {"crm_provider":"hubspot","crm_owner":148,"team_id":2} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:17] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"[URL_WITH_CREDENTIALS] HubspotException
* @throws SocialAccountTokenInvalidException
* @throws BadRequest
*/
public function getPaginatedDataGenerator(
Client $client,
array $payload,
string $type,
int $offset = 0,
int &$total = 0,
?string &$lastRecordId = null
): \Generator {
$state = new PaginationState(offset: $offset);
$endpoint = Client::BASE_URL . "/crm/v3/objects/{$type}/search";
$defaultFilter = $payload['filters'] ?? [];
$resultsPerPage = PayloadBuilder::MAX_SEARCH_REQUEST_LIMIT;
$teamId = $client->getConfig()->getTeam()->getId();
$delay = $this->calculateDelayInMicroseconds();
do {
// if ($this->shouldStopPagination($state, $teamId)) {
// break;
// }
$payload = $this->handlePaginationStrategy($payload, $defaultFilter, $state, $resultsPerPage, $teamId);
// $this->validateTokenIfNeeded($client, $state);
// usleep($delay);
$page = $this->executeSearchRequest($client, $endpoint, $payload, $state);
// $state->setTotal($page['total'] ?? 0);
// $this->updateLastRecordId($page, $state);
//
// // Safely iterate over results with null check
// $results = $page['results'] ?? [];
// foreach ($results as $row) {
// $state->incrementTotalRecords();
// yield $row;
// }
//
// $state->setOffset($this->getNextOffset($page));
// $state->incrementRequestCount();
//
// $this->logPaginationProgress($state, $teamId, $endpoint);
} while ($state->offset && ! empty($page['results']));
// Log final pagination completion stats
$this->logger->info('[Hubspot] Pagination completed', [
'team_id' => $teamId,
'endpoint' => $endpoint,
'total_requests' => $state->requestCount,
'total_records_fetched' => $state->totalRecords,
'total_elapsed_seconds' => round($state->getElapsedSeconds(), 2),
'average_seconds_per_request' => $state->requestCount > 0 ? round($state->getElapsedSeconds() / $state->requestCount, 2) : 0,
]);
// Update reference parameters
$total = $state->total;
$lastRecordId = $state->lastRecordId;
}
private function shouldStopPagination(PaginationState $state, int $teamId): bool
{
if ($state->hasReachedSafetyLimit()) {
$this->logger->warning('[Hubspot] Reached maximum request limit during pagination', [
'team_id' => $teamId,
'safety_limit' => PaginationConfig::LOOP_SAFETY_LIMIT,
'total_fetched' => $state->totalRecords,
]);
return true;
}
return false;
}
private function handlePaginationStrategy(
array $payload,
array $defaultFilter,
PaginationState $state,
int $resultsPerPage,
int $teamId
): array {
if ($this->shouldSwitchToKeysetPagination($state, $resultsPerPage)) {
$payload['filters'] = $defaultFilter;
$payload['filters'][] = [
'propertyName' => 'hs_object_id',
'operator' => 'LT',
'value' => $state->lastRecordId,
];
$this->logger->info('[Hubspot] Search keyset pagination request', [
'team_id' => $teamId,
'sequence' => $state->requestCount,
'itemsPerPage' => $resultsPerPage,
'payload' => $payload,
'total' => $state->total,
]);
unset($payload['after']);
$state->setOffset(0);
}
if ($state->offset) {
$payload['after'] = $state->offset;
}
return $payload;
}
private function shouldSwitchToKeysetPagination(PaginationState $state, int $resultsPerPage): bool
{
// Check if we've hit the offset limit
$shouldSwitch = $state->requestCount > 0 && ($state->offset + $resultsPerPage) > PaginationConfig::TOTAL_QUERY_LIMIT;
if ($shouldSwitch && $state->lastRecordId === null) {
$this->logger->warning('[Hubspot] Cannot switch to keyset pagination: lastRecordId is null', [
'request_count' => $state->requestCount,
'current_offset' => $state->offset,
'results_per_page' => $resultsPerPage,
'total_query_limit' => PaginationConfig::TOTAL_QUERY_LIMIT,
]);
return false; // Continue with offset pagination
}
return $shouldSwitch;
}
private function validateTokenIfNeeded(Client $client, PaginationState $state): void
{
if ($state->shouldValidateToken()) {
$client->ensureValidToken();
$state->updateLastTokenCheck();
}
}
private function executeSearchRequest(Client $client, string $endpoint, array $payload, PaginationState $state): array
{
try {
$response = $client->getInstance()->getClient()->request('POST', $endpoint, ['json' => $payload]);
return $response->toArray();
} catch (\Exception $e) {
if ($client->isUnauthorizedException($e)) {
$this->logger->warning('[Hubspot] Got 401 during pagination, attempting token refresh', [
'team_id' => $client->getConfig()->getTeam()->getId(),
'error' => $e->getMessage(),
]);
$client->ensureValidToken();
$state->updateLastTokenCheck();
try {
$response = $client->getInstance()->getClient()->request('POST', $endpoint, ['json' => $payload]);
$this->logger->info('[Hubspot] Token refresh and retry successful', [
'team_id' => $client->getConfig()->getTeam()->getId(),
]);
return $response->toArray();
} catch (\Exception $retryException) {
$this->logger->error('[Hubspot] Retry request failed after token refresh', [
'team_id' => $client->getConfig()->getTeam()->getId(),
'original_error' => $e->getMessage(),
'retry_error' => $retryException->getMessage(),
]);
throw $retryException;
}
} else {
throw $e;
}
}
}
private function updateLastRecordId(array $page, PaginationState $state): void
{
$lastRecord = ! empty($page['results']) ? end($page['results']) : null;
$lastRecordId = $lastRecord['id'] ?? null;
$state->updateLastRecordId($lastRecordId);
}
private function getNextOffset(array $page): int
{
return isset($page['paging']['next']['after']) ? (int) $page['paging']['next']['after'] : 0;
}
private function logPaginationProgress(PaginationState $state, int $teamId, string $endpoint): void
{
if ($state->shouldLogProgress()) {
$this->logger->info('[Hubspot] Pagination progress log', [
'team_id' => $teamId,
'endpoint' => $endpoint,
'requests_made' => $state->requestCount,
'records_fetched' => $state->totalRecords,
'elapsed_seconds' => $state->getElapsedSeconds(),
]);
}
}
private function calculateDelayInMicroseconds(): int
{
return (int) (1 / PaginationConfig::SEARCH_RPS_LIMIT * 1000000);
}
}
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
3990
|
NULL
|
NULL
|
NULL
|
|
4066
|
NULL
|
0
|
2026-05-07T13:00:54.276344+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-07/1778 /Users/lukas/.screenpipe/data/data/2026-05-07/1778158854276_m2.jpg...
|
Claude
|
Claude
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Skip to content
Skip to content
Click to collapse
Skip to content
Skip to content
Click to collapse
⌘B
Drag to resize
Open sidebar
Chat
Cowork
Code
New chat ⌘N
New chat
⌘N
Projects
Artifacts
Customize
Pinned
Bulgarian citizenship application process for EU residents
More options for Bulgarian citizenship application process for EU residents
Dawarich location tracking project
More options for Dawarich location tracking project
Recents
View all
HubSpot rate limit implementation strategy
More options for HubSpot rate limit implementation strategy
Screenpipe retention policy code location
More options for Screenpipe retention policy code location
Viewing retention policy in screenpipe
More options for Viewing retention policy in screenpipe
Clean shot x video recording termination issue
More options for Clean shot x video recording termination issue
HubSpot rate limit handling with executeRequest
More options for HubSpot rate limit handling with executeRequest
Untitled
More options
💬 Screen pipe. Is there ability…
More options for 💬 Screen pipe. Is there ability…
SMB mount access inconsistency between Finder and iTerm
More options for SMB mount access inconsistency between Finder and iTerm
💬 What is the best switch I can…
More options for 💬 What is the best switch I can…
Permission denied on screenpipe volume
More options for Permission denied on screenpipe volume
Screenpipe sync database attachment error
More options for Screenpipe sync database attachment error
Last swimming outing with Dani
More options for Last swimming outing with Dani
Definition of incarcerated
More options for Definition of incarcerated
Chromecast remote volume buttons not working
More options for Chromecast remote volume buttons not working
Salesforce API errors with Organization and FieldDefinition queries
More options for Salesforce API errors with Organization and FieldDefinition queries
Daily activity summary from screenpipe data
More options for Daily activity summary from screenpipe data
MacBook unexpected restarts and kanji screen
More options for MacBook unexpected restarts and kanji screen
Security patch review and testing guidance
More options for Security patch review and testing guidance
Food calorie values reference
More options for Food calorie values reference
Tracking location history from last week
More options for Tracking location history from last week
Lukas Pro
Get apps and extensions
HubSpot rate limit implementation strategy, rename chat
HubSpot rate limit implementation strategy
More options for HubSpot rate limit implementation strategy
Close
Share chat
Claude finished the response
You said: So just a solution for rate limit implementation.
You said: So just a solution for rate limit implementation.
So just a solution for rate limit implementation. The situation currently is that there are some daily and secondary limits for HubSpot. I would like to make sure I never reach a 429 error rate limit. The requests can come from any flow. It can be:
updating activity (engagement, meeting, call, note)
searching for a company or contact
updating deal
patching IDs
Review what the limit is at the moment in the HubSpot documentation and then think of the solution:
where to store it
how to read it
how to work with multiple jobs
how to work with paginated requests Let's consider a situation when there are 600 opportunities to sync. What would be the flow? How would the rate limit be recognized? How would it be handled? What are the potential issues? [API usage guidelines and limits - HubSpot docs](
https://developers.hubspot.com/docs/developer-tooling/platform/usage-guidelines
https://developers.hubspot.com/docs/developer-tooling/platform/usage-guidelines
). Example of such a error Client error:
POST https://api.hubapi.com/crm/v3/objects/contact/search
resulted in a
429 Too Many Requests
response: {"status":"error","message":"You have reached your secondly limit.","errorType":"RATE_LIMIT","correlationId":"019dffc4-4 (truncated...). Think carefully about the implementation and potential issue and bottlenecks.
Show more
10:42
Retry
Edit
Copy
Claude responded: Current HubSpot limits (Apr 2026)
Claude responded: Current HubSpot limits (Apr 2026)
Synthesized HubSpot rate limit architecture with Redis storage and sliding window algorithms
Synthesized HubSpot rate limit architecture with Redis storage and sliding window algorithms
Current HubSpot limits (Apr 2026)
Current HubSpot limits (Apr 2026)
For privately distributed apps (which is what Jiminny presumably uses with HubSpot), the limits are layered: a per-app burst window of 100/10s on Free/Starter, 190/10s on Pro/Enterprise, or 250/10s with the API Limit Increase add-on
, plus a per-account daily cap of 250k / 625k / 1M depending on tier — shared across all private apps in the account
. The burst window is per app; the daily quota is per portal.
hubspot
hubspot
hubspot
hubspot
The Search API is special: five requests per second per account, capped at 200 records per page, with a hard 10,000-result ceiling per query
. That's the limit the 429 in your example is hitting (
secondly limit
on
/crm/v3/objects/contact/search
). It's a separate bucket from the 190/10s, and critically, search responses do not include the
X-HubSpot-RateLimit-*
headers
— you can't read remaining capacity off the response, you have to track it yourself.
hubspot
hubspot
hubspot
hubspot
Non-search endpoints return
X-HubSpot-RateLimit-Remaining
,
-Max
, and
-Interval-Milliseconds
. The daily headers are not returned for OAuth-authenticated calls
, so for those you check the account-info endpoint or maintain your own counter. There's also a soft rule: errors should stay under 5% of total daily requests
— that's enforced for marketplace listing, but it's also a sane operational target.
hubspot
hubspot
hubspot
hubspot
So you have
four buckets
to track at minimum: app-burst (10s sliding), search-secondly (1s sliding), account-daily (24h fixed, midnight in HubSpot's TZ), and per-app daily share (your own budgeting on top of the account cap).
Where to store it
Where to store it
Redis. It's the only realistic option once you have multiple queue workers — DB-backed counters serialize too much, and in-process state can't coordinate across workers. Laravel already speaks Redis natively, and you get atomic
INCR
/
EXPIRE
plus Lua scripting for true CAS semantics.
Key layout I'd use:
Copy to clipboard
hubspot:rl:burst:{portalId}:{appId} ZSET (sliding 10s)
hubspot:rl:search:{portalId} ZSET (sliding 1s)
hubspot:rl:daily:{portalId} STRING + TTL to midnight TZ
hubspot:rl:meta:{portalId} HASH (last seen headers)
The two short-window buckets are sliding-window-log (Redis ZSET, score =
microtime
, member = unique request id). Lua script removes entries older than the window, counts remaining slots, and only adds the new one if there's room — all atomic. Fixed windows are simpler but allow 2× the limit at the boundary, which on a 5/s window is brutal.
The daily bucket is a plain
INCR
with TTL set to seconds-until-midnight in
HubSpot's account timezone
, not yours — Sofia is UTC+2/+3 but your portal might be set to US Eastern. Get this once and cache it.
How to read it
How to read it
Two-phase: optimistic pre-check, authoritative post-update.
Before a call, run the Lua acquire script. If it returns "denied," sleep until a slot frees up (the script can return ms-until-next-slot) or push the job back to the queue with a delay. Don't busy-loop.
After the call, parse
X-HubSpot-RateLimit-Remaining
/
-Max
/
-Interval-Milliseconds
and store them in
hubspot:rl:meta:{portalId}
. This is your reality check — if your local counter says 50 remaining but HubSpot's header says 5, you trust HubSpot and clamp your counter. This handles clock drift, missed accounting (e.g., crashed worker that took a token but never made the request), and other apps in the same account consuming the daily budget invisibly.
For search specifically, since headers don't come back, the local counter
is
the source of truth — meaning if you ever crash mid-flight, you've under-counted. Always release tokens on connection-level failure but
not
on 429 (you really did make that request).
How to work with multiple jobs
How to work with multiple jobs
The queue layer needs to enforce concurrency separately from the rate limiter. Both work together:
Concurrency cap
via
Queue::throttle()
or a Redis semaphore — limits how many sync workers run in parallel against HubSpot. Without this, you can have 50 workers all blocked waiting for tokens, which is wasteful and creates retry storms.
Per-tenant fairness
— if you sync many Jiminny customers into different HubSpot portals, each portal has its own bucket but you still want one slow portal not to starve others. Either separate queues per portal or a fair-share scheduler.
Priority lanes
— webhook-driven updates (user-visible latency) should outrank background batch syncs. Two queues:
hubspot-priority
and
hubspot-bulk
, with priority workers taking 70% of the burst budget and bulk taking 30% (enforce via separate sub-buckets if you really want hard separation, otherwise just pull from priority first).
Backoff on 429
— respect the
Retry-After
header. If absent, exponential with jitter (e.g.,
min(2^attempt * 250ms, 30s) ± 20%
). The jitter is non-negotiable; without it, simultaneous 429s retry in lockstep and you get thundering-herd 429s on retry.
How to work with paginated requests
How to work with paginated requests
The trap is treating "fetch all" as one logical operation. Each page is its own API call and competes for tokens with everything else.
Two practical rules:
Don't hold the worker idle while paginating.
If page N takes 500ms and page N+1 needs to wait 800ms for a token, you've burned 800ms of worker time doing nothing. Instead, fetch page N, dispatch the
processing
of page N as a separate job, and queue a "fetch page N+1" job with a delay equal to the wait time. Each page becomes its own atomic unit.
Always batch where HubSpot offers it.
POST /crm/v3/objects/{type}/batch/{read|update|create}
accepts up to 100 IDs per call. For your "patching IDs" flow this is the difference between 600 calls and 6.
Walkthrough: 600 opportunities
Walkthrough: 600 opportunities
Naive flow (one PATCH per deal): 600 calls. At 190/10s that's ~32s of API time, well under daily. You'd hit burst easily without throttling. Plus likely 1-3 search calls upfront and N association calls.
Sane flow:
Identify deltas
— if you can avoid Search at all, do. Use
lastmodifieddate
filter on a single search if you must, paginate at limit=200. For 600 deals that's 3 search calls @ 5/s = ~600ms naturally throttled.
Batch read
current state —
POST /crm/v3/objects/deals/batch/read
with 100 IDs per call → 6 calls. Burst weight 6.
Compute diff
in your code (no API).
Batch update
—
POST /crm/v3/objects/deals/batch/update
with 100 per call → 6 calls.
Associations
—
POST /crm/v4/associations/{from}/{to}/batch/create
if needed → another few batch calls.
Total: ~15-20 API calls for 600 deals. Burst budget consumed: 20/190 over ~5s. Daily impact: trivial.
Recognition: pre-check denies if
<weight>
slots aren't free; on 429 the response surfaces
policyName
(DAILY/SECONDLY) — log it, push the job back with
Retry-After
delay, increment a metric so you can alarm on sustained 429 rate.
Pitfalls & bottlenecks worth pre-empting
Pitfalls & bottlenecks worth pre-empting
Daily quota is shared across the whole portal
, including any n8n flows, other private apps, marketing automation calling APIs, etc. Budget for ~70-80% of the documented limit, not 100%. Add an internal per-app daily cap so a runaway sync can't starve other apps.
Search is uniquely fragile
: separate 5/s bucket, no headers to read, 10k-result cap per query. If you ever hit 10k+ deals matching a filter, partition by
hs_object_id
ranges or by
lastmodifieddate
windows.
Retry storms after HubSpot incidents
— always jitter, always cap total retries (e.g., 5 attempts, then dead-letter).
Webhook → sync → webhook loops
— when your update fires a HubSpot webhook that triggers another sync. Tag your own writes (e.g., a custom property
jy_last_sync_id
) and ignore webhooks where it just changed.
Token refresh
— OAuth refresh itself counts against burst. Cache the access token in Redis with TTL =
expires_in - 60s
, single-flight the refresh (only one worker refreshes; others wait on a lock).
Search latency for fresh writes
— newly created/updated objects don't appear in search instantly. Don't write-then-search; use returned IDs directly.
Clock skew
— Redis is authoritative. Don't use
time()
from each worker for window scoring; use
redis.call('TIME')
inside the Lua script.
Dead workers with held tokens
— sliding-window-log handles this naturally because tokens expire by score; token-bucket implementations need explicit release-on-crash logic.
The 5% error rule
counts every 429 toward your error budget, even successfully retried ones. If your pre-check is working well, 429s should be near zero — if they're not, your pre-check is wrong, not just slow.
Phantom contention with Laravel
RateLimited
middleware
: it's per-job-class by default, not per-portal. If your
SyncDealJob
and
UpdateActivityJob
are different classes both calling HubSpot, they don't share a Laravel-level limiter — you need a single
HubspotRateLimiter
service that everything routes through.
If you want, I can sketch the Lua script for the sliding-window acquire and the Laravel service wrapper around it.
Copy
Give positive feedback
Give negative feedback
Retry
You said: What will happen if there are two different types of rate limits?
You said: What will happen if there are two different types of rate limits?
What will happen if there are two different types of rate limits?
Search requests that have 5 requests per second
The other rate limit that has, let's say, 100 requests per 10 seconds How do these work together? Is there some conflict? Can I reach the limit with one request and block either as well, or are these separated? Can I still continue making search requests once I hit the normal requests limits?
13:40
Retry
Edit
Copy
Claude responded: They're independent buckets — with one shared bucket on top.
Claude responded: They're independent buckets — with one shared bucket on top.
Analyzed independent rate limit buckets and their practical interactions
Analyzed independent rate limit buckets and their practical interactions
They're independent buckets — with one shared bucket on top.
The three buckets and what each call hits
The three buckets and what each call hits
Copy to clipboard
┌──────────────────┐
Search request ──→ │ Search: 5/sec │ ──┐
└──────────────────┘ │
├──→ ┌─────────────────┐
┌──────────────────┐ │ │ Daily: 250k–1M │
Non-search call ──→ │ Burst: 190/10s │ ──┘ │ (per portal) │
└──────────────────┘ └─────────────────┘
A search call is only metered against the search bucket and the daily bucket. A non-search call (batch read/update, single PATCH, associations, etc.) is only metered against the burst bucket and the daily bucket. The two short-window buckets do not share counters.
What this means practically
What this means practically
Hitting search secondly limit (5/s):
Only further
/search
calls 429. Your batch reads, batch updates, single PATCHes, association calls — all keep working at full burst speed. This is actually useful: if your sync is bottlenecked on Search, you can pivot to using
lastmodifieddate
filters via batch endpoints, or use the IDs you already have to do batch reads, while Search cools off.
Hitting burst limit (190/10s):
Only non-search calls 429. You can still issue Search calls at 5/s. Useful for: continuing to identify deltas for queueing while in-flight updates drain, or refreshing a small set of records via Search even though your write pipeline is paused.
Hitting daily limit:
Everything stops. Search and non-search alike. Doesn't unblock until midnight in your portal's configured timezone — and remember this is shared across every private app in the portal, plus n8n flows, marketing tools, anything else hitting the API with that account.
So can one type of request block the other?
So can one type of request block the other?
Search → Burst:
No.
Saturating Search at 50 calls per 10s leaves your full 190/10s burst untouched.
Burst → Search:
No.
Saturating burst leaves Search's 5/s untouched.
Either → Daily:
Yes
, but only by contributing to the same daily counter. It's volume that kills you here, not the type.
In theory you can sustain ~50 search + ~190 other =
~240 calls per 10 seconds
indefinitely (until daily runs out), because the two buckets bill independently.
Implementation consequence
Implementation consequence
Your rate limiter needs to know which bucket a request hits before it acquires. Cleanest pattern:
Copy to clipboard...
|
[{"role":"AXLink","text":& [{"role":"AXLink","text":"Skip to content","depth":14,"bounds":{"left":0.029587766,"top":0.03830806,"width":0.0003324468,"height":0.0007980846},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Skip to content","depth":15,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Click to collapse","depth":16,"bounds":{"left":0.10239362,"top":0.06703911,"width":0.030585106,"height":0.011971269},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.10239362,"top":0.06703911,"width":0.0029920214,"height":0.011971269}},{"char_start":1,"char_count":16,"bounds":{"left":0.10538564,"top":0.06703911,"width":0.027925532,"height":0.011971269}}],"role_description":"text"},{"role":"AXStaticText","text":"⌘B","depth":16,"bounds":{"left":0.1349734,"top":0.06703911,"width":0.0063164895,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Drag to resize","depth":16,"bounds":{"left":0.10239362,"top":0.079010375,"width":0.025930852,"height":0.011971269},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.10239362,"top":0.079010375,"width":0.0029920214,"height":0.011971269}},{"char_start":1,"char_count":13,"bounds":{"left":0.10538564,"top":0.079010375,"width":0.022938829,"height":0.011971269}}],"role_description":"text"},{"role":"AXButton","text":"Open sidebar","depth":14,"bounds":{"left":0.029920213,"top":0.02793296,"width":0.00930851,"height":0.022346368},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Chat","depth":16,"bounds":{"left":0.004986702,"top":0.059856344,"width":0.025930852,"height":0.022346368},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Cowork","depth":16,"bounds":{"left":0.03158245,"top":0.059856344,"width":0.03125,"height":0.022346368},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code","depth":16,"bounds":{"left":0.0631649,"top":0.059856344,"width":0.026928192,"height":0.022346368},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"New chat ⌘N","depth":15,"bounds":{"left":0.0043218085,"top":0.08938547,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"New chat","depth":16,"bounds":{"left":0.014295213,"top":0.0933759,"width":0.018949468,"height":0.012769354},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.014295213,"top":0.0933759,"width":0.003656915,"height":0.013567438}},{"char_start":1,"char_count":7,"bounds":{"left":0.01761968,"top":0.0933759,"width":0.015957447,"height":0.013567438}}],"role_description":"text"},{"role":"AXStaticText","text":"⌘N","depth":17,"bounds":{"left":0.08178192,"top":0.0933759,"width":0.006981383,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Projects","depth":15,"bounds":{"left":0.0043218085,"top":0.110135674,"width":0.08643617,"height":0.019952115},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Artifacts","depth":15,"bounds":{"left":0.0043218085,"top":0.1300878,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Customize","depth":15,"bounds":{"left":0.0043218085,"top":0.15003991,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Pinned","depth":16,"bounds":{"left":0.0063164895,"top":0.18914606,"width":0.08377659,"height":0.013567438},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXButton","text":"Bulgarian citizenship application process for EU residents","depth":18,"bounds":{"left":0.0043218085,"top":0.20590582,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Bulgarian citizenship application process for EU residents","depth":19,"bounds":{"left":0.08344415,"top":0.20909816,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Dawarich location tracking project","depth":18,"bounds":{"left":0.0043218085,"top":0.22745411,"width":0.08643617,"height":0.019952115},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Dawarich location tracking project","depth":19,"bounds":{"left":0.08344415,"top":0.22984837,"width":0.005984043,"height":0.015163607},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Recents","depth":16,"bounds":{"left":0.0063164895,"top":0.25698325,"width":0.06349734,"height":0.012769354},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXButton","text":"View all","depth":16,"bounds":{"left":0.07114362,"top":0.25698325,"width":0.018949468,"height":0.012769354},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"HubSpot rate limit implementation strategy","depth":18,"bounds":{"left":0.0043218085,"top":0.27294493,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for HubSpot rate limit implementation strategy","depth":19,"bounds":{"left":0.08344415,"top":0.27613726,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Screenpipe retention policy code location","depth":18,"bounds":{"left":0.0043218085,"top":0.29449323,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Screenpipe retention policy code location","depth":19,"bounds":{"left":0.08344415,"top":0.29768556,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Viewing retention policy in screenpipe","depth":18,"bounds":{"left":0.0043218085,"top":0.31524342,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Viewing retention policy in screenpipe","depth":19,"bounds":{"left":0.08344415,"top":0.31843576,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Clean shot x video recording termination issue","depth":18,"bounds":{"left":0.0043218085,"top":0.3367917,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Clean shot x video recording termination issue","depth":19,"bounds":{"left":0.08344415,"top":0.33998403,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"HubSpot rate limit handling with executeRequest","depth":18,"bounds":{"left":0.0043218085,"top":0.3575419,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for HubSpot rate limit handling with executeRequest","depth":19,"bounds":{"left":0.08344415,"top":0.36073422,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Untitled","depth":18,"bounds":{"left":0.0043218085,"top":0.3790902,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options","depth":19,"bounds":{"left":0.08344415,"top":0.38228253,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"💬 Screen pipe. Is there ability…","depth":18,"bounds":{"left":0.0043218085,"top":0.39984038,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for 💬 Screen pipe. Is there ability…","depth":19,"bounds":{"left":0.08344415,"top":0.40303272,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"SMB mount access inconsistency between Finder and iTerm","depth":18,"bounds":{"left":0.0043218085,"top":0.42138866,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for SMB mount access inconsistency between Finder and iTerm","depth":19,"bounds":{"left":0.08344415,"top":0.4237829,"width":0.005984043,"height":0.015163607},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"💬 What is the best switch I can…","depth":18,"bounds":{"left":0.0043218085,"top":0.44213888,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for 💬 What is the best switch I can…","depth":19,"bounds":{"left":0.08344415,"top":0.44533122,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Permission denied on screenpipe volume","depth":18,"bounds":{"left":0.0043218085,"top":0.46288908,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Permission denied on screenpipe volume","depth":19,"bounds":{"left":0.08344415,"top":0.4660814,"width":0.005984043,"height":0.015163607},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Screenpipe sync database attachment error","depth":18,"bounds":{"left":0.0043218085,"top":0.48443735,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Screenpipe sync database attachment error","depth":19,"bounds":{"left":0.08344415,"top":0.48762968,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Last swimming outing with Dani","depth":18,"bounds":{"left":0.0043218085,"top":0.5051876,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Last swimming outing with Dani","depth":19,"bounds":{"left":0.08344415,"top":0.5083799,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Definition of incarcerated","depth":18,"bounds":{"left":0.0043218085,"top":0.52673584,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Definition of incarcerated","depth":19,"bounds":{"left":0.08344415,"top":0.52992815,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Chromecast remote volume buttons not working","depth":18,"bounds":{"left":0.0043218085,"top":0.547486,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Chromecast remote volume buttons not working","depth":19,"bounds":{"left":0.08344415,"top":0.5506784,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Salesforce API errors with Organization and FieldDefinition queries","depth":18,"bounds":{"left":0.0043218085,"top":0.56903434,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Salesforce API errors with Organization and FieldDefinition queries","depth":19,"bounds":{"left":0.08344415,"top":0.57222664,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Daily activity summary from screenpipe data","depth":18,"bounds":{"left":0.0043218085,"top":0.5897845,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Daily activity summary from screenpipe data","depth":19,"bounds":{"left":0.08344415,"top":0.59297687,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"MacBook unexpected restarts and kanji screen","depth":18,"bounds":{"left":0.0043218085,"top":0.6113328,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for MacBook unexpected restarts and kanji screen","depth":19,"bounds":{"left":0.08344415,"top":0.61452514,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Security patch review and testing guidance","depth":18,"bounds":{"left":0.0043218085,"top":0.632083,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Security patch review and testing guidance","depth":19,"bounds":{"left":0.08344415,"top":0.63527536,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Food calorie values reference","depth":18,"bounds":{"left":0.0043218085,"top":0.65363127,"width":0.08643617,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Food calorie values reference","depth":19,"bounds":{"left":0.08344415,"top":0.65682364,"width":0.005984043,"height":0.014365523},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Tracking location history from last week","depth":18,"bounds":{"left":0.0043218085,"top":0.6743815,"width":0.08643617,"height":0.011173184},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Tracking location history from last week","depth":19,"bounds":{"left":0.08344415,"top":0.6775738,"width":0.005984043,"height":0.007980846},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"Lukas Pro","depth":15,"bounds":{"left":0.0043218085,"top":0.6943336,"width":0.037898935,"height":0.01915403},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Get apps and extensions","depth":15,"bounds":{"left":0.08277926,"top":0.6943336,"width":0.007978723,"height":0.01915403},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"HubSpot rate limit implementation strategy, rename chat","depth":20,"bounds":{"left":0.043218084,"top":0.02793296,"width":0.09773936,"height":0.022346368},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"HubSpot rate limit implementation strategy","depth":22,"bounds":{"left":0.04454787,"top":0.031923383,"width":0.09507979,"height":0.014365523},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.04454787,"top":0.031923383,"width":0.003656915,"height":0.014365523}},{"char_start":1,"char_count":41,"bounds":{"left":0.048204787,"top":0.031923383,"width":0.09142287,"height":0.014365523}}],"role_description":"text"},{"role":"AXPopUpButton","text":"More options for HubSpot rate limit implementation strategy","depth":20,"bounds":{"left":0.14128989,"top":0.02793296,"width":0.0066489363,"height":0.022346368},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close","depth":22,"bounds":{"left":0.22240691,"top":0.026336791,"width":0.010638298,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Share chat","depth":22,"bounds":{"left":0.234375,"top":0.026336791,"width":0.010638298,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Claude finished the response","depth":22,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"You said: So just a solution for rate limit implementation.","depth":21,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"You said: So just a solution for rate limit implementation.","depth":22,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"So just a solution for rate limit implementation. The situation currently is that there are some daily and secondary limits for HubSpot. I would like to make sure I never reach a 429 error rate limit. The requests can come from any flow. It can be:","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"updating activity (engagement, meeting, call, note)","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"searching for a company or contact","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"updating deal","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"patching IDs\nReview what the limit is at the moment in the HubSpot documentation and then think of the solution:","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"where to store it","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"how to read it","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"how to work with multiple jobs","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"how to work with paginated requests Let's consider a situation when there are 600 opportunities to sync. What would be the flow? How would the rate limit be recognized? How would it be handled? What are the potential issues? [API usage guidelines and limits - HubSpot docs](","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXLink","text":"https://developers.hubspot.com/docs/developer-tooling/platform/usage-guidelines","depth":26,"on_screen":false,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"https://developers.hubspot.com/docs/developer-tooling/platform/usage-guidelines","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"). Example of such a error Client error:","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"POST https://api.hubapi.com/crm/v3/objects/contact/search","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"resulted in a","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"429 Too Many Requests","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"response: {\"status\":\"error\",\"message\":\"You have reached your secondly limit.\",\"errorType\":\"RATE_LIMIT\",\"correlationId\":\"019dffc4-4 (truncated...). Think carefully about the implementation and potential issue and bottlenecks.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Show more","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:42","depth":23,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Retry","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Edit","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Copy","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXHeading","text":"Claude responded: Current HubSpot limits (Apr 2026)","depth":22,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"Claude responded: Current HubSpot limits (Apr 2026)","depth":23,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Synthesized HubSpot rate limit architecture with Redis storage and sliding window algorithms","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Synthesized HubSpot rate limit architecture with Redis storage and sliding window algorithms","depth":24,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"Current HubSpot limits (Apr 2026)","depth":25,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"Current HubSpot limits (Apr 2026)","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"For privately distributed apps (which is what Jiminny presumably uses with HubSpot), the limits are layered: a per-app burst window of 100/10s on Free/Starter, 190/10s on Pro/Enterprise, or 250/10s with the API Limit Increase add-on","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", plus a per-account daily cap of 250k / 625k / 1M depending on tier — shared across all private apps in the account","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":". The burst window is per app; the daily quota is per portal.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXLink","text":"hubspot","depth":27,"on_screen":false,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"hubspot","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXLink","text":"hubspot","depth":27,"on_screen":false,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"hubspot","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"The Search API is special: five requests per second per account, capped at 200 records per page, with a hard 10,000-result ceiling per query","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":". That's the limit the 429 in your example is hitting (","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"secondly limit","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"on","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/crm/v3/objects/contact/search","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"). It's a separate bucket from the 190/10s, and critically, search responses do not include the","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"X-HubSpot-RateLimit-*","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"headers","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— you can't read remaining capacity off the response, you have to track it yourself.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXLink","text":"hubspot","depth":27,"on_screen":false,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"hubspot","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXLink","text":"hubspot","depth":27,"on_screen":false,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"hubspot","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Non-search endpoints return","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"X-HubSpot-RateLimit-Remaining","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":",","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"-Max","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", and","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"-Interval-Milliseconds","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":". The daily headers are not returned for OAuth-authenticated calls","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", so for those you check the account-info endpoint or maintain your own counter. There's also a soft rule: errors should stay under 5% of total daily requests","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— that's enforced for marketplace listing, but it's also a sane operational target.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXLink","text":"hubspot","depth":27,"on_screen":false,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"hubspot","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXLink","text":"hubspot","depth":27,"on_screen":false,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"hubspot","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"So you have","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"four buckets","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"to track at minimum: app-burst (10s sliding), search-secondly (1s sliding), account-daily (24h fixed, midnight in HubSpot's TZ), and per-app daily share (your own budgeting on top of the account cap).","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"Where to store it","depth":25,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"Where to store it","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Redis. It's the only realistic option once you have multiple queue workers — DB-backed counters serialize too much, and in-process state can't coordinate across workers. Laravel already speaks Redis natively, and you get atomic","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"INCR","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"EXPIRE","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"plus Lua scripting for true CAS semantics.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Key layout I'd use:","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Copy to clipboard","depth":28,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"hubspot:rl:burst:{portalId}:{appId} ZSET (sliding 10s)","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"hubspot:rl:search:{portalId} ZSET (sliding 1s)","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"hubspot:rl:daily:{portalId} STRING + TTL to midnight TZ","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"hubspot:rl:meta:{portalId} HASH (last seen headers)","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"The two short-window buckets are sliding-window-log (Redis ZSET, score =","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"microtime","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", member = unique request id). Lua script removes entries older than the window, counts remaining slots, and only adds the new one if there's room — all atomic. Fixed windows are simpler but allow 2× the limit at the boundary, which on a 5/s window is brutal.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"The daily bucket is a plain","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"INCR","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"with TTL set to seconds-until-midnight in","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"HubSpot's account timezone","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", not yours — Sofia is UTC+2/+3 but your portal might be set to US Eastern. Get this once and cache it.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"How to read it","depth":25,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"How to read it","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Two-phase: optimistic pre-check, authoritative post-update.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Before a call, run the Lua acquire script. If it returns \"denied,\" sleep until a slot frees up (the script can return ms-until-next-slot) or push the job back to the queue with a delay. Don't busy-loop.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"After the call, parse","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"X-HubSpot-RateLimit-Remaining","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"-Max","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"-Interval-Milliseconds","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"and store them in","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"hubspot:rl:meta:{portalId}","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":". This is your reality check — if your local counter says 50 remaining but HubSpot's header says 5, you trust HubSpot and clamp your counter. This handles clock drift, missed accounting (e.g., crashed worker that took a token but never made the request), and other apps in the same account consuming the daily budget invisibly.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"For search specifically, since headers don't come back, the local counter","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"is","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"the source of truth — meaning if you ever crash mid-flight, you've under-counted. Always release tokens on connection-level failure but","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"not","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"on 429 (you really did make that request).","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"How to work with multiple jobs","depth":25,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"How to work with multiple jobs","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"The queue layer needs to enforce concurrency separately from the rate limiter. Both work together:","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Concurrency cap","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"via","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Queue::throttle()","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"or a Redis semaphore — limits how many sync workers run in parallel against HubSpot. Without this, you can have 50 workers all blocked waiting for tokens, which is wasteful and creates retry storms.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Per-tenant fairness","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— if you sync many Jiminny customers into different HubSpot portals, each portal has its own bucket but you still want one slow portal not to starve others. Either separate queues per portal or a fair-share scheduler.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Priority lanes","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— webhook-driven updates (user-visible latency) should outrank background batch syncs. Two queues:","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"hubspot-priority","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"and","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"hubspot-bulk","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", with priority workers taking 70% of the burst budget and bulk taking 30% (enforce via separate sub-buckets if you really want hard separation, otherwise just pull from priority first).","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Backoff on 429","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— respect the","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Retry-After","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"header. If absent, exponential with jitter (e.g.,","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"min(2^attempt * 250ms, 30s) ± 20%","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"). The jitter is non-negotiable; without it, simultaneous 429s retry in lockstep and you get thundering-herd 429s on retry.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"How to work with paginated requests","depth":25,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"How to work with paginated requests","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"The trap is treating \"fetch all\" as one logical operation. Each page is its own API call and competes for tokens with everything else.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Two practical rules:","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Don't hold the worker idle while paginating.","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"If page N takes 500ms and page N+1 needs to wait 800ms for a token, you've burned 800ms of worker time doing nothing. Instead, fetch page N, dispatch the","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"processing","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"of page N as a separate job, and queue a \"fetch page N+1\" job with a delay equal to the wait time. Each page becomes its own atomic unit.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Always batch where HubSpot offers it.","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"POST /crm/v3/objects/{type}/batch/{read|update|create}","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"accepts up to 100 IDs per call. For your \"patching IDs\" flow this is the difference between 600 calls and 6.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"Walkthrough: 600 opportunities","depth":25,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"Walkthrough: 600 opportunities","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Naive flow (one PATCH per deal): 600 calls. At 190/10s that's ~32s of API time, well under daily. You'd hit burst easily without throttling. Plus likely 1-3 search calls upfront and N association calls.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Sane flow:","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Identify deltas","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— if you can avoid Search at all, do. Use","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"lastmodifieddate","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"filter on a single search if you must, paginate at limit=200. For 600 deals that's 3 search calls @ 5/s = ~600ms naturally throttled.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Batch read","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"current state —","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"POST /crm/v3/objects/deals/batch/read","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"with 100 IDs per call → 6 calls. Burst weight 6.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Compute diff","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"in your code (no API).","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Batch update","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"—","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"POST /crm/v3/objects/deals/batch/update","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"with 100 per call → 6 calls.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Associations","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"—","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"POST /crm/v4/associations/{from}/{to}/batch/create","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"if needed → another few batch calls.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Total: ~15-20 API calls for 600 deals. Burst budget consumed: 20/190 over ~5s. Daily impact: trivial.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Recognition: pre-check denies if","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"<weight>","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"slots aren't free; on 429 the response surfaces","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"policyName","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"(DAILY/SECONDLY) — log it, push the job back with","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Retry-After","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"delay, increment a metric so you can alarm on sustained 429 rate.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"Pitfalls & bottlenecks worth pre-empting","depth":25,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"Pitfalls & bottlenecks worth pre-empting","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Daily quota is shared across the whole portal","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", including any n8n flows, other private apps, marketing automation calling APIs, etc. Budget for ~70-80% of the documented limit, not 100%. Add an internal per-app daily cap so a runaway sync can't starve other apps.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Search is uniquely fragile","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":": separate 5/s bucket, no headers to read, 10k-result cap per query. If you ever hit 10k+ deals matching a filter, partition by","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"hs_object_id","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"ranges or by","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"lastmodifieddate","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"windows.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Retry storms after HubSpot incidents","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— always jitter, always cap total retries (e.g., 5 attempts, then dead-letter).","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Webhook → sync → webhook loops","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— when your update fires a HubSpot webhook that triggers another sync. Tag your own writes (e.g., a custom property","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"jy_last_sync_id","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":") and ignore webhooks where it just changed.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Token refresh","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— OAuth refresh itself counts against burst. Cache the access token in Redis with TTL =","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"expires_in - 60s","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", single-flight the refresh (only one worker refreshes; others wait on a lock).","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Search latency for fresh writes","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— newly created/updated objects don't appear in search instantly. Don't write-then-search; use returned IDs directly.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Clock skew","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— Redis is authoritative. Don't use","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"time()","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"from each worker for window scoring; use","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"redis.call('TIME')","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"inside the Lua script.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Dead workers with held tokens","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— sliding-window-log handles this naturally because tokens expire by score; token-bucket implementations need explicit release-on-crash logic.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"The 5% error rule","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"counts every 429 toward your error budget, even successfully retried ones. If your pre-check is working well, 429s should be near zero — if they're not, your pre-check is wrong, not just slow.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Phantom contention with Laravel","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"RateLimited","depth":29,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"middleware","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":": it's per-job-class by default, not per-portal. If your","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"SyncDealJob","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"and","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"UpdateActivityJob","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"are different classes both calling HubSpot, they don't share a Laravel-level limiter — you need a single","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"HubspotRateLimiter","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"service that everything routes through.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"If you want, I can sketch the Lua script for the sliding-window acquire and the Laravel service wrapper around it.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Copy","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Give positive feedback","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Give negative feedback","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Retry","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXHeading","text":"You said: What will happen if there are two different types of rate limits?","depth":21,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"You said: What will happen if there are two different types of rate limits?","depth":22,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"What will happen if there are two different types of rate limits?","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Search requests that have 5 requests per second","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"The other rate limit that has, let's say, 100 requests per 10 seconds How do these work together? Is there some conflict? Can I reach the limit with one request and block either as well, or are these separated? Can I still continue making search requests once I hit the normal requests limits?","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"13:40","depth":23,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Retry","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Edit","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Copy","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXHeading","text":"Claude responded: They're independent buckets — with one shared bucket on top.","depth":22,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"Claude responded: They're independent buckets — with one shared bucket on top.","depth":23,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Analyzed independent rate limit buckets and their practical interactions","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Analyzed independent rate limit buckets and their practical interactions","depth":24,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"They're independent buckets — with one shared bucket on top.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"The three buckets and what each call hits","depth":25,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"The three buckets and what each call hits","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Copy to clipboard","depth":28,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"┌──────────────────┐","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Search request ──→ │ Search: 5/sec │ ──┐","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"└──────────────────┘ │","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"├──→ ┌─────────────────┐","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"┌──────────────────┐ │ │ Daily: 250k–1M │","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Non-search call ──→ │ Burst: 190/10s │ ──┘ │ (per portal) │","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"└──────────────────┘ └─────────────────┘","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"A search call is only metered against the search bucket and the daily bucket. A non-search call (batch read/update, single PATCH, associations, etc.) is only metered against the burst bucket and the daily bucket. The two short-window buckets do not share counters.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"What this means practically","depth":25,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"What this means practically","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Hitting search secondly limit (5/s):","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Only further","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/search","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"calls 429. Your batch reads, batch updates, single PATCHes, association calls — all keep working at full burst speed. This is actually useful: if your sync is bottlenecked on Search, you can pivot to using","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"lastmodifieddate","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"filters via batch endpoints, or use the IDs you already have to do batch reads, while Search cools off.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Hitting burst limit (190/10s):","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Only non-search calls 429. You can still issue Search calls at 5/s. Useful for: continuing to identify deltas for queueing while in-flight updates drain, or refreshing a small set of records via Search even though your write pipeline is paused.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Hitting daily limit:","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Everything stops. Search and non-search alike. Doesn't unblock until midnight in your portal's configured timezone — and remember this is shared across every private app in the portal, plus n8n flows, marketing tools, anything else hitting the API with that account.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"So can one type of request block the other?","depth":25,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"So can one type of request block the other?","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Search → Burst:","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"No.","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Saturating Search at 50 calls per 10s leaves your full 190/10s burst untouched.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Burst → Search:","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"No.","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Saturating burst leaves Search's 5/s untouched.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Either → Daily:","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Yes","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", but only by contributing to the same daily counter. It's volume that kills you here, not the type.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"In theory you can sustain ~50 search + ~190 other =","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"~240 calls per 10 seconds","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"indefinitely (until daily runs out), because the two buckets bill independently.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"Implementation consequence","depth":25,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"Implementation consequence","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Your rate limiter needs to know which bucket a request hits before it acquires. Cleanest pattern:","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Copy to clipboard","depth":28,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
3707093764264974258
|
1733550868963089500
|
visual_change
|
accessibility
|
NULL
|
Skip to content
Skip to content
Click to collapse
Skip to content
Skip to content
Click to collapse
⌘B
Drag to resize
Open sidebar
Chat
Cowork
Code
New chat ⌘N
New chat
⌘N
Projects
Artifacts
Customize
Pinned
Bulgarian citizenship application process for EU residents
More options for Bulgarian citizenship application process for EU residents
Dawarich location tracking project
More options for Dawarich location tracking project
Recents
View all
HubSpot rate limit implementation strategy
More options for HubSpot rate limit implementation strategy
Screenpipe retention policy code location
More options for Screenpipe retention policy code location
Viewing retention policy in screenpipe
More options for Viewing retention policy in screenpipe
Clean shot x video recording termination issue
More options for Clean shot x video recording termination issue
HubSpot rate limit handling with executeRequest
More options for HubSpot rate limit handling with executeRequest
Untitled
More options
💬 Screen pipe. Is there ability…
More options for 💬 Screen pipe. Is there ability…
SMB mount access inconsistency between Finder and iTerm
More options for SMB mount access inconsistency between Finder and iTerm
💬 What is the best switch I can…
More options for 💬 What is the best switch I can…
Permission denied on screenpipe volume
More options for Permission denied on screenpipe volume
Screenpipe sync database attachment error
More options for Screenpipe sync database attachment error
Last swimming outing with Dani
More options for Last swimming outing with Dani
Definition of incarcerated
More options for Definition of incarcerated
Chromecast remote volume buttons not working
More options for Chromecast remote volume buttons not working
Salesforce API errors with Organization and FieldDefinition queries
More options for Salesforce API errors with Organization and FieldDefinition queries
Daily activity summary from screenpipe data
More options for Daily activity summary from screenpipe data
MacBook unexpected restarts and kanji screen
More options for MacBook unexpected restarts and kanji screen
Security patch review and testing guidance
More options for Security patch review and testing guidance
Food calorie values reference
More options for Food calorie values reference
Tracking location history from last week
More options for Tracking location history from last week
Lukas Pro
Get apps and extensions
HubSpot rate limit implementation strategy, rename chat
HubSpot rate limit implementation strategy
More options for HubSpot rate limit implementation strategy
Close
Share chat
Claude finished the response
You said: So just a solution for rate limit implementation.
You said: So just a solution for rate limit implementation.
So just a solution for rate limit implementation. The situation currently is that there are some daily and secondary limits for HubSpot. I would like to make sure I never reach a 429 error rate limit. The requests can come from any flow. It can be:
updating activity (engagement, meeting, call, note)
searching for a company or contact
updating deal
patching IDs
Review what the limit is at the moment in the HubSpot documentation and then think of the solution:
where to store it
how to read it
how to work with multiple jobs
how to work with paginated requests Let's consider a situation when there are 600 opportunities to sync. What would be the flow? How would the rate limit be recognized? How would it be handled? What are the potential issues? [API usage guidelines and limits - HubSpot docs](
https://developers.hubspot.com/docs/developer-tooling/platform/usage-guidelines
https://developers.hubspot.com/docs/developer-tooling/platform/usage-guidelines
). Example of such a error Client error:
POST https://api.hubapi.com/crm/v3/objects/contact/search
resulted in a
429 Too Many Requests
response: {"status":"error","message":"You have reached your secondly limit.","errorType":"RATE_LIMIT","correlationId":"019dffc4-4 (truncated...). Think carefully about the implementation and potential issue and bottlenecks.
Show more
10:42
Retry
Edit
Copy
Claude responded: Current HubSpot limits (Apr 2026)
Claude responded: Current HubSpot limits (Apr 2026)
Synthesized HubSpot rate limit architecture with Redis storage and sliding window algorithms
Synthesized HubSpot rate limit architecture with Redis storage and sliding window algorithms
Current HubSpot limits (Apr 2026)
Current HubSpot limits (Apr 2026)
For privately distributed apps (which is what Jiminny presumably uses with HubSpot), the limits are layered: a per-app burst window of 100/10s on Free/Starter, 190/10s on Pro/Enterprise, or 250/10s with the API Limit Increase add-on
, plus a per-account daily cap of 250k / 625k / 1M depending on tier — shared across all private apps in the account
. The burst window is per app; the daily quota is per portal.
hubspot
hubspot
hubspot
hubspot
The Search API is special: five requests per second per account, capped at 200 records per page, with a hard 10,000-result ceiling per query
. That's the limit the 429 in your example is hitting (
secondly limit
on
/crm/v3/objects/contact/search
). It's a separate bucket from the 190/10s, and critically, search responses do not include the
X-HubSpot-RateLimit-*
headers
— you can't read remaining capacity off the response, you have to track it yourself.
hubspot
hubspot
hubspot
hubspot
Non-search endpoints return
X-HubSpot-RateLimit-Remaining
,
-Max
, and
-Interval-Milliseconds
. The daily headers are not returned for OAuth-authenticated calls
, so for those you check the account-info endpoint or maintain your own counter. There's also a soft rule: errors should stay under 5% of total daily requests
— that's enforced for marketplace listing, but it's also a sane operational target.
hubspot
hubspot
hubspot
hubspot
So you have
four buckets
to track at minimum: app-burst (10s sliding), search-secondly (1s sliding), account-daily (24h fixed, midnight in HubSpot's TZ), and per-app daily share (your own budgeting on top of the account cap).
Where to store it
Where to store it
Redis. It's the only realistic option once you have multiple queue workers — DB-backed counters serialize too much, and in-process state can't coordinate across workers. Laravel already speaks Redis natively, and you get atomic
INCR
/
EXPIRE
plus Lua scripting for true CAS semantics.
Key layout I'd use:
Copy to clipboard
hubspot:rl:burst:{portalId}:{appId} ZSET (sliding 10s)
hubspot:rl:search:{portalId} ZSET (sliding 1s)
hubspot:rl:daily:{portalId} STRING + TTL to midnight TZ
hubspot:rl:meta:{portalId} HASH (last seen headers)
The two short-window buckets are sliding-window-log (Redis ZSET, score =
microtime
, member = unique request id). Lua script removes entries older than the window, counts remaining slots, and only adds the new one if there's room — all atomic. Fixed windows are simpler but allow 2× the limit at the boundary, which on a 5/s window is brutal.
The daily bucket is a plain
INCR
with TTL set to seconds-until-midnight in
HubSpot's account timezone
, not yours — Sofia is UTC+2/+3 but your portal might be set to US Eastern. Get this once and cache it.
How to read it
How to read it
Two-phase: optimistic pre-check, authoritative post-update.
Before a call, run the Lua acquire script. If it returns "denied," sleep until a slot frees up (the script can return ms-until-next-slot) or push the job back to the queue with a delay. Don't busy-loop.
After the call, parse
X-HubSpot-RateLimit-Remaining
/
-Max
/
-Interval-Milliseconds
and store them in
hubspot:rl:meta:{portalId}
. This is your reality check — if your local counter says 50 remaining but HubSpot's header says 5, you trust HubSpot and clamp your counter. This handles clock drift, missed accounting (e.g., crashed worker that took a token but never made the request), and other apps in the same account consuming the daily budget invisibly.
For search specifically, since headers don't come back, the local counter
is
the source of truth — meaning if you ever crash mid-flight, you've under-counted. Always release tokens on connection-level failure but
not
on 429 (you really did make that request).
How to work with multiple jobs
How to work with multiple jobs
The queue layer needs to enforce concurrency separately from the rate limiter. Both work together:
Concurrency cap
via
Queue::throttle()
or a Redis semaphore — limits how many sync workers run in parallel against HubSpot. Without this, you can have 50 workers all blocked waiting for tokens, which is wasteful and creates retry storms.
Per-tenant fairness
— if you sync many Jiminny customers into different HubSpot portals, each portal has its own bucket but you still want one slow portal not to starve others. Either separate queues per portal or a fair-share scheduler.
Priority lanes
— webhook-driven updates (user-visible latency) should outrank background batch syncs. Two queues:
hubspot-priority
and
hubspot-bulk
, with priority workers taking 70% of the burst budget and bulk taking 30% (enforce via separate sub-buckets if you really want hard separation, otherwise just pull from priority first).
Backoff on 429
— respect the
Retry-After
header. If absent, exponential with jitter (e.g.,
min(2^attempt * 250ms, 30s) ± 20%
). The jitter is non-negotiable; without it, simultaneous 429s retry in lockstep and you get thundering-herd 429s on retry.
How to work with paginated requests
How to work with paginated requests
The trap is treating "fetch all" as one logical operation. Each page is its own API call and competes for tokens with everything else.
Two practical rules:
Don't hold the worker idle while paginating.
If page N takes 500ms and page N+1 needs to wait 800ms for a token, you've burned 800ms of worker time doing nothing. Instead, fetch page N, dispatch the
processing
of page N as a separate job, and queue a "fetch page N+1" job with a delay equal to the wait time. Each page becomes its own atomic unit.
Always batch where HubSpot offers it.
POST /crm/v3/objects/{type}/batch/{read|update|create}
accepts up to 100 IDs per call. For your "patching IDs" flow this is the difference between 600 calls and 6.
Walkthrough: 600 opportunities
Walkthrough: 600 opportunities
Naive flow (one PATCH per deal): 600 calls. At 190/10s that's ~32s of API time, well under daily. You'd hit burst easily without throttling. Plus likely 1-3 search calls upfront and N association calls.
Sane flow:
Identify deltas
— if you can avoid Search at all, do. Use
lastmodifieddate
filter on a single search if you must, paginate at limit=200. For 600 deals that's 3 search calls @ 5/s = ~600ms naturally throttled.
Batch read
current state —
POST /crm/v3/objects/deals/batch/read
with 100 IDs per call → 6 calls. Burst weight 6.
Compute diff
in your code (no API).
Batch update
—
POST /crm/v3/objects/deals/batch/update
with 100 per call → 6 calls.
Associations
—
POST /crm/v4/associations/{from}/{to}/batch/create
if needed → another few batch calls.
Total: ~15-20 API calls for 600 deals. Burst budget consumed: 20/190 over ~5s. Daily impact: trivial.
Recognition: pre-check denies if
<weight>
slots aren't free; on 429 the response surfaces
policyName
(DAILY/SECONDLY) — log it, push the job back with
Retry-After
delay, increment a metric so you can alarm on sustained 429 rate.
Pitfalls & bottlenecks worth pre-empting
Pitfalls & bottlenecks worth pre-empting
Daily quota is shared across the whole portal
, including any n8n flows, other private apps, marketing automation calling APIs, etc. Budget for ~70-80% of the documented limit, not 100%. Add an internal per-app daily cap so a runaway sync can't starve other apps.
Search is uniquely fragile
: separate 5/s bucket, no headers to read, 10k-result cap per query. If you ever hit 10k+ deals matching a filter, partition by
hs_object_id
ranges or by
lastmodifieddate
windows.
Retry storms after HubSpot incidents
— always jitter, always cap total retries (e.g., 5 attempts, then dead-letter).
Webhook → sync → webhook loops
— when your update fires a HubSpot webhook that triggers another sync. Tag your own writes (e.g., a custom property
jy_last_sync_id
) and ignore webhooks where it just changed.
Token refresh
— OAuth refresh itself counts against burst. Cache the access token in Redis with TTL =
expires_in - 60s
, single-flight the refresh (only one worker refreshes; others wait on a lock).
Search latency for fresh writes
— newly created/updated objects don't appear in search instantly. Don't write-then-search; use returned IDs directly.
Clock skew
— Redis is authoritative. Don't use
time()
from each worker for window scoring; use
redis.call('TIME')
inside the Lua script.
Dead workers with held tokens
— sliding-window-log handles this naturally because tokens expire by score; token-bucket implementations need explicit release-on-crash logic.
The 5% error rule
counts every 429 toward your error budget, even successfully retried ones. If your pre-check is working well, 429s should be near zero — if they're not, your pre-check is wrong, not just slow.
Phantom contention with Laravel
RateLimited
middleware
: it's per-job-class by default, not per-portal. If your
SyncDealJob
and
UpdateActivityJob
are different classes both calling HubSpot, they don't share a Laravel-level limiter — you need a single
HubspotRateLimiter
service that everything routes through.
If you want, I can sketch the Lua script for the sliding-window acquire and the Laravel service wrapper around it.
Copy
Give positive feedback
Give negative feedback
Retry
You said: What will happen if there are two different types of rate limits?
You said: What will happen if there are two different types of rate limits?
What will happen if there are two different types of rate limits?
Search requests that have 5 requests per second
The other rate limit that has, let's say, 100 requests per 10 seconds How do these work together? Is there some conflict? Can I reach the limit with one request and block either as well, or are these separated? Can I still continue making search requests once I hit the normal requests limits?
13:40
Retry
Edit
Copy
Claude responded: They're independent buckets — with one shared bucket on top.
Claude responded: They're independent buckets — with one shared bucket on top.
Analyzed independent rate limit buckets and their practical interactions
Analyzed independent rate limit buckets and their practical interactions
They're independent buckets — with one shared bucket on top.
The three buckets and what each call hits
The three buckets and what each call hits
Copy to clipboard
┌──────────────────┐
Search request ──→ │ Search: 5/sec │ ──┐
└──────────────────┘ │
├──→ ┌─────────────────┐
┌──────────────────┐ │ │ Daily: 250k–1M │
Non-search call ──→ │ Burst: 190/10s │ ──┘ │ (per portal) │
└──────────────────┘ └─────────────────┘
A search call is only metered against the search bucket and the daily bucket. A non-search call (batch read/update, single PATCH, associations, etc.) is only metered against the burst bucket and the daily bucket. The two short-window buckets do not share counters.
What this means practically
What this means practically
Hitting search secondly limit (5/s):
Only further
/search
calls 429. Your batch reads, batch updates, single PATCHes, association calls — all keep working at full burst speed. This is actually useful: if your sync is bottlenecked on Search, you can pivot to using
lastmodifieddate
filters via batch endpoints, or use the IDs you already have to do batch reads, while Search cools off.
Hitting burst limit (190/10s):
Only non-search calls 429. You can still issue Search calls at 5/s. Useful for: continuing to identify deltas for queueing while in-flight updates drain, or refreshing a small set of records via Search even though your write pipeline is paused.
Hitting daily limit:
Everything stops. Search and non-search alike. Doesn't unblock until midnight in your portal's configured timezone — and remember this is shared across every private app in the portal, plus n8n flows, marketing tools, anything else hitting the API with that account.
So can one type of request block the other?
So can one type of request block the other?
Search → Burst:
No.
Saturating Search at 50 calls per 10s leaves your full 190/10s burst untouched.
Burst → Search:
No.
Saturating burst leaves Search's 5/s untouched.
Either → Daily:
Yes
, but only by contributing to the same daily counter. It's volume that kills you here, not the type.
In theory you can sustain ~50 search + ~190 other =
~240 calls per 10 seconds
indefinitely (until daily runs out), because the two buckets bill independently.
Implementation consequence
Implementation consequence
Your rate limiter needs to know which bucket a request hits before it acquires. Cleanest pattern:
Copy to clipboard...
|
4065
|
NULL
|
NULL
|
NULL
|
|
4067
|
NULL
|
0
|
2026-05-07T13:01:00.295546+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-07/1778 /Users/lukas/.screenpipe/data/data/2026-05-07/1778158860295_m1.jpg...
|
Claude
|
Claude
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Skip to content
Skip to content
Click to collapse
Skip to content
Skip to content
Click to collapse
⌘B
Drag to resize
Open sidebar
Chat
Cowork
Code
New chat ⌘N
New chat
⌘N
Projects
Artifacts
Customize
Pinned
Bulgarian citizenship application process for EU residents
More options for Bulgarian citizenship application process for EU residents
Dawarich location tracking project
More options for Dawarich location tracking project
Recents
View all
HubSpot rate limit implementation strategy
More options for HubSpot rate limit implementation strategy
Screenpipe retention policy code location
More options for Screenpipe retention policy code location
Viewing retention policy in screenpipe
More options for Viewing retention policy in screenpipe
Clean shot x video recording termination issue
More options for Clean shot x video recording termination issue
HubSpot rate limit handling with executeRequest
More options for HubSpot rate limit handling with executeRequest
Untitled
More options
💬 Screen pipe. Is there ability…
More options for 💬 Screen pipe. Is there ability…
SMB mount access inconsistency between Finder and iTerm
More options for SMB mount access inconsistency between Finder and iTerm
💬 What is the best switch I can…
More options for 💬 What is the best switch I can…
Permission denied on screenpipe volume
More options for Permission denied on screenpipe volume
Screenpipe sync database attachment error
More options for Screenpipe sync database attachment error
Last swimming outing with Dani
More options for Last swimming outing with Dani
Definition of incarcerated
More options for Definition of incarcerated
Chromecast remote volume buttons not working
More options for Chromecast remote volume buttons not working
Salesforce API errors with Organization and FieldDefinition queries
More options for Salesforce API errors with Organization and FieldDefinition queries
Daily activity summary from screenpipe data
More options for Daily activity summary from screenpipe data
MacBook unexpected restarts and kanji screen
More options for MacBook unexpected restarts and kanji screen
Security patch review and testing guidance
More options for Security patch review and testing guidance
Food calorie values reference
More options for Food calorie values reference
Tracking location history from last week
More options for Tracking location history from last week
Lukas Pro
Get apps and extensions
HubSpot rate limit implementation strategy, rename chat
HubSpot rate limit implementation strategy
More options for HubSpot rate limit implementation strategy
Close
Share chat
Claude finished the response
You said: So just a solution for rate limit implementation.
You said: So just a solution for rate limit implementation.
So just a solution for rate limit implementation. The situation currently is that there are some daily and secondary limits for HubSpot. I would like to make sure I never reach a 429 error rate limit. The requests can come from any flow. It can be:
updating activity (engagement, meeting, call, note)
searching for a company or contact
updating deal
patching IDs
Review what the limit is at the moment in the HubSpot documentation and then think of the solution:
where to store it
how to read it
how to work with multiple jobs
how to work with paginated requests Let's consider a situation when there are 600 opportunities to sync. What would be the flow? How would the rate limit be recognized? How would it be handled? What are the potential issues? [API usage guidelines and limits - HubSpot docs](
https://developers.hubspot.com/docs/developer-tooling/platform/usage-guidelines
https://developers.hubspot.com/docs/developer-tooling/platform/usage-guidelines
). Example of such a error Client error:
POST https://api.hubapi.com/crm/v3/objects/contact/search
resulted in a
429 Too Many Requests
response: {"status":"error","message":"You have reached your secondly limit.","errorType":"RATE_LIMIT","correlationId":"019dffc4-4 (truncated...). Think carefully about the implementation and potential issue and bottlenecks.
Show more
10:42
Retry
Edit
Copy
Claude responded: Current HubSpot limits (Apr 2026)
Claude responded: Current HubSpot limits (Apr 2026)
Synthesized HubSpot rate limit architecture with Redis storage and sliding window algorithms
Synthesized HubSpot rate limit architecture with Redis storage and sliding window algorithms
Current HubSpot limits (Apr 2026)
Current HubSpot limits (Apr 2026)
For privately distributed apps (which is what Jiminny presumably uses with HubSpot), the limits are layered: a per-app burst window of 100/10s on Free/Starter, 190/10s on Pro/Enterprise, or 250/10s with the API Limit Increase add-on
, plus a per-account daily cap of 250k / 625k / 1M depending on tier — shared across all private apps in the account
. The burst window is per app; the daily quota is per portal.
hubspot
hubspot
hubspot
hubspot
The Search API is special: five requests per second per account, capped at 200 records per page, with a hard 10,000-result ceiling per query
. That's the limit the 429 in your example is hitting (
secondly limit
on
/crm/v3/objects/contact/search
). It's a separate bucket from the 190/10s, and critically, search responses do not include the
X-HubSpot-RateLimit-*
headers
— you can't read remaining capacity off the response, you have to track it yourself.
hubspot
hubspot
hubspot
hubspot
Non-search endpoints return
X-HubSpot-RateLimit-Remaining
,
-Max
, and
-Interval-Milliseconds
. The daily headers are not returned for OAuth-authenticated calls
, so for those you check the account-info endpoint or maintain your own counter. There's also a soft rule: errors should stay under 5% of total daily requests
— that's enforced for marketplace listing, but it's also a sane operational target.
hubspot
hubspot
hubspot
hubspot
So you have
four buckets
to track at minimum: app-burst (10s sliding), search-secondly (1s sliding), account-daily (24h fixed, midnight in HubSpot's TZ), and per-app daily share (your own budgeting on top of the account cap).
Where to store it
Where to store it
Redis. It's the only realistic option once you have multiple queue workers — DB-backed counters serialize too much, and in-process state can't coordinate across workers. Laravel already speaks Redis natively, and you get atomic
INCR
/
EXPIRE
plus Lua scripting for true CAS semantics.
Key layout I'd use:
Copy to clipboard
hubspot:rl:burst:{portalId}:{appId} ZSET (sliding 10s)
hubspot:rl:search:{portalId} ZSET (sliding 1s)
hubspot:rl:daily:{portalId} STRING + TTL to midnight TZ
hubspot:rl:meta:{portalId} HASH (last seen headers)
The two short-window buckets are sliding-window-log (Redis ZSET, score =
microtime
, member = unique request id). Lua script removes entries older than the window, counts remaining slots, and only adds the new one if there's room — all atomic. Fixed windows are simpler but allow 2× the limit at the boundary, which on a 5/s window is brutal.
The daily bucket is a plain
INCR
with TTL set to seconds-until-midnight in
HubSpot's account timezone
, not yours — Sofia is UTC+2/+3 but your portal might be set to US Eastern. Get this once and cache it.
How to read it
How to read it
Two-phase: optimistic pre-check, authoritative post-update.
Before a call, run the Lua acquire script. If it returns "denied," sleep until a slot frees up (the script can return ms-until-next-slot) or push the job back to the queue with a delay. Don't busy-loop.
After the call, parse
X-HubSpot-RateLimit-Remaining
/
-Max
/
-Interval-Milliseconds
and store them in
hubspot:rl:meta:{portalId}
. This is your reality check — if your local counter says 50 remaining but HubSpot's header says 5, you trust HubSpot and clamp your counter. This handles clock drift, missed accounting (e.g., crashed worker that took a token but never made the request), and other apps in the same account consuming the daily budget invisibly.
For search specifically, since headers don't come back, the local counter
is
the source of truth — meaning if you ever crash mid-flight, you've under-counted. Always release tokens on connection-level failure but
not
on 429 (you really did make that request).
How to work with multiple jobs
How to work with multiple jobs
The queue layer needs to enforce concurrency separately from the rate limiter. Both work together:
Concurrency cap
via
Queue::throttle()
or a Redis semaphore — limits how many sync workers run in parallel against HubSpot. Without this, you can have 50 workers all blocked waiting for tokens, which is wasteful and creates retry storms.
Per-tenant fairness
— if you sync many Jiminny customers into different HubSpot portals, each portal has its own bucket but you still want one slow portal not to starve others. Either separate queues per portal or a fair-share scheduler.
Priority lanes
— webhook-driven updates (user-visible latency) should outrank background batch syncs. Two queues:
hubspot-priority
and
hubspot-bulk
, with priority workers taking 70% of the burst budget and bulk taking 30% (enforce via separate sub-buckets if you really want hard separation, otherwise just pull from priority first).
Backoff on 429
— respect the
Retry-After
header. If absent, exponential with jitter (e.g.,
min(2^attempt * 250ms, 30s) ± 20%
). The jitter is non-negotiable; without it, simultaneous 429s retry in lockstep and you get thundering-herd 429s on retry.
How to work with paginated requests
How to work with paginated requests
The trap is treating "fetch all" as one logical operation. Each page is its own API call and competes for tokens with everything else.
Two practical rules:
Don't hold the worker idle while paginating.
If page N takes 500ms and page N+1 needs to wait 800ms for a token, you've burned 800ms of worker time doing nothing. Instead, fetch page N, dispatch the
processing
of page N as a separate job, and queue a "fetch page N+1" job with a delay equal to the wait time. Each page becomes its own atomic unit.
Always batch where HubSpot offers it.
POST /crm/v3/objects/{type}/batch/{read|update|create}
accepts up to 100 IDs per call. For your "patching IDs" flow this is the difference between 600 calls and 6.
Walkthrough: 600 opportunities
Walkthrough: 600 opportunities
Naive flow (one PATCH per deal): 600 calls. At 190/10s that's ~32s of API time, well under daily. You'd hit burst easily without throttling. Plus likely 1-3 search calls upfront and N association calls.
Sane flow:
Identify deltas
— if you can avoid Search at all, do. Use
lastmodifieddate
filter on a single search if you must, paginate at limit=200. For 600 deals that's 3 search calls @ 5/s = ~600ms naturally throttled.
Batch read
current state —
POST /crm/v3/objects/deals/batch/read
with 100 IDs per call → 6 calls. Burst weight 6.
Compute diff
in your code (no API).
Batch update
—
POST /crm/v3/objects/deals/batch/update
with 100 per call → 6 calls.
Associations
—
POST /crm/v4/associations/{from}/{to}/batch/create
if needed → another few batch calls.
Total: ~15-20 API calls for 600 deals. Burst budget consumed: 20/190 over ~5s. Daily impact: trivial.
Recognition: pre-check denies if
<weight>
slots aren't free; on 429 the response surfaces
policyName
(DAILY/SECONDLY) — log it, push the job back with
Retry-After
delay, increment a metric so you can alarm on sustained 429 rate.
Pitfalls & bottlenecks worth pre-empting
Pitfalls & bottlenecks worth pre-empting
Daily quota is shared across the whole portal
, including any n8n flows, other private apps, marketing automation calling APIs, etc. Budget for ~70-80% of the documented limit, not 100%. Add an internal per-app daily cap so a runaway sync can't starve other apps.
Search is uniquely fragile
: separate 5/s bucket, no headers to read, 10k-result cap per query. If you ever hit 10k+ deals matching a filter, partition by
hs_object_id
ranges or by
lastmodifieddate
windows.
Retry storms after HubSpot incidents
— always jitter, always cap total retries (e.g., 5 attempts, then dead-letter).
Webhook → sync → webhook loops
— when your update fires a HubSpot webhook that triggers another sync. Tag your own writes (e.g., a custom property
jy_last_sync_id
) and ignore webhooks where it just changed.
Token refresh
— OAuth refresh itself counts against burst. Cache the access token in Redis with TTL =
expires_in - 60s
, single-flight the refresh (only one worker refreshes; others wait on a lock).
Search latency for fresh writes
— newly created/updated objects don't appear in search instantly. Don't write-then-search; use returned IDs directly.
Clock skew
— Redis is authoritative. Don't use
time()
from each worker for window scoring; use
redis.call('TIME')
inside the Lua script.
Dead workers with held tokens
— sliding-window-log handles this naturally because tokens expire by score; token-bucket implementations need explicit release-on-crash logic.
The 5% error rule
counts every 429 toward your error budget, even successfully retried ones. If your pre-check is working well, 429s should be near zero — if they're not, your pre-check is wrong, not just slow.
Phantom contention with Laravel
RateLimited
middleware
: it's per-job-class by default, not per-portal. If your
SyncDealJob
and
UpdateActivityJob
are different classes both calling HubSpot, they don't share a Laravel-level limiter — you need a single
HubspotRateLimiter
service that everything routes through.
If you want, I can sketch the Lua script for the sliding-window acquire and the Laravel service wrapper around it.
Copy
Give positive feedback
Give negative feedback
Retry
You said: What will happen if there are two different types of rate limits?
You said: What will happen if there are two different types of rate limits?
What will happen if there are two different types of rate limits?
Search requests that have 5 requests per second
The other rate limit that has, let's say, 100 requests per 10 seconds How do these work together? Is there some conflict? Can I reach the limit with one request and block either as well, or are these separated? Can I still continue making search requests once I hit the normal requests limits?
13:40
Retry
Edit
Copy
Claude responded: They're independent buckets — with one shared bucket on top.
Claude responded: They're independent buckets — with one shared bucket on top.
Analyzed independent rate limit buckets and their practical interactions
Analyzed independent rate limit buckets and their practical interactions
They're independent buckets — with one shared bucket on top.
The three buckets and what each call hits
The three buckets and what each call hits
Copy to clipboard
┌──────────────────┐
Search request ──→ │ Search: 5/sec │ ──┐
└──────────────────┘ │
├──→ ┌─────────────────┐
┌──────────────────┐ │ │ Daily: 250k–1M │
Non-search call ──→ │ Burst: 190/10s │ ──┘ │ (per portal) │
└──────────────────┘ └─────────────────┘
A search call is only metered against the search bucket and the daily bucket. A non-search call (batch read/update, single PATCH, associations, etc.) is only metered against the burst bucket and the daily bucket. The two short-window buckets do not share counters.
What this means practically
What this means practically
Hitting search secondly limit (5/s):
Only further
/search
calls 429. Your batch reads, batch updates, single PATCHes, association calls — all keep working at full burst speed. This is actually useful: if your sync is bottlenecked on Search, you can pivot to using
lastmodifieddate
filters via batch endpoints, or use the IDs you already have to do batch reads, while Search cools off.
Hitting burst limit (190/10s):
Only non-search calls 429. You can still issue Search calls at 5/s. Useful for: continuing to identify deltas for queueing while in-flight updates drain, or refreshing a small set of records via Search even though your write pipeline is paused.
Hitting daily limit:
Everything stops. Search and non-search alike. Doesn't unblock until midnight in your portal's configured timezone — and remember this is shared across every private app in the portal, plus n8n flows, marketing tools, anything else hitting the API with that account.
So can one type of request block the other?
So can one type of request block the other?
Search → Burst:
No.
Saturating Search at 50 calls per 10s leaves your full 190/10s burst untouched.
Burst → Search:
No.
Saturating burst leaves Search's 5/s untouched.
Either → Daily:
Yes
, but only by contributing to the same daily counter. It's volume that kills you here, not the type.
In theory you can sustain ~50 search + ~190 other =
~240 calls per 10 seconds
indefinitely (until daily runs out), because the two buckets bill independently.
Implementation consequence
Implementation consequence
Your rate limiter needs to know which bucket a request hits before it acquires. Cleanest pattern:
Copy to clipboard
php
$limiter
->
acquire
(
'search'
,
$weight...
|
[{"role":"AXLink","text":& [{"role":"AXLink","text":"Skip to content","depth":14,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Skip to content","depth":15,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Click to collapse","depth":16,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"⌘B","depth":16,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Drag to resize","depth":16,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Open sidebar","depth":14,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Chat","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Cowork","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"New chat ⌘N","depth":15,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"New chat","depth":16,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"⌘N","depth":17,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Projects","depth":15,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Artifacts","depth":15,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Customize","depth":15,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Pinned","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXButton","text":"Bulgarian citizenship application process for EU residents","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Bulgarian citizenship application process for EU residents","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Dawarich location tracking project","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Dawarich location tracking project","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Recents","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXButton","text":"View all","depth":16,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"HubSpot rate limit implementation strategy","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for HubSpot rate limit implementation strategy","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Screenpipe retention policy code location","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Screenpipe retention policy code location","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Viewing retention policy in screenpipe","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Viewing retention policy in screenpipe","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Clean shot x video recording termination issue","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Clean shot x video recording termination issue","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"HubSpot rate limit handling with executeRequest","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for HubSpot rate limit handling with executeRequest","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Untitled","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"💬 Screen pipe. Is there ability…","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for 💬 Screen pipe. Is there ability…","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"SMB mount access inconsistency between Finder and iTerm","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for SMB mount access inconsistency between Finder and iTerm","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"💬 What is the best switch I can…","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for 💬 What is the best switch I can…","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Permission denied on screenpipe volume","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Permission denied on screenpipe volume","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Screenpipe sync database attachment error","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Screenpipe sync database attachment error","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Last swimming outing with Dani","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Last swimming outing with Dani","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Definition of incarcerated","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Definition of incarcerated","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Chromecast remote volume buttons not working","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Chromecast remote volume buttons not working","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Salesforce API errors with Organization and FieldDefinition queries","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Salesforce API errors with Organization and FieldDefinition queries","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Daily activity summary from screenpipe data","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Daily activity summary from screenpipe data","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"MacBook unexpected restarts and kanji screen","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for MacBook unexpected restarts and kanji screen","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Security patch review and testing guidance","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Security patch review and testing guidance","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Food calorie values reference","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Food calorie values reference","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Tracking location history from last week","depth":18,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Tracking location history from last week","depth":19,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"Lukas Pro","depth":15,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Get apps and extensions","depth":15,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"HubSpot rate limit implementation strategy, rename chat","depth":20,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"HubSpot rate limit implementation strategy","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXPopUpButton","text":"More options for HubSpot rate limit implementation strategy","depth":20,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close","depth":22,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Share chat","depth":22,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Claude finished the response","depth":22,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"You said: So just a solution for rate limit implementation.","depth":21,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"You said: So just a solution for rate limit implementation.","depth":22,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"So just a solution for rate limit implementation. The situation currently is that there are some daily and secondary limits for HubSpot. I would like to make sure I never reach a 429 error rate limit. The requests can come from any flow. It can be:","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"updating activity (engagement, meeting, call, note)","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"searching for a company or contact","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"updating deal","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"patching IDs\nReview what the limit is at the moment in the HubSpot documentation and then think of the solution:","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"where to store it","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"how to read it","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"how to work with multiple jobs","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"how to work with paginated requests Let's consider a situation when there are 600 opportunities to sync. What would be the flow? How would the rate limit be recognized? How would it be handled? What are the potential issues? [API usage guidelines and limits - HubSpot docs](","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXLink","text":"https://developers.hubspot.com/docs/developer-tooling/platform/usage-guidelines","depth":26,"on_screen":false,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"https://developers.hubspot.com/docs/developer-tooling/platform/usage-guidelines","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"). Example of such a error Client error:","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"POST https://api.hubapi.com/crm/v3/objects/contact/search","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"resulted in a","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"429 Too Many Requests","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"response: {\"status\":\"error\",\"message\":\"You have reached your secondly limit.\",\"errorType\":\"RATE_LIMIT\",\"correlationId\":\"019dffc4-4 (truncated...). Think carefully about the implementation and potential issue and bottlenecks.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Show more","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:42","depth":23,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Retry","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Edit","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Copy","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXHeading","text":"Claude responded: Current HubSpot limits (Apr 2026)","depth":22,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"Claude responded: Current HubSpot limits (Apr 2026)","depth":23,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Synthesized HubSpot rate limit architecture with Redis storage and sliding window algorithms","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Synthesized HubSpot rate limit architecture with Redis storage and sliding window algorithms","depth":24,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"Current HubSpot limits (Apr 2026)","depth":25,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"Current HubSpot limits (Apr 2026)","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"For privately distributed apps (which is what Jiminny presumably uses with HubSpot), the limits are layered: a per-app burst window of 100/10s on Free/Starter, 190/10s on Pro/Enterprise, or 250/10s with the API Limit Increase add-on","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", plus a per-account daily cap of 250k / 625k / 1M depending on tier — shared across all private apps in the account","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":". The burst window is per app; the daily quota is per portal.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXLink","text":"hubspot","depth":27,"on_screen":false,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"hubspot","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXLink","text":"hubspot","depth":27,"on_screen":false,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"hubspot","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"The Search API is special: five requests per second per account, capped at 200 records per page, with a hard 10,000-result ceiling per query","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":". That's the limit the 429 in your example is hitting (","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"secondly limit","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"on","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/crm/v3/objects/contact/search","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"). It's a separate bucket from the 190/10s, and critically, search responses do not include the","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"X-HubSpot-RateLimit-*","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"headers","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— you can't read remaining capacity off the response, you have to track it yourself.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXLink","text":"hubspot","depth":27,"on_screen":false,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"hubspot","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXLink","text":"hubspot","depth":27,"on_screen":false,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"hubspot","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Non-search endpoints return","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"X-HubSpot-RateLimit-Remaining","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":",","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"-Max","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", and","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"-Interval-Milliseconds","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":". The daily headers are not returned for OAuth-authenticated calls","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", so for those you check the account-info endpoint or maintain your own counter. There's also a soft rule: errors should stay under 5% of total daily requests","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— that's enforced for marketplace listing, but it's also a sane operational target.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXLink","text":"hubspot","depth":27,"on_screen":false,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"hubspot","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXLink","text":"hubspot","depth":27,"on_screen":false,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"hubspot","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"So you have","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"four buckets","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"to track at minimum: app-burst (10s sliding), search-secondly (1s sliding), account-daily (24h fixed, midnight in HubSpot's TZ), and per-app daily share (your own budgeting on top of the account cap).","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"Where to store it","depth":25,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"Where to store it","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Redis. It's the only realistic option once you have multiple queue workers — DB-backed counters serialize too much, and in-process state can't coordinate across workers. Laravel already speaks Redis natively, and you get atomic","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"INCR","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"EXPIRE","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"plus Lua scripting for true CAS semantics.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Key layout I'd use:","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Copy to clipboard","depth":28,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"hubspot:rl:burst:{portalId}:{appId} ZSET (sliding 10s)","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"hubspot:rl:search:{portalId} ZSET (sliding 1s)","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"hubspot:rl:daily:{portalId} STRING + TTL to midnight TZ","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"hubspot:rl:meta:{portalId} HASH (last seen headers)","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"The two short-window buckets are sliding-window-log (Redis ZSET, score =","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"microtime","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", member = unique request id). Lua script removes entries older than the window, counts remaining slots, and only adds the new one if there's room — all atomic. Fixed windows are simpler but allow 2× the limit at the boundary, which on a 5/s window is brutal.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"The daily bucket is a plain","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"INCR","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"with TTL set to seconds-until-midnight in","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"HubSpot's account timezone","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", not yours — Sofia is UTC+2/+3 but your portal might be set to US Eastern. Get this once and cache it.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"How to read it","depth":25,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"How to read it","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Two-phase: optimistic pre-check, authoritative post-update.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Before a call, run the Lua acquire script. If it returns \"denied,\" sleep until a slot frees up (the script can return ms-until-next-slot) or push the job back to the queue with a delay. Don't busy-loop.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"After the call, parse","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"X-HubSpot-RateLimit-Remaining","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"-Max","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"-Interval-Milliseconds","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"and store them in","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"hubspot:rl:meta:{portalId}","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":". This is your reality check — if your local counter says 50 remaining but HubSpot's header says 5, you trust HubSpot and clamp your counter. This handles clock drift, missed accounting (e.g., crashed worker that took a token but never made the request), and other apps in the same account consuming the daily budget invisibly.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"For search specifically, since headers don't come back, the local counter","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"is","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"the source of truth — meaning if you ever crash mid-flight, you've under-counted. Always release tokens on connection-level failure but","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"not","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"on 429 (you really did make that request).","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"How to work with multiple jobs","depth":25,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"How to work with multiple jobs","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"The queue layer needs to enforce concurrency separately from the rate limiter. Both work together:","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Concurrency cap","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"via","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Queue::throttle()","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"or a Redis semaphore — limits how many sync workers run in parallel against HubSpot. Without this, you can have 50 workers all blocked waiting for tokens, which is wasteful and creates retry storms.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Per-tenant fairness","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— if you sync many Jiminny customers into different HubSpot portals, each portal has its own bucket but you still want one slow portal not to starve others. Either separate queues per portal or a fair-share scheduler.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Priority lanes","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— webhook-driven updates (user-visible latency) should outrank background batch syncs. Two queues:","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"hubspot-priority","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"and","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"hubspot-bulk","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", with priority workers taking 70% of the burst budget and bulk taking 30% (enforce via separate sub-buckets if you really want hard separation, otherwise just pull from priority first).","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Backoff on 429","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— respect the","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Retry-After","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"header. If absent, exponential with jitter (e.g.,","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"min(2^attempt * 250ms, 30s) ± 20%","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"). The jitter is non-negotiable; without it, simultaneous 429s retry in lockstep and you get thundering-herd 429s on retry.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"How to work with paginated requests","depth":25,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"How to work with paginated requests","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"The trap is treating \"fetch all\" as one logical operation. Each page is its own API call and competes for tokens with everything else.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Two practical rules:","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Don't hold the worker idle while paginating.","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"If page N takes 500ms and page N+1 needs to wait 800ms for a token, you've burned 800ms of worker time doing nothing. Instead, fetch page N, dispatch the","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"processing","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"of page N as a separate job, and queue a \"fetch page N+1\" job with a delay equal to the wait time. Each page becomes its own atomic unit.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Always batch where HubSpot offers it.","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"POST /crm/v3/objects/{type}/batch/{read|update|create}","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"accepts up to 100 IDs per call. For your \"patching IDs\" flow this is the difference between 600 calls and 6.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"Walkthrough: 600 opportunities","depth":25,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"Walkthrough: 600 opportunities","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Naive flow (one PATCH per deal): 600 calls. At 190/10s that's ~32s of API time, well under daily. You'd hit burst easily without throttling. Plus likely 1-3 search calls upfront and N association calls.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Sane flow:","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Identify deltas","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— if you can avoid Search at all, do. Use","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"lastmodifieddate","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"filter on a single search if you must, paginate at limit=200. For 600 deals that's 3 search calls @ 5/s = ~600ms naturally throttled.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Batch read","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"current state —","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"POST /crm/v3/objects/deals/batch/read","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"with 100 IDs per call → 6 calls. Burst weight 6.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Compute diff","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"in your code (no API).","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Batch update","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"—","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"POST /crm/v3/objects/deals/batch/update","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"with 100 per call → 6 calls.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Associations","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"—","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"POST /crm/v4/associations/{from}/{to}/batch/create","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"if needed → another few batch calls.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Total: ~15-20 API calls for 600 deals. Burst budget consumed: 20/190 over ~5s. Daily impact: trivial.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Recognition: pre-check denies if","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"<weight>","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"slots aren't free; on 429 the response surfaces","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"policyName","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"(DAILY/SECONDLY) — log it, push the job back with","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Retry-After","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"delay, increment a metric so you can alarm on sustained 429 rate.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"Pitfalls & bottlenecks worth pre-empting","depth":25,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"Pitfalls & bottlenecks worth pre-empting","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Daily quota is shared across the whole portal","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", including any n8n flows, other private apps, marketing automation calling APIs, etc. Budget for ~70-80% of the documented limit, not 100%. Add an internal per-app daily cap so a runaway sync can't starve other apps.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Search is uniquely fragile","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":": separate 5/s bucket, no headers to read, 10k-result cap per query. If you ever hit 10k+ deals matching a filter, partition by","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"hs_object_id","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"ranges or by","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"lastmodifieddate","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"windows.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Retry storms after HubSpot incidents","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— always jitter, always cap total retries (e.g., 5 attempts, then dead-letter).","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Webhook → sync → webhook loops","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— when your update fires a HubSpot webhook that triggers another sync. Tag your own writes (e.g., a custom property","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"jy_last_sync_id","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":") and ignore webhooks where it just changed.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Token refresh","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— OAuth refresh itself counts against burst. Cache the access token in Redis with TTL =","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"expires_in - 60s","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", single-flight the refresh (only one worker refreshes; others wait on a lock).","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Search latency for fresh writes","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— newly created/updated objects don't appear in search instantly. Don't write-then-search; use returned IDs directly.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Clock skew","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— Redis is authoritative. Don't use","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"time()","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"from each worker for window scoring; use","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"redis.call('TIME')","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"inside the Lua script.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Dead workers with held tokens","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"— sliding-window-log handles this naturally because tokens expire by score; token-bucket implementations need explicit release-on-crash logic.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"The 5% error rule","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"counts every 429 toward your error budget, even successfully retried ones. If your pre-check is working well, 429s should be near zero — if they're not, your pre-check is wrong, not just slow.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Phantom contention with Laravel","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"RateLimited","depth":29,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"middleware","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":": it's per-job-class by default, not per-portal. If your","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"SyncDealJob","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"and","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"UpdateActivityJob","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"are different classes both calling HubSpot, they don't share a Laravel-level limiter — you need a single","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"HubspotRateLimiter","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"service that everything routes through.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"If you want, I can sketch the Lua script for the sliding-window acquire and the Laravel service wrapper around it.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Copy","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Give positive feedback","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Give negative feedback","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Retry","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXHeading","text":"You said: What will happen if there are two different types of rate limits?","depth":21,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"You said: What will happen if there are two different types of rate limits?","depth":22,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"What will happen if there are two different types of rate limits?","depth":25,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Search requests that have 5 requests per second","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"The other rate limit that has, let's say, 100 requests per 10 seconds How do these work together? Is there some conflict? Can I reach the limit with one request and block either as well, or are these separated? Can I still continue making search requests once I hit the normal requests limits?","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"13:40","depth":23,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Retry","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Edit","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Copy","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXHeading","text":"Claude responded: They're independent buckets — with one shared bucket on top.","depth":22,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"Claude responded: They're independent buckets — with one shared bucket on top.","depth":23,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Analyzed independent rate limit buckets and their practical interactions","depth":23,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Analyzed independent rate limit buckets and their practical interactions","depth":24,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"They're independent buckets — with one shared bucket on top.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"The three buckets and what each call hits","depth":25,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"The three buckets and what each call hits","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Copy to clipboard","depth":28,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"┌──────────────────┐","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Search request ──→ │ Search: 5/sec │ ──┐","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"└──────────────────┘ │","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"├──→ ┌─────────────────┐","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"┌──────────────────┐ │ │ Daily: 250k–1M │","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Non-search call ──→ │ Burst: 190/10s │ ──┘ │ (per portal) │","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"└──────────────────┘ └─────────────────┘","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"A search call is only metered against the search bucket and the daily bucket. A non-search call (batch read/update, single PATCH, associations, etc.) is only metered against the burst bucket and the daily bucket. The two short-window buckets do not share counters.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"What this means practically","depth":25,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"What this means practically","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Hitting search secondly limit (5/s):","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Only further","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/search","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"calls 429. Your batch reads, batch updates, single PATCHes, association calls — all keep working at full burst speed. This is actually useful: if your sync is bottlenecked on Search, you can pivot to using","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"lastmodifieddate","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"filters via batch endpoints, or use the IDs you already have to do batch reads, while Search cools off.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Hitting burst limit (190/10s):","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Only non-search calls 429. You can still issue Search calls at 5/s. Useful for: continuing to identify deltas for queueing while in-flight updates drain, or refreshing a small set of records via Search even though your write pipeline is paused.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Hitting daily limit:","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Everything stops. Search and non-search alike. Doesn't unblock until midnight in your portal's configured timezone — and remember this is shared across every private app in the portal, plus n8n flows, marketing tools, anything else hitting the API with that account.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"So can one type of request block the other?","depth":25,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"So can one type of request block the other?","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Search → Burst:","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"No.","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Saturating Search at 50 calls per 10s leaves your full 190/10s burst untouched.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Burst → Search:","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"No.","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Saturating burst leaves Search's 5/s untouched.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Either → Daily:","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Yes","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":", but only by contributing to the same daily counter. It's volume that kills you here, not the type.","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"In theory you can sustain ~50 search + ~190 other =","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"~240 calls per 10 seconds","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"indefinitely (until daily runs out), because the two buckets bill independently.","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXHeading","text":"Implementation consequence","depth":25,"on_screen":false,"role_description":"heading"},{"role":"AXStaticText","text":"Implementation consequence","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Your rate limiter needs to know which bucket a request hits before it acquires. Cleanest pattern:","depth":26,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Copy to clipboard","depth":28,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"php","depth":27,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"$limiter","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"->","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"acquire","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"(","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"'search'","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":",","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"","depth":28,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"$weight","depth":28,"on_screen":false,"role_description":"text"}]...
|
-7552016944748556075
|
1733550868963089500
|
idle
|
accessibility
|
NULL
|
Skip to content
Skip to content
Click to collapse
Skip to content
Skip to content
Click to collapse
⌘B
Drag to resize
Open sidebar
Chat
Cowork
Code
New chat ⌘N
New chat
⌘N
Projects
Artifacts
Customize
Pinned
Bulgarian citizenship application process for EU residents
More options for Bulgarian citizenship application process for EU residents
Dawarich location tracking project
More options for Dawarich location tracking project
Recents
View all
HubSpot rate limit implementation strategy
More options for HubSpot rate limit implementation strategy
Screenpipe retention policy code location
More options for Screenpipe retention policy code location
Viewing retention policy in screenpipe
More options for Viewing retention policy in screenpipe
Clean shot x video recording termination issue
More options for Clean shot x video recording termination issue
HubSpot rate limit handling with executeRequest
More options for HubSpot rate limit handling with executeRequest
Untitled
More options
💬 Screen pipe. Is there ability…
More options for 💬 Screen pipe. Is there ability…
SMB mount access inconsistency between Finder and iTerm
More options for SMB mount access inconsistency between Finder and iTerm
💬 What is the best switch I can…
More options for 💬 What is the best switch I can…
Permission denied on screenpipe volume
More options for Permission denied on screenpipe volume
Screenpipe sync database attachment error
More options for Screenpipe sync database attachment error
Last swimming outing with Dani
More options for Last swimming outing with Dani
Definition of incarcerated
More options for Definition of incarcerated
Chromecast remote volume buttons not working
More options for Chromecast remote volume buttons not working
Salesforce API errors with Organization and FieldDefinition queries
More options for Salesforce API errors with Organization and FieldDefinition queries
Daily activity summary from screenpipe data
More options for Daily activity summary from screenpipe data
MacBook unexpected restarts and kanji screen
More options for MacBook unexpected restarts and kanji screen
Security patch review and testing guidance
More options for Security patch review and testing guidance
Food calorie values reference
More options for Food calorie values reference
Tracking location history from last week
More options for Tracking location history from last week
Lukas Pro
Get apps and extensions
HubSpot rate limit implementation strategy, rename chat
HubSpot rate limit implementation strategy
More options for HubSpot rate limit implementation strategy
Close
Share chat
Claude finished the response
You said: So just a solution for rate limit implementation.
You said: So just a solution for rate limit implementation.
So just a solution for rate limit implementation. The situation currently is that there are some daily and secondary limits for HubSpot. I would like to make sure I never reach a 429 error rate limit. The requests can come from any flow. It can be:
updating activity (engagement, meeting, call, note)
searching for a company or contact
updating deal
patching IDs
Review what the limit is at the moment in the HubSpot documentation and then think of the solution:
where to store it
how to read it
how to work with multiple jobs
how to work with paginated requests Let's consider a situation when there are 600 opportunities to sync. What would be the flow? How would the rate limit be recognized? How would it be handled? What are the potential issues? [API usage guidelines and limits - HubSpot docs](
https://developers.hubspot.com/docs/developer-tooling/platform/usage-guidelines
https://developers.hubspot.com/docs/developer-tooling/platform/usage-guidelines
). Example of such a error Client error:
POST https://api.hubapi.com/crm/v3/objects/contact/search
resulted in a
429 Too Many Requests
response: {"status":"error","message":"You have reached your secondly limit.","errorType":"RATE_LIMIT","correlationId":"019dffc4-4 (truncated...). Think carefully about the implementation and potential issue and bottlenecks.
Show more
10:42
Retry
Edit
Copy
Claude responded: Current HubSpot limits (Apr 2026)
Claude responded: Current HubSpot limits (Apr 2026)
Synthesized HubSpot rate limit architecture with Redis storage and sliding window algorithms
Synthesized HubSpot rate limit architecture with Redis storage and sliding window algorithms
Current HubSpot limits (Apr 2026)
Current HubSpot limits (Apr 2026)
For privately distributed apps (which is what Jiminny presumably uses with HubSpot), the limits are layered: a per-app burst window of 100/10s on Free/Starter, 190/10s on Pro/Enterprise, or 250/10s with the API Limit Increase add-on
, plus a per-account daily cap of 250k / 625k / 1M depending on tier — shared across all private apps in the account
. The burst window is per app; the daily quota is per portal.
hubspot
hubspot
hubspot
hubspot
The Search API is special: five requests per second per account, capped at 200 records per page, with a hard 10,000-result ceiling per query
. That's the limit the 429 in your example is hitting (
secondly limit
on
/crm/v3/objects/contact/search
). It's a separate bucket from the 190/10s, and critically, search responses do not include the
X-HubSpot-RateLimit-*
headers
— you can't read remaining capacity off the response, you have to track it yourself.
hubspot
hubspot
hubspot
hubspot
Non-search endpoints return
X-HubSpot-RateLimit-Remaining
,
-Max
, and
-Interval-Milliseconds
. The daily headers are not returned for OAuth-authenticated calls
, so for those you check the account-info endpoint or maintain your own counter. There's also a soft rule: errors should stay under 5% of total daily requests
— that's enforced for marketplace listing, but it's also a sane operational target.
hubspot
hubspot
hubspot
hubspot
So you have
four buckets
to track at minimum: app-burst (10s sliding), search-secondly (1s sliding), account-daily (24h fixed, midnight in HubSpot's TZ), and per-app daily share (your own budgeting on top of the account cap).
Where to store it
Where to store it
Redis. It's the only realistic option once you have multiple queue workers — DB-backed counters serialize too much, and in-process state can't coordinate across workers. Laravel already speaks Redis natively, and you get atomic
INCR
/
EXPIRE
plus Lua scripting for true CAS semantics.
Key layout I'd use:
Copy to clipboard
hubspot:rl:burst:{portalId}:{appId} ZSET (sliding 10s)
hubspot:rl:search:{portalId} ZSET (sliding 1s)
hubspot:rl:daily:{portalId} STRING + TTL to midnight TZ
hubspot:rl:meta:{portalId} HASH (last seen headers)
The two short-window buckets are sliding-window-log (Redis ZSET, score =
microtime
, member = unique request id). Lua script removes entries older than the window, counts remaining slots, and only adds the new one if there's room — all atomic. Fixed windows are simpler but allow 2× the limit at the boundary, which on a 5/s window is brutal.
The daily bucket is a plain
INCR
with TTL set to seconds-until-midnight in
HubSpot's account timezone
, not yours — Sofia is UTC+2/+3 but your portal might be set to US Eastern. Get this once and cache it.
How to read it
How to read it
Two-phase: optimistic pre-check, authoritative post-update.
Before a call, run the Lua acquire script. If it returns "denied," sleep until a slot frees up (the script can return ms-until-next-slot) or push the job back to the queue with a delay. Don't busy-loop.
After the call, parse
X-HubSpot-RateLimit-Remaining
/
-Max
/
-Interval-Milliseconds
and store them in
hubspot:rl:meta:{portalId}
. This is your reality check — if your local counter says 50 remaining but HubSpot's header says 5, you trust HubSpot and clamp your counter. This handles clock drift, missed accounting (e.g., crashed worker that took a token but never made the request), and other apps in the same account consuming the daily budget invisibly.
For search specifically, since headers don't come back, the local counter
is
the source of truth — meaning if you ever crash mid-flight, you've under-counted. Always release tokens on connection-level failure but
not
on 429 (you really did make that request).
How to work with multiple jobs
How to work with multiple jobs
The queue layer needs to enforce concurrency separately from the rate limiter. Both work together:
Concurrency cap
via
Queue::throttle()
or a Redis semaphore — limits how many sync workers run in parallel against HubSpot. Without this, you can have 50 workers all blocked waiting for tokens, which is wasteful and creates retry storms.
Per-tenant fairness
— if you sync many Jiminny customers into different HubSpot portals, each portal has its own bucket but you still want one slow portal not to starve others. Either separate queues per portal or a fair-share scheduler.
Priority lanes
— webhook-driven updates (user-visible latency) should outrank background batch syncs. Two queues:
hubspot-priority
and
hubspot-bulk
, with priority workers taking 70% of the burst budget and bulk taking 30% (enforce via separate sub-buckets if you really want hard separation, otherwise just pull from priority first).
Backoff on 429
— respect the
Retry-After
header. If absent, exponential with jitter (e.g.,
min(2^attempt * 250ms, 30s) ± 20%
). The jitter is non-negotiable; without it, simultaneous 429s retry in lockstep and you get thundering-herd 429s on retry.
How to work with paginated requests
How to work with paginated requests
The trap is treating "fetch all" as one logical operation. Each page is its own API call and competes for tokens with everything else.
Two practical rules:
Don't hold the worker idle while paginating.
If page N takes 500ms and page N+1 needs to wait 800ms for a token, you've burned 800ms of worker time doing nothing. Instead, fetch page N, dispatch the
processing
of page N as a separate job, and queue a "fetch page N+1" job with a delay equal to the wait time. Each page becomes its own atomic unit.
Always batch where HubSpot offers it.
POST /crm/v3/objects/{type}/batch/{read|update|create}
accepts up to 100 IDs per call. For your "patching IDs" flow this is the difference between 600 calls and 6.
Walkthrough: 600 opportunities
Walkthrough: 600 opportunities
Naive flow (one PATCH per deal): 600 calls. At 190/10s that's ~32s of API time, well under daily. You'd hit burst easily without throttling. Plus likely 1-3 search calls upfront and N association calls.
Sane flow:
Identify deltas
— if you can avoid Search at all, do. Use
lastmodifieddate
filter on a single search if you must, paginate at limit=200. For 600 deals that's 3 search calls @ 5/s = ~600ms naturally throttled.
Batch read
current state —
POST /crm/v3/objects/deals/batch/read
with 100 IDs per call → 6 calls. Burst weight 6.
Compute diff
in your code (no API).
Batch update
—
POST /crm/v3/objects/deals/batch/update
with 100 per call → 6 calls.
Associations
—
POST /crm/v4/associations/{from}/{to}/batch/create
if needed → another few batch calls.
Total: ~15-20 API calls for 600 deals. Burst budget consumed: 20/190 over ~5s. Daily impact: trivial.
Recognition: pre-check denies if
<weight>
slots aren't free; on 429 the response surfaces
policyName
(DAILY/SECONDLY) — log it, push the job back with
Retry-After
delay, increment a metric so you can alarm on sustained 429 rate.
Pitfalls & bottlenecks worth pre-empting
Pitfalls & bottlenecks worth pre-empting
Daily quota is shared across the whole portal
, including any n8n flows, other private apps, marketing automation calling APIs, etc. Budget for ~70-80% of the documented limit, not 100%. Add an internal per-app daily cap so a runaway sync can't starve other apps.
Search is uniquely fragile
: separate 5/s bucket, no headers to read, 10k-result cap per query. If you ever hit 10k+ deals matching a filter, partition by
hs_object_id
ranges or by
lastmodifieddate
windows.
Retry storms after HubSpot incidents
— always jitter, always cap total retries (e.g., 5 attempts, then dead-letter).
Webhook → sync → webhook loops
— when your update fires a HubSpot webhook that triggers another sync. Tag your own writes (e.g., a custom property
jy_last_sync_id
) and ignore webhooks where it just changed.
Token refresh
— OAuth refresh itself counts against burst. Cache the access token in Redis with TTL =
expires_in - 60s
, single-flight the refresh (only one worker refreshes; others wait on a lock).
Search latency for fresh writes
— newly created/updated objects don't appear in search instantly. Don't write-then-search; use returned IDs directly.
Clock skew
— Redis is authoritative. Don't use
time()
from each worker for window scoring; use
redis.call('TIME')
inside the Lua script.
Dead workers with held tokens
— sliding-window-log handles this naturally because tokens expire by score; token-bucket implementations need explicit release-on-crash logic.
The 5% error rule
counts every 429 toward your error budget, even successfully retried ones. If your pre-check is working well, 429s should be near zero — if they're not, your pre-check is wrong, not just slow.
Phantom contention with Laravel
RateLimited
middleware
: it's per-job-class by default, not per-portal. If your
SyncDealJob
and
UpdateActivityJob
are different classes both calling HubSpot, they don't share a Laravel-level limiter — you need a single
HubspotRateLimiter
service that everything routes through.
If you want, I can sketch the Lua script for the sliding-window acquire and the Laravel service wrapper around it.
Copy
Give positive feedback
Give negative feedback
Retry
You said: What will happen if there are two different types of rate limits?
You said: What will happen if there are two different types of rate limits?
What will happen if there are two different types of rate limits?
Search requests that have 5 requests per second
The other rate limit that has, let's say, 100 requests per 10 seconds How do these work together? Is there some conflict? Can I reach the limit with one request and block either as well, or are these separated? Can I still continue making search requests once I hit the normal requests limits?
13:40
Retry
Edit
Copy
Claude responded: They're independent buckets — with one shared bucket on top.
Claude responded: They're independent buckets — with one shared bucket on top.
Analyzed independent rate limit buckets and their practical interactions
Analyzed independent rate limit buckets and their practical interactions
They're independent buckets — with one shared bucket on top.
The three buckets and what each call hits
The three buckets and what each call hits
Copy to clipboard
┌──────────────────┐
Search request ──→ │ Search: 5/sec │ ──┐
└──────────────────┘ │
├──→ ┌─────────────────┐
┌──────────────────┐ │ │ Daily: 250k–1M │
Non-search call ──→ │ Burst: 190/10s │ ──┘ │ (per portal) │
└──────────────────┘ └─────────────────┘
A search call is only metered against the search bucket and the daily bucket. A non-search call (batch read/update, single PATCH, associations, etc.) is only metered against the burst bucket and the daily bucket. The two short-window buckets do not share counters.
What this means practically
What this means practically
Hitting search secondly limit (5/s):
Only further
/search
calls 429. Your batch reads, batch updates, single PATCHes, association calls — all keep working at full burst speed. This is actually useful: if your sync is bottlenecked on Search, you can pivot to using
lastmodifieddate
filters via batch endpoints, or use the IDs you already have to do batch reads, while Search cools off.
Hitting burst limit (190/10s):
Only non-search calls 429. You can still issue Search calls at 5/s. Useful for: continuing to identify deltas for queueing while in-flight updates drain, or refreshing a small set of records via Search even though your write pipeline is paused.
Hitting daily limit:
Everything stops. Search and non-search alike. Doesn't unblock until midnight in your portal's configured timezone — and remember this is shared across every private app in the portal, plus n8n flows, marketing tools, anything else hitting the API with that account.
So can one type of request block the other?
So can one type of request block the other?
Search → Burst:
No.
Saturating Search at 50 calls per 10s leaves your full 190/10s burst untouched.
Burst → Search:
No.
Saturating burst leaves Search's 5/s untouched.
Either → Daily:
Yes
, but only by contributing to the same daily counter. It's volume that kills you here, not the type.
In theory you can sustain ~50 search + ~190 other =
~240 calls per 10 seconds
indefinitely (until daily runs out), because the two buckets bill independently.
Implementation consequence
Implementation consequence
Your rate limiter needs to know which bucket a request hits before it acquires. Cleanest pattern:
Copy to clipboard
php
$limiter
->
acquire
(
'search'
,
$weight...
|
4064
|
NULL
|
NULL
|
NULL
|
|
4118
|
NULL
|
0
|
2026-05-07T13:06:25.935379+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-07/1778 /Users/lukas/.screenpipe/data/data/2026-05-07/1778159185935_m2.jpg...
|
PhpStorm
|
faVsco.js – Client.php
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
master, menu
Start Listen Project: faVsco.js, menu
master, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Show Replace Field
Search History
retry_error
New Line
Match Case
Words
Regex
Replace History
Replace
New Line
Preserve case
0 results
Previous Occurrence
Next Occurrence
Filter Search Results
Open in Window, Multiple Cursors
Click to highlight
Close
Sync Changes
Hide This Notification
Code changed:
Hide
238
Previous Highlighted Error
Next Highlighted Error
[2026-05-07 12:52:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"fa8a3008-d298-4682-bbbc-fdc77520e0d7","trace_id":"7cfb2afb-9fc4-4a77-81be-65dce93c7d80"}
[2026-05-07 12:52:08] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"fa8a3008-d298-4682-bbbc-fdc77520e0d7","trace_id":"7cfb2afb-9fc4-4a77-81be-65dce93c7d80"}
[2026-05-07 12:52:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"fa8a3008-d298-4682-bbbc-fdc77520e0d7","trace_id":"7cfb2afb-9fc4-4a77-81be-65dce93c7d80"}
[2026-05-07 12:52:12] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"932ced9d-9804-48ed-976a-1f8bf5e75707","trace_id":"21bf320c-58f3-4082-831d-9f07f6c6a669"}
[2026-05-07 12:52:12] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"932ced9d-9804-48ed-976a-1f8bf5e75707","trace_id":"21bf320c-58f3-4082-831d-9f07f6c6a669"}
[2026-05-07 12:52:17] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1499,"provider":"hubspot"} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:17] local.INFO: [SocialAccountService] Token retrieved {"socialAccountId":1499,"provider":"hubspot"} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:17] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:17] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {"crm_provider":"hubspot","crm_owner":148,"team_id":2} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:17] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.55,"average_seconds_per_request":0.55} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:18] local.NOTICE: Monitoring start {"correlation_id":"ae3ec78f-432c-4e22-b73b-0413af73d9f3","trace_id":"c2feb517-0f2b-4ad9-bce5-4d57476a164b"}
[2026-05-07 12:52:18] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.51,"average_seconds_per_request":0.51} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:18] local.NOTICE: Monitoring end {"correlation_id":"ae3ec78f-432c-4e22-b73b-0413af73d9f3","trace_id":"c2feb517-0f2b-4ad9-bce5-4d57476a164b"}
[2026-05-07 12:52:18] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.48,"average_seconds_per_request":0.48} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:19] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.49,"average_seconds_per_request":0.49} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:19] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.49,"average_seconds_per_request":0.49} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"2bf2f73f-007c-4909-925e-f1749fbf87b3","trace_id":"8429123c-d92c-48d9-a154-29bc0aa0e2a1"}
[2026-05-07 12:52:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"2bf2f73f-007c-4909-925e-f1749fbf87b3","trace_id":"8429123c-d92c-48d9-a154-29bc0aa0e2a1"}
[2026-05-07 12:52:20] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.48,"average_seconds_per_request":0.48} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:20] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.62,"average_seconds_per_request":0.62} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:21] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.78,"average_seconds_per_request":0.78} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:22] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":1.21,"average_seconds_per_request":1.21} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:23] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.53,"average_seconds_per_request":0.53} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:25] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8","trace_id":"64ccac6b-34f7-45ed-a8ac-b63adbb19107"}
[2026-05-07 12:52:25] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8","trace_id":"64ccac6b-34f7-45ed-a8ac-b63adbb19107"}
[2026-05-07 12:52:26] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8","trace_id":"64ccac6b-34f7-45ed-a8ac-b63adbb19107"}
[2026-05-07 12:52:26] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8","trace_id":"64ccac6b-34f7-45ed-a8ac-b63adbb19107"}
[2026-05-07 12:52:28] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:count","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"6e1a36d0-a87a-455f-88b9-04f16718ea33","trace_id":"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c"}
[2026-05-07 12:52:28] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:50:00, 2026-05-07 12:52:00] {"correlation_id":"6e1a36d0-a87a-455f-88b9-04f16718ea33","trace_id":"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c"}
[2026-05-07 12:52:28] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:50:00, 2026-05-07 12:52:00] {"correlation_id":"6e1a36d0-a87a-455f-88b9-04f16718ea33","trace_id":"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c"}
[2026-05-07 12:52:28] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:count","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"6e1a36d0-a87a-455f-88b9-04f16718ea33","trace_id":"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c"}
[2026-05-07 12:52:31] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:create","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"80549428-beea-4a6c-97d3-818ca0f059f3","trace_id":"55ddd59b-073b-4331-8cdb-baa869dcff70"}
[2026-05-07 12:52:31] local.INFO: [EmailSchedule] STARTING batch create {"host":"docker_lamp_1"} {"correlation_id":"80549428-beea-4a6c-97d3-818ca0f059f3","trace_id":"55ddd59b-073b-4331-8cdb-baa869dcff70"}
[2026-05-07 12:52:31] local.INFO: [EmailSchedule] FINISHED batch create {"host":"docker_lamp_1"} {"correlation_id":"80549428-beea-4a6c-97d3-818ca0f059f3","trace_id":"55ddd59b-073b-4331-8cdb-baa869dcff70"}
[2026-05-07 12:52:31] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:create","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"80549428-beea-4a6c-97d3-818ca0f059f3","trace_id":"55ddd59b-073b-4331-8cdb-baa869dcff70"}
[2026-05-07 12:52:32] local.INFO: [Jiminny\Jobs\Mailbox\CreateBatches] processed 2 inboxes and created 0 batches {"userId":null,"batchSize":30,"maxBatches":1000} {"correlation_id":"92242bd6-7014-4487-a50b-1570e1a88e7a","trace_id":"55ddd59b-073b-4331-8cdb-baa869dcff70"}
[2026-05-07 12:52:39] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"activity:sync","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"d467eace-3254-4ecc-8d8e-a94688d6d3ad","trace_id":"5105ca8f-3c0d-4798-b748-5a7d6fbd7531"}
[2026-05-07 12:52:39] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"activity:sync","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"d467eace-3254-4ecc-8d8e-a94688d6d3ad","trace_id":"5105ca8f-3c0d-4798-b748-5a7d6fbd7531"}
[2026-05-07 12:53:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"04363b29-2f82-470a-89d0-c5ce4f4779d7","trace_id":"3c76a1f1-3348-4e2b-897c-4a216ca95147"}
[2026-05-07 12:53:08] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"04363b29-2f82-470a-89d0-c5ce4f4779d7","trace_id":"3c76a1f1-3348-4e2b-897c-4a216ca95147"}
[2026-05-07 12:53:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"04363b29-2f82-470a-89d0-c5ce4f4779d7","trace_id":"3c76a1f1-3348-4e2b-897c-4a216ca95147"}
[2026-05-07 12:53:11] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"5ebbecd0-866c-443f-965f-b6ac03735379","trace_id":"e0a724a5-bb4b-4fe6-9fe9-36ea1c3f0326"}
[2026-05-07 12:53:11] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"5ebbecd0-866c-443f-965f-b6ac03735379","trace_id":"e0a724a5-bb4b-4fe6-9fe9-36ea1c3f0326"}
[2026-05-07 12:53:18] local.NOTICE: Monitoring start {"correlation_id":"f39f0d3c-a292-41cb-8834-45dae1f8cf47","trace_id":"b6e7e2a7-85af-401d-afc6-bec2bdab34d7"}
[2026-05-07 12:53:18] local.NOTICE: Monitoring end {"correlation_id":"f39f0d3c-a292-41cb-8834-45dae1f8cf47","trace_id":"b6e7e2a7-85af-401d-afc6-bec2bdab34d7"}
[2026-05-07 12:53:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"419bb747-2669-496f-944b-1073496cc271","trace_id":"4cb913a4-ef75-422b-80eb-fbfb988521ed"}
[2026-05-07 12:53:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"419bb747-2669-496f-944b-1073496cc271","trace_id":"4cb913a4-ef75-422b-80eb-fbfb988521ed"}
[2026-05-07 12:53:22] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"f4805c97-9344-4111-8be2-2b1efeae07bb","trace_id":"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22"}
[2026-05-07 12:53:22] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"f4805c97-9344-4111-8be2-2b1efeae07bb","trace_id":"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22"}
[2026-05-07 12:53:22] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"f4805c97-9344-4111-8be2-2b1efeae07bb","trace_id":"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22"}
[2026-05-07 12:53:22] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"f4805c97-9344-4111-8be2-2b1efeae07bb","trace_id":"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22"}
[2026-05-07 12:53:25] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:retry-failed","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"2eadb06b-2c2e-4a7f-8920-77bd30d6cd7f","trace_id":"75f27a23-2021-41a5-9e5f-4b1cb4f143a6"}
[2026-05-07 12:53:25] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:retry-failed","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"2eadb06b-2c2e-4a7f-8920-77bd30d6cd7f","trace_id":"75f27a23-2021-41a5-9e5f-4b1cb4f143a6"}
[2026-05-07 12:54:06] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"ad151521-f676-4351-a70b-f44dc0b94990","trace_id":"17e39c4c-85cb-49a4-815e-b7315a8c2249"}
[2026-05-07 12:54:06] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"ad151521-f676-4351-a70b-f44dc0b94990","trace_id":"17e39c4c-85cb-49a4-815e-b7315a8c2249"}
[2026-05-07 12:54:06] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"ad151521-f676-4351-a70b-f44dc0b94990","trace_id":"17e39c4c-85cb-49a4-815e-b7315a8c2249"}
[2026-05-07 12:54:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"ed0583cf-03c6-4696-b859-876c8efa4473","trace_id":"3f9e0a3c-2178-4885-95eb-8618b8cfc042"}
[2026-05-07 12:54:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"ed0583cf-03c6-4696-b859-876c8efa4473","trace_id":"3f9e0a3c-2178-4885-95eb-8618b8cfc042"}
[2026-05-07 12:54:10] local.NOTICE: Monitoring start {"correlation_id":"7142250a-b897-4620-8ff7-fd9b3a1f3802","trace_id":"597def1e-ca38-4cc4-8890-fdcd5baff948"}
[2026-05-07 12:54:10] local.NOTICE: Monitoring end {"correlation_id":"7142250a-b897-4620-8ff7-fd9b3a1f3802","trace_id":"597def1e-ca38-4cc4-8890-fdcd5baff948"}
[2026-05-07 12:54:12] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"cb2ada48-0200-4eb3-a8c5-6cb8ea43ec0d","trace_id":"73937bdc-10b9-4508-9ef2-86420fe774fc"}
[2026-05-07 12:54:12] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"cb2ada48-0200-4eb3-a8c5-6cb8ea43ec0d","trace_id":"73937bdc-10b9-4508-9ef2-86420fe774fc"}
[2026-05-07 12:54:14] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"8f1d8932-2839-4256-99ab-1fd13e8381c6","trace_id":"cc090767-edc2-4a89-90c2-116f1737de7f"}
[2026-05-07 12:54:14] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"8f1d8932-2839-4256-99ab-1fd13e8381c6","trace_id":"cc090767-edc2-4a89-90c2-116f1737de7f"}
[2026-05-07 12:54:14] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"8f1d8932-2839-4256-99ab-1fd13e8381c6","trace_id":"cc090767-edc2-4a89-90c2-116f1737de7f"}
[2026-05-07 12:54:14] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"8f1d8932-2839-4256-99ab-1fd13e8381c6","trace_id":"cc090767-edc2-4a89-90c2-116f1737de7f"}
[2026-05-07 12:54:16] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:count","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"9d324c6d-5b36-46ee-89c6-f95f86bf3f39","trace_id":"860cdff0-9356-4e94-84cc-e011a74ba56c"}
[2026-05-07 12:54:16] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:52:00, 2026-05-07 12:54:00] {"correlation_id":"9d324c6d-5b36-46ee-89c6-f95f86bf3f39","trace_id":"860cdff0-9356-4e94-84cc-e011a74ba56c"}
[2026-05-07 12:54:16] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:52:00, 2026-05-07 12:54:00] {"correlation_id":"9d324c6d-5b36-46ee-89c6-f95f86bf3f39","trace_id":"860cdff0-9356-4e94-84cc-e011a74ba56c"}
[2026-05-07 12:54:16] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:count","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"9d324c6d-5b36-46ee-89c6-f95f86bf3f39","trace_id":"860cdff0-9356-4e94-84cc-e011a74ba56c"}
[2026-05-07 12:54:18] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"activity:aircall:check-and-renew","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"c2009a88-eea6-4954-8642-ef5d9cb56b42","trace_id":"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab"}
[2026-05-07 12:54:18] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1496,"provider":"aircall"} {"correlation_id":"c2009a88-eea6-4954-8642-ef5d9cb56b42","trace_id":"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab"}
[2026-05-07 12:54:18] local.INFO: [SocialAccountService] Token retrieved {"socialAccountId":1496,"provider":"aircall"} {"correlation_id":"c2009a88-eea6-4954-8642-ef5d9cb56b42","trace_id":"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab"}
[2026-05-07 12:54:18] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"c2009a88-eea6-4954-8642-ef5d9cb56b42","trace_id":"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab"}
[2026-05-07 12:54:19] local.ERROR: [Aircall] Re-activating webhooks failed {"team_id":1,"reason":"{\"message\":\"Forbidden\"}"} {"correlation_id":"c2009a88-eea6-4954-8642-ef5d9cb56b42","trace_id":"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab"}
[2026-05-07 12:54:19] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"activity:aircall:check-and-renew","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"c2009a88-eea6-4954-8642-ef5d9cb56b42","trace_id":"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab"}
[2026-05-07 12:54:21] local.INFO: [RetryFailedDownloads] Starting {"options":{"from":null,"to":null,"help":false,"silent":false,"quiet":false,"verbose":false,"version":false,"ansi":null,"no-interaction":false,"env":null}} {"correlation_id":"825ef2d7-b5f8-45cd-b19d-20a179b06934","trace_id":"5825a6c8-14c9-4bec-b688-d4895cfc41cc"}
[2026-05-07 12:55:05] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"c0dc8e25-7a51-4023-be61-d0abd6d72e37","trace_id":"16b8fa3e-92b1-465e-82d4-642a2d14c7c5"}
[2026-05-07 12:55:05] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"c0dc8e25-7a51-4023-be61-d0abd6d72e37","trace_id":"16b8fa3e-92b1-465e-82d4-642a2d14c7c5"}
[2026-05-07 12:55:05] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"c0dc8e25-7a51-4023-be61-d0abd6d72e37","trace_id":"16b8fa3e-92b1-465e-82d4-642a2d14c7c5"}
[2026-05-07 12:55:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"1c65fdd1-1f79-435d-b469-add46ddafd63","trace_id":"62f2a3bb-3be7-4c76-a9dd-222bfb895fab"}
[2026-05-07 12:55:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"1c65fdd1-1f79-435d-b469-add46ddafd63","trace_id":"62f2a3bb-3be7-4c76-a9dd-222bfb895fab"}
[2026-05-07 12:55:11] local.NOTICE: Monitoring start {"correlation_id":"f115f9bc-bb59-4fc9-8c9f-8b69baba1a55","trace_id":"e75cb5c6-6dd8-4000-8d26-4418020c7cfe"}
[2026-05-07 12:55:11] local.NOTICE: Monitoring end {"correlation_id":"f115f9bc-bb59-4fc9-8c9f-8b69baba1a55","trace_id":"e75cb5c6-6dd8-4000-8d26-4418020c7cfe"}
[2026-05-07 12:55:14] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"dba5c474-4d40-44da-baf2-f8b30db9a2f5","trace_id":"adb45622-1fb0-457c-bf20-8dcceab2d62a"}
[2026-05-07 12:55:14] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"dba5c474-4d40-44da-baf2-f8b30db9a2f5","trace_id":"adb45622-1fb0-457c-bf20-8dcceab2d62a"}
[2026-05-07 12:55:16] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"22c96a8e-4424-4a1f-b349-206276eefe4c","trace_id":"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c"}
[2026-05-07 12:55:16] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"22c96a8e-4424-4a1f-b349-206276eefe4c","trace_id":"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c"}
[2026-05-07 12:55:16] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"22c96a8e-4424-4a1f-b349-206276eefe4c","trace_id":"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c"}
[2026-05-07 12:55:16] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"22c96a8e-4424-4a1f-b349-206276eefe4c","trace_id":"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c"}
[2026-05-07 12:55:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"activity:purge-stale","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"5f958e8d-1d01-4144-abd6-2513e5524ad3","trace_id":"828bc5b7-e2aa-4443-901f-38dd94bb7cc5"}
[2026-05-07 12:55:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"activity:purge-stale","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"5f958e8d-1d01-4144-abd6-2513e5524ad3","trace_id":"828bc5b7-e2aa-4443-901f-38dd94bb7cc5"}
[2026-05-07 12:55:22] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:text-relay:sync","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"6bd1c9cb-cd9a-42a9-87fe-45cb7bac687a","trace_id":"0f2f5d66-c4c9-46a5-a31b-6937663ce1ad"}
[2026-05-07 12:55:22] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:text-relay:sync","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"6bd1c9cb-cd9a-42a9-87fe-45cb7bac687a","trace_id":"0f2f5d66-c4c9-46a5-a31b-6937663ce1ad"}
[2026-05-07 12:55:24] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:pre-meeting-notification","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"c5dd8132-d7e1-4caa-84d1-0a50d02df8da","trace_id":"bc7341c5-b8e2-48ea-9670-7ec375363180"}
[2026-05-07 12:55:24] local.INFO: Running pre-meeting notification command {"correlation_id":"c5dd8132-d7e1-4caa-84d1-0a50d02df8da","trace_id":"bc7341c5-b8e2-48ea-9670-7ec375363180"}
[2026-05-07 12:55:24] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:pre-meeting-notification","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"c5dd8132-d7e1-4caa-84d1-0a50d02df8da","trace_id":"bc7341c5-b8e2-48ea-9670-7ec375363180"}
[2026-05-07 12:55:26] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:start","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0","trace_id":"efb1619f-4185-4319-9bfb-305cee0b6bfc"}
[2026-05-07 12:55:26] local.INFO: Running conference:monitor:start command for activities in (2026-05-07 12:45:00, 2026-05-07 12:50:00] {"correlation_id":"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0","trace_id":"efb1619f-4185-4319-9bfb-305cee0b6bfc"}
[2026-05-07 12:55:26] local.INFO: [conference:monitor:start] No activities found in (2026-05-07 12:45:00, 2026-05-07 12:50:00] {"correlation_id":"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0","trace_id":"efb1619f-4185-4319-9bfb-305cee0b6bfc"}
[2026-05-07 12:55:26] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:start","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0","trace_id":"efb1619f-4185-4319-9bfb-305cee0b6bfc"}
[2026-05-07 12:55:28] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:end","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"3792b31a-080a-4fe4-9823-5602361325ba","trace_id":"41a2fde1-48f6-4667-84b7-a2f93e9ad2da"}
[2026-05-07 12:55:28] local.INFO: conference:monitor:end:Jiminny\Console\Commands\Activities\MonitorMeetingEndCommand::logActivitiesEnded {"from":"12:50","to":"12:55"} {"correlation_id":"3792b31a-080a-4fe4-9823-5602361325ba","trace_id":"41a2fde1-48f6-4667-84b7-a2f93e9ad2da"}
[2026-05-07 12:55:28] local.INFO: conference:monitor:end:Jiminny\Console\Commands\Activities\MonitorMeetingEndCommand::logActivitiesWithUnfinishedSession {"from":"02:45","to":"02:50"} {"correlation_id":"3792b31a-080a-4fe4-9823-5602361325ba","trace_id":"41a2fde1-48f6-4667-84b7-a2f93e9ad2da"}
[2026-05-07 12:55:28] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:end","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"3792b31a-080a-4fe4-9823-5602361325ba","trace_id":"41a2fde1-48f6-4667-84b7-a2f93e9ad2da"}
[2026-05-07 12:55:30] local.NOTICE: Repairing HubSpot tokens start {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:30] local.INFO: Trying to refresh HubSpot token {"account_id":59,"updated_at":"2025-10-03 09:32:05"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:30] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:30] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":59,"provider":"hubspot","refreshToken":"97b78f6e2cc49965c00c2492b602b02708b1392551e6b3f113fbaa48992af90b","state":"full-refresh"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.ERROR: Failed to refresh HubSpot token {"account_id":59,"updated_at":"2025-10-03 09:32:05","reason":"missing or invalid refresh token","previous":""} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.INFO: Trying to refresh HubSpot token {"account_id":306,"updated_at":"2023-11-27 09:30:03"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":306,"provider":"hubspot","refreshToken":"6fa6aa8cc641d131231acc3470f5c03cb3b07b2e580fb18f8acb3b1dbb72549b","state":"full-refresh"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.ERROR: Failed to refresh HubSpot token {"account_id":306,"updated_at":"2023-11-27 09:30:03","reason":"missing or invalid refresh token","previous":""} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.INFO: Trying to refresh HubSpot token {"account_id":1372,"updated_at":"2025-10-02 14:47:06"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1372,"provider":"hubspot","refreshToken":"9aa73948c761da29dce46c177cf9aee1fde483a44169ca38723f9f0597d7a8c4","state":"full-refresh"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:32] local.ERROR: Failed to refresh HubSpot token {"account_id":1372,"updated_at":"2025-10-02 14:47:06","reason":"missing or invalid refresh token","previous":""} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:32] local.NOTICE: Repairing HubSpot tokens end {"total":3,"fixed":0,"failed":3} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:40] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"crm:bullhorn:ping","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"5e676ae4-5d63-49d4-9001-559088adf06b","trace_id":"2fcce073-dd68-4c99-b7c4-b9e03c20b8e4"}
[2026-05-07 12:55:40] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:pre-meeting-reminder","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"1f830896-8142-41d1-bfc9-4cbb9179ffda","trace_id":"e348a096-7f37-4308-a6d8-66131e8be901"}
[2026-05-07 12:55:40] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"crm:bullhorn:ping","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"5e676ae4-5d63-49d4-9001-559088adf06b","trace_id":"2fcce073-dd68-4c99-b7c4-b9e03c20b8e4"}
[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Command] Starting polling service {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Service starting {"memory_limit":"256M","max_execution_time":"0","initial_memory_mb":62.0} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Acquired polling lock {"expires_at":"2026-05-07T12:57:40.609671Z"} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:40] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:40] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:pre-meeting-reminder","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"1f830896-8142-41d1-bfc9-4cbb9179ffda","trace_id":"e348a096-7f37-4308-a6d8-66131e8be901"}
[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:45] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:45] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:46] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:51] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:51] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:51] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:06] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:06] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:06] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"2d8b30b4-87aa-480f-9b9e-5a9c709b742a","trace_id":"25b7be6c-1faf-430b-a724-a4ff28773a31"}
[2026-05-07 12:56:08] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"2d8b30b4-87aa-480f-9b9e-5a9c709b742a","trace_id":"25b7be6c-1faf-430b-a724-a4ff28773a31"}
[2026-05-07 12:56:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"2d8b30b4-87aa-480f-9b9e-5a9c709b742a","trace_id":"25b7be6c-1faf-430b-a724-a4ff28773a31"}
[2026-05-07 12:56:10] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"efd336d7-db4d-459e-b6e7-bf73454e955e","trace_id":"0a82c3d5-0417-48c8-b88f-70ec33e2326a"}
[2026-05-07 12:56:10] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"efd336d7-db4d-459e-b6e7-bf73454e955e","trace_id":"0a82c3d5-0417-48c8-b88f-70ec33e2326a"}
[2026-05-07 12:56:12] local.NOTICE: Monitoring start {"correlation_id":"68481576-8ca6-4ee5-821b-07374702971d","trace_id":"c73eac09-5d20-425f-9c22-bd6c65fc60c9"}
[2026-05-07 12:56:12] local.NOTICE: Monitoring end {"correlation_id":"68481576-8ca6-4ee5-821b-07374702971d","trace_id":"c73eac09-5d20-425f-9c22-bd6c65fc60c9"}
[2026-05-07 12:56:17] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"bd0cdc75-b5c2-4dbb-bc44-e36c96813d24","trace_id":"f688cd98-c171-4e30-8c72-afc14f040861"}
[2026-05-07 12:56:17] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"bd0cdc75-b5c2-4dbb-bc44-e36c96813d24","trace_id":"f688cd98-c171-4e30-8c72-afc14f040861"}
[2026-05-07 12:56:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"f01636a9-4059-4ab0-9ad2-b078d42cedbd","trace_id":"fea938d8-aedc-40ec-b8c2-2f487e1ac808"}
[2026-05-07 12:56:20] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"f01636a9-4059-4ab0-9ad2-b078d42cedbd","trace_id":"fea938d8-aedc-40ec-b8c2-2f487e1ac808"}
[2026-05-07 12:56:20] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"f01636a9-4059-4ab0-9ad2-b078d42cedbd","trace_id":"fea938d8-aedc-40ec-b8c2-2f487e1ac808"}
[2026-05-07 12:56:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"f01636a9-4059-4ab0-9ad2-b078d42cedbd","trace_id":"fea938d8-aedc-40ec-b8c2-2f487e1ac808"}
[2026-05-07 12:56:23] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:count","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"d4558901-264d-4238-8589-62a137bac1fd","trace_id":"38e6b5dc-ebd6-46a7-8224-7374d4e58630"}
[2026-05-07 12:56:23] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:54:00, 2026-05-07 12:56:00] {"correlation_id":"d4558901-264d-4238-8589-62a137bac1fd","trace_id":"38e6b5dc-ebd6-46a7-8224-7374d4e58630"}
[2026-05-07 12:56:23] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:54:00, 2026-05-07 12:56:00] {"correlation_id":"d4558901-264d-4238-8589-62a137bac1fd","trace_id":"38e6b5dc-ebd6-46a7-8224-7374d4e58630"}
[2026-05-07 12:56:23] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:count","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"d4558901-264d-4238-8589-62a137bac1fd","trace_id":"38e6b5dc-ebd6-46a7-8224-7374d4e58630"}
[2026-05-07 12:56:24] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"crm:sync-hubspot-objects","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"7bfaf9be-0ca1-4170-a0c9-83e0ed61881c","trace_id":"ba7f9eee-8dcb-4c94-acb0-18f9363757ad"}
[2026-05-07 12:56:24] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"crm:sync-hubspot-objects","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"7bfaf9be-0ca1-4170-a0c9-83e0ed61881c","trace_id":"ba7f9eee-8dcb-4c94-acb0-18f9363757ad"}
[2026-05-07 12:56:26] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"activity:notify-not-logged","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"2541e0fa-1117-4863-9523-d723b5821a24","trace_id":"d9600320-5133-4938-bdd1-2256dfdf8db4"}
[2026-05-07 12:56:26] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"activity:notify-not-logged","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"2541e0fa-1117-4863-9523-d723b5821a24","trace_id":"d9600320-5133-4938-bdd1-2256dfdf8db4"}
[2026-05-07 12:56:35] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:sync","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"e444f776-37db-4c6d-b30e-20b01a089de7","trace_id":"1168869e-e07c-4702-a046-42fc95a91f6d"}
[2026-05-07 12:56:36] local.INFO: [EmailSchedule] STARTING Inbox Sync {"host":"docker_lamp_1"} {"correlation_id":"e444f776-37db-4c6d-b30e-20b01a089de7","trace_id":"1168869e-e07c-4702-a046-42fc95a91f6d"}
[2026-05-07 12:56:36] local.INFO: [EmailSchedule] FINISHED Inbox Sync {"host":"docker_lamp_1","events":2} {"correlation_id":"e444f776-37db-4c6d-b30e-20b01a089de7","trace_id":"1168869e-e07c-4702-a046-42fc95a91f6d"}
[2026-05-07 12:56:36] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:sync","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"e444f776-37db-4c6d-b30e-20b01a089de7","trace_id":"1168869e-e07c-4702-a046-42fc95a91f6d"}
[2026-05-07 12:56:36] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:36] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:36] local.INFO: [HubSpot Journal Auth] Requesting new client credentials token {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:37] local.INFO: [HubSpot Journal Auth] Successfully obtained new access token {"expires_in":1800,"cached_for":1500} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:37] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:37] local.WARNING: [HubSpot Journal Polling] Maximum empty results reached, stopping {"empty_results":5,"max_empty_results":5} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:37] local.WARNING: [HubSpot Journal Polling] Maximum empty results reached, stopping {"empty_results":5,"max_empty_results":5} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:37] local.INFO: [HubSpot Journal Polling] Service ending {"runtime_seconds":57,"total_cycles":5,"files_downloaded":0,"empty_files":0,"other_portal_skipped":0,"total_events":0,"events_per_file":0,"avg_api_ms":238.3,"avg_download_ms":0.0,"avg_transform_ms":0.0,"avg_process_ms":0.0,"peak_memory_mb":99.73} {"correlation_id"...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"bounds":{"left":0.025930852,"top":0.019952115,"width":0.03856383,"height":0.025538707},"on_screen":true,"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"master, menu","depth":5,"bounds":{"left":0.064494684,"top":0.019952115,"width":0.040226065,"height":0.025538707},"on_screen":true,"help_text":"Git Branch: master<br/>Some incoming commits are not fetched<br/>","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Start Listening for PHP Debug Connections","depth":5,"bounds":{"left":0.8081782,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"AskJiminnyReportActivityServiceTest","depth":6,"bounds":{"left":0.8234708,"top":0.019952115,"width":0.09208777,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'AskJiminnyReportActivityServiceTest'","depth":6,"bounds":{"left":0.9155585,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'AskJiminnyReportActivityServiceTest'","depth":6,"bounds":{"left":0.9268617,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More Actions","depth":6,"bounds":{"left":0.9381649,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JetBrains AI","depth":5,"bounds":{"left":0.96609044,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Search Everywhere","depth":5,"bounds":{"left":0.9773936,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"IDE and Project Settings","depth":5,"bounds":{"left":0.9886968,"top":0.019952115,"width":0.011303186,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Show Replace Field","depth":4,"bounds":{"left":0.39926863,"top":0.105347164,"width":0.008643617,"height":0.01915403},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Search History","depth":3,"bounds":{"left":0.4119016,"top":0.10454908,"width":0.00731383,"height":0.017557861},"on_screen":true,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"retry_error","depth":4,"bounds":{"left":0.42287233,"top":0.10454908,"width":0.043882977,"height":0.015961692},"on_screen":true,"value":"retry_error","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"New Line","depth":3,"bounds":{"left":0.47573137,"top":0.10454908,"width":0.00731383,"height":0.017557861},"on_screen":true,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Match Case","depth":3,"bounds":{"left":0.48570478,"top":0.10454908,"width":0.00731383,"height":0.017557861},"on_screen":true,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Words","depth":3,"bounds":{"left":0.4943484,"top":0.10454908,"width":0.00731383,"height":0.017557861},"on_screen":true,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Regex","depth":3,"bounds":{"left":0.50299203,"top":0.10454908,"width":0.00731383,"height":0.017557861},"on_screen":true,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Replace History","depth":3,"bounds":{"left":0.27027926,"top":1.0,"width":0.00731383,"height":0.0},"on_screen":false,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"Replace","depth":4,"on_screen":false,"role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"New Line","depth":3,"bounds":{"left":0.27027926,"top":1.0,"width":0.00731383,"height":0.0},"on_screen":false,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Preserve case","depth":3,"bounds":{"left":0.27027926,"top":1.0,"width":0.00731383,"height":0.0},"on_screen":false,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"0 results","depth":4,"bounds":{"left":0.51662236,"top":0.103751,"width":0.025598405,"height":0.017557861},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Previous Occurrence","depth":4,"bounds":{"left":0.5422208,"top":0.10295291,"width":0.008643617,"height":0.01915403},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Occurrence","depth":4,"bounds":{"left":0.55086434,"top":0.10295291,"width":0.008643617,"height":0.01915403},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Filter Search Results","depth":4,"bounds":{"left":0.55950797,"top":0.10295291,"width":0.008643617,"height":0.01915403},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Open in Window, Multiple Cursors","depth":4,"bounds":{"left":0.5681516,"top":0.10295291,"width":0.008643617,"height":0.01915403},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Click to highlight","depth":4,"on_screen":false,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close","depth":4,"bounds":{"left":0.6988032,"top":0.10295291,"width":0.008643617,"height":0.01915403},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.042220745,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"238","depth":4,"bounds":{"left":0.68351066,"top":0.13407822,"width":0.012300532,"height":0.015163607},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"bounds":{"left":0.6974734,"top":0.13248204,"width":0.00731383,"height":0.018355945},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Highlighted Error","depth":4,"bounds":{"left":0.70478725,"top":0.13248204,"width":0.006981383,"height":0.018355945},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"[2026-05-07 12:52:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"fa8a3008-d298-4682-bbbc-fdc77520e0d7\",\"trace_id\":\"7cfb2afb-9fc4-4a77-81be-65dce93c7d80\"}\n[2026-05-07 12:52:08] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"fa8a3008-d298-4682-bbbc-fdc77520e0d7\",\"trace_id\":\"7cfb2afb-9fc4-4a77-81be-65dce93c7d80\"}\n[2026-05-07 12:52:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"fa8a3008-d298-4682-bbbc-fdc77520e0d7\",\"trace_id\":\"7cfb2afb-9fc4-4a77-81be-65dce93c7d80\"}\n[2026-05-07 12:52:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"932ced9d-9804-48ed-976a-1f8bf5e75707\",\"trace_id\":\"21bf320c-58f3-4082-831d-9f07f6c6a669\"}\n[2026-05-07 12:52:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"932ced9d-9804-48ed-976a-1f8bf5e75707\",\"trace_id\":\"21bf320c-58f3-4082-831d-9f07f6c6a669\"}\n[2026-05-07 12:52:17] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:17] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:17] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:17] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":148,\"team_id\":2} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:17] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.55,\"average_seconds_per_request\":0.55} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:18] local.NOTICE: Monitoring start {\"correlation_id\":\"ae3ec78f-432c-4e22-b73b-0413af73d9f3\",\"trace_id\":\"c2feb517-0f2b-4ad9-bce5-4d57476a164b\"}\n[2026-05-07 12:52:18] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.51,\"average_seconds_per_request\":0.51} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:18] local.NOTICE: Monitoring end {\"correlation_id\":\"ae3ec78f-432c-4e22-b73b-0413af73d9f3\",\"trace_id\":\"c2feb517-0f2b-4ad9-bce5-4d57476a164b\"}\n[2026-05-07 12:52:18] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.48,\"average_seconds_per_request\":0.48} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:19] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.49,\"average_seconds_per_request\":0.49} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:19] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.49,\"average_seconds_per_request\":0.49} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"2bf2f73f-007c-4909-925e-f1749fbf87b3\",\"trace_id\":\"8429123c-d92c-48d9-a154-29bc0aa0e2a1\"}\n[2026-05-07 12:52:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"2bf2f73f-007c-4909-925e-f1749fbf87b3\",\"trace_id\":\"8429123c-d92c-48d9-a154-29bc0aa0e2a1\"}\n[2026-05-07 12:52:20] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.48,\"average_seconds_per_request\":0.48} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:20] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.62,\"average_seconds_per_request\":0.62} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:21] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.78,\"average_seconds_per_request\":0.78} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:22] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":1.21,\"average_seconds_per_request\":1.21} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:23] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.53,\"average_seconds_per_request\":0.53} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8\",\"trace_id\":\"64ccac6b-34f7-45ed-a8ac-b63adbb19107\"}\n[2026-05-07 12:52:25] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8\",\"trace_id\":\"64ccac6b-34f7-45ed-a8ac-b63adbb19107\"}\n[2026-05-07 12:52:26] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8\",\"trace_id\":\"64ccac6b-34f7-45ed-a8ac-b63adbb19107\"}\n[2026-05-07 12:52:26] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8\",\"trace_id\":\"64ccac6b-34f7-45ed-a8ac-b63adbb19107\"}\n[2026-05-07 12:52:28] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"6e1a36d0-a87a-455f-88b9-04f16718ea33\",\"trace_id\":\"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c\"}\n[2026-05-07 12:52:28] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:50:00, 2026-05-07 12:52:00] {\"correlation_id\":\"6e1a36d0-a87a-455f-88b9-04f16718ea33\",\"trace_id\":\"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c\"}\n[2026-05-07 12:52:28] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:50:00, 2026-05-07 12:52:00] {\"correlation_id\":\"6e1a36d0-a87a-455f-88b9-04f16718ea33\",\"trace_id\":\"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c\"}\n[2026-05-07 12:52:28] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"6e1a36d0-a87a-455f-88b9-04f16718ea33\",\"trace_id\":\"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c\"}\n[2026-05-07 12:52:31] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:create\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"80549428-beea-4a6c-97d3-818ca0f059f3\",\"trace_id\":\"55ddd59b-073b-4331-8cdb-baa869dcff70\"}\n[2026-05-07 12:52:31] local.INFO: [EmailSchedule] STARTING batch create {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"80549428-beea-4a6c-97d3-818ca0f059f3\",\"trace_id\":\"55ddd59b-073b-4331-8cdb-baa869dcff70\"}\n[2026-05-07 12:52:31] local.INFO: [EmailSchedule] FINISHED batch create {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"80549428-beea-4a6c-97d3-818ca0f059f3\",\"trace_id\":\"55ddd59b-073b-4331-8cdb-baa869dcff70\"}\n[2026-05-07 12:52:31] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:create\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"80549428-beea-4a6c-97d3-818ca0f059f3\",\"trace_id\":\"55ddd59b-073b-4331-8cdb-baa869dcff70\"}\n[2026-05-07 12:52:32] local.INFO: [Jiminny\\Jobs\\Mailbox\\CreateBatches] processed 2 inboxes and created 0 batches {\"userId\":null,\"batchSize\":30,\"maxBatches\":1000} {\"correlation_id\":\"92242bd6-7014-4487-a50b-1570e1a88e7a\",\"trace_id\":\"55ddd59b-073b-4331-8cdb-baa869dcff70\"}\n[2026-05-07 12:52:39] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"d467eace-3254-4ecc-8d8e-a94688d6d3ad\",\"trace_id\":\"5105ca8f-3c0d-4798-b748-5a7d6fbd7531\"}\n[2026-05-07 12:52:39] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"d467eace-3254-4ecc-8d8e-a94688d6d3ad\",\"trace_id\":\"5105ca8f-3c0d-4798-b748-5a7d6fbd7531\"}\n[2026-05-07 12:53:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"04363b29-2f82-470a-89d0-c5ce4f4779d7\",\"trace_id\":\"3c76a1f1-3348-4e2b-897c-4a216ca95147\"}\n[2026-05-07 12:53:08] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"04363b29-2f82-470a-89d0-c5ce4f4779d7\",\"trace_id\":\"3c76a1f1-3348-4e2b-897c-4a216ca95147\"}\n[2026-05-07 12:53:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"04363b29-2f82-470a-89d0-c5ce4f4779d7\",\"trace_id\":\"3c76a1f1-3348-4e2b-897c-4a216ca95147\"}\n[2026-05-07 12:53:11] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"5ebbecd0-866c-443f-965f-b6ac03735379\",\"trace_id\":\"e0a724a5-bb4b-4fe6-9fe9-36ea1c3f0326\"}\n[2026-05-07 12:53:11] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"5ebbecd0-866c-443f-965f-b6ac03735379\",\"trace_id\":\"e0a724a5-bb4b-4fe6-9fe9-36ea1c3f0326\"}\n[2026-05-07 12:53:18] local.NOTICE: Monitoring start {\"correlation_id\":\"f39f0d3c-a292-41cb-8834-45dae1f8cf47\",\"trace_id\":\"b6e7e2a7-85af-401d-afc6-bec2bdab34d7\"}\n[2026-05-07 12:53:18] local.NOTICE: Monitoring end {\"correlation_id\":\"f39f0d3c-a292-41cb-8834-45dae1f8cf47\",\"trace_id\":\"b6e7e2a7-85af-401d-afc6-bec2bdab34d7\"}\n[2026-05-07 12:53:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"419bb747-2669-496f-944b-1073496cc271\",\"trace_id\":\"4cb913a4-ef75-422b-80eb-fbfb988521ed\"}\n[2026-05-07 12:53:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"419bb747-2669-496f-944b-1073496cc271\",\"trace_id\":\"4cb913a4-ef75-422b-80eb-fbfb988521ed\"}\n[2026-05-07 12:53:22] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"f4805c97-9344-4111-8be2-2b1efeae07bb\",\"trace_id\":\"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22\"}\n[2026-05-07 12:53:22] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"f4805c97-9344-4111-8be2-2b1efeae07bb\",\"trace_id\":\"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22\"}\n[2026-05-07 12:53:22] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"f4805c97-9344-4111-8be2-2b1efeae07bb\",\"trace_id\":\"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22\"}\n[2026-05-07 12:53:22] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"f4805c97-9344-4111-8be2-2b1efeae07bb\",\"trace_id\":\"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22\"}\n[2026-05-07 12:53:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"2eadb06b-2c2e-4a7f-8920-77bd30d6cd7f\",\"trace_id\":\"75f27a23-2021-41a5-9e5f-4b1cb4f143a6\"}\n[2026-05-07 12:53:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"2eadb06b-2c2e-4a7f-8920-77bd30d6cd7f\",\"trace_id\":\"75f27a23-2021-41a5-9e5f-4b1cb4f143a6\"}\n[2026-05-07 12:54:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"ad151521-f676-4351-a70b-f44dc0b94990\",\"trace_id\":\"17e39c4c-85cb-49a4-815e-b7315a8c2249\"}\n[2026-05-07 12:54:06] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"ad151521-f676-4351-a70b-f44dc0b94990\",\"trace_id\":\"17e39c4c-85cb-49a4-815e-b7315a8c2249\"}\n[2026-05-07 12:54:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"ad151521-f676-4351-a70b-f44dc0b94990\",\"trace_id\":\"17e39c4c-85cb-49a4-815e-b7315a8c2249\"}\n[2026-05-07 12:54:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"ed0583cf-03c6-4696-b859-876c8efa4473\",\"trace_id\":\"3f9e0a3c-2178-4885-95eb-8618b8cfc042\"}\n[2026-05-07 12:54:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"ed0583cf-03c6-4696-b859-876c8efa4473\",\"trace_id\":\"3f9e0a3c-2178-4885-95eb-8618b8cfc042\"}\n[2026-05-07 12:54:10] local.NOTICE: Monitoring start {\"correlation_id\":\"7142250a-b897-4620-8ff7-fd9b3a1f3802\",\"trace_id\":\"597def1e-ca38-4cc4-8890-fdcd5baff948\"}\n[2026-05-07 12:54:10] local.NOTICE: Monitoring end {\"correlation_id\":\"7142250a-b897-4620-8ff7-fd9b3a1f3802\",\"trace_id\":\"597def1e-ca38-4cc4-8890-fdcd5baff948\"}\n[2026-05-07 12:54:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"cb2ada48-0200-4eb3-a8c5-6cb8ea43ec0d\",\"trace_id\":\"73937bdc-10b9-4508-9ef2-86420fe774fc\"}\n[2026-05-07 12:54:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"cb2ada48-0200-4eb3-a8c5-6cb8ea43ec0d\",\"trace_id\":\"73937bdc-10b9-4508-9ef2-86420fe774fc\"}\n[2026-05-07 12:54:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"8f1d8932-2839-4256-99ab-1fd13e8381c6\",\"trace_id\":\"cc090767-edc2-4a89-90c2-116f1737de7f\"}\n[2026-05-07 12:54:14] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"8f1d8932-2839-4256-99ab-1fd13e8381c6\",\"trace_id\":\"cc090767-edc2-4a89-90c2-116f1737de7f\"}\n[2026-05-07 12:54:14] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"8f1d8932-2839-4256-99ab-1fd13e8381c6\",\"trace_id\":\"cc090767-edc2-4a89-90c2-116f1737de7f\"}\n[2026-05-07 12:54:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"8f1d8932-2839-4256-99ab-1fd13e8381c6\",\"trace_id\":\"cc090767-edc2-4a89-90c2-116f1737de7f\"}\n[2026-05-07 12:54:16] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"9d324c6d-5b36-46ee-89c6-f95f86bf3f39\",\"trace_id\":\"860cdff0-9356-4e94-84cc-e011a74ba56c\"}\n[2026-05-07 12:54:16] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:52:00, 2026-05-07 12:54:00] {\"correlation_id\":\"9d324c6d-5b36-46ee-89c6-f95f86bf3f39\",\"trace_id\":\"860cdff0-9356-4e94-84cc-e011a74ba56c\"}\n[2026-05-07 12:54:16] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:52:00, 2026-05-07 12:54:00] {\"correlation_id\":\"9d324c6d-5b36-46ee-89c6-f95f86bf3f39\",\"trace_id\":\"860cdff0-9356-4e94-84cc-e011a74ba56c\"}\n[2026-05-07 12:54:16] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"9d324c6d-5b36-46ee-89c6-f95f86bf3f39\",\"trace_id\":\"860cdff0-9356-4e94-84cc-e011a74ba56c\"}\n[2026-05-07 12:54:18] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:aircall:check-and-renew\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"c2009a88-eea6-4954-8642-ef5d9cb56b42\",\"trace_id\":\"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab\"}\n[2026-05-07 12:54:18] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1496,\"provider\":\"aircall\"} {\"correlation_id\":\"c2009a88-eea6-4954-8642-ef5d9cb56b42\",\"trace_id\":\"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab\"}\n[2026-05-07 12:54:18] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1496,\"provider\":\"aircall\"} {\"correlation_id\":\"c2009a88-eea6-4954-8642-ef5d9cb56b42\",\"trace_id\":\"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab\"}\n[2026-05-07 12:54:18] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"c2009a88-eea6-4954-8642-ef5d9cb56b42\",\"trace_id\":\"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab\"}\n[2026-05-07 12:54:19] local.ERROR: [Aircall] Re-activating webhooks failed {\"team_id\":1,\"reason\":\"{\\\"message\\\":\\\"Forbidden\\\"}\"} {\"correlation_id\":\"c2009a88-eea6-4954-8642-ef5d9cb56b42\",\"trace_id\":\"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab\"}\n[2026-05-07 12:54:19] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:aircall:check-and-renew\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"c2009a88-eea6-4954-8642-ef5d9cb56b42\",\"trace_id\":\"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab\"}\n[2026-05-07 12:54:21] local.INFO: [RetryFailedDownloads] Starting {\"options\":{\"from\":null,\"to\":null,\"help\":false,\"silent\":false,\"quiet\":false,\"verbose\":false,\"version\":false,\"ansi\":null,\"no-interaction\":false,\"env\":null}} {\"correlation_id\":\"825ef2d7-b5f8-45cd-b19d-20a179b06934\",\"trace_id\":\"5825a6c8-14c9-4bec-b688-d4895cfc41cc\"}\n[2026-05-07 12:55:05] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"c0dc8e25-7a51-4023-be61-d0abd6d72e37\",\"trace_id\":\"16b8fa3e-92b1-465e-82d4-642a2d14c7c5\"}\n[2026-05-07 12:55:05] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"c0dc8e25-7a51-4023-be61-d0abd6d72e37\",\"trace_id\":\"16b8fa3e-92b1-465e-82d4-642a2d14c7c5\"}\n[2026-05-07 12:55:05] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"c0dc8e25-7a51-4023-be61-d0abd6d72e37\",\"trace_id\":\"16b8fa3e-92b1-465e-82d4-642a2d14c7c5\"}\n[2026-05-07 12:55:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"1c65fdd1-1f79-435d-b469-add46ddafd63\",\"trace_id\":\"62f2a3bb-3be7-4c76-a9dd-222bfb895fab\"}\n[2026-05-07 12:55:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"1c65fdd1-1f79-435d-b469-add46ddafd63\",\"trace_id\":\"62f2a3bb-3be7-4c76-a9dd-222bfb895fab\"}\n[2026-05-07 12:55:11] local.NOTICE: Monitoring start {\"correlation_id\":\"f115f9bc-bb59-4fc9-8c9f-8b69baba1a55\",\"trace_id\":\"e75cb5c6-6dd8-4000-8d26-4418020c7cfe\"}\n[2026-05-07 12:55:11] local.NOTICE: Monitoring end {\"correlation_id\":\"f115f9bc-bb59-4fc9-8c9f-8b69baba1a55\",\"trace_id\":\"e75cb5c6-6dd8-4000-8d26-4418020c7cfe\"}\n[2026-05-07 12:55:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"dba5c474-4d40-44da-baf2-f8b30db9a2f5\",\"trace_id\":\"adb45622-1fb0-457c-bf20-8dcceab2d62a\"}\n[2026-05-07 12:55:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"dba5c474-4d40-44da-baf2-f8b30db9a2f5\",\"trace_id\":\"adb45622-1fb0-457c-bf20-8dcceab2d62a\"}\n[2026-05-07 12:55:16] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"22c96a8e-4424-4a1f-b349-206276eefe4c\",\"trace_id\":\"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c\"}\n[2026-05-07 12:55:16] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"22c96a8e-4424-4a1f-b349-206276eefe4c\",\"trace_id\":\"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c\"}\n[2026-05-07 12:55:16] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"22c96a8e-4424-4a1f-b349-206276eefe4c\",\"trace_id\":\"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c\"}\n[2026-05-07 12:55:16] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"22c96a8e-4424-4a1f-b349-206276eefe4c\",\"trace_id\":\"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c\"}\n[2026-05-07 12:55:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:purge-stale\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"5f958e8d-1d01-4144-abd6-2513e5524ad3\",\"trace_id\":\"828bc5b7-e2aa-4443-901f-38dd94bb7cc5\"}\n[2026-05-07 12:55:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:purge-stale\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"5f958e8d-1d01-4144-abd6-2513e5524ad3\",\"trace_id\":\"828bc5b7-e2aa-4443-901f-38dd94bb7cc5\"}\n[2026-05-07 12:55:22] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:text-relay:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"6bd1c9cb-cd9a-42a9-87fe-45cb7bac687a\",\"trace_id\":\"0f2f5d66-c4c9-46a5-a31b-6937663ce1ad\"}\n[2026-05-07 12:55:22] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:text-relay:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"6bd1c9cb-cd9a-42a9-87fe-45cb7bac687a\",\"trace_id\":\"0f2f5d66-c4c9-46a5-a31b-6937663ce1ad\"}\n[2026-05-07 12:55:24] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:pre-meeting-notification\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"c5dd8132-d7e1-4caa-84d1-0a50d02df8da\",\"trace_id\":\"bc7341c5-b8e2-48ea-9670-7ec375363180\"}\n[2026-05-07 12:55:24] local.INFO: Running pre-meeting notification command {\"correlation_id\":\"c5dd8132-d7e1-4caa-84d1-0a50d02df8da\",\"trace_id\":\"bc7341c5-b8e2-48ea-9670-7ec375363180\"}\n[2026-05-07 12:55:24] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:pre-meeting-notification\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"c5dd8132-d7e1-4caa-84d1-0a50d02df8da\",\"trace_id\":\"bc7341c5-b8e2-48ea-9670-7ec375363180\"}\n[2026-05-07 12:55:26] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:start\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0\",\"trace_id\":\"efb1619f-4185-4319-9bfb-305cee0b6bfc\"}\n[2026-05-07 12:55:26] local.INFO: Running conference:monitor:start command for activities in (2026-05-07 12:45:00, 2026-05-07 12:50:00] {\"correlation_id\":\"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0\",\"trace_id\":\"efb1619f-4185-4319-9bfb-305cee0b6bfc\"}\n[2026-05-07 12:55:26] local.INFO: [conference:monitor:start] No activities found in (2026-05-07 12:45:00, 2026-05-07 12:50:00] {\"correlation_id\":\"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0\",\"trace_id\":\"efb1619f-4185-4319-9bfb-305cee0b6bfc\"}\n[2026-05-07 12:55:26] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:start\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0\",\"trace_id\":\"efb1619f-4185-4319-9bfb-305cee0b6bfc\"}\n[2026-05-07 12:55:28] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:end\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"3792b31a-080a-4fe4-9823-5602361325ba\",\"trace_id\":\"41a2fde1-48f6-4667-84b7-a2f93e9ad2da\"}\n[2026-05-07 12:55:28] local.INFO: conference:monitor:end:Jiminny\\Console\\Commands\\Activities\\MonitorMeetingEndCommand::logActivitiesEnded {\"from\":\"12:50\",\"to\":\"12:55\"} {\"correlation_id\":\"3792b31a-080a-4fe4-9823-5602361325ba\",\"trace_id\":\"41a2fde1-48f6-4667-84b7-a2f93e9ad2da\"}\n[2026-05-07 12:55:28] local.INFO: conference:monitor:end:Jiminny\\Console\\Commands\\Activities\\MonitorMeetingEndCommand::logActivitiesWithUnfinishedSession {\"from\":\"02:45\",\"to\":\"02:50\"} {\"correlation_id\":\"3792b31a-080a-4fe4-9823-5602361325ba\",\"trace_id\":\"41a2fde1-48f6-4667-84b7-a2f93e9ad2da\"}\n[2026-05-07 12:55:28] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:end\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"3792b31a-080a-4fe4-9823-5602361325ba\",\"trace_id\":\"41a2fde1-48f6-4667-84b7-a2f93e9ad2da\"}\n[2026-05-07 12:55:30] local.NOTICE: Repairing HubSpot tokens start {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:30] local.INFO: Trying to refresh HubSpot token {\"account_id\":59,\"updated_at\":\"2025-10-03 09:32:05\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:30] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:30] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":59,\"provider\":\"hubspot\",\"refreshToken\":\"97b78f6e2cc49965c00c2492b602b02708b1392551e6b3f113fbaa48992af90b\",\"state\":\"full-refresh\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.ERROR: Failed to refresh HubSpot token {\"account_id\":59,\"updated_at\":\"2025-10-03 09:32:05\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.INFO: Trying to refresh HubSpot token {\"account_id\":306,\"updated_at\":\"2023-11-27 09:30:03\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":306,\"provider\":\"hubspot\",\"refreshToken\":\"6fa6aa8cc641d131231acc3470f5c03cb3b07b2e580fb18f8acb3b1dbb72549b\",\"state\":\"full-refresh\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.ERROR: Failed to refresh HubSpot token {\"account_id\":306,\"updated_at\":\"2023-11-27 09:30:03\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.INFO: Trying to refresh HubSpot token {\"account_id\":1372,\"updated_at\":\"2025-10-02 14:47:06\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1372,\"provider\":\"hubspot\",\"refreshToken\":\"9aa73948c761da29dce46c177cf9aee1fde483a44169ca38723f9f0597d7a8c4\",\"state\":\"full-refresh\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:32] local.ERROR: Failed to refresh HubSpot token {\"account_id\":1372,\"updated_at\":\"2025-10-02 14:47:06\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:32] local.NOTICE: Repairing HubSpot tokens end {\"total\":3,\"fixed\":0,\"failed\":3} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:40] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"crm:bullhorn:ping\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"5e676ae4-5d63-49d4-9001-559088adf06b\",\"trace_id\":\"2fcce073-dd68-4c99-b7c4-b9e03c20b8e4\"}\n[2026-05-07 12:55:40] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:pre-meeting-reminder\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"1f830896-8142-41d1-bfc9-4cbb9179ffda\",\"trace_id\":\"e348a096-7f37-4308-a6d8-66131e8be901\"}\n[2026-05-07 12:55:40] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"crm:bullhorn:ping\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"5e676ae4-5d63-49d4-9001-559088adf06b\",\"trace_id\":\"2fcce073-dd68-4c99-b7c4-b9e03c20b8e4\"}\n[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Command] Starting polling service {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Service starting {\"memory_limit\":\"256M\",\"max_execution_time\":\"0\",\"initial_memory_mb\":62.0} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Acquired polling lock {\"expires_at\":\"2026-05-07T12:57:40.609671Z\"} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:40] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:40] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:pre-meeting-reminder\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"1f830896-8142-41d1-bfc9-4cbb9179ffda\",\"trace_id\":\"e348a096-7f37-4308-a6d8-66131e8be901\"}\n[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:45] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:45] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:46] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:51] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:51] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:51] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:06] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:06] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:06] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"2d8b30b4-87aa-480f-9b9e-5a9c709b742a\",\"trace_id\":\"25b7be6c-1faf-430b-a724-a4ff28773a31\"}\n[2026-05-07 12:56:08] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"2d8b30b4-87aa-480f-9b9e-5a9c709b742a\",\"trace_id\":\"25b7be6c-1faf-430b-a724-a4ff28773a31\"}\n[2026-05-07 12:56:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"2d8b30b4-87aa-480f-9b9e-5a9c709b742a\",\"trace_id\":\"25b7be6c-1faf-430b-a724-a4ff28773a31\"}\n[2026-05-07 12:56:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"efd336d7-db4d-459e-b6e7-bf73454e955e\",\"trace_id\":\"0a82c3d5-0417-48c8-b88f-70ec33e2326a\"}\n[2026-05-07 12:56:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"efd336d7-db4d-459e-b6e7-bf73454e955e\",\"trace_id\":\"0a82c3d5-0417-48c8-b88f-70ec33e2326a\"}\n[2026-05-07 12:56:12] local.NOTICE: Monitoring start {\"correlation_id\":\"68481576-8ca6-4ee5-821b-07374702971d\",\"trace_id\":\"c73eac09-5d20-425f-9c22-bd6c65fc60c9\"}\n[2026-05-07 12:56:12] local.NOTICE: Monitoring end {\"correlation_id\":\"68481576-8ca6-4ee5-821b-07374702971d\",\"trace_id\":\"c73eac09-5d20-425f-9c22-bd6c65fc60c9\"}\n[2026-05-07 12:56:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"bd0cdc75-b5c2-4dbb-bc44-e36c96813d24\",\"trace_id\":\"f688cd98-c171-4e30-8c72-afc14f040861\"}\n[2026-05-07 12:56:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"bd0cdc75-b5c2-4dbb-bc44-e36c96813d24\",\"trace_id\":\"f688cd98-c171-4e30-8c72-afc14f040861\"}\n[2026-05-07 12:56:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"f01636a9-4059-4ab0-9ad2-b078d42cedbd\",\"trace_id\":\"fea938d8-aedc-40ec-b8c2-2f487e1ac808\"}\n[2026-05-07 12:56:20] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"f01636a9-4059-4ab0-9ad2-b078d42cedbd\",\"trace_id\":\"fea938d8-aedc-40ec-b8c2-2f487e1ac808\"}\n[2026-05-07 12:56:20] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"f01636a9-4059-4ab0-9ad2-b078d42cedbd\",\"trace_id\":\"fea938d8-aedc-40ec-b8c2-2f487e1ac808\"}\n[2026-05-07 12:56:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"f01636a9-4059-4ab0-9ad2-b078d42cedbd\",\"trace_id\":\"fea938d8-aedc-40ec-b8c2-2f487e1ac808\"}\n[2026-05-07 12:56:23] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"d4558901-264d-4238-8589-62a137bac1fd\",\"trace_id\":\"38e6b5dc-ebd6-46a7-8224-7374d4e58630\"}\n[2026-05-07 12:56:23] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:54:00, 2026-05-07 12:56:00] {\"correlation_id\":\"d4558901-264d-4238-8589-62a137bac1fd\",\"trace_id\":\"38e6b5dc-ebd6-46a7-8224-7374d4e58630\"}\n[2026-05-07 12:56:23] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:54:00, 2026-05-07 12:56:00] {\"correlation_id\":\"d4558901-264d-4238-8589-62a137bac1fd\",\"trace_id\":\"38e6b5dc-ebd6-46a7-8224-7374d4e58630\"}\n[2026-05-07 12:56:23] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"d4558901-264d-4238-8589-62a137bac1fd\",\"trace_id\":\"38e6b5dc-ebd6-46a7-8224-7374d4e58630\"}\n[2026-05-07 12:56:24] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"crm:sync-hubspot-objects\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"7bfaf9be-0ca1-4170-a0c9-83e0ed61881c\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:24] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"crm:sync-hubspot-objects\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"7bfaf9be-0ca1-4170-a0c9-83e0ed61881c\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:26] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:notify-not-logged\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"2541e0fa-1117-4863-9523-d723b5821a24\",\"trace_id\":\"d9600320-5133-4938-bdd1-2256dfdf8db4\"}\n[2026-05-07 12:56:26] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:notify-not-logged\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"2541e0fa-1117-4863-9523-d723b5821a24\",\"trace_id\":\"d9600320-5133-4938-bdd1-2256dfdf8db4\"}\n[2026-05-07 12:56:35] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"e444f776-37db-4c6d-b30e-20b01a089de7\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:36] local.INFO: [EmailSchedule] STARTING Inbox Sync {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"e444f776-37db-4c6d-b30e-20b01a089de7\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:36] local.INFO: [EmailSchedule] FINISHED Inbox Sync {\"host\":\"docker_lamp_1\",\"events\":2} {\"correlation_id\":\"e444f776-37db-4c6d-b30e-20b01a089de7\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:36] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"e444f776-37db-4c6d-b30e-20b01a089de7\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:36] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:36] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:36] local.INFO: [HubSpot Journal Auth] Requesting new client credentials token {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:37] local.INFO: [HubSpot Journal Auth] Successfully obtained new access token {\"expires_in\":1800,\"cached_for\":1500} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:37] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:37] local.WARNING: [HubSpot Journal Polling] Maximum empty results reached, stopping {\"empty_results\":5,\"max_empty_results\":5} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:37] local.WARNING: [HubSpot Journal Polling] Maximum empty results reached, stopping {\"empty_results\":5,\"max_empty_results\":5} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:37] local.INFO: [HubSpot Journal Polling] Service ending {\"runtime_seconds\":57,\"total_cycles\":5,\"files_downloaded\":0,\"empty_files\":0,\"other_portal_skipped\":0,\"total_events\":0,\"events_per_file\":0,\"avg_api_ms\":238.3,\"avg_download_ms\":0.0,\"avg_transform_ms\":0.0,\"avg_process_ms\":0.0,\"peak_memory_mb\":99.73} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:37] local.INFO: [HubSpot Journal Polling] Released polling lock {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:50] local.INFO: [Commands/AsyncUpdateEsEntities] Starting ES update worker {\"pid\":37119,\"workerId\":\"\",\"target\":\"activities\"} {\"correlation_id\":\"902cef33-4733-4b2a-9693-affb8645cecc\",\"trace_id\":\"4ffe2bb8-67c6-422a-a846-319973cc0259\"}\n[2026-05-07 12:56:50] local.INFO: [SyncHubspotObjects] Starting sync {\"team\":\"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4\",\"usage\":23195976,\"real_usage\":65011712,\"pid\":37113} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:50] local.INFO: [Sync Mailbox] Sync start {\"inbox_id\":59} {\"correlation_id\":\"20256b2c-2b69-48f6-bdd3-61d047eb0b0d\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:50] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:50] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:50] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:50] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1499,\"provider\":\"hubspot\",\"refreshToken\":\"96f94c623a404e02ebdbf07f1b75707bb6cdbf848cbf45d418baf608c41a8d86\",\"state\":\"connected\"} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:50] local.INFO: [Inbox service] Skipping METADATA SYNC for inbox 59 due to unauthorized access to the mailbox {\"correlation_id\":\"20256b2c-2b69-48f6-bdd3-61d047eb0b0d\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:50] local.INFO: [Sync Mailbox] Sync complete {\"inbox_id\":59} {\"correlation_id\":\"20256b2c-2b69-48f6-bdd3-61d047eb0b0d\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:50] local.INFO: [Sync Mailbox] Sync start {\"inbox_id\":212} {\"correlation_id\":\"b6c31853-3729-4780-a52b-ebcce17d41b9\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:50] local.INFO: [Inbox service] Skipping METADATA SYNC for inbox 212 due to unauthorized access to the mailbox {\"correlation_id\":\"b6c31853-3729-4780-a52b-ebcce17d41b9\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:50] local.INFO: [Sync Mailbox] Sync complete {\"inbox_id\":212} {\"correlation_id\":\"b6c31853-3729-4780-a52b-ebcce17d41b9\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:51] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:51] local.INFO: [SocialAccountObserver] Access token was modified, encrypting {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:51] local.INFO: [SocialAccountService] Token refreshed {\"socialAccountId\":1499,\"provider\":\"hubspot\",\"state\":\"connected\"} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:51] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":148,\"team_id\":2} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:51] local.INFO: [HubSpot] Syncing opportunities using strategy: lastModified {\"team\":2} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/deals/search\",\"total_requests\":0,\"total_records_fetched\":0,\"total_elapsed_seconds\":0.3,\"average_seconds_per_request\":0} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.INFO: [SyncHubspotObjects] Sync finished {\"team\":\"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4\",\"provider\":\"hubspot\",\"status\":\"completed\",\"duration_ms\":1854.64,\"usage\":24199288,\"real_usage\":65011712,\"pid\":37113} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.ERROR: Jiminny\\Services\\Crm\\Hubspot\\Pagination\\HubspotPaginationService::getPaginatedDataGenerator(): Return value must be of type Generator, none returned {\"exception\":\"[object] (TypeError(code: 0): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService::getPaginatedDataGenerator(): Return value must be of type Generator, none returned at /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php:82)\n[stacktrace]\n#0 /home/jiminny/app/Services/Crm/Hubspot/Client.php(194): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->getPaginatedDataGenerator(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), Array, 'deals', 0, 0, NULL)\n#1 /home/jiminny/app/Services/Crm/Hubspot/OpportunitySyncStrategy/HubspotSyncStrategyBase.php(55): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client->getPaginatedDataGenerator(Array, 'deals', 0, 0, NULL)\n#2 /home/jiminny/app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php(73): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\OpportunitySyncStrategy\\\\HubspotSyncStrategyBase->fetchOpportunities(Array, 0, NULL)\n#3 /home/jiminny/app/Jobs/Crm/SyncHubspotObjects.php(118): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service->syncOpportunities(Array)\n#4 /home/jiminny/app/Jobs/Crm/SyncHubspotObjects.php(86): Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects->syncHubspotCrmObjects(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service), Object(Illuminate\\\\Support\\\\Carbon))\n#5 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects->handle(Object(Jiminny\\\\Services\\\\ResolveTeamCrmConnection), Object(Illuminate\\\\Log\\\\LogManager), Object(Jiminny\\\\Repositories\\\\TeamRepository))\n#6 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#7 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#8 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#9 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#10 /home/jiminny/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(129): Illuminate\\\\Container\\\\Container->call(Array)\n#11 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\\\Bus\\\\Dispatcher->Illuminate\\\\Bus\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#12 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\\\\Pipeline\\\\Pipeline->Illuminate\\\\Pipeline\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#13 /home/jiminny/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(133): Illuminate\\\\Pipeline\\\\Pipeline->then(Object(Closure))\n#14 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(136): Illuminate\\\\Bus\\\\Dispatcher->dispatchNow(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects), false)\n#15 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\\\Queue\\\\CallQueuedHandler->Illuminate\\\\Queue\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#16 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\\\\Pipeline\\\\Pipeline->Illuminate\\\\Pipeline\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#17 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(129): Illuminate\\\\Pipeline\\\\Pipeline->then(Object(Closure))\n#18 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(70): Illuminate\\\\Queue\\\\CallQueuedHandler->dispatchThroughMiddleware(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#19 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Jobs/Job.php(102): Illuminate\\\\Queue\\\\CallQueuedHandler->call(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Array)\n#20 /home/jiminny/app/Queue/Worker/Worker.php(71): Illuminate\\\\Queue\\\\Jobs\\\\Job->fire()\n#21 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(435): Jiminny\\\\Queue\\\\Worker\\\\Worker->process('redis', Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#22 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(201): Illuminate\\\\Queue\\\\Worker->runJob(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), 'redis', Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#23 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(148): Illuminate\\\\Queue\\\\Worker->daemon('redis', 'crm-sync,crm-up...', Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#24 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(131): Illuminate\\\\Queue\\\\Console\\\\WorkCommand->runWorker('redis', 'crm-sync,crm-up...')\n#25 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Illuminate\\\\Queue\\\\Console\\\\WorkCommand->handle()\n#26 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#27 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#28 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#29 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#30 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(211): Illuminate\\\\Container\\\\Container->call(Array)\n#31 /home/jiminny/vendor/symfony/console/Command/Command.php(341): Illuminate\\\\Console\\\\Command->execute(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#32 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(180): Symfony\\\\Component\\\\Console\\\\Command\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#33 /home/jiminny/vendor/symfony/console/Application.php(1117): Illuminate\\\\Console\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#34 /home/jiminny/vendor/symfony/console/Application.php(356): Symfony\\\\Component\\\\Console\\\\Application->doRunCommand(Object(Illuminate\\\\Queue\\\\Console\\\\WorkCommand), Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#35 /home/jiminny/vendor/symfony/console/Application.php(195): Symfony\\\\Component\\\\Console\\\\Application->doRun(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#36 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(198): Symfony\\\\Component\\\\Console\\\\Application->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#37 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1235): Illuminate\\\\Foundation\\\\Console\\\\Kernel->handle(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#38 /home/jiminny/artisan(13): Illuminate\\\\Foundation\\\\Application->handleCommand(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput))\n#39 {main}\n\"} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.INFO: [SyncHubspotObjects] Starting sync {\"team\":\"b2d49a54-b645-4637-a7ae-a86cfce6e8e4\",\"usage\":25235152,\"real_usage\":65011712,\"pid\":37113} {\"correlation_id\":\"0d3cf2b0-a245-4a83-9bd5-1c5788b85738\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.WARNING: [HubSpot] Account not connected for user {\"userId\":\"2ac0447f-3c8c-4ce0-baeb-b63ddb76fa9b\",\"account\":null} {\"correlation_id\":\"0d3cf2b0-a245-4a83-9bd5-1c5788b85738\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {\"crm_provider\":\"hubspot\",\"crm_owner\":130,\"team_id\":42} {\"correlation_id\":\"0d3cf2b0-a245-4a83-9bd5-1c5788b85738\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":42} {\"correlation_id\":\"0d3cf2b0-a245-4a83-9bd5-1c5788b85738\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":42} {\"correlation_id\":\"0d3cf2b0-a245-4a83-9bd5-1c5788b85738\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.INFO: [SyncHubspotObjects] Sync finished {\"team\":\"b2d49a54-b645-4637-a7ae-a86cfce6e8e4\",\"provider\":\"hubspot\",\"status\":\"disconnected\",\"duration_ms\":70.53,\"usage\":25225384,\"real_usage\":65011712,\"pid\":37113,\"reason\":\"Social account for HubSpot cannot be found. Please login to Jiminny to connect.\"} {\"correlation_id\":\"0d3cf2b0-a245-4a83-9bd5-1c5788b85738\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Starting sync {\"team\":\"b2b115eb-93ce-4d1b-929c-173757df8fba\",\"usage\":25263936,\"real_usage\":65011712,\"pid\":37113} {\"correlation_id\":\"1e46be79-1db4-4829-b19c-1548141a94e0\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.WARNING: [HubSpot] Account not connected for user {\"userId\":\"33e34a7a-1c02-4f04-87ac-22c3a385e6e3\",\"account\":{\"Jiminny\\\\Models\\\\SocialAccount\":{\"id\":306,\"sociable_id\":109,\"provider_user_id\":\"11348452\",\"expires\":1701077403,\"refresh_token_expires\":null,\"provider\":\"hubspot\",\"state\":\"full-refresh\",\"auth_scope\":null,\"retry_after\":null,\"created_at\":\"2020-09-01 16:59:04\",\"updated_at\":\"2023-11-27 09:30:03\"}}} {\"correlation_id\":\"1e46be79-1db4-4829-b19c-1548141a94e0\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {\"crm_provider\":\"hubspot\",\"crm_owner\":109,\"team_id\":29} {\"correlation_id\":\"1e46be79-1db4-4829-b19c-1548141a94e0\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":29} {\"correlation_id\":\"1e46be79-1db4-4829-b19c-1548141a94e0\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":29} {\"correlation_id\":\"1e46be79-1db4-4829-b19c-1548141a94e0\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Sync finished {\"team\":\"b2b115eb-93ce-4d1b-929c-173757df8fba\",\"provider\":\"hubspot\",\"status\":\"disconnected\",\"duration_ms\":47.7,\"usage\":25451952,\"real_usage\":65011712,\"pid\":37113,\"reason\":\"Your HubSpot account has become disconnected. Please login to Jiminny to reconnect.\"} {\"correlation_id\":\"1e46be79-1db4-4829-b19c-1548141a94e0\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Starting sync {\"team\":\"c6b9d6b0-b48d-4832-a68c-a57d60651888\",\"usage\":25490320,\"real_usage\":65011712,\"pid\":37113} {\"correlation_id\":\"0da4e096-9534-4a72-bc1f-8e61561d8e37\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.WARNING: [HubSpot] Account not connected for user {\"userId\":\"71e3aac5-fb66-47c5-a236-2d051ae3e319\",\"account\":null} {\"correlation_id\":\"0da4e096-9534-4a72-bc1f-8e61561d8e37\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {\"crm_provider\":\"hubspot\",\"crm_owner\":256,\"team_id\":49} {\"correlation_id\":\"0da4e096-9534-4a72-bc1f-8e61561d8e37\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":49} {\"correlation_id\":\"0da4e096-9534-4a72-bc1f-8e61561d8e37\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":49} {\"correlation_id\":\"0da4e096-9534-4a72-bc1f-8e61561d8e37\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Sync finished {\"team\":\"c6b9d6b0-b48d-4832-a68c-a57d60651888\",\"provider\":\"hubspot\",\"status\":\"disconnected\",\"duration_ms\":44.12,\"usage\":25547952,\"real_usage\":65011712,\"pid\":37113,\"reason\":\"Social account for HubSpot cannot be found. Please login to Jiminny to connect.\"} {\"correlation_id\":\"0da4e096-9534-4a72-bc1f-8e61561d8e37\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Starting sync {\"team\":\"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4\",\"usage\":25587032,\"real_usage\":65011712,\"pid\":37113} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":148,\"team_id\":2} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [HubSpot] Syncing opportunities using strategy: lastModified {\"team\":2} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/deals/search\",\"total_requests\":0,\"total_records_fetched\":0,\"total_elapsed_seconds\":0.28,\"average_seconds_per_request\":0} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Sync finished {\"team\":\"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4\",\"provider\":\"hubspot\",\"status\":\"completed\",\"duration_ms\":412.19,\"usage\":25739960,\"real_usage\":65011712,\"pid\":37113} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.ERROR: Jiminny\\Services\\Crm\\Hubspot\\Pagination\\HubspotPaginationService::getPaginatedDataGenerator(): Return value must be of type Generator, none returned {\"exception\":\"[object] (TypeError(code: 0): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService::getPaginatedDataGenerator(): Return value must be of type Generator, none returned at /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php:82)\n[stacktrace]\n#0 /home/jiminny/app/Services/Crm/Hubspot/Client.php(194): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->getPaginatedDataGenerator(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), Array, 'deals', 0, 0, NULL)\n#1 /home/jiminny/app/Services/Crm/Hubspot/OpportunitySyncStrategy/HubspotSyncStrategyBase.php(55): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client->getPaginatedDataGenerator(Array, 'deals', 0, 0, NULL)\n#2 /home/jiminny/app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php(73): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\OpportunitySyncStrategy\\\\HubspotSyncStrategyBase->fetchOpportunities(Array, 0, NULL)\n#3 /home/jiminny/app/Jobs/Crm/SyncHubspotObjects.php(118): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service->syncOpportunities(Array)\n#4 /home/jiminny/app/Jobs/Crm/SyncHubspotObjects.php(86): Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects->syncHubspotCrmObjects(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service), Object(Illuminate\\\\Support\\\\Carbon))\n#5 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects->handle(Object(Jiminny\\\\Services\\\\ResolveTeamCrmConnection), Object(Illuminate\\\\Log\\\\LogManager), Object(Jiminny\\\\Repositories\\\\TeamRepository))\n#6 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#7 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#8 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#9 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#10 /home/jiminny/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(129): Illuminate\\\\Container\\\\Container->call(Array)\n#11 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\\\Bus\\\\Dispatcher->Illuminate\\\\Bus\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#12 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\\\\Pipeline\\\\Pipeline->Illuminate\\\\Pipeline\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#13 /home/jiminny/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(133): Illuminate\\\\Pipeline\\\\Pipeline->then(Object(Closure))\n#14 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(136): Illuminate\\\\Bus\\\\Dispatcher->dispatchNow(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects), false)\n#15 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\\\Queue\\\\CallQueuedHandler->Illuminate\\\\Queue\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#16 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\\\\Pipeline\\\\Pipeline->Illuminate\\\\Pipeline\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#17 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(129): Illuminate\\\\Pipeline\\\\Pipeline->then(Object(Closure))\n#18 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(70): Illuminate\\\\Queue\\\\CallQueuedHandler->dispatchThroughMiddleware(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#19 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Jobs/Job.php(102): Illuminate\\\\Queue\\\\CallQueuedHandler->call(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Array)\n#20 /home/jiminny/app/Queue/Worker/Worker.php(71): Illuminate\\\\Queue\\\\Jobs\\\\Job->fire()\n#21 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(435): Jiminny\\\\Queue\\\\Worker\\\\Worker->process('redis', Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#22 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(201): Illuminate\\\\Queue\\\\Worker->runJob(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), 'redis', Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#23 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(148): Illuminate\\\\Queue\\\\Worker->daemon('redis', 'crm-sync,crm-up...', Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#24 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(131): Illuminate\\\\Queue\\\\Console\\\\WorkCommand->runWorker('redis', 'crm-sync,crm-up...')\n#25 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Illuminate\\\\Queue\\\\Console\\\\WorkCommand->handle()\n#26 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#27 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#28 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#29 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#30 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(211): Illuminate\\\\Container\\\\Container->call(Array)\n#31 /home/jiminny/vendor/symfony/console/Command/Command.php(341): Illuminate\\\\Console\\\\Command->execute(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#32 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(180): Symfony\\\\Component\\\\Console\\\\Command\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#33 /home/jiminny/vendor/symfony/console/Application.php(1117): Illuminate\\\\Console\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#34 /home/jiminny/vendor/symfony/console/Application.php(356): Symfony\\\\Component\\\\Console\\\\Application->doRunCommand(Object(Illuminate\\\\Queue\\\\Console\\\\WorkCommand), Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#35 /home/jiminny/vendor/symfony/console/Application.php(195): Symfony\\\\Component\\\\Console\\\\Application->doRun(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#36 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(198): Symfony\\\\Component\\\\Console\\\\Application->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#37 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1235): Illuminate\\\\Foundation\\\\Console\\\\Kernel->handle(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#38 /home/jiminny/artisan(13): Illuminate\\\\Foundation\\\\Application->handleCommand(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput))\n#39 {main}\n\"} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Starting sync {\"team\":\"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4\",\"usage\":25172624,\"real_usage\":65011712,\"pid\":37113} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":148,\"team_id\":2} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [HubSpot] Syncing opportunities using strategy: lastModified {\"team\":2} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/deals/search\",\"total_requests\":0,\"total_records_fetched\":0,\"total_elapsed_seconds\":0.23,\"average_seconds_per_request\":0} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Sync finished {\"team\":\"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4\",\"provider\":\"hubspot\",\"status\":\"completed\",\"duration_ms\":291.83,\"usage\":25225088,\"real_usage\":65011712,\"pid\":37113} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:54] local.ERROR: Jiminny\\Services\\Crm\\Hubspot\\Pagination\\HubspotPaginationService::getPaginatedDataGenerator(): Return value must be of type Generator, none returned {\"exception\":\"[object] (TypeError(code: 0): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService::getPaginatedDataGenerator(): Return value must be of type Generator, none returned at /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php:82)\n[stacktrace]\n#0 /home/jiminny/app/Services/Crm/Hubspot/Client.php(194): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->getPaginatedDataGenerator(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), Array, 'deals', 0, 0, NULL)\n#1 /home/jiminny/app/Services/Crm/Hubspot/OpportunitySyncStrategy/HubspotSyncStrategyBase.php(55): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client->getPaginatedDataGenerator(Array, 'deals', 0, 0, NULL)\n#2 /home/jiminny/app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php(73): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\OpportunitySyncStrategy\\\\HubspotSyncStrategyBase->fetchOpportunities(Array, 0, NULL)\n#3 /home/jiminny/app/Jobs/Crm/SyncHubspotObjects.php(118): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service->syncOpportunities(Array)\n#4 /home/jiminny/app/Jobs/Crm/SyncHubspotObjects.php(86): Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects->syncHubspotCrmObjects(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service), Object(Illuminate\\\\Support\\\\Carbon))\n#5 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects->handle(Object(Jiminny\\\\Services\\\\ResolveTeamCrmConnection), Object(Illuminate\\\\Log\\\\LogManager), Object(Jiminny\\\\Repositories\\\\TeamRepository))\n#6 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#7 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#8 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#9 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#10 /home/jiminny/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(129): Illuminate\\\\Container\\\\Container->call(Array)\n#11 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\\\Bus\\\\Dispatcher->Illuminate\\\\Bus\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#12 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\\\\Pipeline\\\\Pipeline->Illuminate\\\\Pipeline\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#13 /home/jiminny/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(133): Illuminate\\\\Pipeline\\\\Pipeline->then(Object(Closure))\n#14 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(136): Illuminate\\\\Bus\\\\Dispatcher->dispatchNow(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects), false)\n#15 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\\\Queue\\\\CallQueuedHandler->Illuminate\\\\Queue\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#16 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\\\\Pipeline\\\\Pipeline->Illuminate\\\\Pipeline\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#17 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(129): Illuminate\\\\Pipeline\\\\Pipeline->then(Object(Closure))\n#18 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(70): Illuminate\\\\Queue\\\\CallQueuedHandler->dispatchThroughMiddleware(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#19 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Jobs/Job.php(102): Illuminate\\\\Queue\\\\CallQueuedHandler->call(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Array)\n#20 /home/jiminny/app/Queue/Worker/Worker.php(71): Illuminate\\\\Queue\\\\Jobs\\\\Job->fire()\n#21 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(435): Jiminny\\\\Queue\\\\Worker\\\\Worker->process('redis', Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#22 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(201): Illuminate\\\\Queue\\\\Worker->runJob(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), 'redis', Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#23 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(148): Illuminate\\\\Queue\\\\Worker->daemon('redis', 'crm-sync,crm-up...', Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#24 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(131): Illuminate\\\\Queue\\\\Console\\\\WorkCommand->runWorker('redis', 'crm-sync,crm-up...')\n#25 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Illuminate\\\\Queue\\\\Console\\\\WorkCommand->handle()\n#26 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#27 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#28 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#29 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#30 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(211): Illuminate\\\\Container\\\\Container->call(Array)\n#31 /home/jiminny/vendor/symfony/console/Command/Command.php(341): Illuminate\\\\Console\\\\Command->execute(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#32 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(180): Symfony\\\\Component\\\\Console\\\\Command\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#33 /home/jiminny/vendor/symfony/console/Application.php(1117): Illuminate\\\\Console\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#34 /home/jiminny/vendor/symfony/console/Application.php(356): Symfony\\\\Component\\\\Console\\\\Application->doRunCommand(Object(Illuminate\\\\Queue\\\\Console\\\\WorkCommand), Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#35 /home/jiminny/vendor/symfony/console/Application.php(195): Symfony\\\\Component\\\\Console\\\\Application->doRun(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#36 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(198): Symfony\\\\Component\\\\Console\\\\Application->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#37 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1235): Illuminate\\\\Foundation\\\\Console\\\\Kernel->handle(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#38 /home/jiminny/artisan(13): Illuminate\\\\Foundation\\\\Application->handleCommand(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput))\n#39 {main}\n\"} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:57:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"854299be-d77a-48bc-870c-b78333916d69\",\"trace_id\":\"89c1eb6c-bc78-419c-9304-b770093d5692\"}\n[2026-05-07 12:57:06] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"854299be-d77a-48bc-870c-b78333916d69\",\"trace_id\":\"89c1eb6c-bc78-419c-9304-b770093d5692\"}\n[2026-05-07 12:57:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"854299be-d77a-48bc-870c-b78333916d69\",\"trace_id\":\"89c1eb6c-bc78-419c-9304-b770093d5692\"}\n[2026-05-07 12:57:16] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"c4e512a3-a227-4569-bcd2-3258a9142d46\",\"trace_id\":\"016bf668-6712-4c0f-8c8c-c2e411a37889\"}\n[2026-05-07 12:57:16] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"c4e512a3-a227-4569-bcd2-3258a9142d46\",\"trace_id\":\"016bf668-6712-4c0f-8c8c-c2e411a37889\"}\n[2026-05-07 12:57:19] local.NOTICE: Monitoring start {\"correlation_id\":\"4c2d4775-716d-4ca6-b94d-cb17dace29a7\",\"trace_id\":\"e969e10d-e5f0-44c6-9767-97a70e05cfe5\"}\n[2026-05-07 12:57:19] local.NOTICE: Monitoring end {\"correlation_id\":\"4c2d4775-716d-4ca6-b94d-cb17dace29a7\",\"trace_id\":\"e969e10d-e5f0-44c6-9767-97a70e05cfe5\"}\n[2026-05-07 12:57:22] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"d03e9546-bfd0-44c6-84ee-299b1e6c14a2\",\"trace_id\":\"acbab6e5-17fc-4b11-907d-ff87322285d7\"}\n[2026-05-07 12:57:22] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"d03e9546-bfd0-44c6-84ee-299b1e6c14a2\",\"trace_id\":\"acbab6e5-17fc-4b11-907d-ff87322285d7\"}\n[2026-05-07 12:57:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"a2c0095a-18b2-427e-825b-c68c9dbf63a1\",\"trace_id\":\"9b170d6a-ed10-4a41-af79-684c99021967\"}\n[2026-05-07 12:57:25] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"a2c0095a-18b2-427e-825b-c68c9dbf63a1\",\"trace_id\":\"9b170d6a-ed10-4a41-af79-684c99021967\"}\n[2026-05-07 12:57:25] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"a2c0095a-18b2-427e-825b-c68c9dbf63a1\",\"trace_id\":\"9b170d6a-ed10-4a41-af79-684c99021967\"}\n[2026-05-07 12:57:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"a2c0095a-18b2-427e-825b-c68c9dbf63a1\",\"trace_id\":\"9b170d6a-ed10-4a41-af79-684c99021967\"}\n[2026-05-07 12:57:27] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:create\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"c4e70056-ceab-4c44-874a-8042963ce3ea\",\"trace_id\":\"011a70aa-ebb2-4ca8-aef6-4b4cca233da7\"}\n[2026-05-07 12:57:27] local.INFO: [EmailSchedule] STARTING batch create {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"c4e70056-ceab-4c44-874a-8042963ce3ea\",\"trace_id\":\"011a70aa-ebb2-4ca8-aef6-4b4cca233da7\"}\n[2026-05-07 12:57:27] local.INFO: [EmailSchedule] FINISHED batch create {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"c4e70056-ceab-4c44-874a-8042963ce3ea\",\"trace_id\":\"011a70aa-ebb2-4ca8-aef6-4b4cca233da7\"}\n[2026-05-07 12:57:27] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:create\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"c4e70056-ceab-4c44-874a-8042963ce3ea\",\"trace_id\":\"011a70aa-ebb2-4ca8-aef6-4b4cca233da7\"}\n[2026-05-07 12:57:28] local.INFO: [Jiminny\\Jobs\\Mailbox\\CreateBatches] processed 2 inboxes and created 0 batches {\"userId\":null,\"batchSize\":30,\"maxBatches\":1000} {\"correlation_id\":\"c296bf83-9f7c-4228-b6f5-99db6040fa01\",\"trace_id\":\"011a70aa-ebb2-4ca8-aef6-4b4cca233da7\"}\n[2026-05-07 12:58:06] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"a9e2de8b-b538-437e-bbe7-82636da81995\",\"trace_id\":\"e517ae80-e149-490c-b719-309e898b3c93\"}\n[2026-05-07 12:58:06] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"a9e2de8b-b538-437e-bbe7-82636da81995\",\"trace_id\":\"e517ae80-e149-490c-b719-309e898b3c93\"}\n[2026-05-07 12:58:06] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"a9e2de8b-b538-437e-bbe7-82636da81995\",\"trace_id\":\"e517ae80-e149-490c-b719-309e898b3c93\"}\n[2026-05-07 12:58:06] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":148,\"team_id\":2} {\"correlation_id\":\"a9e2de8b-b538-437e-bbe7-82636da81995\",\"trace_id\":\"e517ae80-e149-490c-b719-309e898b3c93\"}\n[2026-05-07 12:58:06] local.ERROR: Client error: `POST https://api.hubapi.com/crm/v3/objects/contact/search` resulted in a `429 Too Many Requests` response:\n{\"status\":\"error\",\"message\":\"You have reached your secondly limit.\",\"errorType\":\"RATE_LIMIT\",\"correlationId\":\"019e0284-5 (truncated...)\n {\"exception\":\"[object] (SevenShores\\\\Hubspot\\\\Exceptions\\\\BadRequest(code: 429): Client error: `POST https://api.hubapi.com/crm/v3/objects/contact/search` resulted in a `429 Too Many Requests` response:\n{\\\"status\\\":\\\"error\\\",\\\"message\\\":\\\"You have reached your secondly limit.\\\",\\\"errorType\\\":\\\"RATE_LIMIT\\\",\\\"correlationId\\\":\\\"019e0284-5 (truncated...)\n at /home/jiminny/vendor/hubspot/hubspot-php/src/Exceptions/HubspotException.php:24)\n[stacktrace]\n#0 /home/jiminny/vendor/hubspot/hubspot-php/src/Http/Client.php(125): SevenShores\\\\Hubspot\\\\Exceptions\\\\HubspotException::create(Object(GuzzleHttp\\\\Exception\\\\ClientException))\n#1 /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php(163): SevenShores\\\\Hubspot\\\\Http\\\\Client->request('POST', 'https://api.hub...', Array)\n#2 /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php(51): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->executeSearchRequest(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), 'https://api.hub...', Array, Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\PaginationState))\n#3 /home/jiminny/app/Services/Crm/Hubspot/Client.php(194): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->getPaginatedDataGenerator(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), Array, 'contact', 0, 0, NULL)\n#4 /home/jiminny/app/Services/Crm/Hubspot/Client.php(175): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client->getPaginatedDataGenerator(Array, 'contact', 0, 0, NULL)\n#5 /home/jiminny/app/Services/Crm/Hubspot/Service.php(1203): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client->getPaginatedData(Array, 'contact')\n#6 /home/jiminny/app/Console/Commands/JiminnyDebugCommand.php(353): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service->matchByName('Robot')\n#7 /home/jiminny/app/Console/Commands/JiminnyDebugCommand.php(44): Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand->rateLimit()\n#8 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand->handle(Object(Jiminny\\\\Jobs\\\\JobDispatcher), Object(Jiminny\\\\Services\\\\Kiosk\\\\AutomatedReports\\\\AutomatedReportsService), Object(Jiminny\\\\Repositories\\\\AutomatedReportsRepository), Object(Jiminny\\\\Services\\\\UserPilot\\\\UserPilotClient))\n#9 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#10 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#11 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#12 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#13 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(211): Illuminate\\\\Container\\\\Container->call(Array)\n#14 /home/jiminny/vendor/symfony/console/Command/Command.php(341): Illuminate\\\\Console\\\\Command->execute(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#15 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(180): Symfony\\\\Component\\\\Console\\\\Command\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#16 /home/jiminny/vendor/symfony/console/Application.php(1117): Illuminate\\\\Console\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#17 /home/jiminny/vendor/symfony/console/Application.php(356): Symfony\\\\Component\\\\Console\\\\Application->doRunCommand(Object(Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand), Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#18 /home/jiminny/vendor/symfony/console/Application.php(195): Symfony\\\\Component\\\\Console\\\\Application->doRun(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#19 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(198): Symfony\\\\Component\\\\Console\\\\Application->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#20 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1235): Illuminate\\\\Foundation\\\\Console\\\\Kernel->handle(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#21 /home/jiminny/artisan(13): Illuminate\\\\Foundation\\\\Application->handleCommand(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput))\n#22 {main}\n\n[previous exception] [object] (GuzzleHttp\\\\Exception\\\\ClientException(code: 429): Client error: `POST https://api.hubapi.com/crm/v3/objects/contact/search` resulted in a `429 Too Many Requests` response:\n{\\\"status\\\":\\\"error\\\",\\\"message\\\":\\\"You have reached your secondly limit.\\\",\\\"errorType\\\":\\\"RATE_LIMIT\\\",\\\"correlationId\\\":\\\"019e0284-5 (truncated...)\n at /home/jiminny/vendor/guzzlehttp/guzzle/src/Exception/RequestException.php:111)\n[stacktrace]\n#0 /home/jiminny/vendor/guzzlehttp/guzzle/src/Middleware.php(72): GuzzleHttp\\\\Exception\\\\RequestException::create(Object(GuzzleHttp\\\\Psr7\\\\Request), Object(GuzzleHttp\\\\Psr7\\\\Response), NULL, Array, NULL)\n#1 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(209): GuzzleHttp\\\\Middleware::GuzzleHttp\\\\{closure}(Object(GuzzleHttp\\\\Psr7\\\\Response))\n#2 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(158): GuzzleHttp\\\\Promise\\\\Promise::callHandler(1, Object(GuzzleHttp\\\\Psr7\\\\Response), NULL)\n#3 /home/jiminny/vendor/guzzlehttp/promises/src/TaskQueue.php(52): GuzzleHttp\\\\Promise\\\\Promise::GuzzleHttp\\\\Promise\\\\{closure}()\n#4 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(251): GuzzleHttp\\\\Promise\\\\TaskQueue->run(true)\n#5 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(227): GuzzleHttp\\\\Promise\\\\Promise->invokeWaitFn()\n#6 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(272): GuzzleHttp\\\\Promise\\\\Promise->waitIfPending()\n#7 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(229): GuzzleHttp\\\\Promise\\\\Promise->invokeWaitList()\n#8 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(69): GuzzleHttp\\\\Promise\\\\Promise->waitIfPending()\n#9 /home/jiminny/vendor/guzzlehttp/guzzle/src/Client.php(189): GuzzleHttp\\\\Promise\\\\Promise->wait()\n#10 /home/jiminny/vendor/hubspot/hubspot-php/src/Http/Client.php(113): GuzzleHttp\\\\Client->request('POST', 'https://api.hub...', Array)\n#11 /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php(163): SevenShores\\\\Hubspot\\\\Http\\\\Client->request('POST', 'https://api.hub...', Array)\n#12 /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php(51): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->executeSearchRequest(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), 'https://api.hub...', Array, Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\PaginationState))\n#13 /home/jiminny/app/Services/Crm/Hubspot/Client.php(194): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->getPaginatedDataGenerator(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), Array, 'contact', 0, 0, NULL)\n#14 /home/jiminny/app/Services/Crm/Hubspot/Client.php(175): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client->getPaginatedDataGenerator(Array, 'contact', 0, 0, NULL)\n#15 /home/jiminny/app/Services/Crm/Hubspot/Service.php(1203): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client->getPaginatedData(Array, 'contact')\n#16 /home/jiminny/app/Console/Commands/JiminnyDebugCommand.php(353): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service->matchByName('Robot')\n#17 /home/jiminny/app/Console/Commands/JiminnyDebugCommand.php(44): Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand->rateLimit()\n#18 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand->handle(Object(Jiminny\\\\Jobs\\\\JobDispatcher), Object(Jiminny\\\\Services\\\\Kiosk\\\\AutomatedReports\\\\AutomatedReportsService), Object(Jiminny\\\\Repositories\\\\AutomatedReportsRepository), Object(Jiminny\\\\Services\\\\UserPilot\\\\UserPilotClient))\n#19 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#20 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#21 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#22 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#23 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(211): Illuminate\\\\Container\\\\Container->call(Array)\n#24 /home/jiminny/vendor/symfony/console/Command/Command.php(341): Illuminate\\\\Console\\\\Command->execute(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#25 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(180): Symfony\\\\Component\\\\Console\\\\Command\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#26 /home/jiminny/vendor/symfony/console/Application.php(1117): Illuminate\\\\Console\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#27 /home/jiminny/vendor/symfony/console/Application.php(356): Symfony\\\\Component\\\\Console\\\\Application->doRunCommand(Object(Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand), Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#28 /home/jiminny/vendor/symfony/console/Application.php(195): Symfony\\\\Component\\\\Console\\\\Application->doRun(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#29 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(198): Symfony\\\\Component\\\\Console\\\\Application->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#30 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1235): Illuminate\\\\Foundation\\\\Console\\\\Kernel->handle(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#31 /home/jiminny/artisan(13): Illuminate\\\\Foundation\\\\Application->handleCommand(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput))\n#32 {main}\n\"} {\"correlation_id\":\"a9e2de8b-b538-437e-bbe7-82636da81995\",\"trace_id\":\"e517ae80-e149-490c-b719-309e898b3c93\"}\n[2026-05-07 12:58:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"fb59e309-d2cc-4fe0-9db2-544112c25477\",\"trace_id\":\"28ccdd4f-bf3a-4545-bc8a-d94188f8204f\"}\n[2026-05-07 12:58:10] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"fb59e309-d2cc-4fe0-9db2-544112c25477\",\"trace_id\":\"28ccdd4f-bf3a-4545-bc8a-d94188f8204f\"}\n[2026-05-07 12:58:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"fb59e309-d2cc-4fe0-9db2-544112c25477\",\"trace_id\":\"28ccdd4f-bf3a-4545-bc8a-d94188f8204f\"}\n[2026-05-07 12:58:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"bff14f9f-db1d-4b6c-bd92-ca810b31790a\",\"trace_id\":\"ed08145b-94b8-4585-8e81-0ad478d038dc\"}\n[2026-05-07 12:58:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"bff14f9f-db1d-4b6c-bd92-ca810b31790a\",\"trace_id\":\"ed08145b-94b8-4585-8e81-0ad478d038dc\"}\n[2026-05-07 12:58:16] local.NOTICE: Monitoring start {\"correlation_id\":\"54ed6493-c74e-4491-b2ff-9404528f1525\",\"trace_id\":\"9a1f78c0-6e74-482c-a091-8367df3d0f70\"}\n[2026-05-07 12:58:16] local.NOTICE: Monitoring end {\"correlation_id\":\"54ed6493-c74e-4491-b2ff-9404528f1525\",\"trace_id\":\"9a1f78c0-6e74-482c-a091-8367df3d0f70\"}\n[2026-05-07 12:58:24] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"7f141a32-060d-4123-bf20-8a8d7abc1482\",\"trace_id\":\"f7fdcb6b-932a-4f6b-ad95-f111628d6cf7\"}\n[2026-05-07 12:58:24] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"7f141a32-060d-4123-bf20-8a8d7abc1482\",\"trace_id\":\"f7fdcb6b-932a-4f6b-ad95-f111628d6cf7\"}\n[2026-05-07 12:58:36] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"f586fc15-711b-4199-8fdf-dcd2df95af0c\",\"trace_id\":\"828fb459-3b7f-4196-a690-12fc9ce99b1d\"}\n[2026-05-07 12:58:36] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"f586fc15-711b-4199-8fdf-dcd2df95af0c\",\"trace_id\":\"828fb459-3b7f-4196-a690-12fc9ce99b1d\"}\n[2026-05-07 12:58:37] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"f586fc15-711b-4199-8fdf-dcd2df95af0c\",\"trace_id\":\"828fb459-3b7f-4196-a690-12fc9ce99b1d\"}\n[2026-05-07 12:58:37] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"f586fc15-711b-4199-8fdf-dcd2df95af0c\",\"trace_id\":\"828fb459-3b7f-4196-a690-12fc9ce99b1d\"}\n[2026-05-07 12:58:40] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"01d4e25d-56d5-4c89-bc29-d873e21cc16f\",\"trace_id\":\"ee1fe1ac-362b-47c1-9db2-7915a30cf0f2\"}\n[2026-05-07 12:58:40] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:56:00, 2026-05-07 12:58:00] {\"correlation_id\":\"01d4e25d-56d5-4c89-bc29-d873e21cc16f\",\"trace_id\":\"ee1fe1ac-362b-47c1-9db2-7915a30cf0f2\"}\n[2026-05-07 12:58:40] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:56:00, 2026-05-07 12:58:00] {\"correlation_id\":\"01d4e25d-56d5-4c89-bc29-d873e21cc16f\",\"trace_id\":\"ee1fe1ac-362b-47c1-9db2-7915a30cf0f2\"}\n[2026-05-07 12:58:40] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"01d4e25d-56d5-4c89-bc29-d873e21cc16f\",\"trace_id\":\"ee1fe1ac-362b-47c1-9db2-7915a30cf0f2\"}\n[2026-05-07 12:58:48] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"924e149e-3462-4043-87da-00838220b970\",\"trace_id\":\"7d0922db-8131-4a52-a0c5-2a7a78df42e8\"}\n[2026-05-07 12:58:48] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"calendar:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:48] local.NOTICE: Calendar sync start {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:48] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"924e149e-3462-4043-87da-00838220b970\",\"trace_id\":\"7d0922db-8131-4a52-a0c5-2a7a78df42e8\"}\n[2026-05-07 12:58:49] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1393,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:49] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1393,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:49] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:49] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1393,\"provider\":\"google\",\"refreshToken\":\"5aa7e2d96b53201cd16fca5d2e4ef3ad03320971fc064781d18aee3ae7b99fbf\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1393,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Account has been deleted\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1393,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1387,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1387,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1387,\"provider\":\"google\",\"refreshToken\":\"8157ac6de94842937194009e9c50e459253600f799dacf6a40755ffdbeb5bba6\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1387,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Account has been deleted\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1387,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1348,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1348,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1348,\"provider\":\"google\",\"refreshToken\":\"9e7d13d3032d0cb1b79d8e95aef01383e8e91eb52ff8ee960c8a0b6b95cd8c73\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1348,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Bad Request\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1348,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1361,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1361,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1361,\"provider\":\"google\",\"refreshToken\":\"6c843da199c2b9907445329304fcc4ec5057a4ee748d8299641764395c08e1fd\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1361,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Account has been deleted\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1361,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1310,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1310,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1310,\"provider\":\"google\",\"refreshToken\":\"e34818922c2830a660813a63f6169a4a9a992ae2cccd7dc8dd7796cfdb470ef1\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1310,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Bad Request\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1310,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1333,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1333,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1333,\"provider\":\"google\",\"refreshToken\":\"6c902986546d8e8da1dc539b046cdc1d458f519acc972e5b5f1d6a1a295165e0\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1333,\"provider\":\"google\",\"responseBody\":{\"error\":\"unauthorized_client\",\"error_description\":\"Unauthorized\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1333,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1368,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1368,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1368,\"provider\":\"google\",\"refreshToken\":\"d2f128898ff8543bd16b69cfae37896ab85119b0f5ed2b431d739593bb600333\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1368,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Bad Request\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1368,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1365,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1365,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1365,\"provider\":\"google\",\"refreshToken\":\"7676e4a9afcd082b413248ab5ec6e487021fec6a9bdf315860a59cefad9caad8\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1365,\"provider\":\"google\",\"responseBody\":{\"error\":\"unauthorized_client\",\"error_description\":\"Unauthorized\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1365,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1364,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1364,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1364,\"provider\":\"google\",\"refreshToken\":\"dd5882ebce76e645292ce33ae74238abbb77c0a4ecc6a2bfe723cad82e72ba8e\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1364,\"provider\":\"google\",\"responseBody\":{\"error\":\"unauthorized_client\",\"error_description\":\"Unauthorized\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1364,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1370,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1370,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1370,\"provider\":\"office\",\"refreshToken\":\"b7ee8035306d0043cea6e00e7c4fe14f745e44074a1194db62a31cdf8b70af3e\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1370,\"provider\":\"office\",\"responseBody\":\"{\\\"error\\\":\\\"invalid_client\\\",\\\"error_description\\\":\\\"AADSTS7000215: Invalid client secret provided. Ensure the secret being sent in the request is the client secret value, not the client secret ID, for a secret added to app 'bbcbb2ef-6200-4fae-82bd-d81f5dd738da'. Trace ID: ef9bb388-453e-4744-a2e1-95e49ced1700 Correlation ID: 3b889c73-f943-4048-ba3b-63ac50581245 Timestamp: 2026-05-07 12:58:53Z\\\",\\\"error_codes\\\":[7000215],\\\"timestamp\\\":\\\"2026-05-07 12:58:53Z\\\",\\\"trace_id\\\":\\\"ef9bb388-453e-4744-a2e1-95e49ced1700\\\",\\\"correlation_id\\\":\\\"3b889c73-f943-4048-ba3b-63ac50581245\\\",\\\"error_uri\\\":\\\"https://login.microsoftonline.com/error?code=7000215\\\"}\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1370,\"provider\":\"office\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1202,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1202,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1202,\"provider\":\"office\",\"refreshToken\":\"b458799ccc29b21a6e2eb5260fdb63e49ccba21bf942a3973fb63799bd7f0afe\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1202,\"provider\":\"office\",\"responseBody\":\"{\\\"error\\\":\\\"invalid_client\\\",\\\"error_description\\\":\\\"AADSTS7000215: Invalid client secret provided. Ensure the secret being sent in the request is the client secret value, not the client secret ID, for a secret added to app 'bbcbb2ef-6200-4fae-82bd-d81f5dd738da'. Trace ID: 0b8181c0-c858-4d17-af69-c23b7f5a0a00 Correlation ID: 2ce9e931-f423-4048-b1d7-ae1910cd4834 Timestamp: 2026-05-07 12:58:54Z\\\",\\\"error_codes\\\":[7000215],\\\"timestamp\\\":\\\"2026-05-07 12:58:54Z\\\",\\\"trace_id\\\":\\\"0b8181c0-c858-4d17-af69-c23b7f5a0a00\\\",\\\"correlation_id\\\":\\\"2ce9e931-f423-4048-b1d7-ae1910cd4834\\\",\\\"error_uri\\\":\\\"https://login.microsoftonline.com/error?code=7000215\\\"}\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1202,\"provider\":\"office\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1502,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1502,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: Calendar sync job dispatched {\"calendar_id\":501} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1300,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1300,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1300,\"provider\":\"google\",\"refreshToken\":\"4b811db0725fd9602a95943519a7da935e2a5065da7d9ebfcb170752e3e1ddb8\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1300,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Account has been deleted\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1300,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1409,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1409,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1409,\"provider\":\"google\",\"refreshToken\":\"e2a3f2d06894894eed1ee87d9db1ace77d4d42ee6e1288a8940ad2c10333b0c4\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1409,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Bad Request\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1409,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1352,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1352,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1352,\"provider\":\"google\",\"refreshToken\":\"dd4b16b00fdc1216da6b717c02338c073636e29162826b2de6db3f064fc029eb\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1352,\"provider\":\"google\",\"responseBody\":{\"error\":\"unauthorized_client\",\"error_description\":\"Unauthorized\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1352,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1296,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1296,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1296,\"provider\":\"office\",\"refreshToken\":\"011ae723c9d800c674e0b4be76f49fc046dac7d501b66c59ef0d9549cfa56ae5\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1296,\"provider\":\"office\",\"responseBody\":\"{\\\"error\\\":\\\"invalid_client\\\",\\\"error_description\\\":\\\"AADSTS7000215: Invalid client secret provided. Ensure the secret being sent in the request is the client secret value, not the client secret ID, for a secret added to app 'bbcbb2ef-6200-4fae-82bd-d81f5dd738da'. Trace ID: 4f38b1ca-479e-445c-8db5-29366d0a0c00 Correlation ID: d0a4d623-1a23-4fcc-aebf-ccafeed44a92 Timestamp: 2026-05-07 12:58:56Z\\\",\\\"error_codes\\\":[7000215],\\\"timestamp\\\":\\\"2026-05-07 12:58:56Z\\\",\\\"trace_id\\\":\\\"4f38b1ca-479e-445c-8db5-29366d0a0c00\\\",\\\"correlation_id\\\":\\\"d0a4d623-1a23-4fcc-aebf-ccafeed44a92\\\",\\\"error_uri\\\":\\\"https://login.microsoftonline.com/error?code=7000215\\\"}\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1296,\"provider\":\"office\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":391,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":391,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":391,\"provider\":\"office\",\"refreshToken\":\"00045eebae0f39b34887c6d53f92ae78064f7145e1f4b67754aebd03cfb2d881\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1502,\"provider\":\"google\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1502,\"provider\":\"google\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [Calendar] Processing sync {\"calendarId\":\"a33076c1-8d97-431a-99f0-85c9524e118b\",\"from\":null,\"to\":null,\"delta\":\"CIiFh8TP44kDEIiFh8TP44kDGAUgkZvkzgIokZvkzgI=\",\"last_sync\":\"2024-12-09 07:12:53\",\"dateMode\":\"daily\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"integration-app\",\"crm_owner\":1695,\"team_id\":3143} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1502,\"provider\":\"google\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1502,\"provider\":\"google\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":391,\"provider\":\"office\",\"responseBody\":\"{\\\"error\\\":\\\"invalid_client\\\",\\\"error_description\\\":\\\"AADSTS7000215: Invalid client secret provided. Ensure the secret being sent in the request is the client secret value, not the client secret ID, for a secret added to app 'bbcbb2ef-6200-4fae-82bd-d81f5dd738da'. Trace ID: 1791a948-a974-424b-9246-7fedfa913b00 Correlation ID: b0e7bf62-d69e-49dd-b7c9-9550f0bd2aec Timestamp: 2026-05-07 12:58:56Z\\\",\\\"error_codes\\\":[7000215],\\\"timestamp\\\":\\\"2026-05-07 12:58:56Z\\\",\\\"trace_id\\\":\\\"1791a948-a974-424b-9246-7fedfa913b00\\\",\\\"correlation_id\\\":\\\"b0e7bf62-d69e-49dd-b7c9-9550f0bd2aec\\\",\\\"error_uri\\\":\\\"https://login.microsoftonline.com/error?code=7000215\\\"}\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":391,\"provider\":\"office\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1271,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1271,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1271,\"provider\":\"office\",\"refreshToken\":\"118cde2c06993147b07ccaec4cbcd5026a819dea6c71081166a492933e392afb\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [Google Calendar] Failed to watch channel for calendar {\"calendarId\":\"a33076c1-8d97-431a-99f0-85c9524e118b\",\"code\":400,\"reason\":\"{\n \\\"error\\\": {\n \\\"errors\\\": [\n {\n \\\"domain\\\": \\\"global\\\",\n \\\"reason\\\": \\\"push.webhookUrlNotHttps\\\",\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n ],\n \\\"code\\\": 400,\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n}\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.WARNING: [Calendar] Sync failed {\"calendarId\":\"a33076c1-8d97-431a-99f0-85c9524e118b\",\"code\":400,\"reason\":\"{\n \\\"error\\\": {\n \\\"errors\\\": [\n {\n \\\"domain\\\": \\\"global\\\",\n \\\"reason\\\": \\\"push.webhookUrlNotHttps\\\",\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n ],\n \\\"code\\\": 400,\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n}\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1271,\"provider\":\"office\",\"responseBody\":\"{\\\"error\\\":\\\"invalid_client\\\",\\\"error_description\\\":\\\"AADSTS7000215: Invalid client secret provided. Ensure the secret being sent in the request is the client secret value, not the client secret ID, for a secret added to app 'bbcbb2ef-6200-4fae-82bd-d81f5dd738da'. Trace ID: 2be27598-8820-475c-b6ca-a30513720c00 Correlation ID: d3ed2a98-4aa9-4a63-819b-d36fd20b8d62 Timestamp: 2026-05-07 12:58:57Z\\\",\\\"error_codes\\\":[7000215],\\\"timestamp\\\":\\\"2026-05-07 12:58:57Z\\\",\\\"trace_id\\\":\\\"2be27598-8820-475c-b6ca-a30513720c00\\\",\\\"correlation_id\\\":\\\"d3ed2a98-4aa9-4a63-819b-d36fd20b8d62\\\",\\\"error_uri\\\":\\\"https://login.microsoftonline.com/error?code=7000215\\\"}\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1271,\"provider\":\"office\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1351,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1351,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1351,\"provider\":\"google\",\"refreshToken\":\"4271d15b9e60a606439caddc68337f783e472c85b03dacff14d1b6dfded9051c\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1351,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Bad Request\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1351,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1366,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1366,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1366,\"provider\":\"google\",\"refreshToken\":\"ae21385059b2eebfd43f68aecd56eccd702a1aabb6598f1f7ab594ed8af491b4\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1366,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Bad Request\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1366,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1115,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1115,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: Calendar sync job dispatched {\"calendar_id\":378} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:58] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1421,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:58] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1421,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:58] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:58] local.INFO: Calendar sync job dispatched {\"calendar_id\":504} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:58] local.NOTICE: Calendar sync end {\"retrieved_calendars\":31,\"processed_calendars\":3} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:58] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"calendar:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1115,\"provider\":\"google\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1115,\"provider\":\"google\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [Calendar] Processing sync {\"calendarId\":\"2676cb6d-f86c-427e-bf78-591e388e3c1e\",\"from\":null,\"to\":null,\"delta\":\"CJ_x49O3jpIDEJ_x49O3jpIDGAUgw67KlwMow67KlwM=\",\"last_sync\":\"2026-01-19 07:48:40\",\"dateMode\":\"daily\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.WARNING: [Pipedrive] Account not connected for user {\"userId\":\"e6538737-e7b4-455f-a37a-3e79b665a220\",\"account\":{\"Jiminny\\\\Models\\\\SocialAccount\":{\"id\":1116,\"sociable_id\":241,\"provider_user_id\":\"19555731\",\"expires\":1775683749,\"refresh_token_expires\":null,\"provider\":\"pipedrive\",\"state\":\"full-refresh\",\"auth_scope\":\"base,deals:full,activities:full,contacts:full,search:read\",\"retry_after\":null,\"created_at\":\"2023-09-08 09:44:29\",\"updated_at\":\"2026-04-08 22:58:34\"}}} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {\"crm_provider\":\"pipedrive\",\"crm_owner\":241,\"team_id\":19} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {\"crm_provider\":\"pipedrive\",\"team_id\":19} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {\"crm_provider\":\"pipedrive\",\"team_id\":19} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.WARNING: [Calendar] CRM disconnected for user so events will not be matched {\"provider\":\"pipedrive\",\"user_id\":241,\"message\":\"Your Pipedrive account has become disconnected. Please login to Jiminny to reconnect.\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1115,\"provider\":\"google\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1115,\"provider\":\"google\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [Google Calendar] Failed to watch channel for calendar {\"calendarId\":\"2676cb6d-f86c-427e-bf78-591e388e3c1e\",\"code\":400,\"reason\":\"{\n \\\"error\\\": {\n \\\"errors\\\": [\n {\n \\\"domain\\\": \\\"global\\\",\n \\\"reason\\\": \\\"push.webhookUrlNotHttps\\\",\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n ],\n \\\"code\\\": 400,\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n}\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.WARNING: [Calendar] Sync failed {\"calendarId\":\"2676cb6d-f86c-427e-bf78-591e388e3c1e\",\"code\":400,\"reason\":\"{\n \\\"error\\\": {\n \\\"errors\\\": [\n {\n \\\"domain\\\": \\\"global\\\",\n \\\"reason\\\": \\\"push.webhookUrlNotHttps\\\",\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n ],\n \\\"code\\\": 400,\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n}\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1421,\"provider\":\"office\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1421,\"provider\":\"office\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [Calendar] Processing sync {\"calendarId\":\"9e8b1a2c-1a8f-42bd-b161-810fc0baf540\",\"from\":null,\"to\":null,\"delta\":\"R0usmcdvmMuZCBYV0hguCHhwR3crxfEuMI8zGlf-bMYpCFtdxXvSJWTlnqQvu_jjoOrOYL2VG9rZwFHCERHxGfGEK3CmQX6x8MJG3ZbBXGuVIS6C7u-doY5maMRdsfnrHIAEMJd4Bs_WMfMH4tDJ8j9aul7DHDEJaP7w0PoPPpcoxu4nEk4vk-MolJBEgkSrayEewuBs5JVItUX9lUY2tA.yO2roNQ4Vdm6hBgoutuphGchuzbvsk7aqt5wHfcyeFQ\",\"last_sync\":\"2026-05-06 15:58:35\",\"dateMode\":\"daily\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":89,\"team_id\":2} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [MS Office Calendar] Skipping delta sync for daily mode {\"calendarId\":\"9e8b1a2c-1a8f-42bd-b161-810fc0baf540\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:59:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"cb5f9d32-02db-4883-a5c9-a5b86c1a2fbb\",\"trace_id\":\"4fb8a9a0-53b1-414a-813d-a259b89f3203\"}\n[2026-05-07 12:59:06] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"cb5f9d32-02db-4883-a5c9-a5b86c1a2fbb\",\"trace_id\":\"4fb8a9a0-53b1-414a-813d-a259b89f3203\"}\n[2026-05-07 12:59:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"cb5f9d32-02db-4883-a5c9-a5b86c1a2fbb\",\"trace_id\":\"4fb8a9a0-53b1-414a-813d-a259b89f3203\"}\n[2026-05-07 12:59:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"64313a2b-3a92-4419-ae59-caabfc9e9731\",\"trace_id\":\"16443bac-2196-4257-88bc-59445729f276\"}\n[2026-05-07 12:59:09] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"64313a2b-3a92-4419-ae59-caabfc9e9731\",\"trace_id\":\"16443bac-2196-4257-88bc-59445729f276\"}\n[2026-05-07 12:59:11] local.NOTICE: Monitoring start {\"correlation_id\":\"7678c2ca-049f-44e4-acce-2e711f8d7d40\",\"trace_id\":\"54ef3d3c-f1ea-4a01-aed2-db19a6739a06\"}\n[2026-05-07 12:59:11] local.NOTICE: Monitoring end {\"correlation_id\":\"7678c2ca-049f-44e4-acce-2e711f8d7d40\",\"trace_id\":\"54ef3d3c-f1ea-4a01-aed2-db19a6739a06\"}\n[2026-05-07 12:59:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"44d7c1a1-dfc9-4401-9f63-ad8b5bff9942\",\"trace_id\":\"9f6f5f38-60f5-4869-bfd2-f366d52eaa00\"}\n[2026-05-07 12:59:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"44d7c1a1-dfc9-4401-9f63-ad8b5bff9942\",\"trace_id\":\"9f6f5f38-60f5-4869-bfd2-f366d52eaa00\"}\n[2026-05-07 12:59:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"f90f3b8c-5161-4963-a963-a40284567af1\",\"trace_id\":\"94731c50-8ce2-44ec-ace6-2d46fb00fdb1\"}\n[2026-05-07 12:59:15] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"f90f3b8c-5161-4963-a963-a40284567af1\",\"trace_id\":\"94731c50-8ce2-44ec-ace6-2d46fb00fdb1\"}\n[2026-05-07 12:59:15] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"f90f3b8c-5161-4963-a963-a40284567af1\",\"trace_id\":\"94731c50-8ce2-44ec-ace6-2d46fb00fdb1\"}\n[2026-05-07 12:59:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"f90f3b8c-5161-4963-a963-a40284567af1\",\"trace_id\":\"94731c50-8ce2-44ec-ace6-2d46fb00fdb1\"}\n[2026-05-07 13:00:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"6f98d5e3-0aa8-496e-853a-a77b7a8b74ec\",\"trace_id\":\"b63e8546-4347-49f0-ad1a-92f4e4504843\"}\n[2026-05-07 13:00:10] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"6f98d5e3-0aa8-496e-853a-a77b7a8b74ec\",\"trace_id\":\"b63e8546-4347-49f0-ad1a-92f4e4504843\"}\n[2026-05-07 13:00:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"6f98d5e3-0aa8-496e-853a-a77b7a8b74ec\",\"trace_id\":\"b63e8546-4347-49f0-ad1a-92f4e4504843\"}\n[2026-05-07 13:00:13] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"50260ccd-f119-47b0-baee-514de27801f2\",\"trace_id\":\"40e651df-62f6-4c3a-83ab-842112ec3ece\"}\n[2026-05-07 13:00:13] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"50260ccd-f119-47b0-baee-514de27801f2\",\"trace_id\":\"40e651df-62f6-4c3a-83ab-842112ec3ece\"}\n[2026-05-07 13:00:17] local.NOTICE: Monitoring start {\"correlation_id\":\"f6104856-aca3-4e7b-964e-bba66d730eb3\",\"trace_id\":\"98f34b7b-f715-49cb-8d3a-4e74c1118445\"}\n[2026-05-07 13:00:17] local.NOTICE: Monitoring end {\"correlation_id\":\"f6104856-aca3-4e7b-964e-bba66d730eb3\",\"trace_id\":\"98f34b7b-f715-49cb-8d3a-4e74c1118445\"}\n[2026-05-07 13:00:19] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"b4a9e9a2-968c-429b-8fa8-67dd59bb297f\",\"trace_id\":\"ed6a83d0-8edb-4392-8717-26d91ffde80b\"}\n[2026-05-07 13:00:19] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"b4a9e9a2-968c-429b-8fa8-67dd59bb297f\",\"trace_id\":\"ed6a83d0-8edb-4392-8717-26d91ffde80b\"}\n[2026-05-07 13:00:21] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"b11474b2-8b19-4a2f-89c3-621fde9d3b1f\",\"trace_id\":\"8018d825-0809-411b-9b2a-078e2da6bacb\"}\n[2026-05-07 13:00:21] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"b11474b2-8b19-4a2f-89c3-621fde9d3b1f\",\"trace_id\":\"8018d825-0809-411b-9b2a-078e2da6bacb\"}\n[2026-05-07 13:00:21] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"b11474b2-8b19-4a2f-89c3-621fde9d3b1f\",\"trace_id\":\"8018d825-0809-411b-9b2a-078e2da6bacb\"}\n[2026-05-07 13:00:21] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"b11474b2-8b19-4a2f-89c3-621fde9d3b1f\",\"trace_id\":\"8018d825-0809-411b-9b2a-078e2da6bacb\"}\n[2026-05-07 13:00:23] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"d3b79f58-f9c8-4063-ac7e-7a0445cd1111\",\"trace_id\":\"802cf505-95fb-4f92-8c1b-79aa3ac53084\"}\n[2026-05-07 13:00:23] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:58:00, 2026-05-07 13:00:00] {\"correlation_id\":\"d3b79f58-f9c8-4063-ac7e-7a0445cd1111\",\"trace_id\":\"802cf505-95fb-4f92-8c1b-79aa3ac53084\"}\n[2026-05-07 13:00:23] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:58:00, 2026-05-07 13:00:00] {\"correlation_id\":\"d3b79f58-f9c8-4063-ac7e-7a0445cd1111\",\"trace_id\":\"802cf505-95fb-4f92-8c1b-79aa3ac53084\"}\n[2026-05-07 13:00:23] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"d3b79f58-f9c8-4063-ac7e-7a0445cd1111\",\"trace_id\":\"802cf505-95fb-4f92-8c1b-79aa3ac53084\"}\n[2026-05-07 13:00:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:purge-stale\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"32bad9c1-861c-4a46-bece-585cc1170bfd\",\"trace_id\":\"0c20e20f-6a91-4346-9455-5cd1451c32a1\"}\n[2026-05-07 13:00:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:purge-stale\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"32bad9c1-861c-4a46-bece-585cc1170bfd\",\"trace_id\":\"0c20e20f-6a91-4346-9455-5cd1451c32a1\"}\n[2026-05-07 13:00:29] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:text-relay:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"c9d4f687-1643-431e-9377-2573a2e593fd\",\"trace_id\":\"02fab433-9c9a-49f7-b836-2b8a42551912\"}\n[2026-05-07 13:00:30] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:text-relay:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"c9d4f687-1643-431e-9377-2573a2e593fd\",\"trace_id\":\"02fab433-9c9a-49f7-b836-2b8a42551912\"}\n[2026-05-07 13:00:33] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:pre-meeting-notification\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"57870bb4-45e8-47d8-b192-21d3297d2208\",\"trace_id\":\"ba8e9eac-2dc9-4ed8-bbf1-4a35aedb9efb\"}\n[2026-05-07 13:00:33] local.INFO: Running pre-meeting notification command {\"correlation_id\":\"57870bb4-45e8-47d8-b192-21d3297d2208\",\"trace_id\":\"ba8e9eac-2dc9-4ed8-bbf1-4a35aedb9efb\"}\n[2026-05-07 13:00:33] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:pre-meeting-notification\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"57870bb4-45e8-47d8-b192-21d3297d2208\",\"trace_id\":\"ba8e9eac-2dc9-4ed8-bbf1-4a35aedb9efb\"}\n[2026-05-07 13:00:35] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:start\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"6aeb181b-8314-4d45-aff7-e378793b04d9\",\"trace_id\":\"8ffc66f1-af64-4a58-8ce8-481b3a299dbb\"}\n[2026-05-07 13:00:35] local.INFO: Running conference:monitor:start command for activities in (2026-05-07 12:50:00, 2026-05-07 12:55:00] {\"correlation_id\":\"6aeb181b-8314-4d45-aff7-e378793b04d9\",\"trace_id\":\"8ffc66f1-af64-4a58-8ce8-481b3a299dbb\"}\n[2026-05-07 13:00:35] local.INFO: [conference:monitor:start] No activities found in (2026-05-07 12:50:00, 2026-05-07 12:55:00] {\"correlation_id\":\"6aeb181b-8314-4d45-aff7-e378793b04d9\",\"trace_id\":\"8ffc66f1-af64-4a58-8ce8-481b3a299dbb\"}\n[2026-05-07 13:00:35] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:start\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"6aeb181b-8314-4d45-aff7-e378793b04d9\",\"trace_id\":\"8ffc66f1-af64-4a58-8ce8-481b3a299dbb\"}\n[2026-05-07 13:00:37] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:end\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"888d4f67-ad14-4457-b51d-2cf8b2d315f9\",\"trace_id\":\"eaf4b0b3-0414-4563-b227-ce9c6a2e5b7e\"}\n[2026-05-07 13:00:37] local.INFO: conference:monitor:end:Jiminny\\Console\\Commands\\Activities\\MonitorMeetingEndCommand::logActivitiesEnded {\"from\":\"12:55\",\"to\":\"13:00\"} {\"correlation_id\":\"888d4f67-ad14-4457-b51d-2cf8b2d315f9\",\"trace_id\":\"eaf4b0b3-0414-4563-b227-ce9c6a2e5b7e\"}\n[2026-05-07 13:00:37] local.INFO: conference:monitor:end:Jiminny\\Console\\Commands\\Activities\\MonitorMeetingEndCommand::logActivitiesWithUnfinishedSession {\"from\":\"02:50\",\"to\":\"02:55\"} {\"correlation_id\":\"888d4f67-ad14-4457-b51d-2cf8b2d315f9\",\"trace_id\":\"eaf4b0b3-0414-4563-b227-ce9c6a2e5b7e\"}\n[2026-05-07 13:00:37] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:end\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"888d4f67-ad14-4457-b51d-2cf8b2d315f9\",\"trace_id\":\"eaf4b0b3-0414-4563-b227-ce9c6a2e5b7e\"}\n[2026-05-07 13:00:39] local.NOTICE: Repairing HubSpot tokens start {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:39] local.INFO: Trying to refresh HubSpot token {\"account_id\":59,\"updated_at\":\"2025-10-03 09:32:05\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:39] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:39] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":59,\"provider\":\"hubspot\",\"refreshToken\":\"97b78f6e2cc49965c00c2492b602b02708b1392551e6b3f113fbaa48992af90b\",\"state\":\"full-refresh\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:39] local.ERROR: Failed to refresh HubSpot token {\"account_id\":59,\"updated_at\":\"2025-10-03 09:32:05\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:39] local.INFO: Trying to refresh HubSpot token {\"account_id\":306,\"updated_at\":\"2023-11-27 09:30:03\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:39] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:39] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":306,\"provider\":\"hubspot\",\"refreshToken\":\"6fa6aa8cc641d131231acc3470f5c03cb3b07b2e580fb18f8acb3b1dbb72549b\",\"state\":\"full-refresh\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:40] local.ERROR: Failed to refresh HubSpot token {\"account_id\":306,\"updated_at\":\"2023-11-27 09:30:03\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:40] local.INFO: Trying to refresh HubSpot token {\"account_id\":1372,\"updated_at\":\"2025-10-02 14:47:06\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:40] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:40] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1372,\"provider\":\"hubspot\",\"refreshToken\":\"9aa73948c761da29dce46c177cf9aee1fde483a44169ca38723f9f0597d7a8c4\",\"state\":\"full-refresh\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:40] local.ERROR: Failed to refresh HubSpot token {\"account_id\":1372,\"updated_at\":\"2025-10-02 14:47:06\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:40] local.NOTICE: Repairing HubSpot tokens end {\"total\":3,\"fixed\":0,\"failed\":3} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:45] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"jiminny:transcription:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"b619cc55-b4ef-4913-ab44-6bce51933f7e\",\"trace_id\":\"7cacb418-6e9c-410b-bf3a-15bdf1837908\"}\n[2026-05-07 13:00:45] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:pre-meeting-reminder\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"a765990f-ffe2-44e0-967f-816f5452ce69\",\"trace_id\":\"9aee0f3f-7668-455f-b207-181b58848478\"}\n[2026-05-07 13:00:45] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"jiminny:transcription:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"b619cc55-b4ef-4913-ab44-6bce51933f7e\",\"trace_id\":\"7cacb418-6e9c-410b-bf3a-15bdf1837908\"}\n[2026-05-07 13:00:45] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:45] local.INFO: [HubSpot Journal Command] Starting polling service {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:45] local.INFO: [HubSpot Journal Polling] Service starting {\"memory_limit\":\"256M\",\"max_execution_time\":\"0\",\"initial_memory_mb\":62.0} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:45] local.INFO: [HubSpot Journal Polling] Acquired polling lock {\"expires_at\":\"2026-05-07T13:02:45.724437Z\"} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:45] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:45] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:45] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:pre-meeting-reminder\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"a765990f-ffe2-44e0-967f-816f5452ce69\",\"trace_id\":\"9aee0f3f-7668-455f-b207-181b58848478\"}\n[2026-05-07 13:00:45] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:49] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"crm:reset-governor\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"055b4798-a759-4621-9e0b-652f8ee69ea1\",\"trace_id\":\"10911ef4-48d1-404a-9345-ecf0f5cb9977\"}\n[2026-05-07 13:00:49] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"crm:reset-governor\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"055b4798-a759-4621-9e0b-652f8ee69ea1\",\"trace_id\":\"10911ef4-48d1-404a-9345-ecf0f5cb9977\"}\n[2026-05-07 13:00:51] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:51] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:51] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:53] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:53] local.INFO: Dispatching activity sync job {\"import_id\":812331,\"provider\":\"twilio-flex\",\"team\":\"jiminny\"} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:53] local.INFO: Dispatching activity sync job {\"import_id\":812332,\"provider\":\"xant\",\"team\":\"jiminny\"} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:53] local.INFO: Dispatching activity sync job {\"import_id\":812333,\"provider\":\"apollo\",\"team\":\"jiminny\"} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:53] local.INFO: Dispatching activity sync job {\"import_id\":812334,\"provider\":\"groove\",\"team\":\"jiminny\"} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:53] local.INFO: Dispatching activity sync job {\"import_id\":812335,\"provider\":\"twilio-video\",\"team\":\"jiminny\"} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:53] local.INFO: Dispatching activity sync job {\"import_id\":812336,\"provider\":\"hubspot\",\"team\":\"hubspot\"} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:53] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.WARNING: [Salesforce] Account not connected for user {\"userId\":\"cdf8b554-d951-4758-bc2b-c1b85d1cd0b9\",\"account\":null} {\"correlation_id\":\"fb068e24-e135-4914-9973-94f1a0f5dae2\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {\"crm_provider\":\"salesforce\",\"crm_owner\":3,\"team_id\":1} {\"correlation_id\":\"fb068e24-e135-4914-9973-94f1a0f5dae2\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {\"crm_provider\":\"salesforce\",\"team_id\":1} {\"correlation_id\":\"fb068e24-e135-4914-9973-94f1a0f5dae2\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {\"crm_provider\":\"salesforce\",\"team_id\":1} {\"correlation_id\":\"fb068e24-e135-4914-9973-94f1a0f5dae2\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.ALERT: [SyncActivity] Failed {\"import_id\":812331,\"provider\":\"twilio-flex\",\"provider_id\":317,\"team\":\"jiminny\",\"team_id\":1,\"reason\":\"Social account for Salesforce cannot be found. Please login to Jiminny to connect.\",\"file\":\"/home/jiminny/app/Services/Crm/BaseService.php\",\"line\":646} {\"correlation_id\":\"fb068e24-e135-4914-9973-94f1a0f5dae2\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"fe9470d4-bc5a-4195-919d-e4908e439f7c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"fe9470d4-bc5a-4195-919d-e4908e439f7c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"fe9470d4-bc5a-4195-919d-e4908e439f7c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:56] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:56] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:56] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:56] local.ALERT: [SyncActivity] Failed {\"import_id\":812332,\"provider\":\"xant\",\"provider_id\":161,\"team\":\"jiminny\",\"team_id\":1,\"reason\":\"Activity Provider account not connected.\",\"file\":\"/home/jiminny/app/Services/Activity/ActivityProviderService.php\",\"line\":174} {\"correlation_id\":\"fe9470d4-bc5a-4195-919d-e4908e439f7c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:56] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"e3a8ef92-20c7-4698-a07d-1aa2c21ac82c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:56] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"e3a8ef92-20c7-4698-a07d-1aa2c21ac82c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:56] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"e3a8ef92-20c7-4698-a07d-1aa2c21ac82c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:56] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:fail-stalled\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"441dabbc-0c1f-4d49-871c-08f96adbed01\",\"trace_id\":\"13597461-50ff-4a40-a329-255430126395\"}\n[2026-05-07 13:00:56] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:fail-stalled\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"441dabbc-0c1f-4d49-871c-08f96adbed01\",\"trace_id\":\"13597461-50ff-4a40-a329-255430126395\"}\n[2026-05-07 13:00:57] local.ALERT: [SyncActivity] Failed {\"import_id\":812333,\"provider\":\"apollo\",\"provider_id\":441,\"team\":\"jiminny\",\"team_id\":1,\"reason\":\"Activity Provider account not connected.\",\"file\":\"/home/jiminny/app/Services/Activity/ActivityProviderService.php\",\"line\":174} {\"correlation_id\":\"e3a8ef92-20c7-4698-a07d-1aa2c21ac82c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:57] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"1a0b64ee-3927-48e6-8ae3-fda14f35babb\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:57] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"1a0b64ee-3927-48e6-8ae3-fda14f35babb\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:57] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"1a0b64ee-3927-48e6-8ae3-fda14f35babb\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:57] local.ALERT: [SyncActivity] Failed {\"import_id\":812334,\"provider\":\"groove\",\"provider_id\":228,\"team\":\"jiminny\",\"team_id\":1,\"reason\":\"Activity Provider account not connected.\",\"file\":\"/home/jiminny/app/Services/Activity/ActivityProviderService.php\",\"line\":174} {\"correlation_id\":\"1a0b64ee-3927-48e6-8ae3-fda14f35babb\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:57] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"5e6fecb1-9905-4ab2-a494-e6d8215430c0\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:57] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"5e6fecb1-9905-4ab2-a494-e6d8215430c0\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:57] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"5e6fecb1-9905-4ab2-a494-e6d8215430c0\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.ALERT: [SyncActivity] Failed {\"import_id\":812335,\"provider\":\"twilio-video\",\"provider_id\":243,\"team\":\"jiminny\",\"team_id\":1,\"reason\":\"Activity Provider account not connected.\",\"file\":\"/home/jiminny/app/Services/Activity/ActivityProviderService.php\",\"line\":174} {\"correlation_id\":\"5e6fecb1-9905-4ab2-a494-e6d8215430c0\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":89,\"team_id\":2} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":408,\"provider\":\"hubspot\"} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":408,\"provider\":\"hubspot\"} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [SyncActivity] Start {\"import_id\":812336,\"provider\":\"hubspot\",\"provider_id\":31,\"team\":\"hubspot\",\"team_id\":2} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [HubSpot] Search calls for period {\"from\":\"2026-05-07 12:44:00\",\"to\":\"2026-05-07 13:00:00\"} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [SyncActivity] End {\"import_id\":812336,\"provider\":\"hubspot\",\"provider_id\":31,\"team\":\"hubspot\",\"team_id\":2} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [SyncActivity] Memory usage {\"import_id\":812336,\"provider\":\"hubspot\",\"provider_id\":31,\"team\":\"hubspot\",\"team_id\":2,\"memory_usage\":27230632,\"memory_real_usage\":67108864,\"pid\":37116} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:59] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"jiminny:transcription:retry-stuck\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"1db560c5-5d8c-419a-bfb0-e761473ecf44\",\"trace_id\":\"79eb494e-fd21-4171-b59d-d7d47358f1fb\"}\n[2026-05-07 13:00:59] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"jiminny:transcription:retry-stuck\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"1db560c5-5d8c-419a-bfb0-e761473ecf44\",\"trace_id\":\"79eb494e-fd21-4171-b59d-d7d47358f1fb\"}\n[2026-05-07 13:01:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"73c0e9d6-7ef5-4040-8e35-0a9bb4028abf\",\"trace_id\":\"55b51c26-06b9-4b59-b444-53017b805b30\"}\n[2026-05-07 13:01:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"73c0e9d6-7ef5-4040-8e35-0a9bb4028abf\",\"trace_id\":\"55b51c26-06b9-4b59-b444-53017b805b30\"}\n[2026-05-07 13:01:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"5a7e717c-f314-4601-b1b8-fd550703f463\",\"trace_id\":\"a64281e5-027f-4856-a3e3-4f176c58eb6e\"}\n[2026-05-07 13:01:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"5a7e717c-f314-4601-b1b8-fd550703f463\",\"trace_id\":\"a64281e5-027f-4856-a3e3-4f176c58eb6e\"}\n[2026-05-07 13:01:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"0c425954-2696-4890-97b7-219ccc38cf46\",\"trace_id\":\"d609b364-f3b6-4b85-babb-67caf96efdb1\"}\n[2026-05-07 13:01:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"0c425954-2696-4890-97b7-219ccc38cf46\",\"trace_id\":\"d609b364-f3b6-4b85-babb-67caf96efdb1\"}\n[2026-05-07 13:01:11] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:11] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:11] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"a6bad97b-3db2-4dd6-839f-fcd485f06e65\",\"trace_id\":\"dcdde4a9-962c-46d1-9386-42adb54efbbf\"}\n[2026-05-07 13:01:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"a6bad97b-3db2-4dd6-839f-fcd485f06e65\",\"trace_id\":\"dcdde4a9-962c-46d1-9386-42adb54efbbf\"}\n[2026-05-07 13:01:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"2893478e-8c43-4719-a2e8-7c9c0e0783e9\",\"trace_id\":\"3fc8f1f0-0727-42f1-8ee6-f2b32bd8834b\"}\n[2026-05-07 13:01:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"2893478e-8c43-4719-a2e8-7c9c0e0783e9\",\"trace_id\":\"3fc8f1f0-0727-42f1-8ee6-f2b32bd8834b\"}\n[2026-05-07 13:01:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"64f52ca1-b54e-46da-a760-73dbdf407eaf\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:17] local.INFO: Dispatching activity sync job {\"import_id\":812337,\"provider\":\"hubspot\",\"team\":\"hubspot\"} {\"correlation_id\":\"64f52ca1-b54e-46da-a760-73dbdf407eaf\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"64f52ca1-b54e-46da-a760-73dbdf407eaf\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"crm:bullhorn:ping\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"3c44e0a7-ec5d-4206-a925-69f6e0783c2a\",\"trace_id\":\"60cf7a36-37ca-4ac4-a632-f317578d908f\"}\n[2026-05-07 13:01:19] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"crm:bullhorn:ping\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"3c44e0a7-ec5d-4206-a925-69f6e0783c2a\",\"trace_id\":\"60cf7a36-37ca-4ac4-a632-f317578d908f\"}\n[2026-05-07 13:01:19] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":89,\"team_id\":2} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":408,\"provider\":\"hubspot\"} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":408,\"provider\":\"hubspot\"} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [SyncActivity] Start {\"import_id\":812337,\"provider\":\"hubspot\",\"provider_id\":31,\"team\":\"hubspot\",\"team_id\":2} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [HubSpot] Search calls for period {\"from\":\"2026-05-07 12:00:00\",\"to\":\"2026-05-07 13:00:00\"} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:20] local.INFO: [SyncActivity] End {\"import_id\":812337,\"provider\":\"hubspot\",\"provider_id\":31,\"team\":\"hubspot\",\"team_id\":2} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:20] local.INFO: [SyncActivity] Memory usage {\"import_id\":812337,\"provider\":\"hubspot\",\"provider_id\":31,\"team\":\"hubspot\",\"team_id\":2,\"memory_usage\":27392888,\"memory_real_usage\":67108864,\"pid\":37116} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:21] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"nudges:send\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"55ebbc10-80bf-4724-ac64-678f6ef891cc\",\"trace_id\":\"f5392dc4-b352-4cae-b82a-004f77bbaf26\"}\n[2026-05-07 13:01:21] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"nudges:send\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"55ebbc10-80bf-4724-ac64-678f6ef891cc\",\"trace_id\":\"f5392dc4-b352-4cae-b82a-004f77bbaf26\"}\n[2026-05-07 13:01:23] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"jiminny:playlists:normalize-sort\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"9e29cfb5-b7fc-41bc-a9fd-a160d2253806\",\"trace_id\":\"3e180d83-299d-4c6c-bdda-d5a8ac156efc\"}\n[2026-05-07 13:01:23] local.INFO: [Jiminny\\Component\\Playlist\\Command\\NormalizeSortCommand::handle] starting. {\"playlists\":[]} {\"correlation_id\":\"9e29cfb5-b7fc-41bc-a9fd-a160d2253806\",\"trace_id\":\"3e180d83-299d-4c6c-bdda-d5a8ac156efc\"}\n[2026-05-07 13:01:23] local.INFO: [Jiminny\\Component\\Playlist\\Command\\NormalizeSortCommand::handle] finished. {\"normalizedPlaylists\":[],\"deletedPlaylists\":[]} {\"correlation_id\":\"9e29cfb5-b7fc-41bc-a9fd-a160d2253806\",\"trace_id\":\"3e180d83-299d-4c6c-bdda-d5a8ac156efc\"}\n[2026-05-07 13:01:23] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"jiminny:playlists:normalize-sort\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"9e29cfb5-b7fc-41bc-a9fd-a160d2253806\",\"trace_id\":\"3e180d83-299d-4c6c-bdda-d5a8ac156efc\"}\n[2026-05-07 13:01:41] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:41] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:41] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:41] local.WARNING: [HubSpot Journal Polling] Maximum empty results reached, stopping {\"empty_results\":5,\"max_empty_results\":5} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:41] local.WARNING: [HubSpot Journal Polling] Maximum empty results reached, stopping {\"empty_results\":5,\"max_empty_results\":5} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:41] local.INFO: [HubSpot Journal Polling] Service ending {\"runtime_seconds\":56,\"total_cycles\":5,\"files_downloaded\":0,\"empty_files\":0,\"other_portal_skipped\":0,\"total_events\":0,\"events_per_file\":0,\"avg_api_ms\":181.3,\"avg_download_ms\":0.0,\"avg_transform_ms\":0.0,\"avg_process_ms\":0.0,\"peak_memory_mb\":99.73} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:41] local.INFO: [HubSpot Journal Polling] Released polling lock {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:02:05] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"fe3480ce-754b-4304-b661-e4ac7234a778\",\"trace_id\":\"619e9c15-f95f-47ce-af85-6d78a6698327\"}\n[2026-05-07 13:02:05] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"fe3480ce-754b-4304-b661-e4ac7234a778\",\"trace_id\":\"619e9c15-f95f-47ce-af85-6d78a6698327\"}\n[2026-05-07 13:02:05] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"fe3480ce-754b-4304-b661-e4ac7234a778\",\"trace_id\":\"619e9c15-f95f-47ce-af85-6d78a6698327\"}\n[2026-05-07 13:02:07] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"aa98bf14-5737-4097-9f53-ac6833fb7983\",\"trace_id\":\"2f858b11-1073-43d4-996a-57e259ec2795\"}\n[2026-05-07 13:02:07] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"aa98bf14-5737-4097-9f53-ac6833fb7983\",\"trace_id\":\"2f858b11-1073-43d4-996a-57e259ec2795\"}\n[2026-05-07 13:02:08] local.NOTICE: Monitoring start {\"correlation_id\":\"25c588be-ddd6-41f1-8db8-ae28f3dd5bf5\",\"trace_id\":\"58b4c110-21ab-4c22-be4f-5be3534cd17d\"}\n[2026-05-07 13:02:08] local.NOTICE: Monitoring end {\"correlation_id\":\"25c588be-ddd6-41f1-8db8-ae28f3dd5bf5\",\"trace_id\":\"58b4c110-21ab-4c22-be4f-5be3534cd17d\"}\n[2026-05-07 13:02:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"5e453d7a-4daf-4001-b100-6aa9485d0353\",\"trace_id\":\"d97e1107-3696-4acf-95db-9cc7f37412e1\"}\n[2026-05-07 13:02:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"5e453d7a-4daf-4001-b100-6aa9485d0353\",\"trace_id\":\"d97e1107-3696-4acf-95db-9cc7f37412e1\"}\n[2026-05-07 13:02:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"3fab4dfb-f0ae-4c2c-a882-e09a1ad3ee9b\",\"trace_id\":\"3a66f9c4-3f01-40e2-aee2-e77fdabe793f\"}\n[2026-05-07 13:02:12] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"3fab4dfb-f0ae-4c2c-a882-e09a1ad3ee9b\",\"trace_id\":\"3a66f9c4-3f01-40e2-aee2-e77fdabe793f\"}\n[2026-05-07 13:02:12] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"3fab4dfb-f0ae-4c2c-a882-e09a1ad3ee9b\",\"trace_id\":\"3a66f9c4-3f01-40e2-aee2-e77fdabe793f\"}\n[2026-05-07 13:02:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"3fab4dfb-f0ae-4c2c-a882-e09a1ad3ee9b\",\"trace_id\":\"3a66f9c4-3f01-40e2-aee2-e77fdabe793f\"}\n[2026-05-07 13:02:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"63252e6d-894f-4cb9-818a-0034bf3545cb\",\"trace_id\":\"7ddf2e72-9174-4623-a622-1a5c9ee952c5\"}\n[2026-05-07 13:02:15] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 13:00:00, 2026-05-07 13:02:00] {\"correlation_id\":\"63252e6d-894f-4cb9-818a-0034bf3545cb\",\"trace_id\":\"7ddf2e72-9174-4623-a622-1a5c9ee952c5\"}\n[2026-05-07 13:02:15] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 13:00:00, 2026-05-07 13:02:00] {\"correlation_id\":\"63252e6d-894f-4cb9-818a-0034bf3545cb\",\"trace_id\":\"7ddf2e72-9174-4623-a622-1a5c9ee952c5\"}\n[2026-05-07 13:02:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"63252e6d-894f-4cb9-818a-0034bf3545cb\",\"trace_id\":\"7ddf2e72-9174-4623-a622-1a5c9ee952c5\"}\n[2026-05-07 13:02:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:create\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"cf65b2c4-c602-432d-8087-d0c0fb7f8e80\",\"trace_id\":\"b7b39317-045c-4475-879e-3d399e23fc3e\"}\n[2026-05-07 13:02:17] local.INFO: [EmailSchedule] STARTING batch create {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"cf65b2c4-c602-432d-8087-d0c0fb7f8e80\",\"trace_id\":\"b7b39317-045c-4475-879e-3d399e23fc3e\"}\n[2026-05-07 13:02:17] local.INFO: [EmailSchedule] FINISHED batch create {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"cf65b2c4-c602-432d-8087-d0c0fb7f8e80\",\"trace_id\":\"b7b39317-045c-4475-879e-3d399e23fc3e\"}\n[2026-05-07 13:02:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:create\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"cf65b2c4-c602-432d-8087-d0c0fb7f8e80\",\"trace_id\":\"b7b39317-045c-4475-879e-3d399e23fc3e\"}\n[2026-05-07 13:02:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"c481124d-04ae-43fb-b1d3-a4282f7af7ff\",\"trace_id\":\"d2d083d1-7cee-4d21-b80e-4485361d9969\"}\n[2026-05-07 13:02:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"c481124d-04ae-43fb-b1d3-a4282f7af7ff\",\"trace_id\":\"d2d083d1-7cee-4d21-b80e-4485361d9969\"}\n[2026-05-07 13:02:20] local.INFO: [Jiminny\\Jobs\\Mailbox\\CreateBatches] processed 2 inboxes and created 0 batches {\"userId\":null,\"batchSize\":30,\"maxBatches\":1000} {\"correlation_id\":\"3e2ef780-0c9d-4c30-9dc9-92315055c632\",\"trace_id\":\"b7b39317-045c-4475-879e-3d399e23fc3e\"}\n[2026-05-07 13:03:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"8cb6c7bf-4a2d-4960-bf8f-0368643fec27\",\"trace_id\":\"68c67cd4-9b92-4e41-bc1e-ebb282ea5211\"}\n[2026-05-07 13:03:06] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"8cb6c7bf-4a2d-4960-bf8f-0368643fec27\",\"trace_id\":\"68c67cd4-9b92-4e41-bc1e-ebb282ea5211\"}\n[2026-05-07 13:03:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"8cb6c7bf-4a2d-4960-bf8f-0368643fec27\",\"trace_id\":\"68c67cd4-9b92-4e41-bc1e-ebb282ea5211\"}\n[2026-05-07 13:03:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"b18dc815-6c91-43df-b083-125316724586\",\"trace_id\":\"62a636e8-4128-49eb-b99b-15efcfb37267\"}\n[2026-05-07 13:03:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"b18dc815-6c91-43df-b083-125316724586\",\"trace_id\":\"62a636e8-4128-49eb-b99b-15efcfb37267\"}\n[2026-05-07 13:03:10] local.NOTICE: Monitoring start {\"correlation_id\":\"d74c3e14-fd1a-4cab-9892-e9e924af1144\",\"trace_id\":\"29547049-25f5-4b62-a603-276e1de3dde8\"}\n[2026-05-07 13:03:10] local.NOTICE: Monitoring end {\"correlation_id\":\"d74c3e14-fd1a-4cab-9892-e9e924af1144\",\"trace_id\":\"29547049-25f5-4b62-a603-276e1de3dde8\"}\n[2026-05-07 13:03:13] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"bd7a8c2f-3f0b-48e9-86c2-0f01f2cfd9e8\",\"trace_id\":\"a3d1ecb5-4122-43c1-98ca-5d74c3dc989c\"}\n[2026-05-07 13:03:13] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"bd7a8c2f-3f0b-48e9-86c2-0f01f2cfd9e8\",\"trace_id\":\"a3d1ecb5-4122-43c1-98ca-5d74c3dc989c\"}\n[2026-05-07 13:03:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"4b20eb61-2970-4a63-8ee0-b392f7406a78\",\"trace_id\":\"892c9d93-c280-4b3f-a97a-bf1266f5c090\"}\n[2026-05-07 13:03:14] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"4b20eb61-2970-4a63-8ee0-b392f7406a78\",\"trace_id\":\"892c9d93-c280-4b3f-a97a-bf1266f5c090\"}\n[2026-05-07 13:03:14] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"4b20eb61-2970-4a63-8ee0-b392f7406a78\",\"trace_id\":\"892c9d93-c280-4b3f-a97a-bf1266f5c090\"}\n[2026-05-07 13:03:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"4b20eb61-2970-4a63-8ee0-b392f7406a78\",\"trace_id\":\"892c9d93-c280-4b3f-a97a-bf1266f5c090\"}\n[2026-05-07 13:03:18] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"6a165ea3-f101-4ac9-bfcc-e7ad618ac645\",\"trace_id\":\"383367e5-a337-4793-be1c-a88a2a6fa2e5\"}\n[2026-05-07 13:03:18] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"6a165ea3-f101-4ac9-bfcc-e7ad618ac645\",\"trace_id\":\"383367e5-a337-4793-be1c-a88a2a6fa2e5\"}","depth":4,"on_screen":true,"value":"[2026-05-07 12:52:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"fa8a3008-d298-4682-bbbc-fdc77520e0d7\",\"trace_id\":\"7cfb2afb-9fc4-4a77-81be-65dce93c7d80\"}\n[2026-05-07 12:52:08] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"fa8a3008-d298-4682-bbbc-fdc77520e0d7\",\"trace_id\":\"7cfb2afb-9fc4-4a77-81be-65dce93c7d80\"}\n[2026-05-07 12:52:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"fa8a3008-d298-4682-bbbc-fdc77520e0d7\",\"trace_id\":\"7cfb2afb-9fc4-4a77-81be-65dce93c7d80\"}\n[2026-05-07 12:52:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"932ced9d-9804-48ed-976a-1f8bf5e75707\",\"trace_id\":\"21bf320c-58f3-4082-831d-9f07f6c6a669\"}\n[2026-05-07 12:52:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"932ced9d-9804-48ed-976a-1f8bf5e75707\",\"trace_id\":\"21bf320c-58f3-4082-831d-9f07f6c6a669\"}\n[2026-05-07 12:52:17] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:17] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:17] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:17] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":148,\"team_id\":2} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:17] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.55,\"average_seconds_per_request\":0.55} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:18] local.NOTICE: Monitoring start {\"correlation_id\":\"ae3ec78f-432c-4e22-b73b-0413af73d9f3\",\"trace_id\":\"c2feb517-0f2b-4ad9-bce5-4d57476a164b\"}\n[2026-05-07 12:52:18] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.51,\"average_seconds_per_request\":0.51} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:18] local.NOTICE: Monitoring end {\"correlation_id\":\"ae3ec78f-432c-4e22-b73b-0413af73d9f3\",\"trace_id\":\"c2feb517-0f2b-4ad9-bce5-4d57476a164b\"}\n[2026-05-07 12:52:18] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.48,\"average_seconds_per_request\":0.48} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:19] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.49,\"average_seconds_per_request\":0.49} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:19] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.49,\"average_seconds_per_request\":0.49} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"2bf2f73f-007c-4909-925e-f1749fbf87b3\",\"trace_id\":\"8429123c-d92c-48d9-a154-29bc0aa0e2a1\"}\n[2026-05-07 12:52:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"2bf2f73f-007c-4909-925e-f1749fbf87b3\",\"trace_id\":\"8429123c-d92c-48d9-a154-29bc0aa0e2a1\"}\n[2026-05-07 12:52:20] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.48,\"average_seconds_per_request\":0.48} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:20] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.62,\"average_seconds_per_request\":0.62} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:21] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.78,\"average_seconds_per_request\":0.78} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:22] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":1.21,\"average_seconds_per_request\":1.21} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:23] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.53,\"average_seconds_per_request\":0.53} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8\",\"trace_id\":\"64ccac6b-34f7-45ed-a8ac-b63adbb19107\"}\n[2026-05-07 12:52:25] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8\",\"trace_id\":\"64ccac6b-34f7-45ed-a8ac-b63adbb19107\"}\n[2026-05-07 12:52:26] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8\",\"trace_id\":\"64ccac6b-34f7-45ed-a8ac-b63adbb19107\"}\n[2026-05-07 12:52:26] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8\",\"trace_id\":\"64ccac6b-34f7-45ed-a8ac-b63adbb19107\"}\n[2026-05-07 12:52:28] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"6e1a36d0-a87a-455f-88b9-04f16718ea33\",\"trace_id\":\"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c\"}\n[2026-05-07 12:52:28] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:50:00, 2026-05-07 12:52:00] {\"correlation_id\":\"6e1a36d0-a87a-455f-88b9-04f16718ea33\",\"trace_id\":\"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c\"}\n[2026-05-07 12:52:28] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:50:00, 2026-05-07 12:52:00] {\"correlation_id\":\"6e1a36d0-a87a-455f-88b9-04f16718ea33\",\"trace_id\":\"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c\"}\n[2026-05-07 12:52:28] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"6e1a36d0-a87a-455f-88b9-04f16718ea33\",\"trace_id\":\"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c\"}\n[2026-05-07 12:52:31] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:create\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"80549428-beea-4a6c-97d3-818ca0f059f3\",\"trace_id\":\"55ddd59b-073b-4331-8cdb-baa869dcff70\"}\n[2026-05-07 12:52:31] local.INFO: [EmailSchedule] STARTING batch create {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"80549428-beea-4a6c-97d3-818ca0f059f3\",\"trace_id\":\"55ddd59b-073b-4331-8cdb-baa869dcff70\"}\n[2026-05-07 12:52:31] local.INFO: [EmailSchedule] FINISHED batch create {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"80549428-beea-4a6c-97d3-818ca0f059f3\",\"trace_id\":\"55ddd59b-073b-4331-8cdb-baa869dcff70\"}\n[2026-05-07 12:52:31] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:create\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"80549428-beea-4a6c-97d3-818ca0f059f3\",\"trace_id\":\"55ddd59b-073b-4331-8cdb-baa869dcff70\"}\n[2026-05-07 12:52:32] local.INFO: [Jiminny\\Jobs\\Mailbox\\CreateBatches] processed 2 inboxes and created 0 batches {\"userId\":null,\"batchSize\":30,\"maxBatches\":1000} {\"correlation_id\":\"92242bd6-7014-4487-a50b-1570e1a88e7a\",\"trace_id\":\"55ddd59b-073b-4331-8cdb-baa869dcff70\"}\n[2026-05-07 12:52:39] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"d467eace-3254-4ecc-8d8e-a94688d6d3ad\",\"trace_id\":\"5105ca8f-3c0d-4798-b748-5a7d6fbd7531\"}\n[2026-05-07 12:52:39] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"d467eace-3254-4ecc-8d8e-a94688d6d3ad\",\"trace_id\":\"5105ca8f-3c0d-4798-b748-5a7d6fbd7531\"}\n[2026-05-07 12:53:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"04363b29-2f82-470a-89d0-c5ce4f4779d7\",\"trace_id\":\"3c76a1f1-3348-4e2b-897c-4a216ca95147\"}\n[2026-05-07 12:53:08] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"04363b29-2f82-470a-89d0-c5ce4f4779d7\",\"trace_id\":\"3c76a1f1-3348-4e2b-897c-4a216ca95147\"}\n[2026-05-07 12:53:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"04363b29-2f82-470a-89d0-c5ce4f4779d7\",\"trace_id\":\"3c76a1f1-3348-4e2b-897c-4a216ca95147\"}\n[2026-05-07 12:53:11] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"5ebbecd0-866c-443f-965f-b6ac03735379\",\"trace_id\":\"e0a724a5-bb4b-4fe6-9fe9-36ea1c3f0326\"}\n[2026-05-07 12:53:11] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"5ebbecd0-866c-443f-965f-b6ac03735379\",\"trace_id\":\"e0a724a5-bb4b-4fe6-9fe9-36ea1c3f0326\"}\n[2026-05-07 12:53:18] local.NOTICE: Monitoring start {\"correlation_id\":\"f39f0d3c-a292-41cb-8834-45dae1f8cf47\",\"trace_id\":\"b6e7e2a7-85af-401d-afc6-bec2bdab34d7\"}\n[2026-05-07 12:53:18] local.NOTICE: Monitoring end {\"correlation_id\":\"f39f0d3c-a292-41cb-8834-45dae1f8cf47\",\"trace_id\":\"b6e7e2a7-85af-401d-afc6-bec2bdab34d7\"}\n[2026-05-07 12:53:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"419bb747-2669-496f-944b-1073496cc271\",\"trace_id\":\"4cb913a4-ef75-422b-80eb-fbfb988521ed\"}\n[2026-05-07 12:53:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"419bb747-2669-496f-944b-1073496cc271\",\"trace_id\":\"4cb913a4-ef75-422b-80eb-fbfb988521ed\"}\n[2026-05-07 12:53:22] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"f4805c97-9344-4111-8be2-2b1efeae07bb\",\"trace_id\":\"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22\"}\n[2026-05-07 12:53:22] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"f4805c97-9344-4111-8be2-2b1efeae07bb\",\"trace_id\":\"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22\"}\n[2026-05-07 12:53:22] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"f4805c97-9344-4111-8be2-2b1efeae07bb\",\"trace_id\":\"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22\"}\n[2026-05-07 12:53:22] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"f4805c97-9344-4111-8be2-2b1efeae07bb\",\"trace_id\":\"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22\"}\n[2026-05-07 12:53:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"2eadb06b-2c2e-4a7f-8920-77bd30d6cd7f\",\"trace_id\":\"75f27a23-2021-41a5-9e5f-4b1cb4f143a6\"}\n[2026-05-07 12:53:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"2eadb06b-2c2e-4a7f-8920-77bd30d6cd7f\",\"trace_id\":\"75f27a23-2021-41a5-9e5f-4b1cb4f143a6\"}\n[2026-05-07 12:54:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"ad151521-f676-4351-a70b-f44dc0b94990\",\"trace_id\":\"17e39c4c-85cb-49a4-815e-b7315a8c2249\"}\n[2026-05-07 12:54:06] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"ad151521-f676-4351-a70b-f44dc0b94990\",\"trace_id\":\"17e39c4c-85cb-49a4-815e-b7315a8c2249\"}\n[2026-05-07 12:54:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"ad151521-f676-4351-a70b-f44dc0b94990\",\"trace_id\":\"17e39c4c-85cb-49a4-815e-b7315a8c2249\"}\n[2026-05-07 12:54:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"ed0583cf-03c6-4696-b859-876c8efa4473\",\"trace_id\":\"3f9e0a3c-2178-4885-95eb-8618b8cfc042\"}\n[2026-05-07 12:54:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"ed0583cf-03c6-4696-b859-876c8efa4473\",\"trace_id\":\"3f9e0a3c-2178-4885-95eb-8618b8cfc042\"}\n[2026-05-07 12:54:10] local.NOTICE: Monitoring start {\"correlation_id\":\"7142250a-b897-4620-8ff7-fd9b3a1f3802\",\"trace_id\":\"597def1e-ca38-4cc4-8890-fdcd5baff948\"}\n[2026-05-07 12:54:10] local.NOTICE: Monitoring end {\"correlation_id\":\"7142250a-b897-4620-8ff7-fd9b3a1f3802\",\"trace_id\":\"597def1e-ca38-4cc4-8890-fdcd5baff948\"}\n[2026-05-07 12:54:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"cb2ada48-0200-4eb3-a8c5-6cb8ea43ec0d\",\"trace_id\":\"73937bdc-10b9-4508-9ef2-86420fe774fc\"}\n[2026-05-07 12:54:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"cb2ada48-0200-4eb3-a8c5-6cb8ea43ec0d\",\"trace_id\":\"73937bdc-10b9-4508-9ef2-86420fe774fc\"}\n[2026-05-07 12:54:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"8f1d8932-2839-4256-99ab-1fd13e8381c6\",\"trace_id\":\"cc090767-edc2-4a89-90c2-116f1737de7f\"}\n[2026-05-07 12:54:14] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"8f1d8932-2839-4256-99ab-1fd13e8381c6\",\"trace_id\":\"cc090767-edc2-4a89-90c2-116f1737de7f\"}\n[2026-05-07 12:54:14] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"8f1d8932-2839-4256-99ab-1fd13e8381c6\",\"trace_id\":\"cc090767-edc2-4a89-90c2-116f1737de7f\"}\n[2026-05-07 12:54:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"8f1d8932-2839-4256-99ab-1fd13e8381c6\",\"trace_id\":\"cc090767-edc2-4a89-90c2-116f1737de7f\"}\n[2026-05-07 12:54:16] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"9d324c6d-5b36-46ee-89c6-f95f86bf3f39\",\"trace_id\":\"860cdff0-9356-4e94-84cc-e011a74ba56c\"}\n[2026-05-07 12:54:16] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:52:00, 2026-05-07 12:54:00] {\"correlation_id\":\"9d324c6d-5b36-46ee-89c6-f95f86bf3f39\",\"trace_id\":\"860cdff0-9356-4e94-84cc-e011a74ba56c\"}\n[2026-05-07 12:54:16] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:52:00, 2026-05-07 12:54:00] {\"correlation_id\":\"9d324c6d-5b36-46ee-89c6-f95f86bf3f39\",\"trace_id\":\"860cdff0-9356-4e94-84cc-e011a74ba56c\"}\n[2026-05-07 12:54:16] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"9d324c6d-5b36-46ee-89c6-f95f86bf3f39\",\"trace_id\":\"860cdff0-9356-4e94-84cc-e011a74ba56c\"}\n[2026-05-07 12:54:18] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:aircall:check-and-renew\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"c2009a88-eea6-4954-8642-ef5d9cb56b42\",\"trace_id\":\"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab\"}\n[2026-05-07 12:54:18] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1496,\"provider\":\"aircall\"} {\"correlation_id\":\"c2009a88-eea6-4954-8642-ef5d9cb56b42\",\"trace_id\":\"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab\"}\n[2026-05-07 12:54:18] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1496,\"provider\":\"aircall\"} {\"correlation_id\":\"c2009a88-eea6-4954-8642-ef5d9cb56b42\",\"trace_id\":\"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab\"}\n[2026-05-07 12:54:18] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"c2009a88-eea6-4954-8642-ef5d9cb56b42\",\"trace_id\":\"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab\"}\n[2026-05-07 12:54:19] local.ERROR: [Aircall] Re-activating webhooks failed {\"team_id\":1,\"reason\":\"{\\\"message\\\":\\\"Forbidden\\\"}\"} {\"correlation_id\":\"c2009a88-eea6-4954-8642-ef5d9cb56b42\",\"trace_id\":\"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab\"}\n[2026-05-07 12:54:19] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:aircall:check-and-renew\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"c2009a88-eea6-4954-8642-ef5d9cb56b42\",\"trace_id\":\"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab\"}\n[2026-05-07 12:54:21] local.INFO: [RetryFailedDownloads] Starting {\"options\":{\"from\":null,\"to\":null,\"help\":false,\"silent\":false,\"quiet\":false,\"verbose\":false,\"version\":false,\"ansi\":null,\"no-interaction\":false,\"env\":null}} {\"correlation_id\":\"825ef2d7-b5f8-45cd-b19d-20a179b06934\",\"trace_id\":\"5825a6c8-14c9-4bec-b688-d4895cfc41cc\"}\n[2026-05-07 12:55:05] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"c0dc8e25-7a51-4023-be61-d0abd6d72e37\",\"trace_id\":\"16b8fa3e-92b1-465e-82d4-642a2d14c7c5\"}\n[2026-05-07 12:55:05] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"c0dc8e25-7a51-4023-be61-d0abd6d72e37\",\"trace_id\":\"16b8fa3e-92b1-465e-82d4-642a2d14c7c5\"}\n[2026-05-07 12:55:05] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"c0dc8e25-7a51-4023-be61-d0abd6d72e37\",\"trace_id\":\"16b8fa3e-92b1-465e-82d4-642a2d14c7c5\"}\n[2026-05-07 12:55:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"1c65fdd1-1f79-435d-b469-add46ddafd63\",\"trace_id\":\"62f2a3bb-3be7-4c76-a9dd-222bfb895fab\"}\n[2026-05-07 12:55:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"1c65fdd1-1f79-435d-b469-add46ddafd63\",\"trace_id\":\"62f2a3bb-3be7-4c76-a9dd-222bfb895fab\"}\n[2026-05-07 12:55:11] local.NOTICE: Monitoring start {\"correlation_id\":\"f115f9bc-bb59-4fc9-8c9f-8b69baba1a55\",\"trace_id\":\"e75cb5c6-6dd8-4000-8d26-4418020c7cfe\"}\n[2026-05-07 12:55:11] local.NOTICE: Monitoring end {\"correlation_id\":\"f115f9bc-bb59-4fc9-8c9f-8b69baba1a55\",\"trace_id\":\"e75cb5c6-6dd8-4000-8d26-4418020c7cfe\"}\n[2026-05-07 12:55:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"dba5c474-4d40-44da-baf2-f8b30db9a2f5\",\"trace_id\":\"adb45622-1fb0-457c-bf20-8dcceab2d62a\"}\n[2026-05-07 12:55:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"dba5c474-4d40-44da-baf2-f8b30db9a2f5\",\"trace_id\":\"adb45622-1fb0-457c-bf20-8dcceab2d62a\"}\n[2026-05-07 12:55:16] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"22c96a8e-4424-4a1f-b349-206276eefe4c\",\"trace_id\":\"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c\"}\n[2026-05-07 12:55:16] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"22c96a8e-4424-4a1f-b349-206276eefe4c\",\"trace_id\":\"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c\"}\n[2026-05-07 12:55:16] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"22c96a8e-4424-4a1f-b349-206276eefe4c\",\"trace_id\":\"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c\"}\n[2026-05-07 12:55:16] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"22c96a8e-4424-4a1f-b349-206276eefe4c\",\"trace_id\":\"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c\"}\n[2026-05-07 12:55:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:purge-stale\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"5f958e8d-1d01-4144-abd6-2513e5524ad3\",\"trace_id\":\"828bc5b7-e2aa-4443-901f-38dd94bb7cc5\"}\n[2026-05-07 12:55:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:purge-stale\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"5f958e8d-1d01-4144-abd6-2513e5524ad3\",\"trace_id\":\"828bc5b7-e2aa-4443-901f-38dd94bb7cc5\"}\n[2026-05-07 12:55:22] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:text-relay:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"6bd1c9cb-cd9a-42a9-87fe-45cb7bac687a\",\"trace_id\":\"0f2f5d66-c4c9-46a5-a31b-6937663ce1ad\"}\n[2026-05-07 12:55:22] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:text-relay:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"6bd1c9cb-cd9a-42a9-87fe-45cb7bac687a\",\"trace_id\":\"0f2f5d66-c4c9-46a5-a31b-6937663ce1ad\"}\n[2026-05-07 12:55:24] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:pre-meeting-notification\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"c5dd8132-d7e1-4caa-84d1-0a50d02df8da\",\"trace_id\":\"bc7341c5-b8e2-48ea-9670-7ec375363180\"}\n[2026-05-07 12:55:24] local.INFO: Running pre-meeting notification command {\"correlation_id\":\"c5dd8132-d7e1-4caa-84d1-0a50d02df8da\",\"trace_id\":\"bc7341c5-b8e2-48ea-9670-7ec375363180\"}\n[2026-05-07 12:55:24] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:pre-meeting-notification\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"c5dd8132-d7e1-4caa-84d1-0a50d02df8da\",\"trace_id\":\"bc7341c5-b8e2-48ea-9670-7ec375363180\"}\n[2026-05-07 12:55:26] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:start\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0\",\"trace_id\":\"efb1619f-4185-4319-9bfb-305cee0b6bfc\"}\n[2026-05-07 12:55:26] local.INFO: Running conference:monitor:start command for activities in (2026-05-07 12:45:00, 2026-05-07 12:50:00] {\"correlation_id\":\"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0\",\"trace_id\":\"efb1619f-4185-4319-9bfb-305cee0b6bfc\"}\n[2026-05-07 12:55:26] local.INFO: [conference:monitor:start] No activities found in (2026-05-07 12:45:00, 2026-05-07 12:50:00] {\"correlation_id\":\"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0\",\"trace_id\":\"efb1619f-4185-4319-9bfb-305cee0b6bfc\"}\n[2026-05-07 12:55:26] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:start\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0\",\"trace_id\":\"efb1619f-4185-4319-9bfb-305cee0b6bfc\"}\n[2026-05-07 12:55:28] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:end\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"3792b31a-080a-4fe4-9823-5602361325ba\",\"trace_id\":\"41a2fde1-48f6-4667-84b7-a2f93e9ad2da\"}\n[2026-05-07 12:55:28] local.INFO: conference:monitor:end:Jiminny\\Console\\Commands\\Activities\\MonitorMeetingEndCommand::logActivitiesEnded {\"from\":\"12:50\",\"to\":\"12:55\"} {\"correlation_id\":\"3792b31a-080a-4fe4-9823-5602361325ba\",\"trace_id\":\"41a2fde1-48f6-4667-84b7-a2f93e9ad2da\"}\n[2026-05-07 12:55:28] local.INFO: conference:monitor:end:Jiminny\\Console\\Commands\\Activities\\MonitorMeetingEndCommand::logActivitiesWithUnfinishedSession {\"from\":\"02:45\",\"to\":\"02:50\"} {\"correlation_id\":\"3792b31a-080a-4fe4-9823-5602361325ba\",\"trace_id\":\"41a2fde1-48f6-4667-84b7-a2f93e9ad2da\"}\n[2026-05-07 12:55:28] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:end\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"3792b31a-080a-4fe4-9823-5602361325ba\",\"trace_id\":\"41a2fde1-48f6-4667-84b7-a2f93e9ad2da\"}\n[2026-05-07 12:55:30] local.NOTICE: Repairing HubSpot tokens start {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:30] local.INFO: Trying to refresh HubSpot token {\"account_id\":59,\"updated_at\":\"2025-10-03 09:32:05\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:30] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:30] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":59,\"provider\":\"hubspot\",\"refreshToken\":\"97b78f6e2cc49965c00c2492b602b02708b1392551e6b3f113fbaa48992af90b\",\"state\":\"full-refresh\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.ERROR: Failed to refresh HubSpot token {\"account_id\":59,\"updated_at\":\"2025-10-03 09:32:05\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.INFO: Trying to refresh HubSpot token {\"account_id\":306,\"updated_at\":\"2023-11-27 09:30:03\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":306,\"provider\":\"hubspot\",\"refreshToken\":\"6fa6aa8cc641d131231acc3470f5c03cb3b07b2e580fb18f8acb3b1dbb72549b\",\"state\":\"full-refresh\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.ERROR: Failed to refresh HubSpot token {\"account_id\":306,\"updated_at\":\"2023-11-27 09:30:03\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.INFO: Trying to refresh HubSpot token {\"account_id\":1372,\"updated_at\":\"2025-10-02 14:47:06\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1372,\"provider\":\"hubspot\",\"refreshToken\":\"9aa73948c761da29dce46c177cf9aee1fde483a44169ca38723f9f0597d7a8c4\",\"state\":\"full-refresh\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:32] local.ERROR: Failed to refresh HubSpot token {\"account_id\":1372,\"updated_at\":\"2025-10-02 14:47:06\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:32] local.NOTICE: Repairing HubSpot tokens end {\"total\":3,\"fixed\":0,\"failed\":3} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:40] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"crm:bullhorn:ping\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"5e676ae4-5d63-49d4-9001-559088adf06b\",\"trace_id\":\"2fcce073-dd68-4c99-b7c4-b9e03c20b8e4\"}\n[2026-05-07 12:55:40] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:pre-meeting-reminder\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"1f830896-8142-41d1-bfc9-4cbb9179ffda\",\"trace_id\":\"e348a096-7f37-4308-a6d8-66131e8be901\"}\n[2026-05-07 12:55:40] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"crm:bullhorn:ping\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"5e676ae4-5d63-49d4-9001-559088adf06b\",\"trace_id\":\"2fcce073-dd68-4c99-b7c4-b9e03c20b8e4\"}\n[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Command] Starting polling service {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Service starting {\"memory_limit\":\"256M\",\"max_execution_time\":\"0\",\"initial_memory_mb\":62.0} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Acquired polling lock {\"expires_at\":\"2026-05-07T12:57:40.609671Z\"} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:40] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:40] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:pre-meeting-reminder\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"1f830896-8142-41d1-bfc9-4cbb9179ffda\",\"trace_id\":\"e348a096-7f37-4308-a6d8-66131e8be901\"}\n[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:45] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:45] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:46] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:51] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:51] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:51] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:06] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:06] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:06] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"2d8b30b4-87aa-480f-9b9e-5a9c709b742a\",\"trace_id\":\"25b7be6c-1faf-430b-a724-a4ff28773a31\"}\n[2026-05-07 12:56:08] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"2d8b30b4-87aa-480f-9b9e-5a9c709b742a\",\"trace_id\":\"25b7be6c-1faf-430b-a724-a4ff28773a31\"}\n[2026-05-07 12:56:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"2d8b30b4-87aa-480f-9b9e-5a9c709b742a\",\"trace_id\":\"25b7be6c-1faf-430b-a724-a4ff28773a31\"}\n[2026-05-07 12:56:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"efd336d7-db4d-459e-b6e7-bf73454e955e\",\"trace_id\":\"0a82c3d5-0417-48c8-b88f-70ec33e2326a\"}\n[2026-05-07 12:56:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"efd336d7-db4d-459e-b6e7-bf73454e955e\",\"trace_id\":\"0a82c3d5-0417-48c8-b88f-70ec33e2326a\"}\n[2026-05-07 12:56:12] local.NOTICE: Monitoring start {\"correlation_id\":\"68481576-8ca6-4ee5-821b-07374702971d\",\"trace_id\":\"c73eac09-5d20-425f-9c22-bd6c65fc60c9\"}\n[2026-05-07 12:56:12] local.NOTICE: Monitoring end {\"correlation_id\":\"68481576-8ca6-4ee5-821b-07374702971d\",\"trace_id\":\"c73eac09-5d20-425f-9c22-bd6c65fc60c9\"}\n[2026-05-07 12:56:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"bd0cdc75-b5c2-4dbb-bc44-e36c96813d24\",\"trace_id\":\"f688cd98-c171-4e30-8c72-afc14f040861\"}\n[2026-05-07 12:56:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"bd0cdc75-b5c2-4dbb-bc44-e36c96813d24\",\"trace_id\":\"f688cd98-c171-4e30-8c72-afc14f040861\"}\n[2026-05-07 12:56:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"f01636a9-4059-4ab0-9ad2-b078d42cedbd\",\"trace_id\":\"fea938d8-aedc-40ec-b8c2-2f487e1ac808\"}\n[2026-05-07 12:56:20] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"f01636a9-4059-4ab0-9ad2-b078d42cedbd\",\"trace_id\":\"fea938d8-aedc-40ec-b8c2-2f487e1ac808\"}\n[2026-05-07 12:56:20] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"f01636a9-4059-4ab0-9ad2-b078d42cedbd\",\"trace_id\":\"fea938d8-aedc-40ec-b8c2-2f487e1ac808\"}\n[2026-05-07 12:56:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"f01636a9-4059-4ab0-9ad2-b078d42cedbd\",\"trace_id\":\"fea938d8-aedc-40ec-b8c2-2f487e1ac808\"}\n[2026-05-07 12:56:23] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"d4558901-264d-4238-8589-62a137bac1fd\",\"trace_id\":\"38e6b5dc-ebd6-46a7-8224-7374d4e58630\"}\n[2026-05-07 12:56:23] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:54:00, 2026-05-07 12:56:00] {\"correlation_id\":\"d4558901-264d-4238-8589-62a137bac1fd\",\"trace_id\":\"38e6b5dc-ebd6-46a7-8224-7374d4e58630\"}\n[2026-05-07 12:56:23] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:54:00, 2026-05-07 12:56:00] {\"correlation_id\":\"d4558901-264d-4238-8589-62a137bac1fd\",\"trace_id\":\"38e6b5dc-ebd6-46a7-8224-7374d4e58630\"}\n[2026-05-07 12:56:23] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"d4558901-264d-4238-8589-62a137bac1fd\",\"trace_id\":\"38e6b5dc-ebd6-46a7-8224-7374d4e58630\"}\n[2026-05-07 12:56:24] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"crm:sync-hubspot-objects\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"7bfaf9be-0ca1-4170-a0c9-83e0ed61881c\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:24] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"crm:sync-hubspot-objects\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"7bfaf9be-0ca1-4170-a0c9-83e0ed61881c\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:26] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:notify-not-logged\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"2541e0fa-1117-4863-9523-d723b5821a24\",\"trace_id\":\"d9600320-5133-4938-bdd1-2256dfdf8db4\"}\n[2026-05-07 12:56:26] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:notify-not-logged\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"2541e0fa-1117-4863-9523-d723b5821a24\",\"trace_id\":\"d9600320-5133-4938-bdd1-2256dfdf8db4\"}\n[2026-05-07 12:56:35] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"e444f776-37db-4c6d-b30e-20b01a089de7\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:36] local.INFO: [EmailSchedule] STARTING Inbox Sync {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"e444f776-37db-4c6d-b30e-20b01a089de7\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:36] local.INFO: [EmailSchedule] FINISHED Inbox Sync {\"host\":\"docker_lamp_1\",\"events\":2} {\"correlation_id\":\"e444f776-37db-4c6d-b30e-20b01a089de7\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:36] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"e444f776-37db-4c6d-b30e-20b01a089de7\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:36] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:36] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:36] local.INFO: [HubSpot Journal Auth] Requesting new client credentials token {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:37] local.INFO: [HubSpot Journal Auth] Successfully obtained new access token {\"expires_in\":1800,\"cached_for\":1500} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:37] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:37] local.WARNING: [HubSpot Journal Polling] Maximum empty results reached, stopping {\"empty_results\":5,\"max_empty_results\":5} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:37] local.WARNING: [HubSpot Journal Polling] Maximum empty results reached, stopping {\"empty_results\":5,\"max_empty_results\":5} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:37] local.INFO: [HubSpot Journal Polling] Service ending {\"runtime_seconds\":57,\"total_cycles\":5,\"files_downloaded\":0,\"empty_files\":0,\"other_portal_skipped\":0,\"total_events\":0,\"events_per_file\":0,\"avg_api_ms\":238.3,\"avg_download_ms\":0.0,\"avg_transform_ms\":0.0,\"avg_process_ms\":0.0,\"peak_memory_mb\":99.73} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:37] local.INFO: [HubSpot Journal Polling] Released polling lock {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:50] local.INFO: [Commands/AsyncUpdateEsEntities] Starting ES update worker {\"pid\":37119,\"workerId\":\"\",\"target\":\"activities\"} {\"correlation_id\":\"902cef33-4733-4b2a-9693-affb8645cecc\",\"trace_id\":\"4ffe2bb8-67c6-422a-a846-319973cc0259\"}\n[2026-05-07 12:56:50] local.INFO: [SyncHubspotObjects] Starting sync {\"team\":\"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4\",\"usage\":23195976,\"real_usage\":65011712,\"pid\":37113} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:50] local.INFO: [Sync Mailbox] Sync start {\"inbox_id\":59} {\"correlation_id\":\"20256b2c-2b69-48f6-bdd3-61d047eb0b0d\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:50] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:50] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:50] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:50] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1499,\"provider\":\"hubspot\",\"refreshToken\":\"96f94c623a404e02ebdbf07f1b75707bb6cdbf848cbf45d418baf608c41a8d86\",\"state\":\"connected\"} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:50] local.INFO: [Inbox service] Skipping METADATA SYNC for inbox 59 due to unauthorized access to the mailbox {\"correlation_id\":\"20256b2c-2b69-48f6-bdd3-61d047eb0b0d\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:50] local.INFO: [Sync Mailbox] Sync complete {\"inbox_id\":59} {\"correlation_id\":\"20256b2c-2b69-48f6-bdd3-61d047eb0b0d\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:50] local.INFO: [Sync Mailbox] Sync start {\"inbox_id\":212} {\"correlation_id\":\"b6c31853-3729-4780-a52b-ebcce17d41b9\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:50] local.INFO: [Inbox service] Skipping METADATA SYNC for inbox 212 due to unauthorized access to the mailbox {\"correlation_id\":\"b6c31853-3729-4780-a52b-ebcce17d41b9\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:50] local.INFO: [Sync Mailbox] Sync complete {\"inbox_id\":212} {\"correlation_id\":\"b6c31853-3729-4780-a52b-ebcce17d41b9\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:51] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:51] local.INFO: [SocialAccountObserver] Access token was modified, encrypting {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:51] local.INFO: [SocialAccountService] Token refreshed {\"socialAccountId\":1499,\"provider\":\"hubspot\",\"state\":\"connected\"} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:51] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":148,\"team_id\":2} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:51] local.INFO: [HubSpot] Syncing opportunities using strategy: lastModified {\"team\":2} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/deals/search\",\"total_requests\":0,\"total_records_fetched\":0,\"total_elapsed_seconds\":0.3,\"average_seconds_per_request\":0} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.INFO: [SyncHubspotObjects] Sync finished {\"team\":\"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4\",\"provider\":\"hubspot\",\"status\":\"completed\",\"duration_ms\":1854.64,\"usage\":24199288,\"real_usage\":65011712,\"pid\":37113} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.ERROR: Jiminny\\Services\\Crm\\Hubspot\\Pagination\\HubspotPaginationService::getPaginatedDataGenerator(): Return value must be of type Generator, none returned {\"exception\":\"[object] (TypeError(code: 0): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService::getPaginatedDataGenerator(): Return value must be of type Generator, none returned at /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php:82)\n[stacktrace]\n#0 /home/jiminny/app/Services/Crm/Hubspot/Client.php(194): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->getPaginatedDataGenerator(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), Array, 'deals', 0, 0, NULL)\n#1 /home/jiminny/app/Services/Crm/Hubspot/OpportunitySyncStrategy/HubspotSyncStrategyBase.php(55): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client->getPaginatedDataGenerator(Array, 'deals', 0, 0, NULL)\n#2 /home/jiminny/app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php(73): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\OpportunitySyncStrategy\\\\HubspotSyncStrategyBase->fetchOpportunities(Array, 0, NULL)\n#3 /home/jiminny/app/Jobs/Crm/SyncHubspotObjects.php(118): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service->syncOpportunities(Array)\n#4 /home/jiminny/app/Jobs/Crm/SyncHubspotObjects.php(86): Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects->syncHubspotCrmObjects(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service), Object(Illuminate\\\\Support\\\\Carbon))\n#5 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects->handle(Object(Jiminny\\\\Services\\\\ResolveTeamCrmConnection), Object(Illuminate\\\\Log\\\\LogManager), Object(Jiminny\\\\Repositories\\\\TeamRepository))\n#6 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#7 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#8 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#9 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#10 /home/jiminny/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(129): Illuminate\\\\Container\\\\Container->call(Array)\n#11 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\\\Bus\\\\Dispatcher->Illuminate\\\\Bus\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#12 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\\\\Pipeline\\\\Pipeline->Illuminate\\\\Pipeline\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#13 /home/jiminny/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(133): Illuminate\\\\Pipeline\\\\Pipeline->then(Object(Closure))\n#14 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(136): Illuminate\\\\Bus\\\\Dispatcher->dispatchNow(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects), false)\n#15 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\\\Queue\\\\CallQueuedHandler->Illuminate\\\\Queue\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#16 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\\\\Pipeline\\\\Pipeline->Illuminate\\\\Pipeline\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#17 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(129): Illuminate\\\\Pipeline\\\\Pipeline->then(Object(Closure))\n#18 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(70): Illuminate\\\\Queue\\\\CallQueuedHandler->dispatchThroughMiddleware(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#19 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Jobs/Job.php(102): Illuminate\\\\Queue\\\\CallQueuedHandler->call(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Array)\n#20 /home/jiminny/app/Queue/Worker/Worker.php(71): Illuminate\\\\Queue\\\\Jobs\\\\Job->fire()\n#21 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(435): Jiminny\\\\Queue\\\\Worker\\\\Worker->process('redis', Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#22 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(201): Illuminate\\\\Queue\\\\Worker->runJob(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), 'redis', Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#23 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(148): Illuminate\\\\Queue\\\\Worker->daemon('redis', 'crm-sync,crm-up...', Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#24 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(131): Illuminate\\\\Queue\\\\Console\\\\WorkCommand->runWorker('redis', 'crm-sync,crm-up...')\n#25 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Illuminate\\\\Queue\\\\Console\\\\WorkCommand->handle()\n#26 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#27 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#28 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#29 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#30 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(211): Illuminate\\\\Container\\\\Container->call(Array)\n#31 /home/jiminny/vendor/symfony/console/Command/Command.php(341): Illuminate\\\\Console\\\\Command->execute(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#32 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(180): Symfony\\\\Component\\\\Console\\\\Command\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#33 /home/jiminny/vendor/symfony/console/Application.php(1117): Illuminate\\\\Console\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#34 /home/jiminny/vendor/symfony/console/Application.php(356): Symfony\\\\Component\\\\Console\\\\Application->doRunCommand(Object(Illuminate\\\\Queue\\\\Console\\\\WorkCommand), Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#35 /home/jiminny/vendor/symfony/console/Application.php(195): Symfony\\\\Component\\\\Console\\\\Application->doRun(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#36 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(198): Symfony\\\\Component\\\\Console\\\\Application->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#37 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1235): Illuminate\\\\Foundation\\\\Console\\\\Kernel->handle(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#38 /home/jiminny/artisan(13): Illuminate\\\\Foundation\\\\Application->handleCommand(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput))\n#39 {main}\n\"} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.INFO: [SyncHubspotObjects] Starting sync {\"team\":\"b2d49a54-b645-4637-a7ae-a86cfce6e8e4\",\"usage\":25235152,\"real_usage\":65011712,\"pid\":37113} {\"correlation_id\":\"0d3cf2b0-a245-4a83-9bd5-1c5788b85738\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.WARNING: [HubSpot] Account not connected for user {\"userId\":\"2ac0447f-3c8c-4ce0-baeb-b63ddb76fa9b\",\"account\":null} {\"correlation_id\":\"0d3cf2b0-a245-4a83-9bd5-1c5788b85738\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {\"crm_provider\":\"hubspot\",\"crm_owner\":130,\"team_id\":42} {\"correlation_id\":\"0d3cf2b0-a245-4a83-9bd5-1c5788b85738\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":42} {\"correlation_id\":\"0d3cf2b0-a245-4a83-9bd5-1c5788b85738\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":42} {\"correlation_id\":\"0d3cf2b0-a245-4a83-9bd5-1c5788b85738\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.INFO: [SyncHubspotObjects] Sync finished {\"team\":\"b2d49a54-b645-4637-a7ae-a86cfce6e8e4\",\"provider\":\"hubspot\",\"status\":\"disconnected\",\"duration_ms\":70.53,\"usage\":25225384,\"real_usage\":65011712,\"pid\":37113,\"reason\":\"Social account for HubSpot cannot be found. Please login to Jiminny to connect.\"} {\"correlation_id\":\"0d3cf2b0-a245-4a83-9bd5-1c5788b85738\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Starting sync {\"team\":\"b2b115eb-93ce-4d1b-929c-173757df8fba\",\"usage\":25263936,\"real_usage\":65011712,\"pid\":37113} {\"correlation_id\":\"1e46be79-1db4-4829-b19c-1548141a94e0\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.WARNING: [HubSpot] Account not connected for user {\"userId\":\"33e34a7a-1c02-4f04-87ac-22c3a385e6e3\",\"account\":{\"Jiminny\\\\Models\\\\SocialAccount\":{\"id\":306,\"sociable_id\":109,\"provider_user_id\":\"11348452\",\"expires\":1701077403,\"refresh_token_expires\":null,\"provider\":\"hubspot\",\"state\":\"full-refresh\",\"auth_scope\":null,\"retry_after\":null,\"created_at\":\"2020-09-01 16:59:04\",\"updated_at\":\"2023-11-27 09:30:03\"}}} {\"correlation_id\":\"1e46be79-1db4-4829-b19c-1548141a94e0\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {\"crm_provider\":\"hubspot\",\"crm_owner\":109,\"team_id\":29} {\"correlation_id\":\"1e46be79-1db4-4829-b19c-1548141a94e0\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":29} {\"correlation_id\":\"1e46be79-1db4-4829-b19c-1548141a94e0\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":29} {\"correlation_id\":\"1e46be79-1db4-4829-b19c-1548141a94e0\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Sync finished {\"team\":\"b2b115eb-93ce-4d1b-929c-173757df8fba\",\"provider\":\"hubspot\",\"status\":\"disconnected\",\"duration_ms\":47.7,\"usage\":25451952,\"real_usage\":65011712,\"pid\":37113,\"reason\":\"Your HubSpot account has become disconnected. Please login to Jiminny to reconnect.\"} {\"correlation_id\":\"1e46be79-1db4-4829-b19c-1548141a94e0\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Starting sync {\"team\":\"c6b9d6b0-b48d-4832-a68c-a57d60651888\",\"usage\":25490320,\"real_usage\":65011712,\"pid\":37113} {\"correlation_id\":\"0da4e096-9534-4a72-bc1f-8e61561d8e37\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.WARNING: [HubSpot] Account not connected for user {\"userId\":\"71e3aac5-fb66-47c5-a236-2d051ae3e319\",\"account\":null} {\"correlation_id\":\"0da4e096-9534-4a72-bc1f-8e61561d8e37\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {\"crm_provider\":\"hubspot\",\"crm_owner\":256,\"team_id\":49} {\"correlation_id\":\"0da4e096-9534-4a72-bc1f-8e61561d8e37\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":49} {\"correlation_id\":\"0da4e096-9534-4a72-bc1f-8e61561d8e37\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":49} {\"correlation_id\":\"0da4e096-9534-4a72-bc1f-8e61561d8e37\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Sync finished {\"team\":\"c6b9d6b0-b48d-4832-a68c-a57d60651888\",\"provider\":\"hubspot\",\"status\":\"disconnected\",\"duration_ms\":44.12,\"usage\":25547952,\"real_usage\":65011712,\"pid\":37113,\"reason\":\"Social account for HubSpot cannot be found. Please login to Jiminny to connect.\"} {\"correlation_id\":\"0da4e096-9534-4a72-bc1f-8e61561d8e37\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Starting sync {\"team\":\"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4\",\"usage\":25587032,\"real_usage\":65011712,\"pid\":37113} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":148,\"team_id\":2} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [HubSpot] Syncing opportunities using strategy: lastModified {\"team\":2} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/deals/search\",\"total_requests\":0,\"total_records_fetched\":0,\"total_elapsed_seconds\":0.28,\"average_seconds_per_request\":0} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Sync finished {\"team\":\"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4\",\"provider\":\"hubspot\",\"status\":\"completed\",\"duration_ms\":412.19,\"usage\":25739960,\"real_usage\":65011712,\"pid\":37113} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.ERROR: Jiminny\\Services\\Crm\\Hubspot\\Pagination\\HubspotPaginationService::getPaginatedDataGenerator(): Return value must be of type Generator, none returned {\"exception\":\"[object] (TypeError(code: 0): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService::getPaginatedDataGenerator(): Return value must be of type Generator, none returned at /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php:82)\n[stacktrace]\n#0 /home/jiminny/app/Services/Crm/Hubspot/Client.php(194): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->getPaginatedDataGenerator(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), Array, 'deals', 0, 0, NULL)\n#1 /home/jiminny/app/Services/Crm/Hubspot/OpportunitySyncStrategy/HubspotSyncStrategyBase.php(55): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client->getPaginatedDataGenerator(Array, 'deals', 0, 0, NULL)\n#2 /home/jiminny/app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php(73): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\OpportunitySyncStrategy\\\\HubspotSyncStrategyBase->fetchOpportunities(Array, 0, NULL)\n#3 /home/jiminny/app/Jobs/Crm/SyncHubspotObjects.php(118): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service->syncOpportunities(Array)\n#4 /home/jiminny/app/Jobs/Crm/SyncHubspotObjects.php(86): Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects->syncHubspotCrmObjects(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service), Object(Illuminate\\\\Support\\\\Carbon))\n#5 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects->handle(Object(Jiminny\\\\Services\\\\ResolveTeamCrmConnection), Object(Illuminate\\\\Log\\\\LogManager), Object(Jiminny\\\\Repositories\\\\TeamRepository))\n#6 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#7 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#8 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#9 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#10 /home/jiminny/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(129): Illuminate\\\\Container\\\\Container->call(Array)\n#11 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\\\Bus\\\\Dispatcher->Illuminate\\\\Bus\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#12 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\\\\Pipeline\\\\Pipeline->Illuminate\\\\Pipeline\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#13 /home/jiminny/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(133): Illuminate\\\\Pipeline\\\\Pipeline->then(Object(Closure))\n#14 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(136): Illuminate\\\\Bus\\\\Dispatcher->dispatchNow(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects), false)\n#15 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\\\Queue\\\\CallQueuedHandler->Illuminate\\\\Queue\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#16 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\\\\Pipeline\\\\Pipeline->Illuminate\\\\Pipeline\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#17 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(129): Illuminate\\\\Pipeline\\\\Pipeline->then(Object(Closure))\n#18 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(70): Illuminate\\\\Queue\\\\CallQueuedHandler->dispatchThroughMiddleware(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#19 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Jobs/Job.php(102): Illuminate\\\\Queue\\\\CallQueuedHandler->call(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Array)\n#20 /home/jiminny/app/Queue/Worker/Worker.php(71): Illuminate\\\\Queue\\\\Jobs\\\\Job->fire()\n#21 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(435): Jiminny\\\\Queue\\\\Worker\\\\Worker->process('redis', Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#22 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(201): Illuminate\\\\Queue\\\\Worker->runJob(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), 'redis', Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#23 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(148): Illuminate\\\\Queue\\\\Worker->daemon('redis', 'crm-sync,crm-up...', Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#24 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(131): Illuminate\\\\Queue\\\\Console\\\\WorkCommand->runWorker('redis', 'crm-sync,crm-up...')\n#25 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Illuminate\\\\Queue\\\\Console\\\\WorkCommand->handle()\n#26 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#27 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#28 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#29 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#30 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(211): Illuminate\\\\Container\\\\Container->call(Array)\n#31 /home/jiminny/vendor/symfony/console/Command/Command.php(341): Illuminate\\\\Console\\\\Command->execute(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#32 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(180): Symfony\\\\Component\\\\Console\\\\Command\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#33 /home/jiminny/vendor/symfony/console/Application.php(1117): Illuminate\\\\Console\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#34 /home/jiminny/vendor/symfony/console/Application.php(356): Symfony\\\\Component\\\\Console\\\\Application->doRunCommand(Object(Illuminate\\\\Queue\\\\Console\\\\WorkCommand), Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#35 /home/jiminny/vendor/symfony/console/Application.php(195): Symfony\\\\Component\\\\Console\\\\Application->doRun(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#36 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(198): Symfony\\\\Component\\\\Console\\\\Application->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#37 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1235): Illuminate\\\\Foundation\\\\Console\\\\Kernel->handle(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#38 /home/jiminny/artisan(13): Illuminate\\\\Foundation\\\\Application->handleCommand(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput))\n#39 {main}\n\"} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Starting sync {\"team\":\"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4\",\"usage\":25172624,\"real_usage\":65011712,\"pid\":37113} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":148,\"team_id\":2} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [HubSpot] Syncing opportunities using strategy: lastModified {\"team\":2} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/deals/search\",\"total_requests\":0,\"total_records_fetched\":0,\"total_elapsed_seconds\":0.23,\"average_seconds_per_request\":0} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Sync finished {\"team\":\"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4\",\"provider\":\"hubspot\",\"status\":\"completed\",\"duration_ms\":291.83,\"usage\":25225088,\"real_usage\":65011712,\"pid\":37113} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:54] local.ERROR: Jiminny\\Services\\Crm\\Hubspot\\Pagination\\HubspotPaginationService::getPaginatedDataGenerator(): Return value must be of type Generator, none returned {\"exception\":\"[object] (TypeError(code: 0): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService::getPaginatedDataGenerator(): Return value must be of type Generator, none returned at /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php:82)\n[stacktrace]\n#0 /home/jiminny/app/Services/Crm/Hubspot/Client.php(194): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->getPaginatedDataGenerator(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), Array, 'deals', 0, 0, NULL)\n#1 /home/jiminny/app/Services/Crm/Hubspot/OpportunitySyncStrategy/HubspotSyncStrategyBase.php(55): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client->getPaginatedDataGenerator(Array, 'deals', 0, 0, NULL)\n#2 /home/jiminny/app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php(73): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\OpportunitySyncStrategy\\\\HubspotSyncStrategyBase->fetchOpportunities(Array, 0, NULL)\n#3 /home/jiminny/app/Jobs/Crm/SyncHubspotObjects.php(118): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service->syncOpportunities(Array)\n#4 /home/jiminny/app/Jobs/Crm/SyncHubspotObjects.php(86): Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects->syncHubspotCrmObjects(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service), Object(Illuminate\\\\Support\\\\Carbon))\n#5 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects->handle(Object(Jiminny\\\\Services\\\\ResolveTeamCrmConnection), Object(Illuminate\\\\Log\\\\LogManager), Object(Jiminny\\\\Repositories\\\\TeamRepository))\n#6 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#7 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#8 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#9 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#10 /home/jiminny/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(129): Illuminate\\\\Container\\\\Container->call(Array)\n#11 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\\\Bus\\\\Dispatcher->Illuminate\\\\Bus\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#12 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\\\\Pipeline\\\\Pipeline->Illuminate\\\\Pipeline\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#13 /home/jiminny/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(133): Illuminate\\\\Pipeline\\\\Pipeline->then(Object(Closure))\n#14 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(136): Illuminate\\\\Bus\\\\Dispatcher->dispatchNow(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects), false)\n#15 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\\\Queue\\\\CallQueuedHandler->Illuminate\\\\Queue\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#16 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\\\\Pipeline\\\\Pipeline->Illuminate\\\\Pipeline\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#17 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(129): Illuminate\\\\Pipeline\\\\Pipeline->then(Object(Closure))\n#18 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(70): Illuminate\\\\Queue\\\\CallQueuedHandler->dispatchThroughMiddleware(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#19 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Jobs/Job.php(102): Illuminate\\\\Queue\\\\CallQueuedHandler->call(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Array)\n#20 /home/jiminny/app/Queue/Worker/Worker.php(71): Illuminate\\\\Queue\\\\Jobs\\\\Job->fire()\n#21 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(435): Jiminny\\\\Queue\\\\Worker\\\\Worker->process('redis', Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#22 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(201): Illuminate\\\\Queue\\\\Worker->runJob(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), 'redis', Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#23 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(148): Illuminate\\\\Queue\\\\Worker->daemon('redis', 'crm-sync,crm-up...', Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#24 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(131): Illuminate\\\\Queue\\\\Console\\\\WorkCommand->runWorker('redis', 'crm-sync,crm-up...')\n#25 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Illuminate\\\\Queue\\\\Console\\\\WorkCommand->handle()\n#26 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#27 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#28 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#29 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#30 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(211): Illuminate\\\\Container\\\\Container->call(Array)\n#31 /home/jiminny/vendor/symfony/console/Command/Command.php(341): Illuminate\\\\Console\\\\Command->execute(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#32 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(180): Symfony\\\\Component\\\\Console\\\\Command\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#33 /home/jiminny/vendor/symfony/console/Application.php(1117): Illuminate\\\\Console\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#34 /home/jiminny/vendor/symfony/console/Application.php(356): Symfony\\\\Component\\\\Console\\\\Application->doRunCommand(Object(Illuminate\\\\Queue\\\\Console\\\\WorkCommand), Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#35 /home/jiminny/vendor/symfony/console/Application.php(195): Symfony\\\\Component\\\\Console\\\\Application->doRun(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#36 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(198): Symfony\\\\Component\\\\Console\\\\Application->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#37 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1235): Illuminate\\\\Foundation\\\\Console\\\\Kernel->handle(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#38 /home/jiminny/artisan(13): Illuminate\\\\Foundation\\\\Application->handleCommand(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput))\n#39 {main}\n\"} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:57:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"854299be-d77a-48bc-870c-b78333916d69\",\"trace_id\":\"89c1eb6c-bc78-419c-9304-b770093d5692\"}\n[2026-05-07 12:57:06] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"854299be-d77a-48bc-870c-b78333916d69\",\"trace_id\":\"89c1eb6c-bc78-419c-9304-b770093d5692\"}\n[2026-05-07 12:57:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"854299be-d77a-48bc-870c-b78333916d69\",\"trace_id\":\"89c1eb6c-bc78-419c-9304-b770093d5692\"}\n[2026-05-07 12:57:16] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"c4e512a3-a227-4569-bcd2-3258a9142d46\",\"trace_id\":\"016bf668-6712-4c0f-8c8c-c2e411a37889\"}\n[2026-05-07 12:57:16] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"c4e512a3-a227-4569-bcd2-3258a9142d46\",\"trace_id\":\"016bf668-6712-4c0f-8c8c-c2e411a37889\"}\n[2026-05-07 12:57:19] local.NOTICE: Monitoring start {\"correlation_id\":\"4c2d4775-716d-4ca6-b94d-cb17dace29a7\",\"trace_id\":\"e969e10d-e5f0-44c6-9767-97a70e05cfe5\"}\n[2026-05-07 12:57:19] local.NOTICE: Monitoring end {\"correlation_id\":\"4c2d4775-716d-4ca6-b94d-cb17dace29a7\",\"trace_id\":\"e969e10d-e5f0-44c6-9767-97a70e05cfe5\"}\n[2026-05-07 12:57:22] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"d03e9546-bfd0-44c6-84ee-299b1e6c14a2\",\"trace_id\":\"acbab6e5-17fc-4b11-907d-ff87322285d7\"}\n[2026-05-07 12:57:22] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"d03e9546-bfd0-44c6-84ee-299b1e6c14a2\",\"trace_id\":\"acbab6e5-17fc-4b11-907d-ff87322285d7\"}\n[2026-05-07 12:57:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"a2c0095a-18b2-427e-825b-c68c9dbf63a1\",\"trace_id\":\"9b170d6a-ed10-4a41-af79-684c99021967\"}\n[2026-05-07 12:57:25] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"a2c0095a-18b2-427e-825b-c68c9dbf63a1\",\"trace_id\":\"9b170d6a-ed10-4a41-af79-684c99021967\"}\n[2026-05-07 12:57:25] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"a2c0095a-18b2-427e-825b-c68c9dbf63a1\",\"trace_id\":\"9b170d6a-ed10-4a41-af79-684c99021967\"}\n[2026-05-07 12:57:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"a2c0095a-18b2-427e-825b-c68c9dbf63a1\",\"trace_id\":\"9b170d6a-ed10-4a41-af79-684c99021967\"}\n[2026-05-07 12:57:27] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:create\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"c4e70056-ceab-4c44-874a-8042963ce3ea\",\"trace_id\":\"011a70aa-ebb2-4ca8-aef6-4b4cca233da7\"}\n[2026-05-07 12:57:27] local.INFO: [EmailSchedule] STARTING batch create {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"c4e70056-ceab-4c44-874a-8042963ce3ea\",\"trace_id\":\"011a70aa-ebb2-4ca8-aef6-4b4cca233da7\"}\n[2026-05-07 12:57:27] local.INFO: [EmailSchedule] FINISHED batch create {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"c4e70056-ceab-4c44-874a-8042963ce3ea\",\"trace_id\":\"011a70aa-ebb2-4ca8-aef6-4b4cca233da7\"}\n[2026-05-07 12:57:27] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:create\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"c4e70056-ceab-4c44-874a-8042963ce3ea\",\"trace_id\":\"011a70aa-ebb2-4ca8-aef6-4b4cca233da7\"}\n[2026-05-07 12:57:28] local.INFO: [Jiminny\\Jobs\\Mailbox\\CreateBatches] processed 2 inboxes and created 0 batches {\"userId\":null,\"batchSize\":30,\"maxBatches\":1000} {\"correlation_id\":\"c296bf83-9f7c-4228-b6f5-99db6040fa01\",\"trace_id\":\"011a70aa-ebb2-4ca8-aef6-4b4cca233da7\"}\n[2026-05-07 12:58:06] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"a9e2de8b-b538-437e-bbe7-82636da81995\",\"trace_id\":\"e517ae80-e149-490c-b719-309e898b3c93\"}\n[2026-05-07 12:58:06] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"a9e2de8b-b538-437e-bbe7-82636da81995\",\"trace_id\":\"e517ae80-e149-490c-b719-309e898b3c93\"}\n[2026-05-07 12:58:06] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"a9e2de8b-b538-437e-bbe7-82636da81995\",\"trace_id\":\"e517ae80-e149-490c-b719-309e898b3c93\"}\n[2026-05-07 12:58:06] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":148,\"team_id\":2} {\"correlation_id\":\"a9e2de8b-b538-437e-bbe7-82636da81995\",\"trace_id\":\"e517ae80-e149-490c-b719-309e898b3c93\"}\n[2026-05-07 12:58:06] local.ERROR: Client error: `POST https://api.hubapi.com/crm/v3/objects/contact/search` resulted in a `429 Too Many Requests` response:\n{\"status\":\"error\",\"message\":\"You have reached your secondly limit.\",\"errorType\":\"RATE_LIMIT\",\"correlationId\":\"019e0284-5 (truncated...)\n {\"exception\":\"[object] (SevenShores\\\\Hubspot\\\\Exceptions\\\\BadRequest(code: 429): Client error: `POST https://api.hubapi.com/crm/v3/objects/contact/search` resulted in a `429 Too Many Requests` response:\n{\\\"status\\\":\\\"error\\\",\\\"message\\\":\\\"You have reached your secondly limit.\\\",\\\"errorType\\\":\\\"RATE_LIMIT\\\",\\\"correlationId\\\":\\\"019e0284-5 (truncated...)\n at /home/jiminny/vendor/hubspot/hubspot-php/src/Exceptions/HubspotException.php:24)\n[stacktrace]\n#0 /home/jiminny/vendor/hubspot/hubspot-php/src/Http/Client.php(125): SevenShores\\\\Hubspot\\\\Exceptions\\\\HubspotException::create(Object(GuzzleHttp\\\\Exception\\\\ClientException))\n#1 /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php(163): SevenShores\\\\Hubspot\\\\Http\\\\Client->request('POST', 'https://api.hub...', Array)\n#2 /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php(51): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->executeSearchRequest(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), 'https://api.hub...', Array, Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\PaginationState))\n#3 /home/jiminny/app/Services/Crm/Hubspot/Client.php(194): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->getPaginatedDataGenerator(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), Array, 'contact', 0, 0, NULL)\n#4 /home/jiminny/app/Services/Crm/Hubspot/Client.php(175): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client->getPaginatedDataGenerator(Array, 'contact', 0, 0, NULL)\n#5 /home/jiminny/app/Services/Crm/Hubspot/Service.php(1203): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client->getPaginatedData(Array, 'contact')\n#6 /home/jiminny/app/Console/Commands/JiminnyDebugCommand.php(353): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service->matchByName('Robot')\n#7 /home/jiminny/app/Console/Commands/JiminnyDebugCommand.php(44): Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand->rateLimit()\n#8 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand->handle(Object(Jiminny\\\\Jobs\\\\JobDispatcher), Object(Jiminny\\\\Services\\\\Kiosk\\\\AutomatedReports\\\\AutomatedReportsService), Object(Jiminny\\\\Repositories\\\\AutomatedReportsRepository), Object(Jiminny\\\\Services\\\\UserPilot\\\\UserPilotClient))\n#9 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#10 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#11 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#12 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#13 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(211): Illuminate\\\\Container\\\\Container->call(Array)\n#14 /home/jiminny/vendor/symfony/console/Command/Command.php(341): Illuminate\\\\Console\\\\Command->execute(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#15 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(180): Symfony\\\\Component\\\\Console\\\\Command\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#16 /home/jiminny/vendor/symfony/console/Application.php(1117): Illuminate\\\\Console\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#17 /home/jiminny/vendor/symfony/console/Application.php(356): Symfony\\\\Component\\\\Console\\\\Application->doRunCommand(Object(Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand), Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#18 /home/jiminny/vendor/symfony/console/Application.php(195): Symfony\\\\Component\\\\Console\\\\Application->doRun(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#19 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(198): Symfony\\\\Component\\\\Console\\\\Application->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#20 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1235): Illuminate\\\\Foundation\\\\Console\\\\Kernel->handle(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#21 /home/jiminny/artisan(13): Illuminate\\\\Foundation\\\\Application->handleCommand(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput))\n#22 {main}\n\n[previous exception] [object] (GuzzleHttp\\\\Exception\\\\ClientException(code: 429): Client error: `POST https://api.hubapi.com/crm/v3/objects/contact/search` resulted in a `429 Too Many Requests` response:\n{\\\"status\\\":\\\"error\\\",\\\"message\\\":\\\"You have reached your secondly limit.\\\",\\\"errorType\\\":\\\"RATE_LIMIT\\\",\\\"correlationId\\\":\\\"019e0284-5 (truncated...)\n at /home/jiminny/vendor/guzzlehttp/guzzle/src/Exception/RequestException.php:111)\n[stacktrace]\n#0 /home/jiminny/vendor/guzzlehttp/guzzle/src/Middleware.php(72): GuzzleHttp\\\\Exception\\\\RequestException::create(Object(GuzzleHttp\\\\Psr7\\\\Request), Object(GuzzleHttp\\\\Psr7\\\\Response), NULL, Array, NULL)\n#1 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(209): GuzzleHttp\\\\Middleware::GuzzleHttp\\\\{closure}(Object(GuzzleHttp\\\\Psr7\\\\Response))\n#2 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(158): GuzzleHttp\\\\Promise\\\\Promise::callHandler(1, Object(GuzzleHttp\\\\Psr7\\\\Response), NULL)\n#3 /home/jiminny/vendor/guzzlehttp/promises/src/TaskQueue.php(52): GuzzleHttp\\\\Promise\\\\Promise::GuzzleHttp\\\\Promise\\\\{closure}()\n#4 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(251): GuzzleHttp\\\\Promise\\\\TaskQueue->run(true)\n#5 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(227): GuzzleHttp\\\\Promise\\\\Promise->invokeWaitFn()\n#6 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(272): GuzzleHttp\\\\Promise\\\\Promise->waitIfPending()\n#7 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(229): GuzzleHttp\\\\Promise\\\\Promise->invokeWaitList()\n#8 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(69): GuzzleHttp\\\\Promise\\\\Promise->waitIfPending()\n#9 /home/jiminny/vendor/guzzlehttp/guzzle/src/Client.php(189): GuzzleHttp\\\\Promise\\\\Promise->wait()\n#10 /home/jiminny/vendor/hubspot/hubspot-php/src/Http/Client.php(113): GuzzleHttp\\\\Client->request('POST', 'https://api.hub...', Array)\n#11 /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php(163): SevenShores\\\\Hubspot\\\\Http\\\\Client->request('POST', 'https://api.hub...', Array)\n#12 /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php(51): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->executeSearchRequest(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), 'https://api.hub...', Array, Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\PaginationState))\n#13 /home/jiminny/app/Services/Crm/Hubspot/Client.php(194): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->getPaginatedDataGenerator(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), Array, 'contact', 0, 0, NULL)\n#14 /home/jiminny/app/Services/Crm/Hubspot/Client.php(175): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client->getPaginatedDataGenerator(Array, 'contact', 0, 0, NULL)\n#15 /home/jiminny/app/Services/Crm/Hubspot/Service.php(1203): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client->getPaginatedData(Array, 'contact')\n#16 /home/jiminny/app/Console/Commands/JiminnyDebugCommand.php(353): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service->matchByName('Robot')\n#17 /home/jiminny/app/Console/Commands/JiminnyDebugCommand.php(44): Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand->rateLimit()\n#18 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand->handle(Object(Jiminny\\\\Jobs\\\\JobDispatcher), Object(Jiminny\\\\Services\\\\Kiosk\\\\AutomatedReports\\\\AutomatedReportsService), Object(Jiminny\\\\Repositories\\\\AutomatedReportsRepository), Object(Jiminny\\\\Services\\\\UserPilot\\\\UserPilotClient))\n#19 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#20 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#21 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#22 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#23 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(211): Illuminate\\\\Container\\\\Container->call(Array)\n#24 /home/jiminny/vendor/symfony/console/Command/Command.php(341): Illuminate\\\\Console\\\\Command->execute(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#25 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(180): Symfony\\\\Component\\\\Console\\\\Command\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#26 /home/jiminny/vendor/symfony/console/Application.php(1117): Illuminate\\\\Console\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#27 /home/jiminny/vendor/symfony/console/Application.php(356): Symfony\\\\Component\\\\Console\\\\Application->doRunCommand(Object(Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand), Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#28 /home/jiminny/vendor/symfony/console/Application.php(195): Symfony\\\\Component\\\\Console\\\\Application->doRun(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#29 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(198): Symfony\\\\Component\\\\Console\\\\Application->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#30 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1235): Illuminate\\\\Foundation\\\\Console\\\\Kernel->handle(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#31 /home/jiminny/artisan(13): Illuminate\\\\Foundation\\\\Application->handleCommand(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput))\n#32 {main}\n\"} {\"correlation_id\":\"a9e2de8b-b538-437e-bbe7-82636da81995\",\"trace_id\":\"e517ae80-e149-490c-b719-309e898b3c93\"}\n[2026-05-07 12:58:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"fb59e309-d2cc-4fe0-9db2-544112c25477\",\"trace_id\":\"28ccdd4f-bf3a-4545-bc8a-d94188f8204f\"}\n[2026-05-07 12:58:10] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"fb59e309-d2cc-4fe0-9db2-544112c25477\",\"trace_id\":\"28ccdd4f-bf3a-4545-bc8a-d94188f8204f\"}\n[2026-05-07 12:58:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"fb59e309-d2cc-4fe0-9db2-544112c25477\",\"trace_id\":\"28ccdd4f-bf3a-4545-bc8a-d94188f8204f\"}\n[2026-05-07 12:58:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"bff14f9f-db1d-4b6c-bd92-ca810b31790a\",\"trace_id\":\"ed08145b-94b8-4585-8e81-0ad478d038dc\"}\n[2026-05-07 12:58:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"bff14f9f-db1d-4b6c-bd92-ca810b31790a\",\"trace_id\":\"ed08145b-94b8-4585-8e81-0ad478d038dc\"}\n[2026-05-07 12:58:16] local.NOTICE: Monitoring start {\"correlation_id\":\"54ed6493-c74e-4491-b2ff-9404528f1525\",\"trace_id\":\"9a1f78c0-6e74-482c-a091-8367df3d0f70\"}\n[2026-05-07 12:58:16] local.NOTICE: Monitoring end {\"correlation_id\":\"54ed6493-c74e-4491-b2ff-9404528f1525\",\"trace_id\":\"9a1f78c0-6e74-482c-a091-8367df3d0f70\"}\n[2026-05-07 12:58:24] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"7f141a32-060d-4123-bf20-8a8d7abc1482\",\"trace_id\":\"f7fdcb6b-932a-4f6b-ad95-f111628d6cf7\"}\n[2026-05-07 12:58:24] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"7f141a32-060d-4123-bf20-8a8d7abc1482\",\"trace_id\":\"f7fdcb6b-932a-4f6b-ad95-f111628d6cf7\"}\n[2026-05-07 12:58:36] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"f586fc15-711b-4199-8fdf-dcd2df95af0c\",\"trace_id\":\"828fb459-3b7f-4196-a690-12fc9ce99b1d\"}\n[2026-05-07 12:58:36] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"f586fc15-711b-4199-8fdf-dcd2df95af0c\",\"trace_id\":\"828fb459-3b7f-4196-a690-12fc9ce99b1d\"}\n[2026-05-07 12:58:37] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"f586fc15-711b-4199-8fdf-dcd2df95af0c\",\"trace_id\":\"828fb459-3b7f-4196-a690-12fc9ce99b1d\"}\n[2026-05-07 12:58:37] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"f586fc15-711b-4199-8fdf-dcd2df95af0c\",\"trace_id\":\"828fb459-3b7f-4196-a690-12fc9ce99b1d\"}\n[2026-05-07 12:58:40] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"01d4e25d-56d5-4c89-bc29-d873e21cc16f\",\"trace_id\":\"ee1fe1ac-362b-47c1-9db2-7915a30cf0f2\"}\n[2026-05-07 12:58:40] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:56:00, 2026-05-07 12:58:00] {\"correlation_id\":\"01d4e25d-56d5-4c89-bc29-d873e21cc16f\",\"trace_id\":\"ee1fe1ac-362b-47c1-9db2-7915a30cf0f2\"}\n[2026-05-07 12:58:40] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:56:00, 2026-05-07 12:58:00] {\"correlation_id\":\"01d4e25d-56d5-4c89-bc29-d873e21cc16f\",\"trace_id\":\"ee1fe1ac-362b-47c1-9db2-7915a30cf0f2\"}\n[2026-05-07 12:58:40] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"01d4e25d-56d5-4c89-bc29-d873e21cc16f\",\"trace_id\":\"ee1fe1ac-362b-47c1-9db2-7915a30cf0f2\"}\n[2026-05-07 12:58:48] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"924e149e-3462-4043-87da-00838220b970\",\"trace_id\":\"7d0922db-8131-4a52-a0c5-2a7a78df42e8\"}\n[2026-05-07 12:58:48] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"calendar:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:48] local.NOTICE: Calendar sync start {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:48] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"924e149e-3462-4043-87da-00838220b970\",\"trace_id\":\"7d0922db-8131-4a52-a0c5-2a7a78df42e8\"}\n[2026-05-07 12:58:49] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1393,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:49] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1393,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:49] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:49] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1393,\"provider\":\"google\",\"refreshToken\":\"5aa7e2d96b53201cd16fca5d2e4ef3ad03320971fc064781d18aee3ae7b99fbf\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1393,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Account has been deleted\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1393,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1387,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1387,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1387,\"provider\":\"google\",\"refreshToken\":\"8157ac6de94842937194009e9c50e459253600f799dacf6a40755ffdbeb5bba6\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1387,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Account has been deleted\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1387,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1348,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1348,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1348,\"provider\":\"google\",\"refreshToken\":\"9e7d13d3032d0cb1b79d8e95aef01383e8e91eb52ff8ee960c8a0b6b95cd8c73\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1348,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Bad Request\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1348,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1361,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1361,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1361,\"provider\":\"google\",\"refreshToken\":\"6c843da199c2b9907445329304fcc4ec5057a4ee748d8299641764395c08e1fd\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1361,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Account has been deleted\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1361,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1310,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1310,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1310,\"provider\":\"google\",\"refreshToken\":\"e34818922c2830a660813a63f6169a4a9a992ae2cccd7dc8dd7796cfdb470ef1\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1310,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Bad Request\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1310,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1333,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1333,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1333,\"provider\":\"google\",\"refreshToken\":\"6c902986546d8e8da1dc539b046cdc1d458f519acc972e5b5f1d6a1a295165e0\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1333,\"provider\":\"google\",\"responseBody\":{\"error\":\"unauthorized_client\",\"error_description\":\"Unauthorized\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1333,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1368,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1368,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1368,\"provider\":\"google\",\"refreshToken\":\"d2f128898ff8543bd16b69cfae37896ab85119b0f5ed2b431d739593bb600333\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1368,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Bad Request\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1368,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1365,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1365,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1365,\"provider\":\"google\",\"refreshToken\":\"7676e4a9afcd082b413248ab5ec6e487021fec6a9bdf315860a59cefad9caad8\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1365,\"provider\":\"google\",\"responseBody\":{\"error\":\"unauthorized_client\",\"error_description\":\"Unauthorized\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1365,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1364,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1364,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1364,\"provider\":\"google\",\"refreshToken\":\"dd5882ebce76e645292ce33ae74238abbb77c0a4ecc6a2bfe723cad82e72ba8e\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1364,\"provider\":\"google\",\"responseBody\":{\"error\":\"unauthorized_client\",\"error_description\":\"Unauthorized\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1364,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1370,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1370,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1370,\"provider\":\"office\",\"refreshToken\":\"b7ee8035306d0043cea6e00e7c4fe14f745e44074a1194db62a31cdf8b70af3e\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1370,\"provider\":\"office\",\"responseBody\":\"{\\\"error\\\":\\\"invalid_client\\\",\\\"error_description\\\":\\\"AADSTS7000215: Invalid client secret provided. Ensure the secret being sent in the request is the client secret value, not the client secret ID, for a secret added to app 'bbcbb2ef-6200-4fae-82bd-d81f5dd738da'. Trace ID: ef9bb388-453e-4744-a2e1-95e49ced1700 Correlation ID: 3b889c73-f943-4048-ba3b-63ac50581245 Timestamp: 2026-05-07 12:58:53Z\\\",\\\"error_codes\\\":[7000215],\\\"timestamp\\\":\\\"2026-05-07 12:58:53Z\\\",\\\"trace_id\\\":\\\"ef9bb388-453e-4744-a2e1-95e49ced1700\\\",\\\"correlation_id\\\":\\\"3b889c73-f943-4048-ba3b-63ac50581245\\\",\\\"error_uri\\\":\\\"https://login.microsoftonline.com/error?code=7000215\\\"}\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1370,\"provider\":\"office\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1202,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1202,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1202,\"provider\":\"office\",\"refreshToken\":\"b458799ccc29b21a6e2eb5260fdb63e49ccba21bf942a3973fb63799bd7f0afe\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1202,\"provider\":\"office\",\"responseBody\":\"{\\\"error\\\":\\\"invalid_client\\\",\\\"error_description\\\":\\\"AADSTS7000215: Invalid client secret provided. Ensure the secret being sent in the request is the client secret value, not the client secret ID, for a secret added to app 'bbcbb2ef-6200-4fae-82bd-d81f5dd738da'. Trace ID: 0b8181c0-c858-4d17-af69-c23b7f5a0a00 Correlation ID: 2ce9e931-f423-4048-b1d7-ae1910cd4834 Timestamp: 2026-05-07 12:58:54Z\\\",\\\"error_codes\\\":[7000215],\\\"timestamp\\\":\\\"2026-05-07 12:58:54Z\\\",\\\"trace_id\\\":\\\"0b8181c0-c858-4d17-af69-c23b7f5a0a00\\\",\\\"correlation_id\\\":\\\"2ce9e931-f423-4048-b1d7-ae1910cd4834\\\",\\\"error_uri\\\":\\\"https://login.microsoftonline.com/error?code=7000215\\\"}\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1202,\"provider\":\"office\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1502,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1502,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: Calendar sync job dispatched {\"calendar_id\":501} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1300,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1300,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1300,\"provider\":\"google\",\"refreshToken\":\"4b811db0725fd9602a95943519a7da935e2a5065da7d9ebfcb170752e3e1ddb8\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1300,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Account has been deleted\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1300,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1409,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1409,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1409,\"provider\":\"google\",\"refreshToken\":\"e2a3f2d06894894eed1ee87d9db1ace77d4d42ee6e1288a8940ad2c10333b0c4\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1409,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Bad Request\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1409,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1352,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1352,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1352,\"provider\":\"google\",\"refreshToken\":\"dd4b16b00fdc1216da6b717c02338c073636e29162826b2de6db3f064fc029eb\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1352,\"provider\":\"google\",\"responseBody\":{\"error\":\"unauthorized_client\",\"error_description\":\"Unauthorized\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1352,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1296,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1296,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1296,\"provider\":\"office\",\"refreshToken\":\"011ae723c9d800c674e0b4be76f49fc046dac7d501b66c59ef0d9549cfa56ae5\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1296,\"provider\":\"office\",\"responseBody\":\"{\\\"error\\\":\\\"invalid_client\\\",\\\"error_description\\\":\\\"AADSTS7000215: Invalid client secret provided. Ensure the secret being sent in the request is the client secret value, not the client secret ID, for a secret added to app 'bbcbb2ef-6200-4fae-82bd-d81f5dd738da'. Trace ID: 4f38b1ca-479e-445c-8db5-29366d0a0c00 Correlation ID: d0a4d623-1a23-4fcc-aebf-ccafeed44a92 Timestamp: 2026-05-07 12:58:56Z\\\",\\\"error_codes\\\":[7000215],\\\"timestamp\\\":\\\"2026-05-07 12:58:56Z\\\",\\\"trace_id\\\":\\\"4f38b1ca-479e-445c-8db5-29366d0a0c00\\\",\\\"correlation_id\\\":\\\"d0a4d623-1a23-4fcc-aebf-ccafeed44a92\\\",\\\"error_uri\\\":\\\"https://login.microsoftonline.com/error?code=7000215\\\"}\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1296,\"provider\":\"office\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":391,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":391,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":391,\"provider\":\"office\",\"refreshToken\":\"00045eebae0f39b34887c6d53f92ae78064f7145e1f4b67754aebd03cfb2d881\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1502,\"provider\":\"google\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1502,\"provider\":\"google\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [Calendar] Processing sync {\"calendarId\":\"a33076c1-8d97-431a-99f0-85c9524e118b\",\"from\":null,\"to\":null,\"delta\":\"CIiFh8TP44kDEIiFh8TP44kDGAUgkZvkzgIokZvkzgI=\",\"last_sync\":\"2024-12-09 07:12:53\",\"dateMode\":\"daily\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"integration-app\",\"crm_owner\":1695,\"team_id\":3143} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1502,\"provider\":\"google\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1502,\"provider\":\"google\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":391,\"provider\":\"office\",\"responseBody\":\"{\\\"error\\\":\\\"invalid_client\\\",\\\"error_description\\\":\\\"AADSTS7000215: Invalid client secret provided. Ensure the secret being sent in the request is the client secret value, not the client secret ID, for a secret added to app 'bbcbb2ef-6200-4fae-82bd-d81f5dd738da'. Trace ID: 1791a948-a974-424b-9246-7fedfa913b00 Correlation ID: b0e7bf62-d69e-49dd-b7c9-9550f0bd2aec Timestamp: 2026-05-07 12:58:56Z\\\",\\\"error_codes\\\":[7000215],\\\"timestamp\\\":\\\"2026-05-07 12:58:56Z\\\",\\\"trace_id\\\":\\\"1791a948-a974-424b-9246-7fedfa913b00\\\",\\\"correlation_id\\\":\\\"b0e7bf62-d69e-49dd-b7c9-9550f0bd2aec\\\",\\\"error_uri\\\":\\\"https://login.microsoftonline.com/error?code=7000215\\\"}\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":391,\"provider\":\"office\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1271,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1271,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1271,\"provider\":\"office\",\"refreshToken\":\"118cde2c06993147b07ccaec4cbcd5026a819dea6c71081166a492933e392afb\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [Google Calendar] Failed to watch channel for calendar {\"calendarId\":\"a33076c1-8d97-431a-99f0-85c9524e118b\",\"code\":400,\"reason\":\"{\n \\\"error\\\": {\n \\\"errors\\\": [\n {\n \\\"domain\\\": \\\"global\\\",\n \\\"reason\\\": \\\"push.webhookUrlNotHttps\\\",\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n ],\n \\\"code\\\": 400,\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n}\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.WARNING: [Calendar] Sync failed {\"calendarId\":\"a33076c1-8d97-431a-99f0-85c9524e118b\",\"code\":400,\"reason\":\"{\n \\\"error\\\": {\n \\\"errors\\\": [\n {\n \\\"domain\\\": \\\"global\\\",\n \\\"reason\\\": \\\"push.webhookUrlNotHttps\\\",\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n ],\n \\\"code\\\": 400,\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n}\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1271,\"provider\":\"office\",\"responseBody\":\"{\\\"error\\\":\\\"invalid_client\\\",\\\"error_description\\\":\\\"AADSTS7000215: Invalid client secret provided. Ensure the secret being sent in the request is the client secret value, not the client secret ID, for a secret added to app 'bbcbb2ef-6200-4fae-82bd-d81f5dd738da'. Trace ID: 2be27598-8820-475c-b6ca-a30513720c00 Correlation ID: d3ed2a98-4aa9-4a63-819b-d36fd20b8d62 Timestamp: 2026-05-07 12:58:57Z\\\",\\\"error_codes\\\":[7000215],\\\"timestamp\\\":\\\"2026-05-07 12:58:57Z\\\",\\\"trace_id\\\":\\\"2be27598-8820-475c-b6ca-a30513720c00\\\",\\\"correlation_id\\\":\\\"d3ed2a98-4aa9-4a63-819b-d36fd20b8d62\\\",\\\"error_uri\\\":\\\"https://login.microsoftonline.com/error?code=7000215\\\"}\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1271,\"provider\":\"office\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1351,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1351,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1351,\"provider\":\"google\",\"refreshToken\":\"4271d15b9e60a606439caddc68337f783e472c85b03dacff14d1b6dfded9051c\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1351,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Bad Request\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1351,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1366,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1366,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1366,\"provider\":\"google\",\"refreshToken\":\"ae21385059b2eebfd43f68aecd56eccd702a1aabb6598f1f7ab594ed8af491b4\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1366,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Bad Request\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1366,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1115,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1115,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: Calendar sync job dispatched {\"calendar_id\":378} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:58] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1421,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:58] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1421,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:58] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:58] local.INFO: Calendar sync job dispatched {\"calendar_id\":504} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:58] local.NOTICE: Calendar sync end {\"retrieved_calendars\":31,\"processed_calendars\":3} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:58] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"calendar:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1115,\"provider\":\"google\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1115,\"provider\":\"google\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [Calendar] Processing sync {\"calendarId\":\"2676cb6d-f86c-427e-bf78-591e388e3c1e\",\"from\":null,\"to\":null,\"delta\":\"CJ_x49O3jpIDEJ_x49O3jpIDGAUgw67KlwMow67KlwM=\",\"last_sync\":\"2026-01-19 07:48:40\",\"dateMode\":\"daily\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.WARNING: [Pipedrive] Account not connected for user {\"userId\":\"e6538737-e7b4-455f-a37a-3e79b665a220\",\"account\":{\"Jiminny\\\\Models\\\\SocialAccount\":{\"id\":1116,\"sociable_id\":241,\"provider_user_id\":\"19555731\",\"expires\":1775683749,\"refresh_token_expires\":null,\"provider\":\"pipedrive\",\"state\":\"full-refresh\",\"auth_scope\":\"base,deals:full,activities:full,contacts:full,search:read\",\"retry_after\":null,\"created_at\":\"2023-09-08 09:44:29\",\"updated_at\":\"2026-04-08 22:58:34\"}}} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {\"crm_provider\":\"pipedrive\",\"crm_owner\":241,\"team_id\":19} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {\"crm_provider\":\"pipedrive\",\"team_id\":19} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {\"crm_provider\":\"pipedrive\",\"team_id\":19} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.WARNING: [Calendar] CRM disconnected for user so events will not be matched {\"provider\":\"pipedrive\",\"user_id\":241,\"message\":\"Your Pipedrive account has become disconnected. Please login to Jiminny to reconnect.\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1115,\"provider\":\"google\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1115,\"provider\":\"google\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [Google Calendar] Failed to watch channel for calendar {\"calendarId\":\"2676cb6d-f86c-427e-bf78-591e388e3c1e\",\"code\":400,\"reason\":\"{\n \\\"error\\\": {\n \\\"errors\\\": [\n {\n \\\"domain\\\": \\\"global\\\",\n \\\"reason\\\": \\\"push.webhookUrlNotHttps\\\",\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n ],\n \\\"code\\\": 400,\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n}\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.WARNING: [Calendar] Sync failed {\"calendarId\":\"2676cb6d-f86c-427e-bf78-591e388e3c1e\",\"code\":400,\"reason\":\"{\n \\\"error\\\": {\n \\\"errors\\\": [\n {\n \\\"domain\\\": \\\"global\\\",\n \\\"reason\\\": \\\"push.webhookUrlNotHttps\\\",\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n ],\n \\\"code\\\": 400,\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n}\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1421,\"provider\":\"office\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1421,\"provider\":\"office\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [Calendar] Processing sync {\"calendarId\":\"9e8b1a2c-1a8f-42bd-b161-810fc0baf540\",\"from\":null,\"to\":null,\"delta\":\"R0usmcdvmMuZCBYV0hguCHhwR3crxfEuMI8zGlf-bMYpCFtdxXvSJWTlnqQvu_jjoOrOYL2VG9rZwFHCERHxGfGEK3CmQX6x8MJG3ZbBXGuVIS6C7u-doY5maMRdsfnrHIAEMJd4Bs_WMfMH4tDJ8j9aul7DHDEJaP7w0PoPPpcoxu4nEk4vk-MolJBEgkSrayEewuBs5JVItUX9lUY2tA.yO2roNQ4Vdm6hBgoutuphGchuzbvsk7aqt5wHfcyeFQ\",\"last_sync\":\"2026-05-06 15:58:35\",\"dateMode\":\"daily\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":89,\"team_id\":2} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [MS Office Calendar] Skipping delta sync for daily mode {\"calendarId\":\"9e8b1a2c-1a8f-42bd-b161-810fc0baf540\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:59:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"cb5f9d32-02db-4883-a5c9-a5b86c1a2fbb\",\"trace_id\":\"4fb8a9a0-53b1-414a-813d-a259b89f3203\"}\n[2026-05-07 12:59:06] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"cb5f9d32-02db-4883-a5c9-a5b86c1a2fbb\",\"trace_id\":\"4fb8a9a0-53b1-414a-813d-a259b89f3203\"}\n[2026-05-07 12:59:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"cb5f9d32-02db-4883-a5c9-a5b86c1a2fbb\",\"trace_id\":\"4fb8a9a0-53b1-414a-813d-a259b89f3203\"}\n[2026-05-07 12:59:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"64313a2b-3a92-4419-ae59-caabfc9e9731\",\"trace_id\":\"16443bac-2196-4257-88bc-59445729f276\"}\n[2026-05-07 12:59:09] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"64313a2b-3a92-4419-ae59-caabfc9e9731\",\"trace_id\":\"16443bac-2196-4257-88bc-59445729f276\"}\n[2026-05-07 12:59:11] local.NOTICE: Monitoring start {\"correlation_id\":\"7678c2ca-049f-44e4-acce-2e711f8d7d40\",\"trace_id\":\"54ef3d3c-f1ea-4a01-aed2-db19a6739a06\"}\n[2026-05-07 12:59:11] local.NOTICE: Monitoring end {\"correlation_id\":\"7678c2ca-049f-44e4-acce-2e711f8d7d40\",\"trace_id\":\"54ef3d3c-f1ea-4a01-aed2-db19a6739a06\"}\n[2026-05-07 12:59:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"44d7c1a1-dfc9-4401-9f63-ad8b5bff9942\",\"trace_id\":\"9f6f5f38-60f5-4869-bfd2-f366d52eaa00\"}\n[2026-05-07 12:59:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"44d7c1a1-dfc9-4401-9f63-ad8b5bff9942\",\"trace_id\":\"9f6f5f38-60f5-4869-bfd2-f366d52eaa00\"}\n[2026-05-07 12:59:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"f90f3b8c-5161-4963-a963-a40284567af1\",\"trace_id\":\"94731c50-8ce2-44ec-ace6-2d46fb00fdb1\"}\n[2026-05-07 12:59:15] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"f90f3b8c-5161-4963-a963-a40284567af1\",\"trace_id\":\"94731c50-8ce2-44ec-ace6-2d46fb00fdb1\"}\n[2026-05-07 12:59:15] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"f90f3b8c-5161-4963-a963-a40284567af1\",\"trace_id\":\"94731c50-8ce2-44ec-ace6-2d46fb00fdb1\"}\n[2026-05-07 12:59:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"f90f3b8c-5161-4963-a963-a40284567af1\",\"trace_id\":\"94731c50-8ce2-44ec-ace6-2d46fb00fdb1\"}\n[2026-05-07 13:00:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"6f98d5e3-0aa8-496e-853a-a77b7a8b74ec\",\"trace_id\":\"b63e8546-4347-49f0-ad1a-92f4e4504843\"}\n[2026-05-07 13:00:10] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"6f98d5e3-0aa8-496e-853a-a77b7a8b74ec\",\"trace_id\":\"b63e8546-4347-49f0-ad1a-92f4e4504843\"}\n[2026-05-07 13:00:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"6f98d5e3-0aa8-496e-853a-a77b7a8b74ec\",\"trace_id\":\"b63e8546-4347-49f0-ad1a-92f4e4504843\"}\n[2026-05-07 13:00:13] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"50260ccd-f119-47b0-baee-514de27801f2\",\"trace_id\":\"40e651df-62f6-4c3a-83ab-842112ec3ece\"}\n[2026-05-07 13:00:13] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"50260ccd-f119-47b0-baee-514de27801f2\",\"trace_id\":\"40e651df-62f6-4c3a-83ab-842112ec3ece\"}\n[2026-05-07 13:00:17] local.NOTICE: Monitoring start {\"correlation_id\":\"f6104856-aca3-4e7b-964e-bba66d730eb3\",\"trace_id\":\"98f34b7b-f715-49cb-8d3a-4e74c1118445\"}\n[2026-05-07 13:00:17] local.NOTICE: Monitoring end {\"correlation_id\":\"f6104856-aca3-4e7b-964e-bba66d730eb3\",\"trace_id\":\"98f34b7b-f715-49cb-8d3a-4e74c1118445\"}\n[2026-05-07 13:00:19] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"b4a9e9a2-968c-429b-8fa8-67dd59bb297f\",\"trace_id\":\"ed6a83d0-8edb-4392-8717-26d91ffde80b\"}\n[2026-05-07 13:00:19] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"b4a9e9a2-968c-429b-8fa8-67dd59bb297f\",\"trace_id\":\"ed6a83d0-8edb-4392-8717-26d91ffde80b\"}\n[2026-05-07 13:00:21] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"b11474b2-8b19-4a2f-89c3-621fde9d3b1f\",\"trace_id\":\"8018d825-0809-411b-9b2a-078e2da6bacb\"}\n[2026-05-07 13:00:21] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"b11474b2-8b19-4a2f-89c3-621fde9d3b1f\",\"trace_id\":\"8018d825-0809-411b-9b2a-078e2da6bacb\"}\n[2026-05-07 13:00:21] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"b11474b2-8b19-4a2f-89c3-621fde9d3b1f\",\"trace_id\":\"8018d825-0809-411b-9b2a-078e2da6bacb\"}\n[2026-05-07 13:00:21] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"b11474b2-8b19-4a2f-89c3-621fde9d3b1f\",\"trace_id\":\"8018d825-0809-411b-9b2a-078e2da6bacb\"}\n[2026-05-07 13:00:23] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"d3b79f58-f9c8-4063-ac7e-7a0445cd1111\",\"trace_id\":\"802cf505-95fb-4f92-8c1b-79aa3ac53084\"}\n[2026-05-07 13:00:23] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:58:00, 2026-05-07 13:00:00] {\"correlation_id\":\"d3b79f58-f9c8-4063-ac7e-7a0445cd1111\",\"trace_id\":\"802cf505-95fb-4f92-8c1b-79aa3ac53084\"}\n[2026-05-07 13:00:23] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:58:00, 2026-05-07 13:00:00] {\"correlation_id\":\"d3b79f58-f9c8-4063-ac7e-7a0445cd1111\",\"trace_id\":\"802cf505-95fb-4f92-8c1b-79aa3ac53084\"}\n[2026-05-07 13:00:23] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"d3b79f58-f9c8-4063-ac7e-7a0445cd1111\",\"trace_id\":\"802cf505-95fb-4f92-8c1b-79aa3ac53084\"}\n[2026-05-07 13:00:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:purge-stale\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"32bad9c1-861c-4a46-bece-585cc1170bfd\",\"trace_id\":\"0c20e20f-6a91-4346-9455-5cd1451c32a1\"}\n[2026-05-07 13:00:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:purge-stale\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"32bad9c1-861c-4a46-bece-585cc1170bfd\",\"trace_id\":\"0c20e20f-6a91-4346-9455-5cd1451c32a1\"}\n[2026-05-07 13:00:29] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:text-relay:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"c9d4f687-1643-431e-9377-2573a2e593fd\",\"trace_id\":\"02fab433-9c9a-49f7-b836-2b8a42551912\"}\n[2026-05-07 13:00:30] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:text-relay:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"c9d4f687-1643-431e-9377-2573a2e593fd\",\"trace_id\":\"02fab433-9c9a-49f7-b836-2b8a42551912\"}\n[2026-05-07 13:00:33] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:pre-meeting-notification\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"57870bb4-45e8-47d8-b192-21d3297d2208\",\"trace_id\":\"ba8e9eac-2dc9-4ed8-bbf1-4a35aedb9efb\"}\n[2026-05-07 13:00:33] local.INFO: Running pre-meeting notification command {\"correlation_id\":\"57870bb4-45e8-47d8-b192-21d3297d2208\",\"trace_id\":\"ba8e9eac-2dc9-4ed8-bbf1-4a35aedb9efb\"}\n[2026-05-07 13:00:33] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:pre-meeting-notification\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"57870bb4-45e8-47d8-b192-21d3297d2208\",\"trace_id\":\"ba8e9eac-2dc9-4ed8-bbf1-4a35aedb9efb\"}\n[2026-05-07 13:00:35] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:start\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"6aeb181b-8314-4d45-aff7-e378793b04d9\",\"trace_id\":\"8ffc66f1-af64-4a58-8ce8-481b3a299dbb\"}\n[2026-05-07 13:00:35] local.INFO: Running conference:monitor:start command for activities in (2026-05-07 12:50:00, 2026-05-07 12:55:00] {\"correlation_id\":\"6aeb181b-8314-4d45-aff7-e378793b04d9\",\"trace_id\":\"8ffc66f1-af64-4a58-8ce8-481b3a299dbb\"}\n[2026-05-07 13:00:35] local.INFO: [conference:monitor:start] No activities found in (2026-05-07 12:50:00, 2026-05-07 12:55:00] {\"correlation_id\":\"6aeb181b-8314-4d45-aff7-e378793b04d9\",\"trace_id\":\"8ffc66f1-af64-4a58-8ce8-481b3a299dbb\"}\n[2026-05-07 13:00:35] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:start\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"6aeb181b-8314-4d45-aff7-e378793b04d9\",\"trace_id\":\"8ffc66f1-af64-4a58-8ce8-481b3a299dbb\"}\n[2026-05-07 13:00:37] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:end\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"888d4f67-ad14-4457-b51d-2cf8b2d315f9\",\"trace_id\":\"eaf4b0b3-0414-4563-b227-ce9c6a2e5b7e\"}\n[2026-05-07 13:00:37] local.INFO: conference:monitor:end:Jiminny\\Console\\Commands\\Activities\\MonitorMeetingEndCommand::logActivitiesEnded {\"from\":\"12:55\",\"to\":\"13:00\"} {\"correlation_id\":\"888d4f67-ad14-4457-b51d-2cf8b2d315f9\",\"trace_id\":\"eaf4b0b3-0414-4563-b227-ce9c6a2e5b7e\"}\n[2026-05-07 13:00:37] local.INFO: conference:monitor:end:Jiminny\\Console\\Commands\\Activities\\MonitorMeetingEndCommand::logActivitiesWithUnfinishedSession {\"from\":\"02:50\",\"to\":\"02:55\"} {\"correlation_id\":\"888d4f67-ad14-4457-b51d-2cf8b2d315f9\",\"trace_id\":\"eaf4b0b3-0414-4563-b227-ce9c6a2e5b7e\"}\n[2026-05-07 13:00:37] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:end\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"888d4f67-ad14-4457-b51d-2cf8b2d315f9\",\"trace_id\":\"eaf4b0b3-0414-4563-b227-ce9c6a2e5b7e\"}\n[2026-05-07 13:00:39] local.NOTICE: Repairing HubSpot tokens start {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:39] local.INFO: Trying to refresh HubSpot token {\"account_id\":59,\"updated_at\":\"2025-10-03 09:32:05\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:39] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:39] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":59,\"provider\":\"hubspot\",\"refreshToken\":\"97b78f6e2cc49965c00c2492b602b02708b1392551e6b3f113fbaa48992af90b\",\"state\":\"full-refresh\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:39] local.ERROR: Failed to refresh HubSpot token {\"account_id\":59,\"updated_at\":\"2025-10-03 09:32:05\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:39] local.INFO: Trying to refresh HubSpot token {\"account_id\":306,\"updated_at\":\"2023-11-27 09:30:03\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:39] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:39] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":306,\"provider\":\"hubspot\",\"refreshToken\":\"6fa6aa8cc641d131231acc3470f5c03cb3b07b2e580fb18f8acb3b1dbb72549b\",\"state\":\"full-refresh\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:40] local.ERROR: Failed to refresh HubSpot token {\"account_id\":306,\"updated_at\":\"2023-11-27 09:30:03\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:40] local.INFO: Trying to refresh HubSpot token {\"account_id\":1372,\"updated_at\":\"2025-10-02 14:47:06\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:40] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:40] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1372,\"provider\":\"hubspot\",\"refreshToken\":\"9aa73948c761da29dce46c177cf9aee1fde483a44169ca38723f9f0597d7a8c4\",\"state\":\"full-refresh\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:40] local.ERROR: Failed to refresh HubSpot token {\"account_id\":1372,\"updated_at\":\"2025-10-02 14:47:06\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:40] local.NOTICE: Repairing HubSpot tokens end {\"total\":3,\"fixed\":0,\"failed\":3} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:45] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"jiminny:transcription:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"b619cc55-b4ef-4913-ab44-6bce51933f7e\",\"trace_id\":\"7cacb418-6e9c-410b-bf3a-15bdf1837908\"}\n[2026-05-07 13:00:45] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:pre-meeting-reminder\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"a765990f-ffe2-44e0-967f-816f5452ce69\",\"trace_id\":\"9aee0f3f-7668-455f-b207-181b58848478\"}\n[2026-05-07 13:00:45] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"jiminny:transcription:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"b619cc55-b4ef-4913-ab44-6bce51933f7e\",\"trace_id\":\"7cacb418-6e9c-410b-bf3a-15bdf1837908\"}\n[2026-05-07 13:00:45] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:45] local.INFO: [HubSpot Journal Command] Starting polling service {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:45] local.INFO: [HubSpot Journal Polling] Service starting {\"memory_limit\":\"256M\",\"max_execution_time\":\"0\",\"initial_memory_mb\":62.0} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:45] local.INFO: [HubSpot Journal Polling] Acquired polling lock {\"expires_at\":\"2026-05-07T13:02:45.724437Z\"} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:45] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:45] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:45] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:pre-meeting-reminder\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"a765990f-ffe2-44e0-967f-816f5452ce69\",\"trace_id\":\"9aee0f3f-7668-455f-b207-181b58848478\"}\n[2026-05-07 13:00:45] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:49] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"crm:reset-governor\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"055b4798-a759-4621-9e0b-652f8ee69ea1\",\"trace_id\":\"10911ef4-48d1-404a-9345-ecf0f5cb9977\"}\n[2026-05-07 13:00:49] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"crm:reset-governor\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"055b4798-a759-4621-9e0b-652f8ee69ea1\",\"trace_id\":\"10911ef4-48d1-404a-9345-ecf0f5cb9977\"}\n[2026-05-07 13:00:51] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:51] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:51] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:53] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:53] local.INFO: Dispatching activity sync job {\"import_id\":812331,\"provider\":\"twilio-flex\",\"team\":\"jiminny\"} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:53] local.INFO: Dispatching activity sync job {\"import_id\":812332,\"provider\":\"xant\",\"team\":\"jiminny\"} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:53] local.INFO: Dispatching activity sync job {\"import_id\":812333,\"provider\":\"apollo\",\"team\":\"jiminny\"} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:53] local.INFO: Dispatching activity sync job {\"import_id\":812334,\"provider\":\"groove\",\"team\":\"jiminny\"} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:53] local.INFO: Dispatching activity sync job {\"import_id\":812335,\"provider\":\"twilio-video\",\"team\":\"jiminny\"} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:53] local.INFO: Dispatching activity sync job {\"import_id\":812336,\"provider\":\"hubspot\",\"team\":\"hubspot\"} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:53] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.WARNING: [Salesforce] Account not connected for user {\"userId\":\"cdf8b554-d951-4758-bc2b-c1b85d1cd0b9\",\"account\":null} {\"correlation_id\":\"fb068e24-e135-4914-9973-94f1a0f5dae2\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {\"crm_provider\":\"salesforce\",\"crm_owner\":3,\"team_id\":1} {\"correlation_id\":\"fb068e24-e135-4914-9973-94f1a0f5dae2\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {\"crm_provider\":\"salesforce\",\"team_id\":1} {\"correlation_id\":\"fb068e24-e135-4914-9973-94f1a0f5dae2\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {\"crm_provider\":\"salesforce\",\"team_id\":1} {\"correlation_id\":\"fb068e24-e135-4914-9973-94f1a0f5dae2\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.ALERT: [SyncActivity] Failed {\"import_id\":812331,\"provider\":\"twilio-flex\",\"provider_id\":317,\"team\":\"jiminny\",\"team_id\":1,\"reason\":\"Social account for Salesforce cannot be found. Please login to Jiminny to connect.\",\"file\":\"/home/jiminny/app/Services/Crm/BaseService.php\",\"line\":646} {\"correlation_id\":\"fb068e24-e135-4914-9973-94f1a0f5dae2\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"fe9470d4-bc5a-4195-919d-e4908e439f7c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"fe9470d4-bc5a-4195-919d-e4908e439f7c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"fe9470d4-bc5a-4195-919d-e4908e439f7c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:56] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:56] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:56] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:56] local.ALERT: [SyncActivity] Failed {\"import_id\":812332,\"provider\":\"xant\",\"provider_id\":161,\"team\":\"jiminny\",\"team_id\":1,\"reason\":\"Activity Provider account not connected.\",\"file\":\"/home/jiminny/app/Services/Activity/ActivityProviderService.php\",\"line\":174} {\"correlation_id\":\"fe9470d4-bc5a-4195-919d-e4908e439f7c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:56] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"e3a8ef92-20c7-4698-a07d-1aa2c21ac82c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:56] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"e3a8ef92-20c7-4698-a07d-1aa2c21ac82c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:56] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"e3a8ef92-20c7-4698-a07d-1aa2c21ac82c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:56] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:fail-stalled\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"441dabbc-0c1f-4d49-871c-08f96adbed01\",\"trace_id\":\"13597461-50ff-4a40-a329-255430126395\"}\n[2026-05-07 13:00:56] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:fail-stalled\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"441dabbc-0c1f-4d49-871c-08f96adbed01\",\"trace_id\":\"13597461-50ff-4a40-a329-255430126395\"}\n[2026-05-07 13:00:57] local.ALERT: [SyncActivity] Failed {\"import_id\":812333,\"provider\":\"apollo\",\"provider_id\":441,\"team\":\"jiminny\",\"team_id\":1,\"reason\":\"Activity Provider account not connected.\",\"file\":\"/home/jiminny/app/Services/Activity/ActivityProviderService.php\",\"line\":174} {\"correlation_id\":\"e3a8ef92-20c7-4698-a07d-1aa2c21ac82c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:57] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"1a0b64ee-3927-48e6-8ae3-fda14f35babb\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:57] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"1a0b64ee-3927-48e6-8ae3-fda14f35babb\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:57] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"1a0b64ee-3927-48e6-8ae3-fda14f35babb\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:57] local.ALERT: [SyncActivity] Failed {\"import_id\":812334,\"provider\":\"groove\",\"provider_id\":228,\"team\":\"jiminny\",\"team_id\":1,\"reason\":\"Activity Provider account not connected.\",\"file\":\"/home/jiminny/app/Services/Activity/ActivityProviderService.php\",\"line\":174} {\"correlation_id\":\"1a0b64ee-3927-48e6-8ae3-fda14f35babb\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:57] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"5e6fecb1-9905-4ab2-a494-e6d8215430c0\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:57] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"5e6fecb1-9905-4ab2-a494-e6d8215430c0\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:57] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"5e6fecb1-9905-4ab2-a494-e6d8215430c0\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.ALERT: [SyncActivity] Failed {\"import_id\":812335,\"provider\":\"twilio-video\",\"provider_id\":243,\"team\":\"jiminny\",\"team_id\":1,\"reason\":\"Activity Provider account not connected.\",\"file\":\"/home/jiminny/app/Services/Activity/ActivityProviderService.php\",\"line\":174} {\"correlation_id\":\"5e6fecb1-9905-4ab2-a494-e6d8215430c0\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":89,\"team_id\":2} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":408,\"provider\":\"hubspot\"} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":408,\"provider\":\"hubspot\"} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [SyncActivity] Start {\"import_id\":812336,\"provider\":\"hubspot\",\"provider_id\":31,\"team\":\"hubspot\",\"team_id\":2} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [HubSpot] Search calls for period {\"from\":\"2026-05-07 12:44:00\",\"to\":\"2026-05-07 13:00:00\"} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [SyncActivity] End {\"import_id\":812336,\"provider\":\"hubspot\",\"provider_id\":31,\"team\":\"hubspot\",\"team_id\":2} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [SyncActivity] Memory usage {\"import_id\":812336,\"provider\":\"hubspot\",\"provider_id\":31,\"team\":\"hubspot\",\"team_id\":2,\"memory_usage\":27230632,\"memory_real_usage\":67108864,\"pid\":37116} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:59] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"jiminny:transcription:retry-stuck\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"1db560c5-5d8c-419a-bfb0-e761473ecf44\",\"trace_id\":\"79eb494e-fd21-4171-b59d-d7d47358f1fb\"}\n[2026-05-07 13:00:59] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"jiminny:transcription:retry-stuck\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"1db560c5-5d8c-419a-bfb0-e761473ecf44\",\"trace_id\":\"79eb494e-fd21-4171-b59d-d7d47358f1fb\"}\n[2026-05-07 13:01:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"73c0e9d6-7ef5-4040-8e35-0a9bb4028abf\",\"trace_id\":\"55b51c26-06b9-4b59-b444-53017b805b30\"}\n[2026-05-07 13:01:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"73c0e9d6-7ef5-4040-8e35-0a9bb4028abf\",\"trace_id\":\"55b51c26-06b9-4b59-b444-53017b805b30\"}\n[2026-05-07 13:01:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"5a7e717c-f314-4601-b1b8-fd550703f463\",\"trace_id\":\"a64281e5-027f-4856-a3e3-4f176c58eb6e\"}\n[2026-05-07 13:01:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"5a7e717c-f314-4601-b1b8-fd550703f463\",\"trace_id\":\"a64281e5-027f-4856-a3e3-4f176c58eb6e\"}\n[2026-05-07 13:01:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"0c425954-2696-4890-97b7-219ccc38cf46\",\"trace_id\":\"d609b364-f3b6-4b85-babb-67caf96efdb1\"}\n[2026-05-07 13:01:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"0c425954-2696-4890-97b7-219ccc38cf46\",\"trace_id\":\"d609b364-f3b6-4b85-babb-67caf96efdb1\"}\n[2026-05-07 13:01:11] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:11] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:11] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"a6bad97b-3db2-4dd6-839f-fcd485f06e65\",\"trace_id\":\"dcdde4a9-962c-46d1-9386-42adb54efbbf\"}\n[2026-05-07 13:01:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"a6bad97b-3db2-4dd6-839f-fcd485f06e65\",\"trace_id\":\"dcdde4a9-962c-46d1-9386-42adb54efbbf\"}\n[2026-05-07 13:01:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"2893478e-8c43-4719-a2e8-7c9c0e0783e9\",\"trace_id\":\"3fc8f1f0-0727-42f1-8ee6-f2b32bd8834b\"}\n[2026-05-07 13:01:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"2893478e-8c43-4719-a2e8-7c9c0e0783e9\",\"trace_id\":\"3fc8f1f0-0727-42f1-8ee6-f2b32bd8834b\"}\n[2026-05-07 13:01:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"64f52ca1-b54e-46da-a760-73dbdf407eaf\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:17] local.INFO: Dispatching activity sync job {\"import_id\":812337,\"provider\":\"hubspot\",\"team\":\"hubspot\"} {\"correlation_id\":\"64f52ca1-b54e-46da-a760-73dbdf407eaf\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"64f52ca1-b54e-46da-a760-73dbdf407eaf\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"crm:bullhorn:ping\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"3c44e0a7-ec5d-4206-a925-69f6e0783c2a\",\"trace_id\":\"60cf7a36-37ca-4ac4-a632-f317578d908f\"}\n[2026-05-07 13:01:19] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"crm:bullhorn:ping\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"3c44e0a7-ec5d-4206-a925-69f6e0783c2a\",\"trace_id\":\"60cf7a36-37ca-4ac4-a632-f317578d908f\"}\n[2026-05-07 13:01:19] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":89,\"team_id\":2} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":408,\"provider\":\"hubspot\"} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":408,\"provider\":\"hubspot\"} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [SyncActivity] Start {\"import_id\":812337,\"provider\":\"hubspot\",\"provider_id\":31,\"team\":\"hubspot\",\"team_id\":2} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [HubSpot] Search calls for period {\"from\":\"2026-05-07 12:00:00\",\"to\":\"2026-05-07 13:00:00\"} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:20] local.INFO: [SyncActivity] End {\"import_id\":812337,\"provider\":\"hubspot\",\"provider_id\":31,\"team\":\"hubspot\",\"team_id\":2} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:20] local.INFO: [SyncActivity] Memory usage {\"import_id\":812337,\"provider\":\"hubspot\",\"provider_id\":31,\"team\":\"hubspot\",\"team_id\":2,\"memory_usage\":27392888,\"memory_real_usage\":67108864,\"pid\":37116} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:21] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"nudges:send\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"55ebbc10-80bf-4724-ac64-678f6ef891cc\",\"trace_id\":\"f5392dc4-b352-4cae-b82a-004f77bbaf26\"}\n[2026-05-07 13:01:21] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"nudges:send\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"55ebbc10-80bf-4724-ac64-678f6ef891cc\",\"trace_id\":\"f5392dc4-b352-4cae-b82a-004f77bbaf26\"}\n[2026-05-07 13:01:23] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"jiminny:playlists:normalize-sort\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"9e29cfb5-b7fc-41bc-a9fd-a160d2253806\",\"trace_id\":\"3e180d83-299d-4c6c-bdda-d5a8ac156efc\"}\n[2026-05-07 13:01:23] local.INFO: [Jiminny\\Component\\Playlist\\Command\\NormalizeSortCommand::handle] starting. {\"playlists\":[]} {\"correlation_id\":\"9e29cfb5-b7fc-41bc-a9fd-a160d2253806\",\"trace_id\":\"3e180d83-299d-4c6c-bdda-d5a8ac156efc\"}\n[2026-05-07 13:01:23] local.INFO: [Jiminny\\Component\\Playlist\\Command\\NormalizeSortCommand::handle] finished. {\"normalizedPlaylists\":[],\"deletedPlaylists\":[]} {\"correlation_id\":\"9e29cfb5-b7fc-41bc-a9fd-a160d2253806\",\"trace_id\":\"3e180d83-299d-4c6c-bdda-d5a8ac156efc\"}\n[2026-05-07 13:01:23] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"jiminny:playlists:normalize-sort\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"9e29cfb5-b7fc-41bc-a9fd-a160d2253806\",\"trace_id\":\"3e180d83-299d-4c6c-bdda-d5a8ac156efc\"}\n[2026-05-07 13:01:41] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:41] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:41] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:41] local.WARNING: [HubSpot Journal Polling] Maximum empty results reached, stopping {\"empty_results\":5,\"max_empty_results\":5} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:41] local.WARNING: [HubSpot Journal Polling] Maximum empty results reached, stopping {\"empty_results\":5,\"max_empty_results\":5} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:41] local.INFO: [HubSpot Journal Polling] Service ending {\"runtime_seconds\":56,\"total_cycles\":5,\"files_downloaded\":0,\"empty_files\":0,\"other_portal_skipped\":0,\"total_events\":0,\"events_per_file\":0,\"avg_api_ms\":181.3,\"avg_download_ms\":0.0,\"avg_transform_ms\":0.0,\"avg_process_ms\":0.0,\"peak_memory_mb\":99.73} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:41] local.INFO: [HubSpot Journal Polling] Released polling lock {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:02:05] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"fe3480ce-754b-4304-b661-e4ac7234a778\",\"trace_id\":\"619e9c15-f95f-47ce-af85-6d78a6698327\"}\n[2026-05-07 13:02:05] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"fe3480ce-754b-4304-b661-e4ac7234a778\",\"trace_id\":\"619e9c15-f95f-47ce-af85-6d78a6698327\"}\n[2026-05-07 13:02:05] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"fe3480ce-754b-4304-b661-e4ac7234a778\",\"trace_id\":\"619e9c15-f95f-47ce-af85-6d78a6698327\"}\n[2026-05-07 13:02:07] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"aa98bf14-5737-4097-9f53-ac6833fb7983\",\"trace_id\":\"2f858b11-1073-43d4-996a-57e259ec2795\"}\n[2026-05-07 13:02:07] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"aa98bf14-5737-4097-9f53-ac6833fb7983\",\"trace_id\":\"2f858b11-1073-43d4-996a-57e259ec2795\"}\n[2026-05-07 13:02:08] local.NOTICE: Monitoring start {\"correlation_id\":\"25c588be-ddd6-41f1-8db8-ae28f3dd5bf5\",\"trace_id\":\"58b4c110-21ab-4c22-be4f-5be3534cd17d\"}\n[2026-05-07 13:02:08] local.NOTICE: Monitoring end {\"correlation_id\":\"25c588be-ddd6-41f1-8db8-ae28f3dd5bf5\",\"trace_id\":\"58b4c110-21ab-4c22-be4f-5be3534cd17d\"}\n[2026-05-07 13:02:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"5e453d7a-4daf-4001-b100-6aa9485d0353\",\"trace_id\":\"d97e1107-3696-4acf-95db-9cc7f37412e1\"}\n[2026-05-07 13:02:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"5e453d7a-4daf-4001-b100-6aa9485d0353\",\"trace_id\":\"d97e1107-3696-4acf-95db-9cc7f37412e1\"}\n[2026-05-07 13:02:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"3fab4dfb-f0ae-4c2c-a882-e09a1ad3ee9b\",\"trace_id\":\"3a66f9c4-3f01-40e2-aee2-e77fdabe793f\"}\n[2026-05-07 13:02:12] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"3fab4dfb-f0ae-4c2c-a882-e09a1ad3ee9b\",\"trace_id\":\"3a66f9c4-3f01-40e2-aee2-e77fdabe793f\"}\n[2026-05-07 13:02:12] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"3fab4dfb-f0ae-4c2c-a882-e09a1ad3ee9b\",\"trace_id\":\"3a66f9c4-3f01-40e2-aee2-e77fdabe793f\"}\n[2026-05-07 13:02:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"3fab4dfb-f0ae-4c2c-a882-e09a1ad3ee9b\",\"trace_id\":\"3a66f9c4-3f01-40e2-aee2-e77fdabe793f\"}\n[2026-05-07 13:02:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"63252e6d-894f-4cb9-818a-0034bf3545cb\",\"trace_id\":\"7ddf2e72-9174-4623-a622-1a5c9ee952c5\"}\n[2026-05-07 13:02:15] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 13:00:00, 2026-05-07 13:02:00] {\"correlation_id\":\"63252e6d-894f-4cb9-818a-0034bf3545cb\",\"trace_id\":\"7ddf2e72-9174-4623-a622-1a5c9ee952c5\"}\n[2026-05-07 13:02:15] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 13:00:00, 2026-05-07 13:02:00] {\"correlation_id\":\"63252e6d-894f-4cb9-818a-0034bf3545cb\",\"trace_id\":\"7ddf2e72-9174-4623-a622-1a5c9ee952c5\"}\n[2026-05-07 13:02:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"63252e6d-894f-4cb9-818a-0034bf3545cb\",\"trace_id\":\"7ddf2e72-9174-4623-a622-1a5c9ee952c5\"}\n[2026-05-07 13:02:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:create\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"cf65b2c4-c602-432d-8087-d0c0fb7f8e80\",\"trace_id\":\"b7b39317-045c-4475-879e-3d399e23fc3e\"}\n[2026-05-07 13:02:17] local.INFO: [EmailSchedule] STARTING batch create {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"cf65b2c4-c602-432d-8087-d0c0fb7f8e80\",\"trace_id\":\"b7b39317-045c-4475-879e-3d399e23fc3e\"}\n[2026-05-07 13:02:17] local.INFO: [EmailSchedule] FINISHED batch create {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"cf65b2c4-c602-432d-8087-d0c0fb7f8e80\",\"trace_id\":\"b7b39317-045c-4475-879e-3d399e23fc3e\"}\n[2026-05-07 13:02:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:create\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"cf65b2c4-c602-432d-8087-d0c0fb7f8e80\",\"trace_id\":\"b7b39317-045c-4475-879e-3d399e23fc3e\"}\n[2026-05-07 13:02:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"c481124d-04ae-43fb-b1d3-a4282f7af7ff\",\"trace_id\":\"d2d083d1-7cee-4d21-b80e-4485361d9969\"}\n[2026-05-07 13:02:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"c481124d-04ae-43fb-b1d3-a4282f7af7ff\",\"trace_id\":\"d2d083d1-7cee-4d21-b80e-4485361d9969\"}\n[2026-05-07 13:02:20] local.INFO: [Jiminny\\Jobs\\Mailbox\\CreateBatches] processed 2 inboxes and created 0 batches {\"userId\":null,\"batchSize\":30,\"maxBatches\":1000} {\"correlation_id\":\"3e2ef780-0c9d-4c30-9dc9-92315055c632\",\"trace_id\":\"b7b39317-045c-4475-879e-3d399e23fc3e\"}\n[2026-05-07 13:03:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"8cb6c7bf-4a2d-4960-bf8f-0368643fec27\",\"trace_id\":\"68c67cd4-9b92-4e41-bc1e-ebb282ea5211\"}\n[2026-05-07 13:03:06] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"8cb6c7bf-4a2d-4960-bf8f-0368643fec27\",\"trace_id\":\"68c67cd4-9b92-4e41-bc1e-ebb282ea5211\"}\n[2026-05-07 13:03:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"8cb6c7bf-4a2d-4960-bf8f-0368643fec27\",\"trace_id\":\"68c67cd4-9b92-4e41-bc1e-ebb282ea5211\"}\n[2026-05-07 13:03:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"b18dc815-6c91-43df-b083-125316724586\",\"trace_id\":\"62a636e8-4128-49eb-b99b-15efcfb37267\"}\n[2026-05-07 13:03:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"b18dc815-6c91-43df-b083-125316724586\",\"trace_id\":\"62a636e8-4128-49eb-b99b-15efcfb37267\"}\n[2026-05-07 13:03:10] local.NOTICE: Monitoring start {\"correlation_id\":\"d74c3e14-fd1a-4cab-9892-e9e924af1144\",\"trace_id\":\"29547049-25f5-4b62-a603-276e1de3dde8\"}\n[2026-05-07 13:03:10] local.NOTICE: Monitoring end {\"correlation_id\":\"d74c3e14-fd1a-4cab-9892-e9e924af1144\",\"trace_id\":\"29547049-25f5-4b62-a603-276e1de3dde8\"}\n[2026-05-07 13:03:13] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"bd7a8c2f-3f0b-48e9-86c2-0f01f2cfd9e8\",\"trace_id\":\"a3d1ecb5-4122-43c1-98ca-5d74c3dc989c\"}\n[2026-05-07 13:03:13] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"bd7a8c2f-3f0b-48e9-86c2-0f01f2cfd9e8\",\"trace_id\":\"a3d1ecb5-4122-43c1-98ca-5d74c3dc989c\"}\n[2026-05-07 13:03:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"4b20eb61-2970-4a63-8ee0-b392f7406a78\",\"trace_id\":\"892c9d93-c280-4b3f-a97a-bf1266f5c090\"}\n[2026-05-07 13:03:14] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"4b20eb61-2970-4a63-8ee0-b392f7406a78\",\"trace_id\":\"892c9d93-c280-4b3f-a97a-bf1266f5c090\"}\n[2026-05-07 13:03:14] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"4b20eb61-2970-4a63-8ee0-b392f7406a78\",\"trace_id\":\"892c9d93-c280-4b3f-a97a-bf1266f5c090\"}\n[2026-05-07 13:03:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"4b20eb61-2970-4a63-8ee0-b392f7406a78\",\"trace_id\":\"892c9d93-c280-4b3f-a97a-bf1266f5c090\"}\n[2026-05-07 13:03:18] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"6a165ea3-f101-4ac9-bfcc-e7ad618ac645\",\"trace_id\":\"383367e5-a337-4793-be1c-a88a2a6fa2e5\"}\n[2026-05-07 13:03:18] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"6a165ea3-f101-4ac9-bfcc-e7ad618ac645\",\"trace_id\":\"383367e5-a337-4793-be1c-a88a2a6fa2e5\"}","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.042220745,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2","depth":4,"bounds":{"left":0.3487367,"top":0.2490024,"width":0.007978723,"height":0.015163607},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"68","depth":4,"bounds":{"left":0.3587101,"top":0.2490024,"width":0.010305851,"height":0.015163607},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"2","depth":4,"bounds":{"left":0.37101063,"top":0.2490024,"width":0.007978723,"height":0.015163607},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"bounds":{"left":0.3806516,"top":0.24740623,"width":0.00731383,"height":0.018355945},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Highlighted Error","depth":4,"bounds":{"left":0.3879654,"top":0.24740623,"width":0.006981383,"height":0.018355945},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Services\\Crm\\Hubspot;\n\nuse HubSpot\\Client\\Crm\\Deals\\ApiException as DealApiException;\nuse HubSpot\\Client\\Crm\\Contacts\\ApiException as ContactApiException;\nuse HubSpot\\Client\\Crm\\Companies\\ApiException as CompanyApiException;\nuse HubSpot\\Client\\Crm\\Contacts\\Model\\SimplePublicObjectWithAssociations as ContactsWithAssociations;\nuse HubSpot\\Client\\Crm\\Companies\\Model\\SimplePublicObjectWithAssociations as CompaniesWithAssociations;\nuse HubSpot\\Client\\Crm\\Deals\\Model\\SimplePublicObjectWithAssociations as DealWithAssociations;\nuse HubSpot\\Client\\Crm\\Objects\\Model\\SimplePublicObjectInput;\nuse HubSpot\\Client\\Crm\\Objects\\Model\\SimplePublicObjectWithAssociations as ObjectWithAssociations;\nuse HubSpot\\Client\\Crm\\Pipelines\\Model\\Error;\nuse HubSpot\\Client\\Crm\\Pipelines\\Model\\PipelineStage;\nuse HubSpot\\Client\\Crm\\Properties\\Model\\Property;\nuse HubSpot\\Discovery\\Discovery;\nuse Jiminny\\Component\\Utility\\Service\\ProviderRateLimiter;\nuse Jiminny\\Exceptions\\CrmException;\nuse Jiminny\\Exceptions\\RateLimitException;\nuse Jiminny\\Exceptions\\SocialAccountTokenInvalidException;\nuse Jiminny\\Jobs\\Crm\\NoteObject;\nuse Jiminny\\Models\\Crm\\Field;\nuse Jiminny\\Services\\Crm\\BaseClient;\nuse Jiminny\\Services\\Crm\\Hubspot\\DTO\\Response\\Owner;\nuse Jiminny\\Services\\SocialAccountService;\nuse SevenShores\\Hubspot\\Exceptions\\BadRequest;\nuse SevenShores\\Hubspot\\Exceptions\\HubspotException;\nuse SevenShores\\Hubspot\\Factory;\nuse SevenShores\\Hubspot\\Http\\Response;\nuse Jiminny\\Services\\Crm\\Hubspot\\Pagination\\HubspotPaginationService;\nuse Throwable;\n\n/**\n * @phpstan-type CrmFieldOption array{id:string, label:string, value?:string}\n */\nclass Client extends BaseClient implements HubspotClientInterface\n{\n public const string MIN_API_VERSION = '2';\n\n public const string BASE_URL = 'https://api.hubapi.com';\n\n public const int ASSOCIATIONS_BATCH_SIZE_LIMIT = 1000;\n\n private HubspotPaginationService $paginationService;\n private HubspotTokenManager $tokenManager;\n private ProviderRateLimiter $rateLimiter;\n\n public function __construct(\n SocialAccountService $socialAccountService,\n HubspotPaginationService $paginationService,\n HubspotTokenManager $tokenManager,\n ProviderRateLimiter $rateLimiter,\n ) {\n parent::__construct($socialAccountService);\n $this->paginationService = $paginationService;\n $this->tokenManager = $tokenManager;\n $this->rateLimiter = $rateLimiter;\n\n $this->setBaseUrl(self::BASE_URL);\n $this->setVersion(self::MIN_API_VERSION);\n }\n\n /**\n * Single entry point for every HubSpot API call. Enforces the per-portal\n * rate limit configured in the rate_limits table (morphed to the current\n * Configuration) and reacts to a real 429 from HubSpot by translating it\n * into a RateLimitException carrying Retry-After.\n *\n * Wrap any outbound HubSpot call (SDK or raw HTTP) like:\n *\n * $this->executeRequest(fn () => $this->getNewInstance()->crm()->...);\n *\n * @template T\n * @param callable(): T $apiCall\n * @return T\n *\n * @throws RateLimitException\n */\n private function executeRequest(callable $apiCall)\n {\n if (! $this->rateLimiter->canMakeRequest($this->config)) {\n $retryAfter = $this->rateLimiter->requestAvailableIn($this->config);\n\n $this->log->warning('[Hubspot] Rate limit exceeded, deferring request', [\n 'team_id' => $this->config->team_id,\n 'config_id' => $this->config->getId(),\n 'retry_after' => $retryAfter,\n ]);\n\n throw new RateLimitException(\n 'Hubspot rate limit reached for configuration ' . $this->config->getId(),\n $retryAfter,\n );\n }\n\n $this->rateLimiter->incrementRequestCount($this->config);\n\n try {\n return $apiCall();\n } catch (Throwable $e) {\n if ($this->isHubspotRateLimit($e)) {\n $retryAfter = $this->parseRetryAfter($e);\n\n $this->log->warning('[Hubspot] Received 429 from API', [\n 'team_id' => $this->config->team_id,\n 'config_id' => $this->config->getId(),\n 'retry_after' => $retryAfter,\n 'reason' => $e->getMessage(),\n ]);\n\n throw new RateLimitException('Hubspot returned 429', $retryAfter, $e);\n }\n\n throw $e;\n }\n }\n\n private function isHubspotRateLimit(Throwable $e): bool\n {\n return method_exists($e, 'getCode') && (int) $e->getCode() === 429;\n }\n\n private function parseRetryAfter(Throwable $e): int\n {\n if (method_exists($e, 'getResponseHeaders')) {\n $headers = $e->getResponseHeaders() ?: [];\n $value = $headers['Retry-After'] ?? $headers['retry-after'] ?? null;\n if (is_array($value)) {\n $value = $value[0] ?? null;\n }\n if (is_numeric($value)) {\n return (int) $value;\n }\n }\n\n return 10;\n }\n\n public function getMinimumApiVersion(): string\n {\n return self::MIN_API_VERSION;\n }\n\n public function getInstance(): Factory\n {\n return new Factory([\n 'key' => $this->accessToken,\n 'oauth2' => true,\n 'base_url' => $this->baseUrl,\n ]);\n }\n\n public function getNewInstance(): Discovery\n {\n return \\HubSpot\\Factory::createWithAccessToken($this->accessToken);\n }\n\n /**\n * Secondly and daily limits for Hubspot API\n *\n * Product Tier: Free & Starter | Professional & Enterprise | API add-on (any tier)\n * Burst: 100/10 seconds | 150/10 seconds | 200/10 seconds\n * Daily: 250,000 | 500,000 | 1,000,000\n *\n * Official documentation states: The search endpoints are rate limited to five requests per second.\n * Since with 5 RPS were still hitting secondly rate limits we lowered it to 4\n */\n public function getPaginatedData(array $payload, string $type, int $offset = 0): array\n {\n $total = 0;\n $lastId = null;\n $rows = [];\n foreach ($this->getPaginatedDataGenerator($payload, $type, $offset, $total, $lastId) as $row) {\n $rows[] = $row;\n }\n\n return ['results' => $rows, 'total' => $total, 'last_record' => $lastId];\n }\n\n /**\n * @throws HubspotException\n * @throws SocialAccountTokenInvalidException\n * @throws BadRequest\n */\n public function getPaginatedDataGenerator(\n array $payload,\n string $type,\n int $offset = 0,\n int &$total = 0,\n ?string &$lastRecordId = null\n ): \\Generator {\n return $this->paginationService->getPaginatedDataGenerator(\n $this,\n $payload,\n $type,\n $offset,\n $total,\n $lastRecordId\n );\n }\n\n /**\n * @throws DealApiException\n * @throws CrmException\n */\n public function getOpportunityById(string $crmId, array $fields): array\n {\n try {\n// $deal = $this->executeRequest(fn () => $this->getNewInstance()->crm()->deals()->basicApi()->getById(\n $deal = $this->getNewInstance()->crm()->deals()->basicApi()->getById(\n $crmId,\n implode(',', $fields),\n 'companies,contacts'\n );\n } catch (DealApiException $e) {\n $this->log->info('[Hubspot] Failed to fetch opportunity', [\n 'crm_id' => $crmId,\n 'reason' => $e->getMessage(),\n ]);\n\n throw $e;\n }\n\n if (! $deal instanceof DealWithAssociations) {\n throw new CrmException('Deal not found');\n }\n\n return [\n 'id' => $deal->getId(),\n 'properties' => $deal->getProperties(),\n 'associations' => $deal->getAssociations(),\n ];\n }\n\n /**\n * Generic batch read method for HubSpot objects\n *\n * @param string $objectType The object type ('deals', 'companies', 'contacts')\n * @param array<string> $crmIds Array of HubSpot object IDs (max 100)\n * @param array<string> $fields Array of property names to fetch\n *\n * @return array<string, array> Array keyed by CRM ID with object data\n */\n private function batchReadObjects(string $objectType, array $crmIds, array $fields): array\n {\n if (empty($crmIds)) {\n return [];\n }\n\n $this->validateBatchSize($objectType, $crmIds);\n $this->ensureValidToken();\n\n try {\n $batchConfig = $this->createBatchConfiguration($objectType);\n $batchReadRequest = $this->prepareBatchRequest($batchConfig, $crmIds, $fields);\n $response = $batchConfig['api']->read($batchReadRequest);\n\n $this->validateApiResponse($response, $objectType);\n\n $results = $this->processApiResults($response);\n $this->logBatchResults($objectType, $crmIds, $results);\n\n return $results;\n } catch (\\Throwable $e) {\n $this->handleBatchError($e, $objectType, $crmIds);\n }\n }\n\n private function validateBatchSize(string $objectType, array $crmIds): void\n {\n if (count($crmIds) > 100) {\n throw new \\InvalidArgumentException(\"Batch size cannot exceed 100 {$objectType}\");\n }\n }\n\n private function createBatchConfiguration(string $objectType): array\n {\n $configurations = [\n 'deals' => [\n 'batchReadRequest' => new \\HubSpot\\Client\\Crm\\Deals\\Model\\BatchReadInputSimplePublicObjectId(),\n 'inputClass' => \\HubSpot\\Client\\Crm\\Deals\\Model\\SimplePublicObjectId::class,\n 'api' => $this->getNewInstance()->crm()->deals()->batchApi(),\n ],\n 'companies' => [\n 'batchReadRequest' => new \\HubSpot\\Client\\Crm\\Companies\\Model\\BatchReadInputSimplePublicObjectId(),\n 'inputClass' => \\HubSpot\\Client\\Crm\\Companies\\Model\\SimplePublicObjectId::class,\n 'api' => $this->getNewInstance()->crm()->companies()->batchApi(),\n ],\n 'contacts' => [\n 'batchReadRequest' => new \\HubSpot\\Client\\Crm\\Contacts\\Model\\BatchReadInputSimplePublicObjectId(),\n 'inputClass' => \\HubSpot\\Client\\Crm\\Contacts\\Model\\SimplePublicObjectId::class,\n 'api' => $this->getNewInstance()->crm()->contacts()->batchApi(),\n ],\n ];\n\n if (! isset($configurations[$objectType])) {\n throw new \\InvalidArgumentException(\"Unsupported object type: {$objectType}\");\n }\n\n return $configurations[$objectType];\n }\n\n private function prepareBatchRequest(array $batchConfig, array $crmIds, array $fields): object\n {\n $batchReadRequest = $batchConfig['batchReadRequest'];\n $inputClass = $batchConfig['inputClass'];\n\n $inputs = array_map(function ($crmId) use ($inputClass) {\n $input = new $inputClass();\n $input->setId($crmId);\n\n return $input;\n }, $crmIds);\n\n $batchReadRequest->setInputs($inputs);\n $batchReadRequest->setProperties($fields);\n\n return $batchReadRequest;\n }\n\n private function validateApiResponse($response, string $objectType): void\n {\n if (! $response) {\n throw new CrmException(\"HubSpot API returned null response for {$objectType} batch read\");\n }\n }\n\n private function processApiResults($response): array\n {\n $results = [];\n $responseResults = $response->getResults();\n\n if ($responseResults) {\n foreach ($responseResults as $object) {\n if ($object && $object->getId()) {\n $results[$object->getId()] = [\n 'id' => $object->getId(),\n 'properties' => $object->getProperties() ?: [],\n ];\n }\n }\n }\n\n return $results;\n }\n\n private function logBatchResults(string $objectType, array $crmIds, array $results): void\n {\n $this->log->info(\"[HubSpot] Batch fetched {$objectType}\", [\n 'requested_count' => count($crmIds),\n 'returned_count' => count($results),\n 'crm_ids' => $crmIds,\n ]);\n }\n\n private function handleBatchError(\\Throwable $e, string $objectType, array $crmIds): void\n {\n $errorMessage = $e->getMessage() ?: 'Unknown error';\n $errorTrace = $e->getTraceAsString() ?: 'No trace available';\n\n $this->log->error(\"[HubSpot] Failed to batch fetch {$objectType}\", [\n 'crm_ids' => $crmIds,\n 'error' => $errorMessage,\n 'trace' => $errorTrace,\n ]);\n\n throw new CrmException(\"Failed to batch fetch {$objectType}: \" . $errorMessage);\n }\n\n /**\n * Batch read multiple opportunities by their CRM IDs\n *\n * @param array<string> $crmIds Array of HubSpot deal IDs (max 100)\n * @param array<string> $fields Array of property names to fetch\n *\n * @return array<string, array> Array keyed by CRM ID with opportunity data\n */\n public function getOpportunitiesByIds(array $crmIds, array $fields): array\n {\n return $this->batchReadObjects('deals', $crmIds, $fields);\n }\n\n /**\n * Batch read multiple companies by their CRM IDs\n *\n * @param array<string> $crmIds Array of HubSpot company IDs (max 100)\n * @param array<string> $fields Array of property names to fetch\n *\n * @return array<string, array> Array keyed by CRM ID with company data\n */\n public function getCompaniesByIds(array $crmIds, array $fields): array\n {\n return $this->batchReadObjects('companies', $crmIds, $fields);\n }\n\n /**\n * Batch read multiple contacts by their CRM IDs\n *\n * @param array<string> $crmIds Array of HubSpot contact IDs (max 100)\n * @param array<string> $fields Array of property names to fetch\n *\n * @return array<string, array> Array keyed by CRM ID with contact data\n */\n public function getContactsByIds(array $crmIds, array $fields): array\n {\n return $this->batchReadObjects('contacts', $crmIds, $fields);\n }\n\n /**\n * @throws CompanyApiException\n * @throws CrmException\n */\n public function getAccountById(string $crmId, array $fields): array\n {\n try {\n $company = $this->getNewInstance()->crm()->companies()->basicApi()->getById(\n $crmId,\n implode(',', $fields),\n );\n } catch (CompanyApiException $e) {\n $this->log->info('[Hubspot] Failed to fetch account', [\n 'crm_id' => $crmId,\n 'reason' => $e->getMessage(),\n ]);\n\n throw $e;\n }\n\n if (! $company instanceof CompaniesWithAssociations) {\n throw new CrmException('Account not found');\n }\n\n return [\n 'id' => $company->getId(),\n 'properties' => $company->getProperties(),\n ];\n }\n\n /**\n * @throws ContactApiException\n * @throws CrmException\n */\n public function getContactById(string $crmId, array $fields): array\n {\n try {\n $contact = $this->getNewInstance()->crm()->contacts()->basicApi()->getById(\n $crmId,\n implode(',', $fields)\n );\n } catch (ContactApiException $e) {\n $this->log->info('[Hubspot] Failed to fetch contact', [\n 'crm_id' => $crmId,\n 'reason' => $e->getMessage(),\n ]);\n\n throw $e;\n }\n\n if (! $contact instanceof ContactsWithAssociations) {\n throw new CrmException('Contact not found');\n }\n\n return [\n 'id' => $contact->getId(),\n 'properties' => $contact->getProperties(),\n ];\n }\n\n /**\n * This is email search request that Hubspot offers as GET (more generous quota)\n */\n public function getContactByEmail(string $email, array $fields = []): array\n {\n try {\n $contact = $this->getNewInstance()->crm()->contacts()->basicApi()->getById(\n $email,\n implode(',', $fields),\n null,\n false,\n 'email'\n );\n\n return [\n 'id' => $contact->getId(),\n 'properties' => $contact->getProperties(),\n ];\n } catch (ContactApiException $e) {\n $this->log->info('[Hubspot] Failed to fetch contact', [\n 'email' => $email,\n 'reason' => $e->getMessage(),\n ]);\n\n return [];\n }\n }\n\n /**\n * @throws CrmException\n */\n public function fetchProperty(string $objectType, string $propertyId): Property\n {\n $result = $this->getNewInstance()->crm()->properties()->coreApi()->getByName($objectType, $propertyId);\n\n if (! $result instanceof Property) {\n $this->log->error('[Hubspot] Failed to fetch property', [\n 'object_type' => $objectType,\n 'property_id' => $propertyId,\n 'reason' => $result->getMessage(),\n ]);\n\n throw new CrmException('Failed to fetch property');\n }\n\n return $result;\n }\n\n /**\n * @return array<CrmFieldOption>\n */\n public function fetchPropertyOptions(string $objectType, string $propertyId): array\n {\n /** @var array<CrmFieldOption> */\n return $this->fetchProperty($objectType, $propertyId)->getOptions();\n }\n\n /**\n * @return array<array{id:string, label:string, deleted:bool}>\n */\n public function fetchCallDispositions(): array\n {\n /** @var Response $response */\n $response = $this->getInstance()->engagements()->getCallDispositions();\n\n /**\n * @var array<array{\n * id:string,\n * label:string,\n * deleted: bool\n * }>\n */\n return $response->toArray();\n }\n\n /**\n * @return array<CrmFieldOption>\n */\n public function fetchOpportunityPipelineStages(): array\n {\n $stages = [];\n $apiResponse = $this->getNewInstance()->crm()->pipelines()->pipelinesApi()->getAll('deals');\n\n if ($apiResponse instanceof Error) {\n $this->log->error('[Hubspot] Failed to fetch opportunity pipelines', [\n 'reason' => $apiResponse->getMessage(),\n ]);\n\n return [];\n }\n\n foreach ($apiResponse->getResults() as $pipeline) {\n $pipelineStages = array_map(\n static function (PipelineStage $stage) {\n return [\n 'id' => $stage->getId(),\n 'label' => $stage->getLabel(),\n ];\n },\n $pipeline->getStages()\n );\n\n $stages = array_merge($stages, $pipelineStages);\n }\n\n return $stages;\n }\n\n public function fetchOpportunityPipelines(): array\n {\n $pipelines = [];\n\n try {\n $apiResponse = $this->makeRequest('/crm/v3/pipelines/deals');\n } catch (\\Exception $e) {\n $this->log->info('[Hubspot] Failed to fetch opportunity pipelines', [\n 'reason' => $e->getMessage(),\n ]);\n\n return [];\n }\n\n $response = $apiResponse->toArray();\n\n foreach ($response['results'] as $pipeline) {\n $pipelines[] = [\n 'id' => $pipeline['id'],\n 'label' => $pipeline['label'],\n ];\n }\n\n return $pipelines;\n }\n\n /**\n * @return array<CrmFieldOption>\n */\n public function fetchMeetingOutcomeFieldOptions(Field $field): array\n {\n return $field->getCrmProviderId() === 'meetingOutcome'\n ? $this->fetchMeetingOutcomeTypes()\n : $this->fetchCallActivityTypes();\n }\n\n public function fetchMeetingOutcomeTypes(): array\n {\n return $this->extractMeetingTypeOptions(\n 'https://api.hubapi.com/crm/v3/properties/meeting/hs_meeting_outcome'\n );\n }\n\n public function fetchCallActivityTypes(): array\n {\n return $this->extractMeetingTypeOptions(\n 'https://api.hubapi.com/crm/v3/properties/call/hs_activity_type'\n );\n }\n\n private function extractMeetingTypeOptions(string $endpoint): array\n {\n /** @var Response $response */\n $response = $this->getInstance()\n ->getClient()\n ->request('GET', $endpoint);\n\n /**\n * @var array<array{\n * value: string,\n * label: string,\n * displayOrder: int\n * }> $optionData\n */\n $optionData = $response->toArray()['options'] ?? [];\n\n $options = [];\n foreach ($optionData as $item) {\n $options[] = [\n 'id' => $item['value'],\n 'value' => $item['value'],\n 'label' => $item['label'],\n 'display_order' => $item['displayOrder'],\n ];\n }\n\n return $options;\n }\n\n /**\n * @return array<CrmFieldOption>\n */\n public function fetchDispositionFieldOptions(): array\n {\n $options = [];\n\n $dispositions = $this->fetchCallDispositions();\n\n foreach ($dispositions as $disposition) {\n if ($disposition['deleted'] !== false) {\n continue;\n }\n\n $option['value'] = $disposition['id'];\n $option['id'] = $disposition['id'];\n $option['label'] = $disposition['label'];\n\n $options[] = $option;\n }\n\n return $options;\n }\n\n /**\n * @return array<CrmFieldOption>\n */\n public function fetchOpportunityFieldOptions(Field $field): array\n {\n if ($field->isStageField()) {\n return $this->fetchOpportunityPipelineStages();\n }\n\n if ($field->isPipelineField()) {\n return $this->fetchOpportunityPipelines();\n }\n\n return $this->fetchPropertyOptions('deals', $field->getCrmProviderId());\n }\n\n /**\n * @throws BadRequest\n * @throws HubspotException\n */\n public function makeRequest(string $endpoint, $method = 'GET', $payload = [], ?string $queryString = null)\n {\n $endpoint = self::BASE_URL . $endpoint;\n\n if ($method === 'GET') {\n $response = $this->getInstance()->getClient()?->request(\n method: $method,\n endpoint: $endpoint,\n query_string: $queryString\n );\n } else {\n $response = $this->getInstance()->getClient()->request($method, $endpoint, [\n 'json' => ($payload),\n ]);\n }\n\n $max = $response->getHeaderLine('X-HubSpot-RateLimit-Max'); // \"110\"\n $remaining = $response->getHeaderLine('X-HubSpot-RateLimit-Remaining'); // \"109\"\n $interval = $response->getHeaderLine('X-HubSpot-RateLimit-Interval-Milliseconds'); // \"10000\"\n $body = json_decode((string) $response->getBody(), true);\n\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$max ' . PHP_EOL . print_r($max, true));\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$remaining ' . PHP_EOL . print_r($remaining, true));\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$interval ' . PHP_EOL . print_r($interval, true));\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$body ' . PHP_EOL . print_r($body, true));\n\n return $response;\n }\n\n /**\n * @throws BadRequest\n * @throws HubspotException\n */\n public function createMeeting(array $payload): Response\n {\n $endpoint = '/crm/v3/objects/meetings';\n\n return $this->makeRequest($endpoint, 'POST', $payload);\n }\n\n /**\n * @throws BadRequest\n * @throws HubspotException\n */\n public function updateMeeting(string $meetingId, array $payload): Response\n {\n $endpoint = '/crm/v3/objects/meetings/' . $meetingId;\n\n return $this->makeRequest($endpoint, 'PATCH', $payload);\n }\n\n /**\n * @throws \\Exception\n */\n public function createNote(\n string $body,\n string $ownerId,\n int $timestamp,\n string $objectId,\n NoteObject $noteObject\n ): ?string {\n try {\n $noteInput = new SimplePublicObjectInput([\n 'properties' => [\n 'hs_note_body' => $body,\n 'hubspot_owner_id' => $ownerId,\n 'hs_timestamp' => $timestamp,\n ],\n ]);\n\n // Create note\n $note = $this->getNewInstance()->crm()->objects()->basicApi()->create('note', $noteInput);\n\n $this->getNewInstance()->crm()->objects()->associationsApi()->create(\n 'note',\n $note->getId(),\n $this->getNoteObject($noteObject),\n $objectId,\n $this->getNoteAssociationType($noteObject),\n );\n\n return $note->getId();\n } catch (\\Exception $e) {\n $this->log->error('[Hubspot] Failed to create note', [\n 'objectId' => $objectId,\n 'noteObject' => $noteObject->getObjectType(),\n 'reason' => $e->getMessage(),\n ]);\n\n \\Sentry::captureException($e);\n }\n\n return null;\n }\n\n public function updateEngagement(string $objectId, array $engagement, array $metadata): void\n {\n $this->getInstance()->engagements()->update($objectId, $engagement, $metadata);\n }\n\n public function getEngagementData(string $engagementId): array\n {\n $engagement = $this->getInstance()->engagements()->get($engagementId);\n\n return $engagement->toArray();\n }\n\n public function createEngagement(array $engagement, array $associations, array $metadata): Response\n {\n return $this->getInstance()\n ->engagements()\n ->create($engagement, $associations, $metadata);\n }\n\n public function isUnauthorizedException(\\Exception $e): bool\n {\n // Check for specific HubSpot API exception types first\n if ($e instanceof BadRequest) {\n // BadRequest can contain 401 status codes\n return $e->getCode() === 401;\n }\n\n // Check for HTTP client exceptions with status codes\n if ($e instanceof \\GuzzleHttp\\Exception\\RequestException && $e->hasResponse()) {\n $response = $e->getResponse();\n if ($response !== null) {\n return $response->getStatusCode() === 401;\n }\n }\n\n // Check for Guzzle HTTP exceptions\n if ($e instanceof \\GuzzleHttp\\Exception\\ClientException) {\n return $e->getCode() === 401;\n }\n\n // Fallback to string matching as last resort, but be more specific\n $message = strtolower($e->getMessage());\n\n return str_contains($message, '401 unauthorized') ||\n str_contains($message, 'http 401') ||\n str_contains($message, 'status code 401') ||\n (preg_match('/\\b401\\b/', $message) && str_contains($message, 'unauthorized'));\n }\n\n /**\n * Validates and refreshes the access token if needed before API requests.\n * This ensures long-running processes don't fail due to token expiration.\n *\n * @throws SocialAccountTokenInvalidException\n */\n public function ensureValidToken(): void\n {\n if ($this->oauthAccount === null) {\n return;\n }\n\n $newToken = $this->tokenManager->ensureValidToken($this->oauthAccount);\n if ($newToken !== null) {\n $this->accessToken = $newToken;\n }\n }\n\n public function getConfig()\n {\n return $this->config;\n }\n\n // returns only active (archived=false)\n public function getOwners(): array\n {\n return $this->getNewInstance()->crm()->owners()->getAll();\n }\n\n /**\n * @param bool $archived\n *\n * @return array<Owner>|[]\n */\n public function getOwnersArchived(bool $archived = true): array\n {\n $endpoint = '/crm/v3/owners';\n $queryParams = [\n 'archived' => $archived ? 'true' : 'false',\n ];\n $queryString = http_build_query($queryParams);\n\n $owners = [];\n\n try {\n $response = $this->makeRequest(endpoint: $endpoint, queryString: $queryString);\n $responseData = $response?->toArray();\n\n foreach ($responseData['results'] as $result) {\n try {\n $owners[] = Owner::create($result);\n } catch (Throwable $e) {\n $this->log->error('[HubSpot] Failed to process owner data', [\n 'result' => $result,\n 'error' => $e->getMessage(),\n ]);\n\n continue;\n }\n }\n } catch (Throwable $e) {\n $this->log->error('HubSpot] Failed to fetch owners', [\n 'archived' => $archived,\n 'error' => $e->getMessage(),\n ]);\n\n return [];\n }\n\n return $owners;\n }\n\n public function getMeeting(string $engagementId): ObjectWithAssociations\n {\n return $this->getNewInstance()->crm()->objects()->basicApi()\n ->getById('meeting', $engagementId, null, 'contact,company,deal');\n }\n\n public function deleteEngagement(string $engagementId): void\n {\n $this->getInstance()->engagements()->delete((int) $engagementId);\n }\n\n public function getAssociationsData(array $ids, string $fromObject, string $toObject): array\n {\n $associationData = [];\n $idChunks = array_chunk($ids, self::ASSOCIATIONS_BATCH_SIZE_LIMIT);\n\n foreach ($idChunks as $idChunk) {\n try {\n $batchInput = new \\HubSpot\\Client\\Crm\\Associations\\Model\\BatchInputPublicObjectId();\n $batchInput->setInputs(array_map(function ($id) {\n $publicObjectId = new \\HubSpot\\Client\\Crm\\Associations\\Model\\PublicObjectId();\n $publicObjectId->setId($id);\n\n return $publicObjectId;\n }, $idChunk));\n\n $associatedObjectsData = $this\n ->getNewInstance()\n ->crm()\n ->associations()\n ->batchApi()\n ->read($fromObject, $toObject, $batchInput);\n\n if ($associatedObjectsData instanceof \\HubSpot\\Client\\Crm\\Associations\\Model\\BatchResponsePublicAssociationMulti) {\n foreach ($associatedObjectsData->getResults() as $association) {\n $from = $association->getFrom()->getId();\n $toAssociations = $association->getTo();\n\n if (! empty($toAssociations)) {\n $associationData[$from] = array_map(function ($item) {\n return $item->getId();\n }, $toAssociations);\n }\n }\n }\n } catch (\\Exception $e) {\n $this->log->error('[Hubspot] Failed to fetch associations', [\n 'from_object' => $fromObject,\n 'to_object' => $toObject,\n 'reason' => $e->getMessage(),\n ]);\n }\n }\n\n return $associationData;\n }\n\n /**\n * @throws \\Exception\n */\n private function getNoteAssociationType(NoteObject $noteObject): string\n {\n return match($noteObject) {\n NoteObject::Opportunity => 'note_to_deal',\n NoteObject::Lead, NoteObject::Contact => 'note_to_contact', // or 'note_to_lead' if your portal supports it\n NoteObject::Account => 'note_to_company',\n NoteObject::Call, NoteObject::Event => throw new \\Exception('Not supported'),\n };\n }\n\n /**\n * @throws \\Exception\n */\n private function getNoteObject(NoteObject $noteObject): string\n {\n return match($noteObject) {\n NoteObject::Opportunity => 'deal',\n NoteObject::Lead, NoteObject::Contact => 'contact',\n NoteObject::Account => 'company',\n NoteObject::Call, NoteObject::Event => throw new \\Exception('Not supported'),\n };\n }\n\n public function addAssociations(string $objectType, string $associationType, array $payload): Response\n {\n $endpoint = \"/crm/v4/associations/$objectType/$associationType/batch/create\";\n\n return $this->makeRequest($endpoint, 'POST', $payload);\n }\n\n public function removeAssociations(string $objectType, string $associationType, array $payload): Response\n {\n $endpoint = \"/crm/v4/associations/$objectType/$associationType/batch/archive\";\n\n return $this->makeRequest($endpoint, 'POST', $payload);\n }\n}","depth":4,"on_screen":true,"value":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Services\\Crm\\Hubspot;\n\nuse HubSpot\\Client\\Crm\\Deals\\ApiException as DealApiException;\nuse HubSpot\\Client\\Crm\\Contacts\\ApiException as ContactApiException;\nuse HubSpot\\Client\\Crm\\Companies\\ApiException as CompanyApiException;\nuse HubSpot\\Client\\Crm\\Contacts\\Model\\SimplePublicObjectWithAssociations as ContactsWithAssociations;\nuse HubSpot\\Client\\Crm\\Companies\\Model\\SimplePublicObjectWithAssociations as CompaniesWithAssociations;\nuse HubSpot\\Client\\Crm\\Deals\\Model\\SimplePublicObjectWithAssociations as DealWithAssociations;\nuse HubSpot\\Client\\Crm\\Objects\\Model\\SimplePublicObjectInput;\nuse HubSpot\\Client\\Crm\\Objects\\Model\\SimplePublicObjectWithAssociations as ObjectWithAssociations;\nuse HubSpot\\Client\\Crm\\Pipelines\\Model\\Error;\nuse HubSpot\\Client\\Crm\\Pipelines\\Model\\PipelineStage;\nuse HubSpot\\Client\\Crm\\Properties\\Model\\Property;\nuse HubSpot\\Discovery\\Discovery;\nuse Jiminny\\Component\\Utility\\Service\\ProviderRateLimiter;\nuse Jiminny\\Exceptions\\CrmException;\nuse Jiminny\\Exceptions\\RateLimitException;\nuse Jiminny\\Exceptions\\SocialAccountTokenInvalidException;\nuse Jiminny\\Jobs\\Crm\\NoteObject;\nuse Jiminny\\Models\\Crm\\Field;\nuse Jiminny\\Services\\Crm\\BaseClient;\nuse Jiminny\\Services\\Crm\\Hubspot\\DTO\\Response\\Owner;\nuse Jiminny\\Services\\SocialAccountService;\nuse SevenShores\\Hubspot\\Exceptions\\BadRequest;\nuse SevenShores\\Hubspot\\Exceptions\\HubspotException;\nuse SevenShores\\Hubspot\\Factory;\nuse SevenShores\\Hubspot\\Http\\Response;\nuse Jiminny\\Services\\Crm\\Hubspot\\Pagination\\HubspotPaginationService;\nuse Throwable;\n\n/**\n * @phpstan-type CrmFieldOption array{id:string, label:string, value?:string}\n */\nclass Client extends BaseClient implements HubspotClientInterface\n{\n public const string MIN_API_VERSION = '2';\n\n public const string BASE_URL = 'https://api.hubapi.com';\n\n public const int ASSOCIATIONS_BATCH_SIZE_LIMIT = 1000;\n\n private HubspotPaginationService $paginationService;\n private HubspotTokenManager $tokenManager;\n private ProviderRateLimiter $rateLimiter;\n\n public function __construct(\n SocialAccountService $socialAccountService,\n HubspotPaginationService $paginationService,\n HubspotTokenManager $tokenManager,\n ProviderRateLimiter $rateLimiter,\n ) {\n parent::__construct($socialAccountService);\n $this->paginationService = $paginationService;\n $this->tokenManager = $tokenManager;\n $this->rateLimiter = $rateLimiter;\n\n $this->setBaseUrl(self::BASE_URL);\n $this->setVersion(self::MIN_API_VERSION);\n }\n\n /**\n * Single entry point for every HubSpot API call. Enforces the per-portal\n * rate limit configured in the rate_limits table (morphed to the current\n * Configuration) and reacts to a real 429 from HubSpot by translating it\n * into a RateLimitException carrying Retry-After.\n *\n * Wrap any outbound HubSpot call (SDK or raw HTTP) like:\n *\n * $this->executeRequest(fn () => $this->getNewInstance()->crm()->...);\n *\n * @template T\n * @param callable(): T $apiCall\n * @return T\n *\n * @throws RateLimitException\n */\n private function executeRequest(callable $apiCall)\n {\n if (! $this->rateLimiter->canMakeRequest($this->config)) {\n $retryAfter = $this->rateLimiter->requestAvailableIn($this->config);\n\n $this->log->warning('[Hubspot] Rate limit exceeded, deferring request', [\n 'team_id' => $this->config->team_id,\n 'config_id' => $this->config->getId(),\n 'retry_after' => $retryAfter,\n ]);\n\n throw new RateLimitException(\n 'Hubspot rate limit reached for configuration ' . $this->config->getId(),\n $retryAfter,\n );\n }\n\n $this->rateLimiter->incrementRequestCount($this->config);\n\n try {\n return $apiCall();\n } catch (Throwable $e) {\n if ($this->isHubspotRateLimit($e)) {\n $retryAfter = $this->parseRetryAfter($e);\n\n $this->log->warning('[Hubspot] Received 429 from API', [\n 'team_id' => $this->config->team_id,\n 'config_id' => $this->config->getId(),\n 'retry_after' => $retryAfter,\n 'reason' => $e->getMessage(),\n ]);\n\n throw new RateLimitException('Hubspot returned 429', $retryAfter, $e);\n }\n\n throw $e;\n }\n }\n\n private function isHubspotRateLimit(Throwable $e): bool\n {\n return method_exists($e, 'getCode') && (int) $e->getCode() === 429;\n }\n\n private function parseRetryAfter(Throwable $e): int\n {\n if (method_exists($e, 'getResponseHeaders')) {\n $headers = $e->getResponseHeaders() ?: [];\n $value = $headers['Retry-After'] ?? $headers['retry-after'] ?? null;\n if (is_array($value)) {\n $value = $value[0] ?? null;\n }\n if (is_numeric($value)) {\n return (int) $value;\n }\n }\n\n return 10;\n }\n\n public function getMinimumApiVersion(): string\n {\n return self::MIN_API_VERSION;\n }\n\n public function getInstance(): Factory\n {\n return new Factory([\n 'key' => $this->accessToken,\n 'oauth2' => true,\n 'base_url' => $this->baseUrl,\n ]);\n }\n\n public function getNewInstance(): Discovery\n {\n return \\HubSpot\\Factory::createWithAccessToken($this->accessToken);\n }\n\n /**\n * Secondly and daily limits for Hubspot API\n *\n * Product Tier: Free & Starter | Professional & Enterprise | API add-on (any tier)\n * Burst: 100/10 seconds | 150/10 seconds | 200/10 seconds\n * Daily: 250,000 | 500,000 | 1,000,000\n *\n * Official documentation states: The search endpoints are rate limited to five requests per second.\n * Since with 5 RPS were still hitting secondly rate limits we lowered it to 4\n */\n public function getPaginatedData(array $payload, string $type, int $offset = 0): array\n {\n $total = 0;\n $lastId = null;\n $rows = [];\n foreach ($this->getPaginatedDataGenerator($payload, $type, $offset, $total, $lastId) as $row) {\n $rows[] = $row;\n }\n\n return ['results' => $rows, 'total' => $total, 'last_record' => $lastId];\n }\n\n /**\n * @throws HubspotException\n * @throws SocialAccountTokenInvalidException\n * @throws BadRequest\n */\n public function getPaginatedDataGenerator(\n array $payload,\n string $type,\n int $offset = 0,\n int &$total = 0,\n ?string &$lastRecordId = null\n ): \\Generator {\n return $this->paginationService->getPaginatedDataGenerator(\n $this,\n $payload,\n $type,\n $offset,\n $total,\n $lastRecordId\n );\n }\n\n /**\n * @throws DealApiException\n * @throws CrmException\n */\n public function getOpportunityById(string $crmId, array $fields): array\n {\n try {\n// $deal = $this->executeRequest(fn () => $this->getNewInstance()->crm()->deals()->basicApi()->getById(\n $deal = $this->getNewInstance()->crm()->deals()->basicApi()->getById(\n $crmId,\n implode(',', $fields),\n 'companies,contacts'\n );\n } catch (DealApiException $e) {\n $this->log->info('[Hubspot] Failed to fetch opportunity', [\n 'crm_id' => $crmId,\n 'reason' => $e->getMessage(),\n ]);\n\n throw $e;\n }\n\n if (! $deal instanceof DealWithAssociations) {\n throw new CrmException('Deal not found');\n }\n\n return [\n 'id' => $deal->getId(),\n 'properties' => $deal->getProperties(),\n 'associations' => $deal->getAssociations(),\n ];\n }\n\n /**\n * Generic batch read method for HubSpot objects\n *\n * @param string $objectType The object type ('deals', 'companies', 'contacts')\n * @param array<string> $crmIds Array of HubSpot object IDs (max 100)\n * @param array<string> $fields Array of property names to fetch\n *\n * @return array<string, array> Array keyed by CRM ID with object data\n */\n private function batchReadObjects(string $objectType, array $crmIds, array $fields): array\n {\n if (empty($crmIds)) {\n return [];\n }\n\n $this->validateBatchSize($objectType, $crmIds);\n $this->ensureValidToken();\n\n try {\n $batchConfig = $this->createBatchConfiguration($objectType);\n $batchReadRequest = $this->prepareBatchRequest($batchConfig, $crmIds, $fields);\n $response = $batchConfig['api']->read($batchReadRequest);\n\n $this->validateApiResponse($response, $objectType);\n\n $results = $this->processApiResults($response);\n $this->logBatchResults($objectType, $crmIds, $results);\n\n return $results;\n } catch (\\Throwable $e) {\n $this->handleBatchError($e, $objectType, $crmIds);\n }\n }\n\n private function validateBatchSize(string $objectType, array $crmIds): void\n {\n if (count($crmIds) > 100) {\n throw new \\InvalidArgumentException(\"Batch size cannot exceed 100 {$objectType}\");\n }\n }\n\n private function createBatchConfiguration(string $objectType): array\n {\n $configurations = [\n 'deals' => [\n 'batchReadRequest' => new \\HubSpot\\Client\\Crm\\Deals\\Model\\BatchReadInputSimplePublicObjectId(),\n 'inputClass' => \\HubSpot\\Client\\Crm\\Deals\\Model\\SimplePublicObjectId::class,\n 'api' => $this->getNewInstance()->crm()->deals()->batchApi(),\n ],\n 'companies' => [\n 'batchReadRequest' => new \\HubSpot\\Client\\Crm\\Companies\\Model\\BatchReadInputSimplePublicObjectId(),\n 'inputClass' => \\HubSpot\\Client\\Crm\\Companies\\Model\\SimplePublicObjectId::class,\n 'api' => $this->getNewInstance()->crm()->companies()->batchApi(),\n ],\n 'contacts' => [\n 'batchReadRequest' => new \\HubSpot\\Client\\Crm\\Contacts\\Model\\BatchReadInputSimplePublicObjectId(),\n 'inputClass' => \\HubSpot\\Client\\Crm\\Contacts\\Model\\SimplePublicObjectId::class,\n 'api' => $this->getNewInstance()->crm()->contacts()->batchApi(),\n ],\n ];\n\n if (! isset($configurations[$objectType])) {\n throw new \\InvalidArgumentException(\"Unsupported object type: {$objectType}\");\n }\n\n return $configurations[$objectType];\n }\n\n private function prepareBatchRequest(array $batchConfig, array $crmIds, array $fields): object\n {\n $batchReadRequest = $batchConfig['batchReadRequest'];\n $inputClass = $batchConfig['inputClass'];\n\n $inputs = array_map(function ($crmId) use ($inputClass) {\n $input = new $inputClass();\n $input->setId($crmId);\n\n return $input;\n }, $crmIds);\n\n $batchReadRequest->setInputs($inputs);\n $batchReadRequest->setProperties($fields);\n\n return $batchReadRequest;\n }\n\n private function validateApiResponse($response, string $objectType): void\n {\n if (! $response) {\n throw new CrmException(\"HubSpot API returned null response for {$objectType} batch read\");\n }\n }\n\n private function processApiResults($response): array\n {\n $results = [];\n $responseResults = $response->getResults();\n\n if ($responseResults) {\n foreach ($responseResults as $object) {\n if ($object && $object->getId()) {\n $results[$object->getId()] = [\n 'id' => $object->getId(),\n 'properties' => $object->getProperties() ?: [],\n ];\n }\n }\n }\n\n return $results;\n }\n\n private function logBatchResults(string $objectType, array $crmIds, array $results): void\n {\n $this->log->info(\"[HubSpot] Batch fetched {$objectType}\", [\n 'requested_count' => count($crmIds),\n 'returned_count' => count($results),\n 'crm_ids' => $crmIds,\n ]);\n }\n\n private function handleBatchError(\\Throwable $e, string $objectType, array $crmIds): void\n {\n $errorMessage = $e->getMessage() ?: 'Unknown error';\n $errorTrace = $e->getTraceAsString() ?: 'No trace available';\n\n $this->log->error(\"[HubSpot] Failed to batch fetch {$objectType}\", [\n 'crm_ids' => $crmIds,\n 'error' => $errorMessage,\n 'trace' => $errorTrace,\n ]);\n\n throw new CrmException(\"Failed to batch fetch {$objectType}: \" . $errorMessage);\n }\n\n /**\n * Batch read multiple opportunities by their CRM IDs\n *\n * @param array<string> $crmIds Array of HubSpot deal IDs (max 100)\n * @param array<string> $fields Array of property names to fetch\n *\n * @return array<string, array> Array keyed by CRM ID with opportunity data\n */\n public function getOpportunitiesByIds(array $crmIds, array $fields): array\n {\n return $this->batchReadObjects('deals', $crmIds, $fields);\n }\n\n /**\n * Batch read multiple companies by their CRM IDs\n *\n * @param array<string> $crmIds Array of HubSpot company IDs (max 100)\n * @param array<string> $fields Array of property names to fetch\n *\n * @return array<string, array> Array keyed by CRM ID with company data\n */\n public function getCompaniesByIds(array $crmIds, array $fields): array\n {\n return $this->batchReadObjects('companies', $crmIds, $fields);\n }\n\n /**\n * Batch read multiple contacts by their CRM IDs\n *\n * @param array<string> $crmIds Array of HubSpot contact IDs (max 100)\n * @param array<string> $fields Array of property names to fetch\n *\n * @return array<string, array> Array keyed by CRM ID with contact data\n */\n public function getContactsByIds(array $crmIds, array $fields): array\n {\n return $this->batchReadObjects('contacts', $crmIds, $fields);\n }\n\n /**\n * @throws CompanyApiException\n * @throws CrmException\n */\n public function getAccountById(string $crmId, array $fields): array\n {\n try {\n $company = $this->getNewInstance()->crm()->companies()->basicApi()->getById(\n $crmId,\n implode(',', $fields),\n );\n } catch (CompanyApiException $e) {\n $this->log->info('[Hubspot] Failed to fetch account', [\n 'crm_id' => $crmId,\n 'reason' => $e->getMessage(),\n ]);\n\n throw $e;\n }\n\n if (! $company instanceof CompaniesWithAssociations) {\n throw new CrmException('Account not found');\n }\n\n return [\n 'id' => $company->getId(),\n 'properties' => $company->getProperties(),\n ];\n }\n\n /**\n * @throws ContactApiException\n * @throws CrmException\n */\n public function getContactById(string $crmId, array $fields): array\n {\n try {\n $contact = $this->getNewInstance()->crm()->contacts()->basicApi()->getById(\n $crmId,\n implode(',', $fields)\n );\n } catch (ContactApiException $e) {\n $this->log->info('[Hubspot] Failed to fetch contact', [\n 'crm_id' => $crmId,\n 'reason' => $e->getMessage(),\n ]);\n\n throw $e;\n }\n\n if (! $contact instanceof ContactsWithAssociations) {\n throw new CrmException('Contact not found');\n }\n\n return [\n 'id' => $contact->getId(),\n 'properties' => $contact->getProperties(),\n ];\n }\n\n /**\n * This is email search request that Hubspot offers as GET (more generous quota)\n */\n public function getContactByEmail(string $email, array $fields = []): array\n {\n try {\n $contact = $this->getNewInstance()->crm()->contacts()->basicApi()->getById(\n $email,\n implode(',', $fields),\n null,\n false,\n 'email'\n );\n\n return [\n 'id' => $contact->getId(),\n 'properties' => $contact->getProperties(),\n ];\n } catch (ContactApiException $e) {\n $this->log->info('[Hubspot] Failed to fetch contact', [\n 'email' => $email,\n 'reason' => $e->getMessage(),\n ]);\n\n return [];\n }\n }\n\n /**\n * @throws CrmException\n */\n public function fetchProperty(string $objectType, string $propertyId): Property\n {\n $result = $this->getNewInstance()->crm()->properties()->coreApi()->getByName($objectType, $propertyId);\n\n if (! $result instanceof Property) {\n $this->log->error('[Hubspot] Failed to fetch property', [\n 'object_type' => $objectType,\n 'property_id' => $propertyId,\n 'reason' => $result->getMessage(),\n ]);\n\n throw new CrmException('Failed to fetch property');\n }\n\n return $result;\n }\n\n /**\n * @return array<CrmFieldOption>\n */\n public function fetchPropertyOptions(string $objectType, string $propertyId): array\n {\n /** @var array<CrmFieldOption> */\n return $this->fetchProperty($objectType, $propertyId)->getOptions();\n }\n\n /**\n * @return array<array{id:string, label:string, deleted:bool}>\n */\n public function fetchCallDispositions(): array\n {\n /** @var Response $response */\n $response = $this->getInstance()->engagements()->getCallDispositions();\n\n /**\n * @var array<array{\n * id:string,\n * label:string,\n * deleted: bool\n * }>\n */\n return $response->toArray();\n }\n\n /**\n * @return array<CrmFieldOption>\n */\n public function fetchOpportunityPipelineStages(): array\n {\n $stages = [];\n $apiResponse = $this->getNewInstance()->crm()->pipelines()->pipelinesApi()->getAll('deals');\n\n if ($apiResponse instanceof Error) {\n $this->log->error('[Hubspot] Failed to fetch opportunity pipelines', [\n 'reason' => $apiResponse->getMessage(),\n ]);\n\n return [];\n }\n\n foreach ($apiResponse->getResults() as $pipeline) {\n $pipelineStages = array_map(\n static function (PipelineStage $stage) {\n return [\n 'id' => $stage->getId(),\n 'label' => $stage->getLabel(),\n ];\n },\n $pipeline->getStages()\n );\n\n $stages = array_merge($stages, $pipelineStages);\n }\n\n return $stages;\n }\n\n public function fetchOpportunityPipelines(): array\n {\n $pipelines = [];\n\n try {\n $apiResponse = $this->makeRequest('/crm/v3/pipelines/deals');\n } catch (\\Exception $e) {\n $this->log->info('[Hubspot] Failed to fetch opportunity pipelines', [\n 'reason' => $e->getMessage(),\n ]);\n\n return [];\n }\n\n $response = $apiResponse->toArray();\n\n foreach ($response['results'] as $pipeline) {\n $pipelines[] = [\n 'id' => $pipeline['id'],\n 'label' => $pipeline['label'],\n ];\n }\n\n return $pipelines;\n }\n\n /**\n * @return array<CrmFieldOption>\n */\n public function fetchMeetingOutcomeFieldOptions(Field $field): array\n {\n return $field->getCrmProviderId() === 'meetingOutcome'\n ? $this->fetchMeetingOutcomeTypes()\n : $this->fetchCallActivityTypes();\n }\n\n public function fetchMeetingOutcomeTypes(): array\n {\n return $this->extractMeetingTypeOptions(\n 'https://api.hubapi.com/crm/v3/properties/meeting/hs_meeting_outcome'\n );\n }\n\n public function fetchCallActivityTypes(): array\n {\n return $this->extractMeetingTypeOptions(\n 'https://api.hubapi.com/crm/v3/properties/call/hs_activity_type'\n );\n }\n\n private function extractMeetingTypeOptions(string $endpoint): array\n {\n /** @var Response $response */\n $response = $this->getInstance()\n ->getClient()\n ->request('GET', $endpoint);\n\n /**\n * @var array<array{\n * value: string,\n * label: string,\n * displayOrder: int\n * }> $optionData\n */\n $optionData = $response->toArray()['options'] ?? [];\n\n $options = [];\n foreach ($optionData as $item) {\n $options[] = [\n 'id' => $item['value'],\n 'value' => $item['value'],\n 'label' => $item['label'],\n 'display_order' => $item['displayOrder'],\n ];\n }\n\n return $options;\n }\n\n /**\n * @return array<CrmFieldOption>\n */\n public function fetchDispositionFieldOptions(): array\n {\n $options = [];\n\n $dispositions = $this->fetchCallDispositions();\n\n foreach ($dispositions as $disposition) {\n if ($disposition['deleted'] !== false) {\n continue;\n }\n\n $option['value'] = $disposition['id'];\n $option['id'] = $disposition['id'];\n $option['label'] = $disposition['label'];\n\n $options[] = $option;\n }\n\n return $options;\n }\n\n /**\n * @return array<CrmFieldOption>\n */\n public function fetchOpportunityFieldOptions(Field $field): array\n {\n if ($field->isStageField()) {\n return $this->fetchOpportunityPipelineStages();\n }\n\n if ($field->isPipelineField()) {\n return $this->fetchOpportunityPipelines();\n }\n\n return $this->fetchPropertyOptions('deals', $field->getCrmProviderId());\n }\n\n /**\n * @throws BadRequest\n * @throws HubspotException\n */\n public function makeRequest(string $endpoint, $method = 'GET', $payload = [], ?string $queryString = null)\n {\n $endpoint = self::BASE_URL . $endpoint;\n\n if ($method === 'GET') {\n $response = $this->getInstance()->getClient()?->request(\n method: $method,\n endpoint: $endpoint,\n query_string: $queryString\n );\n } else {\n $response = $this->getInstance()->getClient()->request($method, $endpoint, [\n 'json' => ($payload),\n ]);\n }\n\n $max = $response->getHeaderLine('X-HubSpot-RateLimit-Max'); // \"110\"\n $remaining = $response->getHeaderLine('X-HubSpot-RateLimit-Remaining'); // \"109\"\n $interval = $response->getHeaderLine('X-HubSpot-RateLimit-Interval-Milliseconds'); // \"10000\"\n $body = json_decode((string) $response->getBody(), true);\n\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$max ' . PHP_EOL . print_r($max, true));\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$remaining ' . PHP_EOL . print_r($remaining, true));\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$interval ' . PHP_EOL . print_r($interval, true));\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$body ' . PHP_EOL . print_r($body, true));\n\n return $response;\n }\n\n /**\n * @throws BadRequest\n * @throws HubspotException\n */\n public function createMeeting(array $payload): Response\n {\n $endpoint = '/crm/v3/objects/meetings';\n\n return $this->makeRequest($endpoint, 'POST', $payload);\n }\n\n /**\n * @throws BadRequest\n * @throws HubspotException\n */\n public function updateMeeting(string $meetingId, array $payload): Response\n {\n $endpoint = '/crm/v3/objects/meetings/' . $meetingId;\n\n return $this->makeRequest($endpoint, 'PATCH', $payload);\n }\n\n /**\n * @throws \\Exception\n */\n public function createNote(\n string $body,\n string $ownerId,\n int $timestamp,\n string $objectId,\n NoteObject $noteObject\n ): ?string {\n try {\n $noteInput = new SimplePublicObjectInput([\n 'properties' => [\n 'hs_note_body' => $body,\n 'hubspot_owner_id' => $ownerId,\n 'hs_timestamp' => $timestamp,\n ],\n ]);\n\n // Create note\n $note = $this->getNewInstance()->crm()->objects()->basicApi()->create('note', $noteInput);\n\n $this->getNewInstance()->crm()->objects()->associationsApi()->create(\n 'note',\n $note->getId(),\n $this->getNoteObject($noteObject),\n $objectId,\n $this->getNoteAssociationType($noteObject),\n );\n\n return $note->getId();\n } catch (\\Exception $e) {\n $this->log->error('[Hubspot] Failed to create note', [\n 'objectId' => $objectId,\n 'noteObject' => $noteObject->getObjectType(),\n 'reason' => $e->getMessage(),\n ]);\n\n \\Sentry::captureException($e);\n }\n\n return null;\n }\n\n public function updateEngagement(string $objectId, array $engagement, array $metadata): void\n {\n $this->getInstance()->engagements()->update($objectId, $engagement, $metadata);\n }\n\n public function getEngagementData(string $engagementId): array\n {\n $engagement = $this->getInstance()->engagements()->get($engagementId);\n\n return $engagement->toArray();\n }\n\n public function createEngagement(array $engagement, array $associations, array $metadata): Response\n {\n return $this->getInstance()\n ->engagements()\n ->create($engagement, $associations, $metadata);\n }\n\n public function isUnauthorizedException(\\Exception $e): bool\n {\n // Check for specific HubSpot API exception types first\n if ($e instanceof BadRequest) {\n // BadRequest can contain 401 status codes\n return $e->getCode() === 401;\n }\n\n // Check for HTTP client exceptions with status codes\n if ($e instanceof \\GuzzleHttp\\Exception\\RequestException && $e->hasResponse()) {\n $response = $e->getResponse();\n if ($response !== null) {\n return $response->getStatusCode() === 401;\n }\n }\n\n // Check for Guzzle HTTP exceptions\n if ($e instanceof \\GuzzleHttp\\Exception\\ClientException) {\n return $e->getCode() === 401;\n }\n\n // Fallback to string matching as last resort, but be more specific\n $message = strtolower($e->getMessage());\n\n return str_contains($message, '401 unauthorized') ||\n str_contains($message, 'http 401') ||\n str_contains($message, 'status code 401') ||\n (preg_match('/\\b401\\b/', $message) && str_contains($message, 'unauthorized'));\n }\n\n /**\n * Validates and refreshes the access token if needed before API requests.\n * This ensures long-running processes don't fail due to token expiration.\n *\n * @throws SocialAccountTokenInvalidException\n */\n public function ensureValidToken(): void\n {\n if ($this->oauthAccount === null) {\n return;\n }\n\n $newToken = $this->tokenManager->ensureValidToken($this->oauthAccount);\n if ($newToken !== null) {\n $this->accessToken = $newToken;\n }\n }\n\n public function getConfig()\n {\n return $this->config;\n }\n\n // returns only active (archived=false)\n public function getOwners(): array\n {\n return $this->getNewInstance()->crm()->owners()->getAll();\n }\n\n /**\n * @param bool $archived\n *\n * @return array<Owner>|[]\n */\n public function getOwnersArchived(bool $archived = true): array\n {\n $endpoint = '/crm/v3/owners';\n $queryParams = [\n 'archived' => $archived ? 'true' : 'false',\n ];\n $queryString = http_build_query($queryParams);\n\n $owners = [];\n\n try {\n $response = $this->makeRequest(endpoint: $endpoint, queryString: $queryString);\n $responseData = $response?->toArray();\n\n foreach ($responseData['results'] as $result) {\n try {\n $owners[] = Owner::create($result);\n } catch (Throwable $e) {\n $this->log->error('[HubSpot] Failed to process owner data', [\n 'result' => $result,\n 'error' => $e->getMessage(),\n ]);\n\n continue;\n }\n }\n } catch (Throwable $e) {\n $this->log->error('HubSpot] Failed to fetch owners', [\n 'archived' => $archived,\n 'error' => $e->getMessage(),\n ]);\n\n return [];\n }\n\n return $owners;\n }\n\n public function getMeeting(string $engagementId): ObjectWithAssociations\n {\n return $this->getNewInstance()->crm()->objects()->basicApi()\n ->getById('meeting', $engagementId, null, 'contact,company,deal');\n }\n\n public function deleteEngagement(string $engagementId): void\n {\n $this->getInstance()->engagements()->delete((int) $engagementId);\n }\n\n public function getAssociationsData(array $ids, string $fromObject, string $toObject): array\n {\n $associationData = [];\n $idChunks = array_chunk($ids, self::ASSOCIATIONS_BATCH_SIZE_LIMIT);\n\n foreach ($idChunks as $idChunk) {\n try {\n $batchInput = new \\HubSpot\\Client\\Crm\\Associations\\Model\\BatchInputPublicObjectId();\n $batchInput->setInputs(array_map(function ($id) {\n $publicObjectId = new \\HubSpot\\Client\\Crm\\Associations\\Model\\PublicObjectId();\n $publicObjectId->setId($id);\n\n return $publicObjectId;\n }, $idChunk));\n\n $associatedObjectsData = $this\n ->getNewInstance()\n ->crm()\n ->associations()\n ->batchApi()\n ->read($fromObject, $toObject, $batchInput);\n\n if ($associatedObjectsData instanceof \\HubSpot\\Client\\Crm\\Associations\\Model\\BatchResponsePublicAssociationMulti) {\n foreach ($associatedObjectsData->getResults() as $association) {\n $from = $association->getFrom()->getId();\n $toAssociations = $association->getTo();\n\n if (! empty($toAssociations)) {\n $associationData[$from] = array_map(function ($item) {\n return $item->getId();\n }, $toAssociations);\n }\n }\n }\n } catch (\\Exception $e) {\n $this->log->error('[Hubspot] Failed to fetch associations', [\n 'from_object' => $fromObject,\n 'to_object' => $toObject,\n 'reason' => $e->getMessage(),\n ]);\n }\n }\n\n return $associationData;\n }\n\n /**\n * @throws \\Exception\n */\n private function getNoteAssociationType(NoteObject $noteObject): string\n {\n return match($noteObject) {\n NoteObject::Opportunity => 'note_to_deal',\n NoteObject::Lead, NoteObject::Contact => 'note_to_contact', // or 'note_to_lead' if your portal supports it\n NoteObject::Account => 'note_to_company',\n NoteObject::Call, NoteObject::Event => throw new \\Exception('Not supported'),\n };\n }\n\n /**\n * @throws \\Exception\n */\n private function getNoteObject(NoteObject $noteObject): string\n {\n return match($noteObject) {\n NoteObject::Opportunity => 'deal',\n NoteObject::Lead, NoteObject::Contact => 'contact',\n NoteObject::Account => 'company',\n NoteObject::Call, NoteObject::Event => throw new \\Exception('Not supported'),\n };\n }\n\n public function addAssociations(string $objectType, string $associationType, array $payload): Response\n {\n $endpoint = \"/crm/v4/associations/$objectType/$associationType/batch/create\";\n\n return $this->makeRequest($endpoint, 'POST', $payload);\n }\n\n public function removeAssociations(string $objectType, string $associationType, array $payload): Response\n {\n $endpoint = \"/crm/v4/associations/$objectType/$associationType/batch/archive\";\n\n return $this->makeRequest($endpoint, 'POST', $payload);\n }\n}","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Project","depth":3,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Project","depth":3,"bounds":{"left":0.011968086,"top":0.047885075,"width":0.024268618,"height":0.024740623},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"New File or Directory…","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Expand Selected","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Collapse All","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Options","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
-2379307789937465929
|
6701760610910178365
|
click
|
accessibility
|
NULL
|
Project: faVsco.js, menu
master, menu
Start Listen Project: faVsco.js, menu
master, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Show Replace Field
Search History
retry_error
New Line
Match Case
Words
Regex
Replace History
Replace
New Line
Preserve case
0 results
Previous Occurrence
Next Occurrence
Filter Search Results
Open in Window, Multiple Cursors
Click to highlight
Close
Sync Changes
Hide This Notification
Code changed:
Hide
238
Previous Highlighted Error
Next Highlighted Error
[2026-05-07 12:52:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"fa8a3008-d298-4682-bbbc-fdc77520e0d7","trace_id":"7cfb2afb-9fc4-4a77-81be-65dce93c7d80"}
[2026-05-07 12:52:08] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"fa8a3008-d298-4682-bbbc-fdc77520e0d7","trace_id":"7cfb2afb-9fc4-4a77-81be-65dce93c7d80"}
[2026-05-07 12:52:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"fa8a3008-d298-4682-bbbc-fdc77520e0d7","trace_id":"7cfb2afb-9fc4-4a77-81be-65dce93c7d80"}
[2026-05-07 12:52:12] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"932ced9d-9804-48ed-976a-1f8bf5e75707","trace_id":"21bf320c-58f3-4082-831d-9f07f6c6a669"}
[2026-05-07 12:52:12] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"932ced9d-9804-48ed-976a-1f8bf5e75707","trace_id":"21bf320c-58f3-4082-831d-9f07f6c6a669"}
[2026-05-07 12:52:17] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1499,"provider":"hubspot"} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:17] local.INFO: [SocialAccountService] Token retrieved {"socialAccountId":1499,"provider":"hubspot"} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:17] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:17] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {"crm_provider":"hubspot","crm_owner":148,"team_id":2} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:17] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.55,"average_seconds_per_request":0.55} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:18] local.NOTICE: Monitoring start {"correlation_id":"ae3ec78f-432c-4e22-b73b-0413af73d9f3","trace_id":"c2feb517-0f2b-4ad9-bce5-4d57476a164b"}
[2026-05-07 12:52:18] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.51,"average_seconds_per_request":0.51} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:18] local.NOTICE: Monitoring end {"correlation_id":"ae3ec78f-432c-4e22-b73b-0413af73d9f3","trace_id":"c2feb517-0f2b-4ad9-bce5-4d57476a164b"}
[2026-05-07 12:52:18] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.48,"average_seconds_per_request":0.48} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:19] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.49,"average_seconds_per_request":0.49} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:19] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.49,"average_seconds_per_request":0.49} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"2bf2f73f-007c-4909-925e-f1749fbf87b3","trace_id":"8429123c-d92c-48d9-a154-29bc0aa0e2a1"}
[2026-05-07 12:52:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"2bf2f73f-007c-4909-925e-f1749fbf87b3","trace_id":"8429123c-d92c-48d9-a154-29bc0aa0e2a1"}
[2026-05-07 12:52:20] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.48,"average_seconds_per_request":0.48} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:20] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.62,"average_seconds_per_request":0.62} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:21] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.78,"average_seconds_per_request":0.78} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:22] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":1.21,"average_seconds_per_request":1.21} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:23] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.53,"average_seconds_per_request":0.53} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:25] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8","trace_id":"64ccac6b-34f7-45ed-a8ac-b63adbb19107"}
[2026-05-07 12:52:25] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8","trace_id":"64ccac6b-34f7-45ed-a8ac-b63adbb19107"}
[2026-05-07 12:52:26] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8","trace_id":"64ccac6b-34f7-45ed-a8ac-b63adbb19107"}
[2026-05-07 12:52:26] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8","trace_id":"64ccac6b-34f7-45ed-a8ac-b63adbb19107"}
[2026-05-07 12:52:28] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:count","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"6e1a36d0-a87a-455f-88b9-04f16718ea33","trace_id":"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c"}
[2026-05-07 12:52:28] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:50:00, 2026-05-07 12:52:00] {"correlation_id":"6e1a36d0-a87a-455f-88b9-04f16718ea33","trace_id":"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c"}
[2026-05-07 12:52:28] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:50:00, 2026-05-07 12:52:00] {"correlation_id":"6e1a36d0-a87a-455f-88b9-04f16718ea33","trace_id":"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c"}
[2026-05-07 12:52:28] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:count","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"6e1a36d0-a87a-455f-88b9-04f16718ea33","trace_id":"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c"}
[2026-05-07 12:52:31] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:create","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"80549428-beea-4a6c-97d3-818ca0f059f3","trace_id":"55ddd59b-073b-4331-8cdb-baa869dcff70"}
[2026-05-07 12:52:31] local.INFO: [EmailSchedule] STARTING batch create {"host":"docker_lamp_1"} {"correlation_id":"80549428-beea-4a6c-97d3-818ca0f059f3","trace_id":"55ddd59b-073b-4331-8cdb-baa869dcff70"}
[2026-05-07 12:52:31] local.INFO: [EmailSchedule] FINISHED batch create {"host":"docker_lamp_1"} {"correlation_id":"80549428-beea-4a6c-97d3-818ca0f059f3","trace_id":"55ddd59b-073b-4331-8cdb-baa869dcff70"}
[2026-05-07 12:52:31] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:create","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"80549428-beea-4a6c-97d3-818ca0f059f3","trace_id":"55ddd59b-073b-4331-8cdb-baa869dcff70"}
[2026-05-07 12:52:32] local.INFO: [Jiminny\Jobs\Mailbox\CreateBatches] processed 2 inboxes and created 0 batches {"userId":null,"batchSize":30,"maxBatches":1000} {"correlation_id":"92242bd6-7014-4487-a50b-1570e1a88e7a","trace_id":"55ddd59b-073b-4331-8cdb-baa869dcff70"}
[2026-05-07 12:52:39] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"activity:sync","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"d467eace-3254-4ecc-8d8e-a94688d6d3ad","trace_id":"5105ca8f-3c0d-4798-b748-5a7d6fbd7531"}
[2026-05-07 12:52:39] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"activity:sync","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"d467eace-3254-4ecc-8d8e-a94688d6d3ad","trace_id":"5105ca8f-3c0d-4798-b748-5a7d6fbd7531"}
[2026-05-07 12:53:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"04363b29-2f82-470a-89d0-c5ce4f4779d7","trace_id":"3c76a1f1-3348-4e2b-897c-4a216ca95147"}
[2026-05-07 12:53:08] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"04363b29-2f82-470a-89d0-c5ce4f4779d7","trace_id":"3c76a1f1-3348-4e2b-897c-4a216ca95147"}
[2026-05-07 12:53:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"04363b29-2f82-470a-89d0-c5ce4f4779d7","trace_id":"3c76a1f1-3348-4e2b-897c-4a216ca95147"}
[2026-05-07 12:53:11] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"5ebbecd0-866c-443f-965f-b6ac03735379","trace_id":"e0a724a5-bb4b-4fe6-9fe9-36ea1c3f0326"}
[2026-05-07 12:53:11] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"5ebbecd0-866c-443f-965f-b6ac03735379","trace_id":"e0a724a5-bb4b-4fe6-9fe9-36ea1c3f0326"}
[2026-05-07 12:53:18] local.NOTICE: Monitoring start {"correlation_id":"f39f0d3c-a292-41cb-8834-45dae1f8cf47","trace_id":"b6e7e2a7-85af-401d-afc6-bec2bdab34d7"}
[2026-05-07 12:53:18] local.NOTICE: Monitoring end {"correlation_id":"f39f0d3c-a292-41cb-8834-45dae1f8cf47","trace_id":"b6e7e2a7-85af-401d-afc6-bec2bdab34d7"}
[2026-05-07 12:53:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"419bb747-2669-496f-944b-1073496cc271","trace_id":"4cb913a4-ef75-422b-80eb-fbfb988521ed"}
[2026-05-07 12:53:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"419bb747-2669-496f-944b-1073496cc271","trace_id":"4cb913a4-ef75-422b-80eb-fbfb988521ed"}
[2026-05-07 12:53:22] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"f4805c97-9344-4111-8be2-2b1efeae07bb","trace_id":"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22"}
[2026-05-07 12:53:22] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"f4805c97-9344-4111-8be2-2b1efeae07bb","trace_id":"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22"}
[2026-05-07 12:53:22] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"f4805c97-9344-4111-8be2-2b1efeae07bb","trace_id":"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22"}
[2026-05-07 12:53:22] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"f4805c97-9344-4111-8be2-2b1efeae07bb","trace_id":"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22"}
[2026-05-07 12:53:25] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:retry-failed","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"2eadb06b-2c2e-4a7f-8920-77bd30d6cd7f","trace_id":"75f27a23-2021-41a5-9e5f-4b1cb4f143a6"}
[2026-05-07 12:53:25] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:retry-failed","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"2eadb06b-2c2e-4a7f-8920-77bd30d6cd7f","trace_id":"75f27a23-2021-41a5-9e5f-4b1cb4f143a6"}
[2026-05-07 12:54:06] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"ad151521-f676-4351-a70b-f44dc0b94990","trace_id":"17e39c4c-85cb-49a4-815e-b7315a8c2249"}
[2026-05-07 12:54:06] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"ad151521-f676-4351-a70b-f44dc0b94990","trace_id":"17e39c4c-85cb-49a4-815e-b7315a8c2249"}
[2026-05-07 12:54:06] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"ad151521-f676-4351-a70b-f44dc0b94990","trace_id":"17e39c4c-85cb-49a4-815e-b7315a8c2249"}
[2026-05-07 12:54:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"ed0583cf-03c6-4696-b859-876c8efa4473","trace_id":"3f9e0a3c-2178-4885-95eb-8618b8cfc042"}
[2026-05-07 12:54:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"ed0583cf-03c6-4696-b859-876c8efa4473","trace_id":"3f9e0a3c-2178-4885-95eb-8618b8cfc042"}
[2026-05-07 12:54:10] local.NOTICE: Monitoring start {"correlation_id":"7142250a-b897-4620-8ff7-fd9b3a1f3802","trace_id":"597def1e-ca38-4cc4-8890-fdcd5baff948"}
[2026-05-07 12:54:10] local.NOTICE: Monitoring end {"correlation_id":"7142250a-b897-4620-8ff7-fd9b3a1f3802","trace_id":"597def1e-ca38-4cc4-8890-fdcd5baff948"}
[2026-05-07 12:54:12] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"cb2ada48-0200-4eb3-a8c5-6cb8ea43ec0d","trace_id":"73937bdc-10b9-4508-9ef2-86420fe774fc"}
[2026-05-07 12:54:12] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"cb2ada48-0200-4eb3-a8c5-6cb8ea43ec0d","trace_id":"73937bdc-10b9-4508-9ef2-86420fe774fc"}
[2026-05-07 12:54:14] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"8f1d8932-2839-4256-99ab-1fd13e8381c6","trace_id":"cc090767-edc2-4a89-90c2-116f1737de7f"}
[2026-05-07 12:54:14] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"8f1d8932-2839-4256-99ab-1fd13e8381c6","trace_id":"cc090767-edc2-4a89-90c2-116f1737de7f"}
[2026-05-07 12:54:14] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"8f1d8932-2839-4256-99ab-1fd13e8381c6","trace_id":"cc090767-edc2-4a89-90c2-116f1737de7f"}
[2026-05-07 12:54:14] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"8f1d8932-2839-4256-99ab-1fd13e8381c6","trace_id":"cc090767-edc2-4a89-90c2-116f1737de7f"}
[2026-05-07 12:54:16] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:count","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"9d324c6d-5b36-46ee-89c6-f95f86bf3f39","trace_id":"860cdff0-9356-4e94-84cc-e011a74ba56c"}
[2026-05-07 12:54:16] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:52:00, 2026-05-07 12:54:00] {"correlation_id":"9d324c6d-5b36-46ee-89c6-f95f86bf3f39","trace_id":"860cdff0-9356-4e94-84cc-e011a74ba56c"}
[2026-05-07 12:54:16] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:52:00, 2026-05-07 12:54:00] {"correlation_id":"9d324c6d-5b36-46ee-89c6-f95f86bf3f39","trace_id":"860cdff0-9356-4e94-84cc-e011a74ba56c"}
[2026-05-07 12:54:16] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:count","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"9d324c6d-5b36-46ee-89c6-f95f86bf3f39","trace_id":"860cdff0-9356-4e94-84cc-e011a74ba56c"}
[2026-05-07 12:54:18] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"activity:aircall:check-and-renew","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"c2009a88-eea6-4954-8642-ef5d9cb56b42","trace_id":"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab"}
[2026-05-07 12:54:18] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1496,"provider":"aircall"} {"correlation_id":"c2009a88-eea6-4954-8642-ef5d9cb56b42","trace_id":"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab"}
[2026-05-07 12:54:18] local.INFO: [SocialAccountService] Token retrieved {"socialAccountId":1496,"provider":"aircall"} {"correlation_id":"c2009a88-eea6-4954-8642-ef5d9cb56b42","trace_id":"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab"}
[2026-05-07 12:54:18] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"c2009a88-eea6-4954-8642-ef5d9cb56b42","trace_id":"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab"}
[2026-05-07 12:54:19] local.ERROR: [Aircall] Re-activating webhooks failed {"team_id":1,"reason":"{\"message\":\"Forbidden\"}"} {"correlation_id":"c2009a88-eea6-4954-8642-ef5d9cb56b42","trace_id":"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab"}
[2026-05-07 12:54:19] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"activity:aircall:check-and-renew","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"c2009a88-eea6-4954-8642-ef5d9cb56b42","trace_id":"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab"}
[2026-05-07 12:54:21] local.INFO: [RetryFailedDownloads] Starting {"options":{"from":null,"to":null,"help":false,"silent":false,"quiet":false,"verbose":false,"version":false,"ansi":null,"no-interaction":false,"env":null}} {"correlation_id":"825ef2d7-b5f8-45cd-b19d-20a179b06934","trace_id":"5825a6c8-14c9-4bec-b688-d4895cfc41cc"}
[2026-05-07 12:55:05] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"c0dc8e25-7a51-4023-be61-d0abd6d72e37","trace_id":"16b8fa3e-92b1-465e-82d4-642a2d14c7c5"}
[2026-05-07 12:55:05] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"c0dc8e25-7a51-4023-be61-d0abd6d72e37","trace_id":"16b8fa3e-92b1-465e-82d4-642a2d14c7c5"}
[2026-05-07 12:55:05] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"c0dc8e25-7a51-4023-be61-d0abd6d72e37","trace_id":"16b8fa3e-92b1-465e-82d4-642a2d14c7c5"}
[2026-05-07 12:55:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"1c65fdd1-1f79-435d-b469-add46ddafd63","trace_id":"62f2a3bb-3be7-4c76-a9dd-222bfb895fab"}
[2026-05-07 12:55:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"1c65fdd1-1f79-435d-b469-add46ddafd63","trace_id":"62f2a3bb-3be7-4c76-a9dd-222bfb895fab"}
[2026-05-07 12:55:11] local.NOTICE: Monitoring start {"correlation_id":"f115f9bc-bb59-4fc9-8c9f-8b69baba1a55","trace_id":"e75cb5c6-6dd8-4000-8d26-4418020c7cfe"}
[2026-05-07 12:55:11] local.NOTICE: Monitoring end {"correlation_id":"f115f9bc-bb59-4fc9-8c9f-8b69baba1a55","trace_id":"e75cb5c6-6dd8-4000-8d26-4418020c7cfe"}
[2026-05-07 12:55:14] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"dba5c474-4d40-44da-baf2-f8b30db9a2f5","trace_id":"adb45622-1fb0-457c-bf20-8dcceab2d62a"}
[2026-05-07 12:55:14] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"dba5c474-4d40-44da-baf2-f8b30db9a2f5","trace_id":"adb45622-1fb0-457c-bf20-8dcceab2d62a"}
[2026-05-07 12:55:16] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"22c96a8e-4424-4a1f-b349-206276eefe4c","trace_id":"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c"}
[2026-05-07 12:55:16] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"22c96a8e-4424-4a1f-b349-206276eefe4c","trace_id":"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c"}
[2026-05-07 12:55:16] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"22c96a8e-4424-4a1f-b349-206276eefe4c","trace_id":"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c"}
[2026-05-07 12:55:16] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"22c96a8e-4424-4a1f-b349-206276eefe4c","trace_id":"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c"}
[2026-05-07 12:55:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"activity:purge-stale","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"5f958e8d-1d01-4144-abd6-2513e5524ad3","trace_id":"828bc5b7-e2aa-4443-901f-38dd94bb7cc5"}
[2026-05-07 12:55:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"activity:purge-stale","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"5f958e8d-1d01-4144-abd6-2513e5524ad3","trace_id":"828bc5b7-e2aa-4443-901f-38dd94bb7cc5"}
[2026-05-07 12:55:22] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:text-relay:sync","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"6bd1c9cb-cd9a-42a9-87fe-45cb7bac687a","trace_id":"0f2f5d66-c4c9-46a5-a31b-6937663ce1ad"}
[2026-05-07 12:55:22] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:text-relay:sync","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"6bd1c9cb-cd9a-42a9-87fe-45cb7bac687a","trace_id":"0f2f5d66-c4c9-46a5-a31b-6937663ce1ad"}
[2026-05-07 12:55:24] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:pre-meeting-notification","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"c5dd8132-d7e1-4caa-84d1-0a50d02df8da","trace_id":"bc7341c5-b8e2-48ea-9670-7ec375363180"}
[2026-05-07 12:55:24] local.INFO: Running pre-meeting notification command {"correlation_id":"c5dd8132-d7e1-4caa-84d1-0a50d02df8da","trace_id":"bc7341c5-b8e2-48ea-9670-7ec375363180"}
[2026-05-07 12:55:24] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:pre-meeting-notification","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"c5dd8132-d7e1-4caa-84d1-0a50d02df8da","trace_id":"bc7341c5-b8e2-48ea-9670-7ec375363180"}
[2026-05-07 12:55:26] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:start","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0","trace_id":"efb1619f-4185-4319-9bfb-305cee0b6bfc"}
[2026-05-07 12:55:26] local.INFO: Running conference:monitor:start command for activities in (2026-05-07 12:45:00, 2026-05-07 12:50:00] {"correlation_id":"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0","trace_id":"efb1619f-4185-4319-9bfb-305cee0b6bfc"}
[2026-05-07 12:55:26] local.INFO: [conference:monitor:start] No activities found in (2026-05-07 12:45:00, 2026-05-07 12:50:00] {"correlation_id":"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0","trace_id":"efb1619f-4185-4319-9bfb-305cee0b6bfc"}
[2026-05-07 12:55:26] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:start","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0","trace_id":"efb1619f-4185-4319-9bfb-305cee0b6bfc"}
[2026-05-07 12:55:28] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:end","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"3792b31a-080a-4fe4-9823-5602361325ba","trace_id":"41a2fde1-48f6-4667-84b7-a2f93e9ad2da"}
[2026-05-07 12:55:28] local.INFO: conference:monitor:end:Jiminny\Console\Commands\Activities\MonitorMeetingEndCommand::logActivitiesEnded {"from":"12:50","to":"12:55"} {"correlation_id":"3792b31a-080a-4fe4-9823-5602361325ba","trace_id":"41a2fde1-48f6-4667-84b7-a2f93e9ad2da"}
[2026-05-07 12:55:28] local.INFO: conference:monitor:end:Jiminny\Console\Commands\Activities\MonitorMeetingEndCommand::logActivitiesWithUnfinishedSession {"from":"02:45","to":"02:50"} {"correlation_id":"3792b31a-080a-4fe4-9823-5602361325ba","trace_id":"41a2fde1-48f6-4667-84b7-a2f93e9ad2da"}
[2026-05-07 12:55:28] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:end","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"3792b31a-080a-4fe4-9823-5602361325ba","trace_id":"41a2fde1-48f6-4667-84b7-a2f93e9ad2da"}
[2026-05-07 12:55:30] local.NOTICE: Repairing HubSpot tokens start {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:30] local.INFO: Trying to refresh HubSpot token {"account_id":59,"updated_at":"2025-10-03 09:32:05"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:30] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:30] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":59,"provider":"hubspot","refreshToken":"97b78f6e2cc49965c00c2492b602b02708b1392551e6b3f113fbaa48992af90b","state":"full-refresh"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.ERROR: Failed to refresh HubSpot token {"account_id":59,"updated_at":"2025-10-03 09:32:05","reason":"missing or invalid refresh token","previous":""} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.INFO: Trying to refresh HubSpot token {"account_id":306,"updated_at":"2023-11-27 09:30:03"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":306,"provider":"hubspot","refreshToken":"6fa6aa8cc641d131231acc3470f5c03cb3b07b2e580fb18f8acb3b1dbb72549b","state":"full-refresh"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.ERROR: Failed to refresh HubSpot token {"account_id":306,"updated_at":"2023-11-27 09:30:03","reason":"missing or invalid refresh token","previous":""} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.INFO: Trying to refresh HubSpot token {"account_id":1372,"updated_at":"2025-10-02 14:47:06"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1372,"provider":"hubspot","refreshToken":"9aa73948c761da29dce46c177cf9aee1fde483a44169ca38723f9f0597d7a8c4","state":"full-refresh"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:32] local.ERROR: Failed to refresh HubSpot token {"account_id":1372,"updated_at":"2025-10-02 14:47:06","reason":"missing or invalid refresh token","previous":""} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:32] local.NOTICE: Repairing HubSpot tokens end {"total":3,"fixed":0,"failed":3} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:40] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"crm:bullhorn:ping","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"5e676ae4-5d63-49d4-9001-559088adf06b","trace_id":"2fcce073-dd68-4c99-b7c4-b9e03c20b8e4"}
[2026-05-07 12:55:40] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:pre-meeting-reminder","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"1f830896-8142-41d1-bfc9-4cbb9179ffda","trace_id":"e348a096-7f37-4308-a6d8-66131e8be901"}
[2026-05-07 12:55:40] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"crm:bullhorn:ping","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"5e676ae4-5d63-49d4-9001-559088adf06b","trace_id":"2fcce073-dd68-4c99-b7c4-b9e03c20b8e4"}
[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Command] Starting polling service {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Service starting {"memory_limit":"256M","max_execution_time":"0","initial_memory_mb":62.0} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Acquired polling lock {"expires_at":"2026-05-07T12:57:40.609671Z"} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:40] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:40] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:pre-meeting-reminder","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"1f830896-8142-41d1-bfc9-4cbb9179ffda","trace_id":"e348a096-7f37-4308-a6d8-66131e8be901"}
[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:45] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:45] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:46] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:51] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:51] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:51] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:06] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:06] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:06] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"2d8b30b4-87aa-480f-9b9e-5a9c709b742a","trace_id":"25b7be6c-1faf-430b-a724-a4ff28773a31"}
[2026-05-07 12:56:08] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"2d8b30b4-87aa-480f-9b9e-5a9c709b742a","trace_id":"25b7be6c-1faf-430b-a724-a4ff28773a31"}
[2026-05-07 12:56:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"2d8b30b4-87aa-480f-9b9e-5a9c709b742a","trace_id":"25b7be6c-1faf-430b-a724-a4ff28773a31"}
[2026-05-07 12:56:10] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"efd336d7-db4d-459e-b6e7-bf73454e955e","trace_id":"0a82c3d5-0417-48c8-b88f-70ec33e2326a"}
[2026-05-07 12:56:10] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"efd336d7-db4d-459e-b6e7-bf73454e955e","trace_id":"0a82c3d5-0417-48c8-b88f-70ec33e2326a"}
[2026-05-07 12:56:12] local.NOTICE: Monitoring start {"correlation_id":"68481576-8ca6-4ee5-821b-07374702971d","trace_id":"c73eac09-5d20-425f-9c22-bd6c65fc60c9"}
[2026-05-07 12:56:12] local.NOTICE: Monitoring end {"correlation_id":"68481576-8ca6-4ee5-821b-07374702971d","trace_id":"c73eac09-5d20-425f-9c22-bd6c65fc60c9"}
[2026-05-07 12:56:17] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"bd0cdc75-b5c2-4dbb-bc44-e36c96813d24","trace_id":"f688cd98-c171-4e30-8c72-afc14f040861"}
[2026-05-07 12:56:17] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"bd0cdc75-b5c2-4dbb-bc44-e36c96813d24","trace_id":"f688cd98-c171-4e30-8c72-afc14f040861"}
[2026-05-07 12:56:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"f01636a9-4059-4ab0-9ad2-b078d42cedbd","trace_id":"fea938d8-aedc-40ec-b8c2-2f487e1ac808"}
[2026-05-07 12:56:20] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"f01636a9-4059-4ab0-9ad2-b078d42cedbd","trace_id":"fea938d8-aedc-40ec-b8c2-2f487e1ac808"}
[2026-05-07 12:56:20] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"f01636a9-4059-4ab0-9ad2-b078d42cedbd","trace_id":"fea938d8-aedc-40ec-b8c2-2f487e1ac808"}
[2026-05-07 12:56:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"f01636a9-4059-4ab0-9ad2-b078d42cedbd","trace_id":"fea938d8-aedc-40ec-b8c2-2f487e1ac808"}
[2026-05-07 12:56:23] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:count","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"d4558901-264d-4238-8589-62a137bac1fd","trace_id":"38e6b5dc-ebd6-46a7-8224-7374d4e58630"}
[2026-05-07 12:56:23] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:54:00, 2026-05-07 12:56:00] {"correlation_id":"d4558901-264d-4238-8589-62a137bac1fd","trace_id":"38e6b5dc-ebd6-46a7-8224-7374d4e58630"}
[2026-05-07 12:56:23] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:54:00, 2026-05-07 12:56:00] {"correlation_id":"d4558901-264d-4238-8589-62a137bac1fd","trace_id":"38e6b5dc-ebd6-46a7-8224-7374d4e58630"}
[2026-05-07 12:56:23] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:count","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"d4558901-264d-4238-8589-62a137bac1fd","trace_id":"38e6b5dc-ebd6-46a7-8224-7374d4e58630"}
[2026-05-07 12:56:24] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"crm:sync-hubspot-objects","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"7bfaf9be-0ca1-4170-a0c9-83e0ed61881c","trace_id":"ba7f9eee-8dcb-4c94-acb0-18f9363757ad"}
[2026-05-07 12:56:24] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"crm:sync-hubspot-objects","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"7bfaf9be-0ca1-4170-a0c9-83e0ed61881c","trace_id":"ba7f9eee-8dcb-4c94-acb0-18f9363757ad"}
[2026-05-07 12:56:26] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"activity:notify-not-logged","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"2541e0fa-1117-4863-9523-d723b5821a24","trace_id":"d9600320-5133-4938-bdd1-2256dfdf8db4"}
[2026-05-07 12:56:26] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"activity:notify-not-logged","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"2541e0fa-1117-4863-9523-d723b5821a24","trace_id":"d9600320-5133-4938-bdd1-2256dfdf8db4"}
[2026-05-07 12:56:35] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:sync","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"e444f776-37db-4c6d-b30e-20b01a089de7","trace_id":"1168869e-e07c-4702-a046-42fc95a91f6d"}
[2026-05-07 12:56:36] local.INFO: [EmailSchedule] STARTING Inbox Sync {"host":"docker_lamp_1"} {"correlation_id":"e444f776-37db-4c6d-b30e-20b01a089de7","trace_id":"1168869e-e07c-4702-a046-42fc95a91f6d"}
[2026-05-07 12:56:36] local.INFO: [EmailSchedule] FINISHED Inbox Sync {"host":"docker_lamp_1","events":2} {"correlation_id":"e444f776-37db-4c6d-b30e-20b01a089de7","trace_id":"1168869e-e07c-4702-a046-42fc95a91f6d"}
[2026-05-07 12:56:36] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:sync","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"e444f776-37db-4c6d-b30e-20b01a089de7","trace_id":"1168869e-e07c-4702-a046-42fc95a91f6d"}
[2026-05-07 12:56:36] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:36] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:36] local.INFO: [HubSpot Journal Auth] Requesting new client credentials token {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:37] local.INFO: [HubSpot Journal Auth] Successfully obtained new access token {"expires_in":1800,"cached_for":1500} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:37] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:37] local.WARNING: [HubSpot Journal Polling] Maximum empty results reached, stopping {"empty_results":5,"max_empty_results":5} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:37] local.WARNING: [HubSpot Journal Polling] Maximum empty results reached, stopping {"empty_results":5,"max_empty_results":5} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:37] local.INFO: [HubSpot Journal Polling] Service ending {"runtime_seconds":57,"total_cycles":5,"files_downloaded":0,"empty_files":0,"other_portal_skipped":0,"total_events":0,"events_per_file":0,"avg_api_ms":238.3,"avg_download_ms":0.0,"avg_transform_ms":0.0,"avg_process_ms":0.0,"peak_memory_mb":99.73} {"correlation_id"...
|
4117
|
NULL
|
NULL
|
NULL
|
|
4119
|
NULL
|
0
|
2026-05-07T13:06:26.019911+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-07/1778 /Users/lukas/.screenpipe/data/data/2026-05-07/1778159186019_m1.jpg...
|
PhpStorm
|
faVsco.js – Client.php
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
master, menu
Start Listen Project: faVsco.js, menu
master, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Show Replace Field
Search History
retry_error
New Line
Match Case
Words
Regex
Replace History
Replace
New Line
Preserve case
0 results
Previous Occurrence
Next Occurrence
Filter Search Results
Open in Window, Multiple Cursors
Click to highlight
Close
Sync Changes
Hide This Notification
Code changed:
Hide
238
Previous Highlighted Error
Next Highlighted Error
[2026-05-07 12:52:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"fa8a3008-d298-4682-bbbc-fdc77520e0d7","trace_id":"7cfb2afb-9fc4-4a77-81be-65dce93c7d80"}
[2026-05-07 12:52:08] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"fa8a3008-d298-4682-bbbc-fdc77520e0d7","trace_id":"7cfb2afb-9fc4-4a77-81be-65dce93c7d80"}
[2026-05-07 12:52:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"fa8a3008-d298-4682-bbbc-fdc77520e0d7","trace_id":"7cfb2afb-9fc4-4a77-81be-65dce93c7d80"}
[2026-05-07 12:52:12] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"932ced9d-9804-48ed-976a-1f8bf5e75707","trace_id":"21bf320c-58f3-4082-831d-9f07f6c6a669"}
[2026-05-07 12:52:12] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"932ced9d-9804-48ed-976a-1f8bf5e75707","trace_id":"21bf320c-58f3-4082-831d-9f07f6c6a669"}
[2026-05-07 12:52:17] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1499,"provider":"hubspot"} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:17] local.INFO: [SocialAccountService] Token retrieved {"socialAccountId":1499,"provider":"hubspot"} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:17] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:17] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {"crm_provider":"hubspot","crm_owner":148,"team_id":2} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:17] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.55,"average_seconds_per_request":0.55} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:18] local.NOTICE: Monitoring start {"correlation_id":"ae3ec78f-432c-4e22-b73b-0413af73d9f3","trace_id":"c2feb517-0f2b-4ad9-bce5-4d57476a164b"}
[2026-05-07 12:52:18] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.51,"average_seconds_per_request":0.51} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:18] local.NOTICE: Monitoring end {"correlation_id":"ae3ec78f-432c-4e22-b73b-0413af73d9f3","trace_id":"c2feb517-0f2b-4ad9-bce5-4d57476a164b"}
[2026-05-07 12:52:18] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.48,"average_seconds_per_request":0.48} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:19] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.49,"average_seconds_per_request":0.49} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:19] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.49,"average_seconds_per_request":0.49} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"2bf2f73f-007c-4909-925e-f1749fbf87b3","trace_id":"8429123c-d92c-48d9-a154-29bc0aa0e2a1"}
[2026-05-07 12:52:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"2bf2f73f-007c-4909-925e-f1749fbf87b3","trace_id":"8429123c-d92c-48d9-a154-29bc0aa0e2a1"}
[2026-05-07 12:52:20] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.48,"average_seconds_per_request":0.48} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:20] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.62,"average_seconds_per_request":0.62} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:21] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.78,"average_seconds_per_request":0.78} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:22] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":1.21,"average_seconds_per_request":1.21} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:23] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.53,"average_seconds_per_request":0.53} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:25] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8","trace_id":"64ccac6b-34f7-45ed-a8ac-b63adbb19107"}
[2026-05-07 12:52:25] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8","trace_id":"64ccac6b-34f7-45ed-a8ac-b63adbb19107"}
[2026-05-07 12:52:26] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8","trace_id":"64ccac6b-34f7-45ed-a8ac-b63adbb19107"}
[2026-05-07 12:52:26] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8","trace_id":"64ccac6b-34f7-45ed-a8ac-b63adbb19107"}
[2026-05-07 12:52:28] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:count","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"6e1a36d0-a87a-455f-88b9-04f16718ea33","trace_id":"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c"}
[2026-05-07 12:52:28] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:50:00, 2026-05-07 12:52:00] {"correlation_id":"6e1a36d0-a87a-455f-88b9-04f16718ea33","trace_id":"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c"}
[2026-05-07 12:52:28] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:50:00, 2026-05-07 12:52:00] {"correlation_id":"6e1a36d0-a87a-455f-88b9-04f16718ea33","trace_id":"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c"}
[2026-05-07 12:52:28] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:count","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"6e1a36d0-a87a-455f-88b9-04f16718ea33","trace_id":"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c"}
[2026-05-07 12:52:31] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:create","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"80549428-beea-4a6c-97d3-818ca0f059f3","trace_id":"55ddd59b-073b-4331-8cdb-baa869dcff70"}
[2026-05-07 12:52:31] local.INFO: [EmailSchedule] STARTING batch create {"host":"docker_lamp_1"} {"correlation_id":"80549428-beea-4a6c-97d3-818ca0f059f3","trace_id":"55ddd59b-073b-4331-8cdb-baa869dcff70"}
[2026-05-07 12:52:31] local.INFO: [EmailSchedule] FINISHED batch create {"host":"docker_lamp_1"} {"correlation_id":"80549428-beea-4a6c-97d3-818ca0f059f3","trace_id":"55ddd59b-073b-4331-8cdb-baa869dcff70"}
[2026-05-07 12:52:31] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:create","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"80549428-beea-4a6c-97d3-818ca0f059f3","trace_id":"55ddd59b-073b-4331-8cdb-baa869dcff70"}
[2026-05-07 12:52:32] local.INFO: [Jiminny\Jobs\Mailbox\CreateBatches] processed 2 inboxes and created 0 batches {"userId":null,"batchSize":30,"maxBatches":1000} {"correlation_id":"92242bd6-7014-4487-a50b-1570e1a88e7a","trace_id":"55ddd59b-073b-4331-8cdb-baa869dcff70"}
[2026-05-07 12:52:39] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"activity:sync","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"d467eace-3254-4ecc-8d8e-a94688d6d3ad","trace_id":"5105ca8f-3c0d-4798-b748-5a7d6fbd7531"}
[2026-05-07 12:52:39] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"activity:sync","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"d467eace-3254-4ecc-8d8e-a94688d6d3ad","trace_id":"5105ca8f-3c0d-4798-b748-5a7d6fbd7531"}
[2026-05-07 12:53:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"04363b29-2f82-470a-89d0-c5ce4f4779d7","trace_id":"3c76a1f1-3348-4e2b-897c-4a216ca95147"}
[2026-05-07 12:53:08] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"04363b29-2f82-470a-89d0-c5ce4f4779d7","trace_id":"3c76a1f1-3348-4e2b-897c-4a216ca95147"}
[2026-05-07 12:53:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"04363b29-2f82-470a-89d0-c5ce4f4779d7","trace_id":"3c76a1f1-3348-4e2b-897c-4a216ca95147"}
[2026-05-07 12:53:11] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"5ebbecd0-866c-443f-965f-b6ac03735379","trace_id":"e0a724a5-bb4b-4fe6-9fe9-36ea1c3f0326"}
[2026-05-07 12:53:11] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"5ebbecd0-866c-443f-965f-b6ac03735379","trace_id":"e0a724a5-bb4b-4fe6-9fe9-36ea1c3f0326"}
[2026-05-07 12:53:18] local.NOTICE: Monitoring start {"correlation_id":"f39f0d3c-a292-41cb-8834-45dae1f8cf47","trace_id":"b6e7e2a7-85af-401d-afc6-bec2bdab34d7"}
[2026-05-07 12:53:18] local.NOTICE: Monitoring end {"correlation_id":"f39f0d3c-a292-41cb-8834-45dae1f8cf47","trace_id":"b6e7e2a7-85af-401d-afc6-bec2bdab34d7"}
[2026-05-07 12:53:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"419bb747-2669-496f-944b-1073496cc271","trace_id":"4cb913a4-ef75-422b-80eb-fbfb988521ed"}
[2026-05-07 12:53:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"419bb747-2669-496f-944b-1073496cc271","trace_id":"4cb913a4-ef75-422b-80eb-fbfb988521ed"}
[2026-05-07 12:53:22] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"f4805c97-9344-4111-8be2-2b1efeae07bb","trace_id":"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22"}
[2026-05-07 12:53:22] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"f4805c97-9344-4111-8be2-2b1efeae07bb","trace_id":"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22"}
[2026-05-07 12:53:22] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"f4805c97-9344-4111-8be2-2b1efeae07bb","trace_id":"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22"}
[2026-05-07 12:53:22] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"f4805c97-9344-4111-8be2-2b1efeae07bb","trace_id":"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22"}
[2026-05-07 12:53:25] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:retry-failed","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"2eadb06b-2c2e-4a7f-8920-77bd30d6cd7f","trace_id":"75f27a23-2021-41a5-9e5f-4b1cb4f143a6"}
[2026-05-07 12:53:25] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:retry-failed","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"2eadb06b-2c2e-4a7f-8920-77bd30d6cd7f","trace_id":"75f27a23-2021-41a5-9e5f-4b1cb4f143a6"}
[2026-05-07 12:54:06] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"ad151521-f676-4351-a70b-f44dc0b94990","trace_id":"17e39c4c-85cb-49a4-815e-b7315a8c2249"}
[2026-05-07 12:54:06] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"ad151521-f676-4351-a70b-f44dc0b94990","trace_id":"17e39c4c-85cb-49a4-815e-b7315a8c2249"}
[2026-05-07 12:54:06] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"ad151521-f676-4351-a70b-f44dc0b94990","trace_id":"17e39c4c-85cb-49a4-815e-b7315a8c2249"}
[2026-05-07 12:54:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"ed0583cf-03c6-4696-b859-876c8efa4473","trace_id":"3f9e0a3c-2178-4885-95eb-8618b8cfc042"}
[2026-05-07 12:54:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"ed0583cf-03c6-4696-b859-876c8efa4473","trace_id":"3f9e0a3c-2178-4885-95eb-8618b8cfc042"}
[2026-05-07 12:54:10] local.NOTICE: Monitoring start {"correlation_id":"7142250a-b897-4620-8ff7-fd9b3a1f3802","trace_id":"597def1e-ca38-4cc4-8890-fdcd5baff948"}
[2026-05-07 12:54:10] local.NOTICE: Monitoring end {"correlation_id":"7142250a-b897-4620-8ff7-fd9b3a1f3802","trace_id":"597def1e-ca38-4cc4-8890-fdcd5baff948"}
[2026-05-07 12:54:12] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"cb2ada48-0200-4eb3-a8c5-6cb8ea43ec0d","trace_id":"73937bdc-10b9-4508-9ef2-86420fe774fc"}
[2026-05-07 12:54:12] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"cb2ada48-0200-4eb3-a8c5-6cb8ea43ec0d","trace_id":"73937bdc-10b9-4508-9ef2-86420fe774fc"}
[2026-05-07 12:54:14] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"8f1d8932-2839-4256-99ab-1fd13e8381c6","trace_id":"cc090767-edc2-4a89-90c2-116f1737de7f"}
[2026-05-07 12:54:14] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"8f1d8932-2839-4256-99ab-1fd13e8381c6","trace_id":"cc090767-edc2-4a89-90c2-116f1737de7f"}
[2026-05-07 12:54:14] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"8f1d8932-2839-4256-99ab-1fd13e8381c6","trace_id":"cc090767-edc2-4a89-90c2-116f1737de7f"}
[2026-05-07 12:54:14] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"8f1d8932-2839-4256-99ab-1fd13e8381c6","trace_id":"cc090767-edc2-4a89-90c2-116f1737de7f"}
[2026-05-07 12:54:16] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:count","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"9d324c6d-5b36-46ee-89c6-f95f86bf3f39","trace_id":"860cdff0-9356-4e94-84cc-e011a74ba56c"}
[2026-05-07 12:54:16] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:52:00, 2026-05-07 12:54:00] {"correlation_id":"9d324c6d-5b36-46ee-89c6-f95f86bf3f39","trace_id":"860cdff0-9356-4e94-84cc-e011a74ba56c"}
[2026-05-07 12:54:16] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:52:00, 2026-05-07 12:54:00] {"correlation_id":"9d324c6d-5b36-46ee-89c6-f95f86bf3f39","trace_id":"860cdff0-9356-4e94-84cc-e011a74ba56c"}
[2026-05-07 12:54:16] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:count","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"9d324c6d-5b36-46ee-89c6-f95f86bf3f39","trace_id":"860cdff0-9356-4e94-84cc-e011a74ba56c"}
[2026-05-07 12:54:18] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"activity:aircall:check-and-renew","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"c2009a88-eea6-4954-8642-ef5d9cb56b42","trace_id":"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab"}
[2026-05-07 12:54:18] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1496,"provider":"aircall"} {"correlation_id":"c2009a88-eea6-4954-8642-ef5d9cb56b42","trace_id":"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab"}
[2026-05-07 12:54:18] local.INFO: [SocialAccountService] Token retrieved {"socialAccountId":1496,"provider":"aircall"} {"correlation_id":"c2009a88-eea6-4954-8642-ef5d9cb56b42","trace_id":"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab"}
[2026-05-07 12:54:18] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"c2009a88-eea6-4954-8642-ef5d9cb56b42","trace_id":"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab"}
[2026-05-07 12:54:19] local.ERROR: [Aircall] Re-activating webhooks failed {"team_id":1,"reason":"{\"message\":\"Forbidden\"}"} {"correlation_id":"c2009a88-eea6-4954-8642-ef5d9cb56b42","trace_id":"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab"}
[2026-05-07 12:54:19] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"activity:aircall:check-and-renew","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"c2009a88-eea6-4954-8642-ef5d9cb56b42","trace_id":"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab"}
[2026-05-07 12:54:21] local.INFO: [RetryFailedDownloads] Starting {"options":{"from":null,"to":null,"help":false,"silent":false,"quiet":false,"verbose":false,"version":false,"ansi":null,"no-interaction":false,"env":null}} {"correlation_id":"825ef2d7-b5f8-45cd-b19d-20a179b06934","trace_id":"5825a6c8-14c9-4bec-b688-d4895cfc41cc"}
[2026-05-07 12:55:05] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"c0dc8e25-7a51-4023-be61-d0abd6d72e37","trace_id":"16b8fa3e-92b1-465e-82d4-642a2d14c7c5"}
[2026-05-07 12:55:05] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"c0dc8e25-7a51-4023-be61-d0abd6d72e37","trace_id":"16b8fa3e-92b1-465e-82d4-642a2d14c7c5"}
[2026-05-07 12:55:05] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"c0dc8e25-7a51-4023-be61-d0abd6d72e37","trace_id":"16b8fa3e-92b1-465e-82d4-642a2d14c7c5"}
[2026-05-07 12:55:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"1c65fdd1-1f79-435d-b469-add46ddafd63","trace_id":"62f2a3bb-3be7-4c76-a9dd-222bfb895fab"}
[2026-05-07 12:55:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"1c65fdd1-1f79-435d-b469-add46ddafd63","trace_id":"62f2a3bb-3be7-4c76-a9dd-222bfb895fab"}
[2026-05-07 12:55:11] local.NOTICE: Monitoring start {"correlation_id":"f115f9bc-bb59-4fc9-8c9f-8b69baba1a55","trace_id":"e75cb5c6-6dd8-4000-8d26-4418020c7cfe"}
[2026-05-07 12:55:11] local.NOTICE: Monitoring end {"correlation_id":"f115f9bc-bb59-4fc9-8c9f-8b69baba1a55","trace_id":"e75cb5c6-6dd8-4000-8d26-4418020c7cfe"}
[2026-05-07 12:55:14] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"dba5c474-4d40-44da-baf2-f8b30db9a2f5","trace_id":"adb45622-1fb0-457c-bf20-8dcceab2d62a"}
[2026-05-07 12:55:14] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"dba5c474-4d40-44da-baf2-f8b30db9a2f5","trace_id":"adb45622-1fb0-457c-bf20-8dcceab2d62a"}
[2026-05-07 12:55:16] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"22c96a8e-4424-4a1f-b349-206276eefe4c","trace_id":"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c"}
[2026-05-07 12:55:16] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"22c96a8e-4424-4a1f-b349-206276eefe4c","trace_id":"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c"}
[2026-05-07 12:55:16] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"22c96a8e-4424-4a1f-b349-206276eefe4c","trace_id":"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c"}
[2026-05-07 12:55:16] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"22c96a8e-4424-4a1f-b349-206276eefe4c","trace_id":"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c"}
[2026-05-07 12:55:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"activity:purge-stale","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"5f958e8d-1d01-4144-abd6-2513e5524ad3","trace_id":"828bc5b7-e2aa-4443-901f-38dd94bb7cc5"}
[2026-05-07 12:55:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"activity:purge-stale","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"5f958e8d-1d01-4144-abd6-2513e5524ad3","trace_id":"828bc5b7-e2aa-4443-901f-38dd94bb7cc5"}
[2026-05-07 12:55:22] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:text-relay:sync","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"6bd1c9cb-cd9a-42a9-87fe-45cb7bac687a","trace_id":"0f2f5d66-c4c9-46a5-a31b-6937663ce1ad"}
[2026-05-07 12:55:22] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:text-relay:sync","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"6bd1c9cb-cd9a-42a9-87fe-45cb7bac687a","trace_id":"0f2f5d66-c4c9-46a5-a31b-6937663ce1ad"}
[2026-05-07 12:55:24] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:pre-meeting-notification","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"c5dd8132-d7e1-4caa-84d1-0a50d02df8da","trace_id":"bc7341c5-b8e2-48ea-9670-7ec375363180"}
[2026-05-07 12:55:24] local.INFO: Running pre-meeting notification command {"correlation_id":"c5dd8132-d7e1-4caa-84d1-0a50d02df8da","trace_id":"bc7341c5-b8e2-48ea-9670-7ec375363180"}
[2026-05-07 12:55:24] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:pre-meeting-notification","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"c5dd8132-d7e1-4caa-84d1-0a50d02df8da","trace_id":"bc7341c5-b8e2-48ea-9670-7ec375363180"}
[2026-05-07 12:55:26] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:start","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0","trace_id":"efb1619f-4185-4319-9bfb-305cee0b6bfc"}
[2026-05-07 12:55:26] local.INFO: Running conference:monitor:start command for activities in (2026-05-07 12:45:00, 2026-05-07 12:50:00] {"correlation_id":"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0","trace_id":"efb1619f-4185-4319-9bfb-305cee0b6bfc"}
[2026-05-07 12:55:26] local.INFO: [conference:monitor:start] No activities found in (2026-05-07 12:45:00, 2026-05-07 12:50:00] {"correlation_id":"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0","trace_id":"efb1619f-4185-4319-9bfb-305cee0b6bfc"}
[2026-05-07 12:55:26] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:start","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0","trace_id":"efb1619f-4185-4319-9bfb-305cee0b6bfc"}
[2026-05-07 12:55:28] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:end","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"3792b31a-080a-4fe4-9823-5602361325ba","trace_id":"41a2fde1-48f6-4667-84b7-a2f93e9ad2da"}
[2026-05-07 12:55:28] local.INFO: conference:monitor:end:Jiminny\Console\Commands\Activities\MonitorMeetingEndCommand::logActivitiesEnded {"from":"12:50","to":"12:55"} {"correlation_id":"3792b31a-080a-4fe4-9823-5602361325ba","trace_id":"41a2fde1-48f6-4667-84b7-a2f93e9ad2da"}
[2026-05-07 12:55:28] local.INFO: conference:monitor:end:Jiminny\Console\Commands\Activities\MonitorMeetingEndCommand::logActivitiesWithUnfinishedSession {"from":"02:45","to":"02:50"} {"correlation_id":"3792b31a-080a-4fe4-9823-5602361325ba","trace_id":"41a2fde1-48f6-4667-84b7-a2f93e9ad2da"}
[2026-05-07 12:55:28] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:end","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"3792b31a-080a-4fe4-9823-5602361325ba","trace_id":"41a2fde1-48f6-4667-84b7-a2f93e9ad2da"}
[2026-05-07 12:55:30] local.NOTICE: Repairing HubSpot tokens start {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:30] local.INFO: Trying to refresh HubSpot token {"account_id":59,"updated_at":"2025-10-03 09:32:05"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:30] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:30] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":59,"provider":"hubspot","refreshToken":"97b78f6e2cc49965c00c2492b602b02708b1392551e6b3f113fbaa48992af90b","state":"full-refresh"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.ERROR: Failed to refresh HubSpot token {"account_id":59,"updated_at":"2025-10-03 09:32:05","reason":"missing or invalid refresh token","previous":""} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.INFO: Trying to refresh HubSpot token {"account_id":306,"updated_at":"2023-11-27 09:30:03"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":306,"provider":"hubspot","refreshToken":"6fa6aa8cc641d131231acc3470f5c03cb3b07b2e580fb18f8acb3b1dbb72549b","state":"full-refresh"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.ERROR: Failed to refresh HubSpot token {"account_id":306,"updated_at":"2023-11-27 09:30:03","reason":"missing or invalid refresh token","previous":""} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.INFO: Trying to refresh HubSpot token {"account_id":1372,"updated_at":"2025-10-02 14:47:06"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1372,"provider":"hubspot","refreshToken":"9aa73948c761da29dce46c177cf9aee1fde483a44169ca38723f9f0597d7a8c4","state":"full-refresh"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:32] local.ERROR: Failed to refresh HubSpot token {"account_id":1372,"updated_at":"2025-10-02 14:47:06","reason":"missing or invalid refresh token","previous":""} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:32] local.NOTICE: Repairing HubSpot tokens end {"total":3,"fixed":0,"failed":3} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:40] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"crm:bullhorn:ping","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"5e676ae4-5d63-49d4-9001-559088adf06b","trace_id":"2fcce073-dd68-4c99-b7c4-b9e03c20b8e4"}
[2026-05-07 12:55:40] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:pre-meeting-reminder","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"1f830896-8142-41d1-bfc9-4cbb9179ffda","trace_id":"e348a096-7f37-4308-a6d8-66131e8be901"}
[2026-05-07 12:55:40] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"crm:bullhorn:ping","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"5e676ae4-5d63-49d4-9001-559088adf06b","trace_id":"2fcce073-dd68-4c99-b7c4-b9e03c20b8e4"}
[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Command] Starting polling service {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Service starting {"memory_limit":"256M","max_execution_time":"0","initial_memory_mb":62.0} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Acquired polling lock {"expires_at":"2026-05-07T12:57:40.609671Z"} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:40] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:40] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:pre-meeting-reminder","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"1f830896-8142-41d1-bfc9-4cbb9179ffda","trace_id":"e348a096-7f37-4308-a6d8-66131e8be901"}
[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:45] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:45] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:46] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:51] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:51] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:51] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:06] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:06] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:06] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"2d8b30b4-87aa-480f-9b9e-5a9c709b742a","trace_id":"25b7be6c-1faf-430b-a724-a4ff28773a31"}
[2026-05-07 12:56:08] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"2d8b30b4-87aa-480f-9b9e-5a9c709b742a","trace_id":"25b7be6c-1faf-430b-a724-a4ff28773a31"}
[2026-05-07 12:56:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"2d8b30b4-87aa-480f-9b9e-5a9c709b742a","trace_id":"25b7be6c-1faf-430b-a724-a4ff28773a31"}
[2026-05-07 12:56:10] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"efd336d7-db4d-459e-b6e7-bf73454e955e","trace_id":"0a82c3d5-0417-48c8-b88f-70ec33e2326a"}
[2026-05-07 12:56:10] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"efd336d7-db4d-459e-b6e7-bf73454e955e","trace_id":"0a82c3d5-0417-48c8-b88f-70ec33e2326a"}
[2026-05-07 12:56:12] local.NOTICE: Monitoring start {"correlation_id":"68481576-8ca6-4ee5-821b-07374702971d","trace_id":"c73eac09-5d20-425f-9c22-bd6c65fc60c9"}
[2026-05-07 12:56:12] local.NOTICE: Monitoring end {"correlation_id":"68481576-8ca6-4ee5-821b-07374702971d","trace_id":"c73eac09-5d20-425f-9c22-bd6c65fc60c9"}
[2026-05-07 12:56:17] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"bd0cdc75-b5c2-4dbb-bc44-e36c96813d24","trace_id":"f688cd98-c171-4e30-8c72-afc14f040861"}
[2026-05-07 12:56:17] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"bd0cdc75-b5c2-4dbb-bc44-e36c96813d24","trace_id":"f688cd98-c171-4e30-8c72-afc14f040861"}
[2026-05-07 12:56:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"f01636a9-4059-4ab0-9ad2-b078d42cedbd","trace_id":"fea938d8-aedc-40ec-b8c2-2f487e1ac808"}
[2026-05-07 12:56:20] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"f01636a9-4059-4ab0-9ad2-b078d42cedbd","trace_id":"fea938d8-aedc-40ec-b8c2-2f487e1ac808"}
[2026-05-07 12:56:20] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"f01636a9-4059-4ab0-9ad2-b078d42cedbd","trace_id":"fea938d8-aedc-40ec-b8c2-2f487e1ac808"}
[2026-05-07 12:56:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"f01636a9-4059-4ab0-9ad2-b078d42cedbd","trace_id":"fea938d8-aedc-40ec-b8c2-2f487e1ac808"}
[2026-05-07 12:56:23] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:count","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"d4558901-264d-4238-8589-62a137bac1fd","trace_id":"38e6b5dc-ebd6-46a7-8224-7374d4e58630"}
[2026-05-07 12:56:23] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:54:00, 2026-05-07 12:56:00] {"correlation_id":"d4558901-264d-4238-8589-62a137bac1fd","trace_id":"38e6b5dc-ebd6-46a7-8224-7374d4e58630"}
[2026-05-07 12:56:23] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:54:00, 2026-05-07 12:56:00] {"correlation_id":"d4558901-264d-4238-8589-62a137bac1fd","trace_id":"38e6b5dc-ebd6-46a7-8224-7374d4e58630"}
[2026-05-07 12:56:23] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:count","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"d4558901-264d-4238-8589-62a137bac1fd","trace_id":"38e6b5dc-ebd6-46a7-8224-7374d4e58630"}
[2026-05-07 12:56:24] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"crm:sync-hubspot-objects","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"7bfaf9be-0ca1-4170-a0c9-83e0ed61881c","trace_id":"ba7f9eee-8dcb-4c94-acb0-18f9363757ad"}
[2026-05-07 12:56:24] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"crm:sync-hubspot-objects","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"7bfaf9be-0ca1-4170-a0c9-83e0ed61881c","trace_id":"ba7f9eee-8dcb-4c94-acb0-18f9363757ad"}
[2026-05-07 12:56:26] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"activity:notify-not-logged","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"2541e0fa-1117-4863-9523-d723b5821a24","trace_id":"d9600320-5133-4938-bdd1-2256dfdf8db4"}
[2026-05-07 12:56:26] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"activity:notify-not-logged","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"2541e0fa-1117-4863-9523-d723b5821a24","trace_id":"d9600320-5133-4938-bdd1-2256dfdf8db4"}
[2026-05-07 12:56:35] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:sync","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"e444f776-37db-4c6d-b30e-20b01a089de7","trace_id":"1168869e-e07c-4702-a046-42fc95a91f6d"}
[2026-05-07 12:56:36] local.INFO: [EmailSchedule] STARTING Inbox Sync {"host":"docker_lamp_1"} {"correlation_id":"e444f776-37db-4c6d-b30e-20b01a089de7","trace_id":"1168869e-e07c-4702-a046-42fc95a91f6d"}
[2026-05-07 12:56:36] local.INFO: [EmailSchedule] FINISHED Inbox Sync {"host":"docker_lamp_1","events":2} {"correlation_id":"e444f776-37db-4c6d-b30e-20b01a089de7","trace_id":"1168869e-e07c-4702-a046-42fc95a91f6d"}
[2026-05-07 12:56:36] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:sync","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"e444f776-37db-4c6d-b30e-20b01a089de7","trace_id":"1168869e-e07c-4702-a046-42fc95a91f6d"}
[2026-05-07 12:56:36] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:36] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:36] local.INFO: [HubSpot Journal Auth] Requesting new client credentials token {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:37] local.INFO: [HubSpot Journal Auth] Successfully obtained new access token {"expires_in":1800,"cached_for":1500} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:37] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:37] local.WARNING: [HubSpot Journal Polling] Maximum empty results reached, stopping {"empty_results":5,"max_empty_results":5} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:37] local.WARNING: [HubSpot Journal Polling] Maximum empty results reached, stopping {"empty_results":5,"max_empty_results":5} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:37] local.INFO: [HubSpot Journal Polling] Service ending {"runtime_seconds":57,"total_cycles":5,"files_downloaded":0,"empty_files":0,"other_portal_skipped":0,"total_events":0,"events_per_file":0,"avg_api_ms":238.3,"avg_download_ms":0.0,"avg_transform_ms":0.0,"avg_process_ms":0.0,"peak_memory_mb":99.73} {"correlation_id"...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"on_screen":true,"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"master, menu","depth":5,"on_screen":true,"help_text":"Git Branch: master<br/>Some incoming commits are not fetched<br/>","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Start Listening for PHP Debug Connections","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"AskJiminnyReportActivityServiceTest","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'AskJiminnyReportActivityServiceTest'","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'AskJiminnyReportActivityServiceTest'","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More Actions","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JetBrains AI","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Search Everywhere","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"IDE and Project Settings","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Show Replace Field","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Search History","depth":3,"on_screen":true,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"retry_error","depth":4,"on_screen":true,"value":"retry_error","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"New Line","depth":3,"on_screen":true,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Match Case","depth":3,"on_screen":true,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Words","depth":3,"on_screen":true,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Regex","depth":3,"on_screen":true,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Replace History","depth":3,"bounds":{"left":0.0,"top":0.0,"width":0.015277778,"height":0.024444444},"on_screen":false,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"Replace","depth":4,"on_screen":false,"role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"New Line","depth":3,"bounds":{"left":0.0,"top":0.0,"width":0.015277778,"height":0.024444444},"on_screen":false,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Preserve case","depth":3,"bounds":{"left":0.0,"top":0.0,"width":0.015277778,"height":0.024444444},"on_screen":false,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"0 results","depth":4,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Previous Occurrence","depth":4,"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Occurrence","depth":4,"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Filter Search Results","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Open in Window, Multiple Cursors","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Click to highlight","depth":4,"on_screen":false,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.088194445,"height":0.027777778},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"238","depth":4,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Highlighted Error","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"[2026-05-07 12:52:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"fa8a3008-d298-4682-bbbc-fdc77520e0d7\",\"trace_id\":\"7cfb2afb-9fc4-4a77-81be-65dce93c7d80\"}\n[2026-05-07 12:52:08] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"fa8a3008-d298-4682-bbbc-fdc77520e0d7\",\"trace_id\":\"7cfb2afb-9fc4-4a77-81be-65dce93c7d80\"}\n[2026-05-07 12:52:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"fa8a3008-d298-4682-bbbc-fdc77520e0d7\",\"trace_id\":\"7cfb2afb-9fc4-4a77-81be-65dce93c7d80\"}\n[2026-05-07 12:52:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"932ced9d-9804-48ed-976a-1f8bf5e75707\",\"trace_id\":\"21bf320c-58f3-4082-831d-9f07f6c6a669\"}\n[2026-05-07 12:52:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"932ced9d-9804-48ed-976a-1f8bf5e75707\",\"trace_id\":\"21bf320c-58f3-4082-831d-9f07f6c6a669\"}\n[2026-05-07 12:52:17] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:17] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:17] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:17] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":148,\"team_id\":2} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:17] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.55,\"average_seconds_per_request\":0.55} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:18] local.NOTICE: Monitoring start {\"correlation_id\":\"ae3ec78f-432c-4e22-b73b-0413af73d9f3\",\"trace_id\":\"c2feb517-0f2b-4ad9-bce5-4d57476a164b\"}\n[2026-05-07 12:52:18] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.51,\"average_seconds_per_request\":0.51} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:18] local.NOTICE: Monitoring end {\"correlation_id\":\"ae3ec78f-432c-4e22-b73b-0413af73d9f3\",\"trace_id\":\"c2feb517-0f2b-4ad9-bce5-4d57476a164b\"}\n[2026-05-07 12:52:18] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.48,\"average_seconds_per_request\":0.48} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:19] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.49,\"average_seconds_per_request\":0.49} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:19] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.49,\"average_seconds_per_request\":0.49} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"2bf2f73f-007c-4909-925e-f1749fbf87b3\",\"trace_id\":\"8429123c-d92c-48d9-a154-29bc0aa0e2a1\"}\n[2026-05-07 12:52:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"2bf2f73f-007c-4909-925e-f1749fbf87b3\",\"trace_id\":\"8429123c-d92c-48d9-a154-29bc0aa0e2a1\"}\n[2026-05-07 12:52:20] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.48,\"average_seconds_per_request\":0.48} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:20] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.62,\"average_seconds_per_request\":0.62} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:21] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.78,\"average_seconds_per_request\":0.78} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:22] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":1.21,\"average_seconds_per_request\":1.21} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:23] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.53,\"average_seconds_per_request\":0.53} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8\",\"trace_id\":\"64ccac6b-34f7-45ed-a8ac-b63adbb19107\"}\n[2026-05-07 12:52:25] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8\",\"trace_id\":\"64ccac6b-34f7-45ed-a8ac-b63adbb19107\"}\n[2026-05-07 12:52:26] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8\",\"trace_id\":\"64ccac6b-34f7-45ed-a8ac-b63adbb19107\"}\n[2026-05-07 12:52:26] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8\",\"trace_id\":\"64ccac6b-34f7-45ed-a8ac-b63adbb19107\"}\n[2026-05-07 12:52:28] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"6e1a36d0-a87a-455f-88b9-04f16718ea33\",\"trace_id\":\"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c\"}\n[2026-05-07 12:52:28] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:50:00, 2026-05-07 12:52:00] {\"correlation_id\":\"6e1a36d0-a87a-455f-88b9-04f16718ea33\",\"trace_id\":\"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c\"}\n[2026-05-07 12:52:28] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:50:00, 2026-05-07 12:52:00] {\"correlation_id\":\"6e1a36d0-a87a-455f-88b9-04f16718ea33\",\"trace_id\":\"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c\"}\n[2026-05-07 12:52:28] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"6e1a36d0-a87a-455f-88b9-04f16718ea33\",\"trace_id\":\"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c\"}\n[2026-05-07 12:52:31] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:create\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"80549428-beea-4a6c-97d3-818ca0f059f3\",\"trace_id\":\"55ddd59b-073b-4331-8cdb-baa869dcff70\"}\n[2026-05-07 12:52:31] local.INFO: [EmailSchedule] STARTING batch create {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"80549428-beea-4a6c-97d3-818ca0f059f3\",\"trace_id\":\"55ddd59b-073b-4331-8cdb-baa869dcff70\"}\n[2026-05-07 12:52:31] local.INFO: [EmailSchedule] FINISHED batch create {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"80549428-beea-4a6c-97d3-818ca0f059f3\",\"trace_id\":\"55ddd59b-073b-4331-8cdb-baa869dcff70\"}\n[2026-05-07 12:52:31] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:create\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"80549428-beea-4a6c-97d3-818ca0f059f3\",\"trace_id\":\"55ddd59b-073b-4331-8cdb-baa869dcff70\"}\n[2026-05-07 12:52:32] local.INFO: [Jiminny\\Jobs\\Mailbox\\CreateBatches] processed 2 inboxes and created 0 batches {\"userId\":null,\"batchSize\":30,\"maxBatches\":1000} {\"correlation_id\":\"92242bd6-7014-4487-a50b-1570e1a88e7a\",\"trace_id\":\"55ddd59b-073b-4331-8cdb-baa869dcff70\"}\n[2026-05-07 12:52:39] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"d467eace-3254-4ecc-8d8e-a94688d6d3ad\",\"trace_id\":\"5105ca8f-3c0d-4798-b748-5a7d6fbd7531\"}\n[2026-05-07 12:52:39] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"d467eace-3254-4ecc-8d8e-a94688d6d3ad\",\"trace_id\":\"5105ca8f-3c0d-4798-b748-5a7d6fbd7531\"}\n[2026-05-07 12:53:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"04363b29-2f82-470a-89d0-c5ce4f4779d7\",\"trace_id\":\"3c76a1f1-3348-4e2b-897c-4a216ca95147\"}\n[2026-05-07 12:53:08] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"04363b29-2f82-470a-89d0-c5ce4f4779d7\",\"trace_id\":\"3c76a1f1-3348-4e2b-897c-4a216ca95147\"}\n[2026-05-07 12:53:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"04363b29-2f82-470a-89d0-c5ce4f4779d7\",\"trace_id\":\"3c76a1f1-3348-4e2b-897c-4a216ca95147\"}\n[2026-05-07 12:53:11] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"5ebbecd0-866c-443f-965f-b6ac03735379\",\"trace_id\":\"e0a724a5-bb4b-4fe6-9fe9-36ea1c3f0326\"}\n[2026-05-07 12:53:11] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"5ebbecd0-866c-443f-965f-b6ac03735379\",\"trace_id\":\"e0a724a5-bb4b-4fe6-9fe9-36ea1c3f0326\"}\n[2026-05-07 12:53:18] local.NOTICE: Monitoring start {\"correlation_id\":\"f39f0d3c-a292-41cb-8834-45dae1f8cf47\",\"trace_id\":\"b6e7e2a7-85af-401d-afc6-bec2bdab34d7\"}\n[2026-05-07 12:53:18] local.NOTICE: Monitoring end {\"correlation_id\":\"f39f0d3c-a292-41cb-8834-45dae1f8cf47\",\"trace_id\":\"b6e7e2a7-85af-401d-afc6-bec2bdab34d7\"}\n[2026-05-07 12:53:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"419bb747-2669-496f-944b-1073496cc271\",\"trace_id\":\"4cb913a4-ef75-422b-80eb-fbfb988521ed\"}\n[2026-05-07 12:53:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"419bb747-2669-496f-944b-1073496cc271\",\"trace_id\":\"4cb913a4-ef75-422b-80eb-fbfb988521ed\"}\n[2026-05-07 12:53:22] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"f4805c97-9344-4111-8be2-2b1efeae07bb\",\"trace_id\":\"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22\"}\n[2026-05-07 12:53:22] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"f4805c97-9344-4111-8be2-2b1efeae07bb\",\"trace_id\":\"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22\"}\n[2026-05-07 12:53:22] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"f4805c97-9344-4111-8be2-2b1efeae07bb\",\"trace_id\":\"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22\"}\n[2026-05-07 12:53:22] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"f4805c97-9344-4111-8be2-2b1efeae07bb\",\"trace_id\":\"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22\"}\n[2026-05-07 12:53:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"2eadb06b-2c2e-4a7f-8920-77bd30d6cd7f\",\"trace_id\":\"75f27a23-2021-41a5-9e5f-4b1cb4f143a6\"}\n[2026-05-07 12:53:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"2eadb06b-2c2e-4a7f-8920-77bd30d6cd7f\",\"trace_id\":\"75f27a23-2021-41a5-9e5f-4b1cb4f143a6\"}\n[2026-05-07 12:54:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"ad151521-f676-4351-a70b-f44dc0b94990\",\"trace_id\":\"17e39c4c-85cb-49a4-815e-b7315a8c2249\"}\n[2026-05-07 12:54:06] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"ad151521-f676-4351-a70b-f44dc0b94990\",\"trace_id\":\"17e39c4c-85cb-49a4-815e-b7315a8c2249\"}\n[2026-05-07 12:54:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"ad151521-f676-4351-a70b-f44dc0b94990\",\"trace_id\":\"17e39c4c-85cb-49a4-815e-b7315a8c2249\"}\n[2026-05-07 12:54:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"ed0583cf-03c6-4696-b859-876c8efa4473\",\"trace_id\":\"3f9e0a3c-2178-4885-95eb-8618b8cfc042\"}\n[2026-05-07 12:54:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"ed0583cf-03c6-4696-b859-876c8efa4473\",\"trace_id\":\"3f9e0a3c-2178-4885-95eb-8618b8cfc042\"}\n[2026-05-07 12:54:10] local.NOTICE: Monitoring start {\"correlation_id\":\"7142250a-b897-4620-8ff7-fd9b3a1f3802\",\"trace_id\":\"597def1e-ca38-4cc4-8890-fdcd5baff948\"}\n[2026-05-07 12:54:10] local.NOTICE: Monitoring end {\"correlation_id\":\"7142250a-b897-4620-8ff7-fd9b3a1f3802\",\"trace_id\":\"597def1e-ca38-4cc4-8890-fdcd5baff948\"}\n[2026-05-07 12:54:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"cb2ada48-0200-4eb3-a8c5-6cb8ea43ec0d\",\"trace_id\":\"73937bdc-10b9-4508-9ef2-86420fe774fc\"}\n[2026-05-07 12:54:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"cb2ada48-0200-4eb3-a8c5-6cb8ea43ec0d\",\"trace_id\":\"73937bdc-10b9-4508-9ef2-86420fe774fc\"}\n[2026-05-07 12:54:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"8f1d8932-2839-4256-99ab-1fd13e8381c6\",\"trace_id\":\"cc090767-edc2-4a89-90c2-116f1737de7f\"}\n[2026-05-07 12:54:14] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"8f1d8932-2839-4256-99ab-1fd13e8381c6\",\"trace_id\":\"cc090767-edc2-4a89-90c2-116f1737de7f\"}\n[2026-05-07 12:54:14] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"8f1d8932-2839-4256-99ab-1fd13e8381c6\",\"trace_id\":\"cc090767-edc2-4a89-90c2-116f1737de7f\"}\n[2026-05-07 12:54:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"8f1d8932-2839-4256-99ab-1fd13e8381c6\",\"trace_id\":\"cc090767-edc2-4a89-90c2-116f1737de7f\"}\n[2026-05-07 12:54:16] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"9d324c6d-5b36-46ee-89c6-f95f86bf3f39\",\"trace_id\":\"860cdff0-9356-4e94-84cc-e011a74ba56c\"}\n[2026-05-07 12:54:16] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:52:00, 2026-05-07 12:54:00] {\"correlation_id\":\"9d324c6d-5b36-46ee-89c6-f95f86bf3f39\",\"trace_id\":\"860cdff0-9356-4e94-84cc-e011a74ba56c\"}\n[2026-05-07 12:54:16] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:52:00, 2026-05-07 12:54:00] {\"correlation_id\":\"9d324c6d-5b36-46ee-89c6-f95f86bf3f39\",\"trace_id\":\"860cdff0-9356-4e94-84cc-e011a74ba56c\"}\n[2026-05-07 12:54:16] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"9d324c6d-5b36-46ee-89c6-f95f86bf3f39\",\"trace_id\":\"860cdff0-9356-4e94-84cc-e011a74ba56c\"}\n[2026-05-07 12:54:18] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:aircall:check-and-renew\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"c2009a88-eea6-4954-8642-ef5d9cb56b42\",\"trace_id\":\"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab\"}\n[2026-05-07 12:54:18] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1496,\"provider\":\"aircall\"} {\"correlation_id\":\"c2009a88-eea6-4954-8642-ef5d9cb56b42\",\"trace_id\":\"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab\"}\n[2026-05-07 12:54:18] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1496,\"provider\":\"aircall\"} {\"correlation_id\":\"c2009a88-eea6-4954-8642-ef5d9cb56b42\",\"trace_id\":\"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab\"}\n[2026-05-07 12:54:18] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"c2009a88-eea6-4954-8642-ef5d9cb56b42\",\"trace_id\":\"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab\"}\n[2026-05-07 12:54:19] local.ERROR: [Aircall] Re-activating webhooks failed {\"team_id\":1,\"reason\":\"{\\\"message\\\":\\\"Forbidden\\\"}\"} {\"correlation_id\":\"c2009a88-eea6-4954-8642-ef5d9cb56b42\",\"trace_id\":\"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab\"}\n[2026-05-07 12:54:19] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:aircall:check-and-renew\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"c2009a88-eea6-4954-8642-ef5d9cb56b42\",\"trace_id\":\"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab\"}\n[2026-05-07 12:54:21] local.INFO: [RetryFailedDownloads] Starting {\"options\":{\"from\":null,\"to\":null,\"help\":false,\"silent\":false,\"quiet\":false,\"verbose\":false,\"version\":false,\"ansi\":null,\"no-interaction\":false,\"env\":null}} {\"correlation_id\":\"825ef2d7-b5f8-45cd-b19d-20a179b06934\",\"trace_id\":\"5825a6c8-14c9-4bec-b688-d4895cfc41cc\"}\n[2026-05-07 12:55:05] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"c0dc8e25-7a51-4023-be61-d0abd6d72e37\",\"trace_id\":\"16b8fa3e-92b1-465e-82d4-642a2d14c7c5\"}\n[2026-05-07 12:55:05] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"c0dc8e25-7a51-4023-be61-d0abd6d72e37\",\"trace_id\":\"16b8fa3e-92b1-465e-82d4-642a2d14c7c5\"}\n[2026-05-07 12:55:05] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"c0dc8e25-7a51-4023-be61-d0abd6d72e37\",\"trace_id\":\"16b8fa3e-92b1-465e-82d4-642a2d14c7c5\"}\n[2026-05-07 12:55:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"1c65fdd1-1f79-435d-b469-add46ddafd63\",\"trace_id\":\"62f2a3bb-3be7-4c76-a9dd-222bfb895fab\"}\n[2026-05-07 12:55:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"1c65fdd1-1f79-435d-b469-add46ddafd63\",\"trace_id\":\"62f2a3bb-3be7-4c76-a9dd-222bfb895fab\"}\n[2026-05-07 12:55:11] local.NOTICE: Monitoring start {\"correlation_id\":\"f115f9bc-bb59-4fc9-8c9f-8b69baba1a55\",\"trace_id\":\"e75cb5c6-6dd8-4000-8d26-4418020c7cfe\"}\n[2026-05-07 12:55:11] local.NOTICE: Monitoring end {\"correlation_id\":\"f115f9bc-bb59-4fc9-8c9f-8b69baba1a55\",\"trace_id\":\"e75cb5c6-6dd8-4000-8d26-4418020c7cfe\"}\n[2026-05-07 12:55:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"dba5c474-4d40-44da-baf2-f8b30db9a2f5\",\"trace_id\":\"adb45622-1fb0-457c-bf20-8dcceab2d62a\"}\n[2026-05-07 12:55:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"dba5c474-4d40-44da-baf2-f8b30db9a2f5\",\"trace_id\":\"adb45622-1fb0-457c-bf20-8dcceab2d62a\"}\n[2026-05-07 12:55:16] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"22c96a8e-4424-4a1f-b349-206276eefe4c\",\"trace_id\":\"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c\"}\n[2026-05-07 12:55:16] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"22c96a8e-4424-4a1f-b349-206276eefe4c\",\"trace_id\":\"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c\"}\n[2026-05-07 12:55:16] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"22c96a8e-4424-4a1f-b349-206276eefe4c\",\"trace_id\":\"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c\"}\n[2026-05-07 12:55:16] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"22c96a8e-4424-4a1f-b349-206276eefe4c\",\"trace_id\":\"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c\"}\n[2026-05-07 12:55:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:purge-stale\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"5f958e8d-1d01-4144-abd6-2513e5524ad3\",\"trace_id\":\"828bc5b7-e2aa-4443-901f-38dd94bb7cc5\"}\n[2026-05-07 12:55:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:purge-stale\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"5f958e8d-1d01-4144-abd6-2513e5524ad3\",\"trace_id\":\"828bc5b7-e2aa-4443-901f-38dd94bb7cc5\"}\n[2026-05-07 12:55:22] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:text-relay:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"6bd1c9cb-cd9a-42a9-87fe-45cb7bac687a\",\"trace_id\":\"0f2f5d66-c4c9-46a5-a31b-6937663ce1ad\"}\n[2026-05-07 12:55:22] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:text-relay:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"6bd1c9cb-cd9a-42a9-87fe-45cb7bac687a\",\"trace_id\":\"0f2f5d66-c4c9-46a5-a31b-6937663ce1ad\"}\n[2026-05-07 12:55:24] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:pre-meeting-notification\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"c5dd8132-d7e1-4caa-84d1-0a50d02df8da\",\"trace_id\":\"bc7341c5-b8e2-48ea-9670-7ec375363180\"}\n[2026-05-07 12:55:24] local.INFO: Running pre-meeting notification command {\"correlation_id\":\"c5dd8132-d7e1-4caa-84d1-0a50d02df8da\",\"trace_id\":\"bc7341c5-b8e2-48ea-9670-7ec375363180\"}\n[2026-05-07 12:55:24] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:pre-meeting-notification\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"c5dd8132-d7e1-4caa-84d1-0a50d02df8da\",\"trace_id\":\"bc7341c5-b8e2-48ea-9670-7ec375363180\"}\n[2026-05-07 12:55:26] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:start\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0\",\"trace_id\":\"efb1619f-4185-4319-9bfb-305cee0b6bfc\"}\n[2026-05-07 12:55:26] local.INFO: Running conference:monitor:start command for activities in (2026-05-07 12:45:00, 2026-05-07 12:50:00] {\"correlation_id\":\"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0\",\"trace_id\":\"efb1619f-4185-4319-9bfb-305cee0b6bfc\"}\n[2026-05-07 12:55:26] local.INFO: [conference:monitor:start] No activities found in (2026-05-07 12:45:00, 2026-05-07 12:50:00] {\"correlation_id\":\"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0\",\"trace_id\":\"efb1619f-4185-4319-9bfb-305cee0b6bfc\"}\n[2026-05-07 12:55:26] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:start\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0\",\"trace_id\":\"efb1619f-4185-4319-9bfb-305cee0b6bfc\"}\n[2026-05-07 12:55:28] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:end\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"3792b31a-080a-4fe4-9823-5602361325ba\",\"trace_id\":\"41a2fde1-48f6-4667-84b7-a2f93e9ad2da\"}\n[2026-05-07 12:55:28] local.INFO: conference:monitor:end:Jiminny\\Console\\Commands\\Activities\\MonitorMeetingEndCommand::logActivitiesEnded {\"from\":\"12:50\",\"to\":\"12:55\"} {\"correlation_id\":\"3792b31a-080a-4fe4-9823-5602361325ba\",\"trace_id\":\"41a2fde1-48f6-4667-84b7-a2f93e9ad2da\"}\n[2026-05-07 12:55:28] local.INFO: conference:monitor:end:Jiminny\\Console\\Commands\\Activities\\MonitorMeetingEndCommand::logActivitiesWithUnfinishedSession {\"from\":\"02:45\",\"to\":\"02:50\"} {\"correlation_id\":\"3792b31a-080a-4fe4-9823-5602361325ba\",\"trace_id\":\"41a2fde1-48f6-4667-84b7-a2f93e9ad2da\"}\n[2026-05-07 12:55:28] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:end\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"3792b31a-080a-4fe4-9823-5602361325ba\",\"trace_id\":\"41a2fde1-48f6-4667-84b7-a2f93e9ad2da\"}\n[2026-05-07 12:55:30] local.NOTICE: Repairing HubSpot tokens start {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:30] local.INFO: Trying to refresh HubSpot token {\"account_id\":59,\"updated_at\":\"2025-10-03 09:32:05\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:30] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:30] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":59,\"provider\":\"hubspot\",\"refreshToken\":\"97b78f6e2cc49965c00c2492b602b02708b1392551e6b3f113fbaa48992af90b\",\"state\":\"full-refresh\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.ERROR: Failed to refresh HubSpot token {\"account_id\":59,\"updated_at\":\"2025-10-03 09:32:05\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.INFO: Trying to refresh HubSpot token {\"account_id\":306,\"updated_at\":\"2023-11-27 09:30:03\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":306,\"provider\":\"hubspot\",\"refreshToken\":\"6fa6aa8cc641d131231acc3470f5c03cb3b07b2e580fb18f8acb3b1dbb72549b\",\"state\":\"full-refresh\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.ERROR: Failed to refresh HubSpot token {\"account_id\":306,\"updated_at\":\"2023-11-27 09:30:03\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.INFO: Trying to refresh HubSpot token {\"account_id\":1372,\"updated_at\":\"2025-10-02 14:47:06\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1372,\"provider\":\"hubspot\",\"refreshToken\":\"9aa73948c761da29dce46c177cf9aee1fde483a44169ca38723f9f0597d7a8c4\",\"state\":\"full-refresh\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:32] local.ERROR: Failed to refresh HubSpot token {\"account_id\":1372,\"updated_at\":\"2025-10-02 14:47:06\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:32] local.NOTICE: Repairing HubSpot tokens end {\"total\":3,\"fixed\":0,\"failed\":3} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:40] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"crm:bullhorn:ping\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"5e676ae4-5d63-49d4-9001-559088adf06b\",\"trace_id\":\"2fcce073-dd68-4c99-b7c4-b9e03c20b8e4\"}\n[2026-05-07 12:55:40] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:pre-meeting-reminder\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"1f830896-8142-41d1-bfc9-4cbb9179ffda\",\"trace_id\":\"e348a096-7f37-4308-a6d8-66131e8be901\"}\n[2026-05-07 12:55:40] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"crm:bullhorn:ping\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"5e676ae4-5d63-49d4-9001-559088adf06b\",\"trace_id\":\"2fcce073-dd68-4c99-b7c4-b9e03c20b8e4\"}\n[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Command] Starting polling service {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Service starting {\"memory_limit\":\"256M\",\"max_execution_time\":\"0\",\"initial_memory_mb\":62.0} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Acquired polling lock {\"expires_at\":\"2026-05-07T12:57:40.609671Z\"} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:40] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:40] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:pre-meeting-reminder\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"1f830896-8142-41d1-bfc9-4cbb9179ffda\",\"trace_id\":\"e348a096-7f37-4308-a6d8-66131e8be901\"}\n[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:45] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:45] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:46] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:51] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:51] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:51] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:06] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:06] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:06] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"2d8b30b4-87aa-480f-9b9e-5a9c709b742a\",\"trace_id\":\"25b7be6c-1faf-430b-a724-a4ff28773a31\"}\n[2026-05-07 12:56:08] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"2d8b30b4-87aa-480f-9b9e-5a9c709b742a\",\"trace_id\":\"25b7be6c-1faf-430b-a724-a4ff28773a31\"}\n[2026-05-07 12:56:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"2d8b30b4-87aa-480f-9b9e-5a9c709b742a\",\"trace_id\":\"25b7be6c-1faf-430b-a724-a4ff28773a31\"}\n[2026-05-07 12:56:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"efd336d7-db4d-459e-b6e7-bf73454e955e\",\"trace_id\":\"0a82c3d5-0417-48c8-b88f-70ec33e2326a\"}\n[2026-05-07 12:56:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"efd336d7-db4d-459e-b6e7-bf73454e955e\",\"trace_id\":\"0a82c3d5-0417-48c8-b88f-70ec33e2326a\"}\n[2026-05-07 12:56:12] local.NOTICE: Monitoring start {\"correlation_id\":\"68481576-8ca6-4ee5-821b-07374702971d\",\"trace_id\":\"c73eac09-5d20-425f-9c22-bd6c65fc60c9\"}\n[2026-05-07 12:56:12] local.NOTICE: Monitoring end {\"correlation_id\":\"68481576-8ca6-4ee5-821b-07374702971d\",\"trace_id\":\"c73eac09-5d20-425f-9c22-bd6c65fc60c9\"}\n[2026-05-07 12:56:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"bd0cdc75-b5c2-4dbb-bc44-e36c96813d24\",\"trace_id\":\"f688cd98-c171-4e30-8c72-afc14f040861\"}\n[2026-05-07 12:56:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"bd0cdc75-b5c2-4dbb-bc44-e36c96813d24\",\"trace_id\":\"f688cd98-c171-4e30-8c72-afc14f040861\"}\n[2026-05-07 12:56:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"f01636a9-4059-4ab0-9ad2-b078d42cedbd\",\"trace_id\":\"fea938d8-aedc-40ec-b8c2-2f487e1ac808\"}\n[2026-05-07 12:56:20] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"f01636a9-4059-4ab0-9ad2-b078d42cedbd\",\"trace_id\":\"fea938d8-aedc-40ec-b8c2-2f487e1ac808\"}\n[2026-05-07 12:56:20] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"f01636a9-4059-4ab0-9ad2-b078d42cedbd\",\"trace_id\":\"fea938d8-aedc-40ec-b8c2-2f487e1ac808\"}\n[2026-05-07 12:56:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"f01636a9-4059-4ab0-9ad2-b078d42cedbd\",\"trace_id\":\"fea938d8-aedc-40ec-b8c2-2f487e1ac808\"}\n[2026-05-07 12:56:23] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"d4558901-264d-4238-8589-62a137bac1fd\",\"trace_id\":\"38e6b5dc-ebd6-46a7-8224-7374d4e58630\"}\n[2026-05-07 12:56:23] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:54:00, 2026-05-07 12:56:00] {\"correlation_id\":\"d4558901-264d-4238-8589-62a137bac1fd\",\"trace_id\":\"38e6b5dc-ebd6-46a7-8224-7374d4e58630\"}\n[2026-05-07 12:56:23] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:54:00, 2026-05-07 12:56:00] {\"correlation_id\":\"d4558901-264d-4238-8589-62a137bac1fd\",\"trace_id\":\"38e6b5dc-ebd6-46a7-8224-7374d4e58630\"}\n[2026-05-07 12:56:23] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"d4558901-264d-4238-8589-62a137bac1fd\",\"trace_id\":\"38e6b5dc-ebd6-46a7-8224-7374d4e58630\"}\n[2026-05-07 12:56:24] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"crm:sync-hubspot-objects\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"7bfaf9be-0ca1-4170-a0c9-83e0ed61881c\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:24] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"crm:sync-hubspot-objects\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"7bfaf9be-0ca1-4170-a0c9-83e0ed61881c\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:26] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:notify-not-logged\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"2541e0fa-1117-4863-9523-d723b5821a24\",\"trace_id\":\"d9600320-5133-4938-bdd1-2256dfdf8db4\"}\n[2026-05-07 12:56:26] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:notify-not-logged\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"2541e0fa-1117-4863-9523-d723b5821a24\",\"trace_id\":\"d9600320-5133-4938-bdd1-2256dfdf8db4\"}\n[2026-05-07 12:56:35] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"e444f776-37db-4c6d-b30e-20b01a089de7\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:36] local.INFO: [EmailSchedule] STARTING Inbox Sync {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"e444f776-37db-4c6d-b30e-20b01a089de7\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:36] local.INFO: [EmailSchedule] FINISHED Inbox Sync {\"host\":\"docker_lamp_1\",\"events\":2} {\"correlation_id\":\"e444f776-37db-4c6d-b30e-20b01a089de7\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:36] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"e444f776-37db-4c6d-b30e-20b01a089de7\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:36] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:36] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:36] local.INFO: [HubSpot Journal Auth] Requesting new client credentials token {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:37] local.INFO: [HubSpot Journal Auth] Successfully obtained new access token {\"expires_in\":1800,\"cached_for\":1500} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:37] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:37] local.WARNING: [HubSpot Journal Polling] Maximum empty results reached, stopping {\"empty_results\":5,\"max_empty_results\":5} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:37] local.WARNING: [HubSpot Journal Polling] Maximum empty results reached, stopping {\"empty_results\":5,\"max_empty_results\":5} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:37] local.INFO: [HubSpot Journal Polling] Service ending {\"runtime_seconds\":57,\"total_cycles\":5,\"files_downloaded\":0,\"empty_files\":0,\"other_portal_skipped\":0,\"total_events\":0,\"events_per_file\":0,\"avg_api_ms\":238.3,\"avg_download_ms\":0.0,\"avg_transform_ms\":0.0,\"avg_process_ms\":0.0,\"peak_memory_mb\":99.73} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:37] local.INFO: [HubSpot Journal Polling] Released polling lock {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:50] local.INFO: [Commands/AsyncUpdateEsEntities] Starting ES update worker {\"pid\":37119,\"workerId\":\"\",\"target\":\"activities\"} {\"correlation_id\":\"902cef33-4733-4b2a-9693-affb8645cecc\",\"trace_id\":\"4ffe2bb8-67c6-422a-a846-319973cc0259\"}\n[2026-05-07 12:56:50] local.INFO: [SyncHubspotObjects] Starting sync {\"team\":\"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4\",\"usage\":23195976,\"real_usage\":65011712,\"pid\":37113} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:50] local.INFO: [Sync Mailbox] Sync start {\"inbox_id\":59} {\"correlation_id\":\"20256b2c-2b69-48f6-bdd3-61d047eb0b0d\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:50] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:50] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:50] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:50] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1499,\"provider\":\"hubspot\",\"refreshToken\":\"96f94c623a404e02ebdbf07f1b75707bb6cdbf848cbf45d418baf608c41a8d86\",\"state\":\"connected\"} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:50] local.INFO: [Inbox service] Skipping METADATA SYNC for inbox 59 due to unauthorized access to the mailbox {\"correlation_id\":\"20256b2c-2b69-48f6-bdd3-61d047eb0b0d\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:50] local.INFO: [Sync Mailbox] Sync complete {\"inbox_id\":59} {\"correlation_id\":\"20256b2c-2b69-48f6-bdd3-61d047eb0b0d\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:50] local.INFO: [Sync Mailbox] Sync start {\"inbox_id\":212} {\"correlation_id\":\"b6c31853-3729-4780-a52b-ebcce17d41b9\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:50] local.INFO: [Inbox service] Skipping METADATA SYNC for inbox 212 due to unauthorized access to the mailbox {\"correlation_id\":\"b6c31853-3729-4780-a52b-ebcce17d41b9\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:50] local.INFO: [Sync Mailbox] Sync complete {\"inbox_id\":212} {\"correlation_id\":\"b6c31853-3729-4780-a52b-ebcce17d41b9\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:51] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:51] local.INFO: [SocialAccountObserver] Access token was modified, encrypting {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:51] local.INFO: [SocialAccountService] Token refreshed {\"socialAccountId\":1499,\"provider\":\"hubspot\",\"state\":\"connected\"} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:51] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":148,\"team_id\":2} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:51] local.INFO: [HubSpot] Syncing opportunities using strategy: lastModified {\"team\":2} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/deals/search\",\"total_requests\":0,\"total_records_fetched\":0,\"total_elapsed_seconds\":0.3,\"average_seconds_per_request\":0} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.INFO: [SyncHubspotObjects] Sync finished {\"team\":\"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4\",\"provider\":\"hubspot\",\"status\":\"completed\",\"duration_ms\":1854.64,\"usage\":24199288,\"real_usage\":65011712,\"pid\":37113} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.ERROR: Jiminny\\Services\\Crm\\Hubspot\\Pagination\\HubspotPaginationService::getPaginatedDataGenerator(): Return value must be of type Generator, none returned {\"exception\":\"[object] (TypeError(code: 0): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService::getPaginatedDataGenerator(): Return value must be of type Generator, none returned at /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php:82)\n[stacktrace]\n#0 /home/jiminny/app/Services/Crm/Hubspot/Client.php(194): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->getPaginatedDataGenerator(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), Array, 'deals', 0, 0, NULL)\n#1 /home/jiminny/app/Services/Crm/Hubspot/OpportunitySyncStrategy/HubspotSyncStrategyBase.php(55): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client->getPaginatedDataGenerator(Array, 'deals', 0, 0, NULL)\n#2 /home/jiminny/app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php(73): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\OpportunitySyncStrategy\\\\HubspotSyncStrategyBase->fetchOpportunities(Array, 0, NULL)\n#3 /home/jiminny/app/Jobs/Crm/SyncHubspotObjects.php(118): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service->syncOpportunities(Array)\n#4 /home/jiminny/app/Jobs/Crm/SyncHubspotObjects.php(86): Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects->syncHubspotCrmObjects(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service), Object(Illuminate\\\\Support\\\\Carbon))\n#5 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects->handle(Object(Jiminny\\\\Services\\\\ResolveTeamCrmConnection), Object(Illuminate\\\\Log\\\\LogManager), Object(Jiminny\\\\Repositories\\\\TeamRepository))\n#6 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#7 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#8 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#9 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#10 /home/jiminny/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(129): Illuminate\\\\Container\\\\Container->call(Array)\n#11 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\\\Bus\\\\Dispatcher->Illuminate\\\\Bus\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#12 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\\\\Pipeline\\\\Pipeline->Illuminate\\\\Pipeline\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#13 /home/jiminny/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(133): Illuminate\\\\Pipeline\\\\Pipeline->then(Object(Closure))\n#14 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(136): Illuminate\\\\Bus\\\\Dispatcher->dispatchNow(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects), false)\n#15 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\\\Queue\\\\CallQueuedHandler->Illuminate\\\\Queue\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#16 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\\\\Pipeline\\\\Pipeline->Illuminate\\\\Pipeline\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#17 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(129): Illuminate\\\\Pipeline\\\\Pipeline->then(Object(Closure))\n#18 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(70): Illuminate\\\\Queue\\\\CallQueuedHandler->dispatchThroughMiddleware(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#19 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Jobs/Job.php(102): Illuminate\\\\Queue\\\\CallQueuedHandler->call(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Array)\n#20 /home/jiminny/app/Queue/Worker/Worker.php(71): Illuminate\\\\Queue\\\\Jobs\\\\Job->fire()\n#21 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(435): Jiminny\\\\Queue\\\\Worker\\\\Worker->process('redis', Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#22 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(201): Illuminate\\\\Queue\\\\Worker->runJob(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), 'redis', Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#23 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(148): Illuminate\\\\Queue\\\\Worker->daemon('redis', 'crm-sync,crm-up...', Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#24 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(131): Illuminate\\\\Queue\\\\Console\\\\WorkCommand->runWorker('redis', 'crm-sync,crm-up...')\n#25 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Illuminate\\\\Queue\\\\Console\\\\WorkCommand->handle()\n#26 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#27 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#28 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#29 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#30 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(211): Illuminate\\\\Container\\\\Container->call(Array)\n#31 /home/jiminny/vendor/symfony/console/Command/Command.php(341): Illuminate\\\\Console\\\\Command->execute(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#32 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(180): Symfony\\\\Component\\\\Console\\\\Command\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#33 /home/jiminny/vendor/symfony/console/Application.php(1117): Illuminate\\\\Console\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#34 /home/jiminny/vendor/symfony/console/Application.php(356): Symfony\\\\Component\\\\Console\\\\Application->doRunCommand(Object(Illuminate\\\\Queue\\\\Console\\\\WorkCommand), Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#35 /home/jiminny/vendor/symfony/console/Application.php(195): Symfony\\\\Component\\\\Console\\\\Application->doRun(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#36 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(198): Symfony\\\\Component\\\\Console\\\\Application->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#37 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1235): Illuminate\\\\Foundation\\\\Console\\\\Kernel->handle(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#38 /home/jiminny/artisan(13): Illuminate\\\\Foundation\\\\Application->handleCommand(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput))\n#39 {main}\n\"} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.INFO: [SyncHubspotObjects] Starting sync {\"team\":\"b2d49a54-b645-4637-a7ae-a86cfce6e8e4\",\"usage\":25235152,\"real_usage\":65011712,\"pid\":37113} {\"correlation_id\":\"0d3cf2b0-a245-4a83-9bd5-1c5788b85738\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.WARNING: [HubSpot] Account not connected for user {\"userId\":\"2ac0447f-3c8c-4ce0-baeb-b63ddb76fa9b\",\"account\":null} {\"correlation_id\":\"0d3cf2b0-a245-4a83-9bd5-1c5788b85738\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {\"crm_provider\":\"hubspot\",\"crm_owner\":130,\"team_id\":42} {\"correlation_id\":\"0d3cf2b0-a245-4a83-9bd5-1c5788b85738\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":42} {\"correlation_id\":\"0d3cf2b0-a245-4a83-9bd5-1c5788b85738\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":42} {\"correlation_id\":\"0d3cf2b0-a245-4a83-9bd5-1c5788b85738\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.INFO: [SyncHubspotObjects] Sync finished {\"team\":\"b2d49a54-b645-4637-a7ae-a86cfce6e8e4\",\"provider\":\"hubspot\",\"status\":\"disconnected\",\"duration_ms\":70.53,\"usage\":25225384,\"real_usage\":65011712,\"pid\":37113,\"reason\":\"Social account for HubSpot cannot be found. Please login to Jiminny to connect.\"} {\"correlation_id\":\"0d3cf2b0-a245-4a83-9bd5-1c5788b85738\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Starting sync {\"team\":\"b2b115eb-93ce-4d1b-929c-173757df8fba\",\"usage\":25263936,\"real_usage\":65011712,\"pid\":37113} {\"correlation_id\":\"1e46be79-1db4-4829-b19c-1548141a94e0\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.WARNING: [HubSpot] Account not connected for user {\"userId\":\"33e34a7a-1c02-4f04-87ac-22c3a385e6e3\",\"account\":{\"Jiminny\\\\Models\\\\SocialAccount\":{\"id\":306,\"sociable_id\":109,\"provider_user_id\":\"11348452\",\"expires\":1701077403,\"refresh_token_expires\":null,\"provider\":\"hubspot\",\"state\":\"full-refresh\",\"auth_scope\":null,\"retry_after\":null,\"created_at\":\"2020-09-01 16:59:04\",\"updated_at\":\"2023-11-27 09:30:03\"}}} {\"correlation_id\":\"1e46be79-1db4-4829-b19c-1548141a94e0\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {\"crm_provider\":\"hubspot\",\"crm_owner\":109,\"team_id\":29} {\"correlation_id\":\"1e46be79-1db4-4829-b19c-1548141a94e0\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":29} {\"correlation_id\":\"1e46be79-1db4-4829-b19c-1548141a94e0\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":29} {\"correlation_id\":\"1e46be79-1db4-4829-b19c-1548141a94e0\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Sync finished {\"team\":\"b2b115eb-93ce-4d1b-929c-173757df8fba\",\"provider\":\"hubspot\",\"status\":\"disconnected\",\"duration_ms\":47.7,\"usage\":25451952,\"real_usage\":65011712,\"pid\":37113,\"reason\":\"Your HubSpot account has become disconnected. Please login to Jiminny to reconnect.\"} {\"correlation_id\":\"1e46be79-1db4-4829-b19c-1548141a94e0\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Starting sync {\"team\":\"c6b9d6b0-b48d-4832-a68c-a57d60651888\",\"usage\":25490320,\"real_usage\":65011712,\"pid\":37113} {\"correlation_id\":\"0da4e096-9534-4a72-bc1f-8e61561d8e37\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.WARNING: [HubSpot] Account not connected for user {\"userId\":\"71e3aac5-fb66-47c5-a236-2d051ae3e319\",\"account\":null} {\"correlation_id\":\"0da4e096-9534-4a72-bc1f-8e61561d8e37\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {\"crm_provider\":\"hubspot\",\"crm_owner\":256,\"team_id\":49} {\"correlation_id\":\"0da4e096-9534-4a72-bc1f-8e61561d8e37\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":49} {\"correlation_id\":\"0da4e096-9534-4a72-bc1f-8e61561d8e37\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":49} {\"correlation_id\":\"0da4e096-9534-4a72-bc1f-8e61561d8e37\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Sync finished {\"team\":\"c6b9d6b0-b48d-4832-a68c-a57d60651888\",\"provider\":\"hubspot\",\"status\":\"disconnected\",\"duration_ms\":44.12,\"usage\":25547952,\"real_usage\":65011712,\"pid\":37113,\"reason\":\"Social account for HubSpot cannot be found. Please login to Jiminny to connect.\"} {\"correlation_id\":\"0da4e096-9534-4a72-bc1f-8e61561d8e37\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Starting sync {\"team\":\"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4\",\"usage\":25587032,\"real_usage\":65011712,\"pid\":37113} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":148,\"team_id\":2} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [HubSpot] Syncing opportunities using strategy: lastModified {\"team\":2} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/deals/search\",\"total_requests\":0,\"total_records_fetched\":0,\"total_elapsed_seconds\":0.28,\"average_seconds_per_request\":0} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Sync finished {\"team\":\"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4\",\"provider\":\"hubspot\",\"status\":\"completed\",\"duration_ms\":412.19,\"usage\":25739960,\"real_usage\":65011712,\"pid\":37113} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.ERROR: Jiminny\\Services\\Crm\\Hubspot\\Pagination\\HubspotPaginationService::getPaginatedDataGenerator(): Return value must be of type Generator, none returned {\"exception\":\"[object] (TypeError(code: 0): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService::getPaginatedDataGenerator(): Return value must be of type Generator, none returned at /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php:82)\n[stacktrace]\n#0 /home/jiminny/app/Services/Crm/Hubspot/Client.php(194): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->getPaginatedDataGenerator(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), Array, 'deals', 0, 0, NULL)\n#1 /home/jiminny/app/Services/Crm/Hubspot/OpportunitySyncStrategy/HubspotSyncStrategyBase.php(55): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client->getPaginatedDataGenerator(Array, 'deals', 0, 0, NULL)\n#2 /home/jiminny/app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php(73): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\OpportunitySyncStrategy\\\\HubspotSyncStrategyBase->fetchOpportunities(Array, 0, NULL)\n#3 /home/jiminny/app/Jobs/Crm/SyncHubspotObjects.php(118): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service->syncOpportunities(Array)\n#4 /home/jiminny/app/Jobs/Crm/SyncHubspotObjects.php(86): Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects->syncHubspotCrmObjects(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service), Object(Illuminate\\\\Support\\\\Carbon))\n#5 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects->handle(Object(Jiminny\\\\Services\\\\ResolveTeamCrmConnection), Object(Illuminate\\\\Log\\\\LogManager), Object(Jiminny\\\\Repositories\\\\TeamRepository))\n#6 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#7 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#8 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#9 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#10 /home/jiminny/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(129): Illuminate\\\\Container\\\\Container->call(Array)\n#11 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\\\Bus\\\\Dispatcher->Illuminate\\\\Bus\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#12 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\\\\Pipeline\\\\Pipeline->Illuminate\\\\Pipeline\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#13 /home/jiminny/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(133): Illuminate\\\\Pipeline\\\\Pipeline->then(Object(Closure))\n#14 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(136): Illuminate\\\\Bus\\\\Dispatcher->dispatchNow(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects), false)\n#15 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\\\Queue\\\\CallQueuedHandler->Illuminate\\\\Queue\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#16 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\\\\Pipeline\\\\Pipeline->Illuminate\\\\Pipeline\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#17 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(129): Illuminate\\\\Pipeline\\\\Pipeline->then(Object(Closure))\n#18 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(70): Illuminate\\\\Queue\\\\CallQueuedHandler->dispatchThroughMiddleware(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#19 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Jobs/Job.php(102): Illuminate\\\\Queue\\\\CallQueuedHandler->call(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Array)\n#20 /home/jiminny/app/Queue/Worker/Worker.php(71): Illuminate\\\\Queue\\\\Jobs\\\\Job->fire()\n#21 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(435): Jiminny\\\\Queue\\\\Worker\\\\Worker->process('redis', Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#22 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(201): Illuminate\\\\Queue\\\\Worker->runJob(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), 'redis', Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#23 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(148): Illuminate\\\\Queue\\\\Worker->daemon('redis', 'crm-sync,crm-up...', Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#24 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(131): Illuminate\\\\Queue\\\\Console\\\\WorkCommand->runWorker('redis', 'crm-sync,crm-up...')\n#25 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Illuminate\\\\Queue\\\\Console\\\\WorkCommand->handle()\n#26 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#27 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#28 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#29 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#30 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(211): Illuminate\\\\Container\\\\Container->call(Array)\n#31 /home/jiminny/vendor/symfony/console/Command/Command.php(341): Illuminate\\\\Console\\\\Command->execute(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#32 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(180): Symfony\\\\Component\\\\Console\\\\Command\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#33 /home/jiminny/vendor/symfony/console/Application.php(1117): Illuminate\\\\Console\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#34 /home/jiminny/vendor/symfony/console/Application.php(356): Symfony\\\\Component\\\\Console\\\\Application->doRunCommand(Object(Illuminate\\\\Queue\\\\Console\\\\WorkCommand), Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#35 /home/jiminny/vendor/symfony/console/Application.php(195): Symfony\\\\Component\\\\Console\\\\Application->doRun(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#36 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(198): Symfony\\\\Component\\\\Console\\\\Application->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#37 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1235): Illuminate\\\\Foundation\\\\Console\\\\Kernel->handle(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#38 /home/jiminny/artisan(13): Illuminate\\\\Foundation\\\\Application->handleCommand(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput))\n#39 {main}\n\"} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Starting sync {\"team\":\"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4\",\"usage\":25172624,\"real_usage\":65011712,\"pid\":37113} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":148,\"team_id\":2} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [HubSpot] Syncing opportunities using strategy: lastModified {\"team\":2} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/deals/search\",\"total_requests\":0,\"total_records_fetched\":0,\"total_elapsed_seconds\":0.23,\"average_seconds_per_request\":0} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Sync finished {\"team\":\"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4\",\"provider\":\"hubspot\",\"status\":\"completed\",\"duration_ms\":291.83,\"usage\":25225088,\"real_usage\":65011712,\"pid\":37113} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:54] local.ERROR: Jiminny\\Services\\Crm\\Hubspot\\Pagination\\HubspotPaginationService::getPaginatedDataGenerator(): Return value must be of type Generator, none returned {\"exception\":\"[object] (TypeError(code: 0): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService::getPaginatedDataGenerator(): Return value must be of type Generator, none returned at /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php:82)\n[stacktrace]\n#0 /home/jiminny/app/Services/Crm/Hubspot/Client.php(194): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->getPaginatedDataGenerator(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), Array, 'deals', 0, 0, NULL)\n#1 /home/jiminny/app/Services/Crm/Hubspot/OpportunitySyncStrategy/HubspotSyncStrategyBase.php(55): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client->getPaginatedDataGenerator(Array, 'deals', 0, 0, NULL)\n#2 /home/jiminny/app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php(73): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\OpportunitySyncStrategy\\\\HubspotSyncStrategyBase->fetchOpportunities(Array, 0, NULL)\n#3 /home/jiminny/app/Jobs/Crm/SyncHubspotObjects.php(118): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service->syncOpportunities(Array)\n#4 /home/jiminny/app/Jobs/Crm/SyncHubspotObjects.php(86): Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects->syncHubspotCrmObjects(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service), Object(Illuminate\\\\Support\\\\Carbon))\n#5 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects->handle(Object(Jiminny\\\\Services\\\\ResolveTeamCrmConnection), Object(Illuminate\\\\Log\\\\LogManager), Object(Jiminny\\\\Repositories\\\\TeamRepository))\n#6 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#7 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#8 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#9 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#10 /home/jiminny/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(129): Illuminate\\\\Container\\\\Container->call(Array)\n#11 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\\\Bus\\\\Dispatcher->Illuminate\\\\Bus\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#12 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\\\\Pipeline\\\\Pipeline->Illuminate\\\\Pipeline\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#13 /home/jiminny/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(133): Illuminate\\\\Pipeline\\\\Pipeline->then(Object(Closure))\n#14 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(136): Illuminate\\\\Bus\\\\Dispatcher->dispatchNow(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects), false)\n#15 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\\\Queue\\\\CallQueuedHandler->Illuminate\\\\Queue\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#16 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\\\\Pipeline\\\\Pipeline->Illuminate\\\\Pipeline\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#17 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(129): Illuminate\\\\Pipeline\\\\Pipeline->then(Object(Closure))\n#18 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(70): Illuminate\\\\Queue\\\\CallQueuedHandler->dispatchThroughMiddleware(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#19 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Jobs/Job.php(102): Illuminate\\\\Queue\\\\CallQueuedHandler->call(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Array)\n#20 /home/jiminny/app/Queue/Worker/Worker.php(71): Illuminate\\\\Queue\\\\Jobs\\\\Job->fire()\n#21 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(435): Jiminny\\\\Queue\\\\Worker\\\\Worker->process('redis', Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#22 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(201): Illuminate\\\\Queue\\\\Worker->runJob(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), 'redis', Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#23 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(148): Illuminate\\\\Queue\\\\Worker->daemon('redis', 'crm-sync,crm-up...', Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#24 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(131): Illuminate\\\\Queue\\\\Console\\\\WorkCommand->runWorker('redis', 'crm-sync,crm-up...')\n#25 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Illuminate\\\\Queue\\\\Console\\\\WorkCommand->handle()\n#26 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#27 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#28 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#29 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#30 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(211): Illuminate\\\\Container\\\\Container->call(Array)\n#31 /home/jiminny/vendor/symfony/console/Command/Command.php(341): Illuminate\\\\Console\\\\Command->execute(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#32 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(180): Symfony\\\\Component\\\\Console\\\\Command\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#33 /home/jiminny/vendor/symfony/console/Application.php(1117): Illuminate\\\\Console\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#34 /home/jiminny/vendor/symfony/console/Application.php(356): Symfony\\\\Component\\\\Console\\\\Application->doRunCommand(Object(Illuminate\\\\Queue\\\\Console\\\\WorkCommand), Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#35 /home/jiminny/vendor/symfony/console/Application.php(195): Symfony\\\\Component\\\\Console\\\\Application->doRun(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#36 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(198): Symfony\\\\Component\\\\Console\\\\Application->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#37 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1235): Illuminate\\\\Foundation\\\\Console\\\\Kernel->handle(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#38 /home/jiminny/artisan(13): Illuminate\\\\Foundation\\\\Application->handleCommand(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput))\n#39 {main}\n\"} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:57:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"854299be-d77a-48bc-870c-b78333916d69\",\"trace_id\":\"89c1eb6c-bc78-419c-9304-b770093d5692\"}\n[2026-05-07 12:57:06] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"854299be-d77a-48bc-870c-b78333916d69\",\"trace_id\":\"89c1eb6c-bc78-419c-9304-b770093d5692\"}\n[2026-05-07 12:57:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"854299be-d77a-48bc-870c-b78333916d69\",\"trace_id\":\"89c1eb6c-bc78-419c-9304-b770093d5692\"}\n[2026-05-07 12:57:16] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"c4e512a3-a227-4569-bcd2-3258a9142d46\",\"trace_id\":\"016bf668-6712-4c0f-8c8c-c2e411a37889\"}\n[2026-05-07 12:57:16] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"c4e512a3-a227-4569-bcd2-3258a9142d46\",\"trace_id\":\"016bf668-6712-4c0f-8c8c-c2e411a37889\"}\n[2026-05-07 12:57:19] local.NOTICE: Monitoring start {\"correlation_id\":\"4c2d4775-716d-4ca6-b94d-cb17dace29a7\",\"trace_id\":\"e969e10d-e5f0-44c6-9767-97a70e05cfe5\"}\n[2026-05-07 12:57:19] local.NOTICE: Monitoring end {\"correlation_id\":\"4c2d4775-716d-4ca6-b94d-cb17dace29a7\",\"trace_id\":\"e969e10d-e5f0-44c6-9767-97a70e05cfe5\"}\n[2026-05-07 12:57:22] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"d03e9546-bfd0-44c6-84ee-299b1e6c14a2\",\"trace_id\":\"acbab6e5-17fc-4b11-907d-ff87322285d7\"}\n[2026-05-07 12:57:22] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"d03e9546-bfd0-44c6-84ee-299b1e6c14a2\",\"trace_id\":\"acbab6e5-17fc-4b11-907d-ff87322285d7\"}\n[2026-05-07 12:57:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"a2c0095a-18b2-427e-825b-c68c9dbf63a1\",\"trace_id\":\"9b170d6a-ed10-4a41-af79-684c99021967\"}\n[2026-05-07 12:57:25] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"a2c0095a-18b2-427e-825b-c68c9dbf63a1\",\"trace_id\":\"9b170d6a-ed10-4a41-af79-684c99021967\"}\n[2026-05-07 12:57:25] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"a2c0095a-18b2-427e-825b-c68c9dbf63a1\",\"trace_id\":\"9b170d6a-ed10-4a41-af79-684c99021967\"}\n[2026-05-07 12:57:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"a2c0095a-18b2-427e-825b-c68c9dbf63a1\",\"trace_id\":\"9b170d6a-ed10-4a41-af79-684c99021967\"}\n[2026-05-07 12:57:27] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:create\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"c4e70056-ceab-4c44-874a-8042963ce3ea\",\"trace_id\":\"011a70aa-ebb2-4ca8-aef6-4b4cca233da7\"}\n[2026-05-07 12:57:27] local.INFO: [EmailSchedule] STARTING batch create {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"c4e70056-ceab-4c44-874a-8042963ce3ea\",\"trace_id\":\"011a70aa-ebb2-4ca8-aef6-4b4cca233da7\"}\n[2026-05-07 12:57:27] local.INFO: [EmailSchedule] FINISHED batch create {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"c4e70056-ceab-4c44-874a-8042963ce3ea\",\"trace_id\":\"011a70aa-ebb2-4ca8-aef6-4b4cca233da7\"}\n[2026-05-07 12:57:27] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:create\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"c4e70056-ceab-4c44-874a-8042963ce3ea\",\"trace_id\":\"011a70aa-ebb2-4ca8-aef6-4b4cca233da7\"}\n[2026-05-07 12:57:28] local.INFO: [Jiminny\\Jobs\\Mailbox\\CreateBatches] processed 2 inboxes and created 0 batches {\"userId\":null,\"batchSize\":30,\"maxBatches\":1000} {\"correlation_id\":\"c296bf83-9f7c-4228-b6f5-99db6040fa01\",\"trace_id\":\"011a70aa-ebb2-4ca8-aef6-4b4cca233da7\"}\n[2026-05-07 12:58:06] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"a9e2de8b-b538-437e-bbe7-82636da81995\",\"trace_id\":\"e517ae80-e149-490c-b719-309e898b3c93\"}\n[2026-05-07 12:58:06] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"a9e2de8b-b538-437e-bbe7-82636da81995\",\"trace_id\":\"e517ae80-e149-490c-b719-309e898b3c93\"}\n[2026-05-07 12:58:06] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"a9e2de8b-b538-437e-bbe7-82636da81995\",\"trace_id\":\"e517ae80-e149-490c-b719-309e898b3c93\"}\n[2026-05-07 12:58:06] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":148,\"team_id\":2} {\"correlation_id\":\"a9e2de8b-b538-437e-bbe7-82636da81995\",\"trace_id\":\"e517ae80-e149-490c-b719-309e898b3c93\"}\n[2026-05-07 12:58:06] local.ERROR: Client error: `POST https://api.hubapi.com/crm/v3/objects/contact/search` resulted in a `429 Too Many Requests` response:\n{\"status\":\"error\",\"message\":\"You have reached your secondly limit.\",\"errorType\":\"RATE_LIMIT\",\"correlationId\":\"019e0284-5 (truncated...)\n {\"exception\":\"[object] (SevenShores\\\\Hubspot\\\\Exceptions\\\\BadRequest(code: 429): Client error: `POST https://api.hubapi.com/crm/v3/objects/contact/search` resulted in a `429 Too Many Requests` response:\n{\\\"status\\\":\\\"error\\\",\\\"message\\\":\\\"You have reached your secondly limit.\\\",\\\"errorType\\\":\\\"RATE_LIMIT\\\",\\\"correlationId\\\":\\\"019e0284-5 (truncated...)\n at /home/jiminny/vendor/hubspot/hubspot-php/src/Exceptions/HubspotException.php:24)\n[stacktrace]\n#0 /home/jiminny/vendor/hubspot/hubspot-php/src/Http/Client.php(125): SevenShores\\\\Hubspot\\\\Exceptions\\\\HubspotException::create(Object(GuzzleHttp\\\\Exception\\\\ClientException))\n#1 /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php(163): SevenShores\\\\Hubspot\\\\Http\\\\Client->request('POST', 'https://api.hub...', Array)\n#2 /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php(51): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->executeSearchRequest(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), 'https://api.hub...', Array, Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\PaginationState))\n#3 /home/jiminny/app/Services/Crm/Hubspot/Client.php(194): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->getPaginatedDataGenerator(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), Array, 'contact', 0, 0, NULL)\n#4 /home/jiminny/app/Services/Crm/Hubspot/Client.php(175): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client->getPaginatedDataGenerator(Array, 'contact', 0, 0, NULL)\n#5 /home/jiminny/app/Services/Crm/Hubspot/Service.php(1203): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client->getPaginatedData(Array, 'contact')\n#6 /home/jiminny/app/Console/Commands/JiminnyDebugCommand.php(353): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service->matchByName('Robot')\n#7 /home/jiminny/app/Console/Commands/JiminnyDebugCommand.php(44): Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand->rateLimit()\n#8 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand->handle(Object(Jiminny\\\\Jobs\\\\JobDispatcher), Object(Jiminny\\\\Services\\\\Kiosk\\\\AutomatedReports\\\\AutomatedReportsService), Object(Jiminny\\\\Repositories\\\\AutomatedReportsRepository), Object(Jiminny\\\\Services\\\\UserPilot\\\\UserPilotClient))\n#9 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#10 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#11 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#12 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#13 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(211): Illuminate\\\\Container\\\\Container->call(Array)\n#14 /home/jiminny/vendor/symfony/console/Command/Command.php(341): Illuminate\\\\Console\\\\Command->execute(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#15 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(180): Symfony\\\\Component\\\\Console\\\\Command\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#16 /home/jiminny/vendor/symfony/console/Application.php(1117): Illuminate\\\\Console\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#17 /home/jiminny/vendor/symfony/console/Application.php(356): Symfony\\\\Component\\\\Console\\\\Application->doRunCommand(Object(Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand), Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#18 /home/jiminny/vendor/symfony/console/Application.php(195): Symfony\\\\Component\\\\Console\\\\Application->doRun(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#19 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(198): Symfony\\\\Component\\\\Console\\\\Application->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#20 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1235): Illuminate\\\\Foundation\\\\Console\\\\Kernel->handle(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#21 /home/jiminny/artisan(13): Illuminate\\\\Foundation\\\\Application->handleCommand(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput))\n#22 {main}\n\n[previous exception] [object] (GuzzleHttp\\\\Exception\\\\ClientException(code: 429): Client error: `POST https://api.hubapi.com/crm/v3/objects/contact/search` resulted in a `429 Too Many Requests` response:\n{\\\"status\\\":\\\"error\\\",\\\"message\\\":\\\"You have reached your secondly limit.\\\",\\\"errorType\\\":\\\"RATE_LIMIT\\\",\\\"correlationId\\\":\\\"019e0284-5 (truncated...)\n at /home/jiminny/vendor/guzzlehttp/guzzle/src/Exception/RequestException.php:111)\n[stacktrace]\n#0 /home/jiminny/vendor/guzzlehttp/guzzle/src/Middleware.php(72): GuzzleHttp\\\\Exception\\\\RequestException::create(Object(GuzzleHttp\\\\Psr7\\\\Request), Object(GuzzleHttp\\\\Psr7\\\\Response), NULL, Array, NULL)\n#1 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(209): GuzzleHttp\\\\Middleware::GuzzleHttp\\\\{closure}(Object(GuzzleHttp\\\\Psr7\\\\Response))\n#2 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(158): GuzzleHttp\\\\Promise\\\\Promise::callHandler(1, Object(GuzzleHttp\\\\Psr7\\\\Response), NULL)\n#3 /home/jiminny/vendor/guzzlehttp/promises/src/TaskQueue.php(52): GuzzleHttp\\\\Promise\\\\Promise::GuzzleHttp\\\\Promise\\\\{closure}()\n#4 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(251): GuzzleHttp\\\\Promise\\\\TaskQueue->run(true)\n#5 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(227): GuzzleHttp\\\\Promise\\\\Promise->invokeWaitFn()\n#6 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(272): GuzzleHttp\\\\Promise\\\\Promise->waitIfPending()\n#7 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(229): GuzzleHttp\\\\Promise\\\\Promise->invokeWaitList()\n#8 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(69): GuzzleHttp\\\\Promise\\\\Promise->waitIfPending()\n#9 /home/jiminny/vendor/guzzlehttp/guzzle/src/Client.php(189): GuzzleHttp\\\\Promise\\\\Promise->wait()\n#10 /home/jiminny/vendor/hubspot/hubspot-php/src/Http/Client.php(113): GuzzleHttp\\\\Client->request('POST', 'https://api.hub...', Array)\n#11 /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php(163): SevenShores\\\\Hubspot\\\\Http\\\\Client->request('POST', 'https://api.hub...', Array)\n#12 /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php(51): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->executeSearchRequest(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), 'https://api.hub...', Array, Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\PaginationState))\n#13 /home/jiminny/app/Services/Crm/Hubspot/Client.php(194): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->getPaginatedDataGenerator(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), Array, 'contact', 0, 0, NULL)\n#14 /home/jiminny/app/Services/Crm/Hubspot/Client.php(175): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client->getPaginatedDataGenerator(Array, 'contact', 0, 0, NULL)\n#15 /home/jiminny/app/Services/Crm/Hubspot/Service.php(1203): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client->getPaginatedData(Array, 'contact')\n#16 /home/jiminny/app/Console/Commands/JiminnyDebugCommand.php(353): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service->matchByName('Robot')\n#17 /home/jiminny/app/Console/Commands/JiminnyDebugCommand.php(44): Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand->rateLimit()\n#18 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand->handle(Object(Jiminny\\\\Jobs\\\\JobDispatcher), Object(Jiminny\\\\Services\\\\Kiosk\\\\AutomatedReports\\\\AutomatedReportsService), Object(Jiminny\\\\Repositories\\\\AutomatedReportsRepository), Object(Jiminny\\\\Services\\\\UserPilot\\\\UserPilotClient))\n#19 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#20 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#21 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#22 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#23 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(211): Illuminate\\\\Container\\\\Container->call(Array)\n#24 /home/jiminny/vendor/symfony/console/Command/Command.php(341): Illuminate\\\\Console\\\\Command->execute(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#25 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(180): Symfony\\\\Component\\\\Console\\\\Command\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#26 /home/jiminny/vendor/symfony/console/Application.php(1117): Illuminate\\\\Console\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#27 /home/jiminny/vendor/symfony/console/Application.php(356): Symfony\\\\Component\\\\Console\\\\Application->doRunCommand(Object(Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand), Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#28 /home/jiminny/vendor/symfony/console/Application.php(195): Symfony\\\\Component\\\\Console\\\\Application->doRun(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#29 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(198): Symfony\\\\Component\\\\Console\\\\Application->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#30 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1235): Illuminate\\\\Foundation\\\\Console\\\\Kernel->handle(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#31 /home/jiminny/artisan(13): Illuminate\\\\Foundation\\\\Application->handleCommand(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput))\n#32 {main}\n\"} {\"correlation_id\":\"a9e2de8b-b538-437e-bbe7-82636da81995\",\"trace_id\":\"e517ae80-e149-490c-b719-309e898b3c93\"}\n[2026-05-07 12:58:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"fb59e309-d2cc-4fe0-9db2-544112c25477\",\"trace_id\":\"28ccdd4f-bf3a-4545-bc8a-d94188f8204f\"}\n[2026-05-07 12:58:10] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"fb59e309-d2cc-4fe0-9db2-544112c25477\",\"trace_id\":\"28ccdd4f-bf3a-4545-bc8a-d94188f8204f\"}\n[2026-05-07 12:58:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"fb59e309-d2cc-4fe0-9db2-544112c25477\",\"trace_id\":\"28ccdd4f-bf3a-4545-bc8a-d94188f8204f\"}\n[2026-05-07 12:58:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"bff14f9f-db1d-4b6c-bd92-ca810b31790a\",\"trace_id\":\"ed08145b-94b8-4585-8e81-0ad478d038dc\"}\n[2026-05-07 12:58:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"bff14f9f-db1d-4b6c-bd92-ca810b31790a\",\"trace_id\":\"ed08145b-94b8-4585-8e81-0ad478d038dc\"}\n[2026-05-07 12:58:16] local.NOTICE: Monitoring start {\"correlation_id\":\"54ed6493-c74e-4491-b2ff-9404528f1525\",\"trace_id\":\"9a1f78c0-6e74-482c-a091-8367df3d0f70\"}\n[2026-05-07 12:58:16] local.NOTICE: Monitoring end {\"correlation_id\":\"54ed6493-c74e-4491-b2ff-9404528f1525\",\"trace_id\":\"9a1f78c0-6e74-482c-a091-8367df3d0f70\"}\n[2026-05-07 12:58:24] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"7f141a32-060d-4123-bf20-8a8d7abc1482\",\"trace_id\":\"f7fdcb6b-932a-4f6b-ad95-f111628d6cf7\"}\n[2026-05-07 12:58:24] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"7f141a32-060d-4123-bf20-8a8d7abc1482\",\"trace_id\":\"f7fdcb6b-932a-4f6b-ad95-f111628d6cf7\"}\n[2026-05-07 12:58:36] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"f586fc15-711b-4199-8fdf-dcd2df95af0c\",\"trace_id\":\"828fb459-3b7f-4196-a690-12fc9ce99b1d\"}\n[2026-05-07 12:58:36] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"f586fc15-711b-4199-8fdf-dcd2df95af0c\",\"trace_id\":\"828fb459-3b7f-4196-a690-12fc9ce99b1d\"}\n[2026-05-07 12:58:37] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"f586fc15-711b-4199-8fdf-dcd2df95af0c\",\"trace_id\":\"828fb459-3b7f-4196-a690-12fc9ce99b1d\"}\n[2026-05-07 12:58:37] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"f586fc15-711b-4199-8fdf-dcd2df95af0c\",\"trace_id\":\"828fb459-3b7f-4196-a690-12fc9ce99b1d\"}\n[2026-05-07 12:58:40] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"01d4e25d-56d5-4c89-bc29-d873e21cc16f\",\"trace_id\":\"ee1fe1ac-362b-47c1-9db2-7915a30cf0f2\"}\n[2026-05-07 12:58:40] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:56:00, 2026-05-07 12:58:00] {\"correlation_id\":\"01d4e25d-56d5-4c89-bc29-d873e21cc16f\",\"trace_id\":\"ee1fe1ac-362b-47c1-9db2-7915a30cf0f2\"}\n[2026-05-07 12:58:40] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:56:00, 2026-05-07 12:58:00] {\"correlation_id\":\"01d4e25d-56d5-4c89-bc29-d873e21cc16f\",\"trace_id\":\"ee1fe1ac-362b-47c1-9db2-7915a30cf0f2\"}\n[2026-05-07 12:58:40] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"01d4e25d-56d5-4c89-bc29-d873e21cc16f\",\"trace_id\":\"ee1fe1ac-362b-47c1-9db2-7915a30cf0f2\"}\n[2026-05-07 12:58:48] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"924e149e-3462-4043-87da-00838220b970\",\"trace_id\":\"7d0922db-8131-4a52-a0c5-2a7a78df42e8\"}\n[2026-05-07 12:58:48] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"calendar:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:48] local.NOTICE: Calendar sync start {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:48] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"924e149e-3462-4043-87da-00838220b970\",\"trace_id\":\"7d0922db-8131-4a52-a0c5-2a7a78df42e8\"}\n[2026-05-07 12:58:49] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1393,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:49] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1393,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:49] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:49] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1393,\"provider\":\"google\",\"refreshToken\":\"5aa7e2d96b53201cd16fca5d2e4ef3ad03320971fc064781d18aee3ae7b99fbf\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1393,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Account has been deleted\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1393,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1387,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1387,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1387,\"provider\":\"google\",\"refreshToken\":\"8157ac6de94842937194009e9c50e459253600f799dacf6a40755ffdbeb5bba6\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1387,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Account has been deleted\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1387,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1348,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1348,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1348,\"provider\":\"google\",\"refreshToken\":\"9e7d13d3032d0cb1b79d8e95aef01383e8e91eb52ff8ee960c8a0b6b95cd8c73\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1348,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Bad Request\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1348,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1361,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1361,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1361,\"provider\":\"google\",\"refreshToken\":\"6c843da199c2b9907445329304fcc4ec5057a4ee748d8299641764395c08e1fd\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1361,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Account has been deleted\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1361,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1310,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1310,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1310,\"provider\":\"google\",\"refreshToken\":\"e34818922c2830a660813a63f6169a4a9a992ae2cccd7dc8dd7796cfdb470ef1\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1310,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Bad Request\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1310,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1333,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1333,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1333,\"provider\":\"google\",\"refreshToken\":\"6c902986546d8e8da1dc539b046cdc1d458f519acc972e5b5f1d6a1a295165e0\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1333,\"provider\":\"google\",\"responseBody\":{\"error\":\"unauthorized_client\",\"error_description\":\"Unauthorized\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1333,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1368,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1368,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1368,\"provider\":\"google\",\"refreshToken\":\"d2f128898ff8543bd16b69cfae37896ab85119b0f5ed2b431d739593bb600333\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1368,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Bad Request\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1368,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1365,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1365,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1365,\"provider\":\"google\",\"refreshToken\":\"7676e4a9afcd082b413248ab5ec6e487021fec6a9bdf315860a59cefad9caad8\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1365,\"provider\":\"google\",\"responseBody\":{\"error\":\"unauthorized_client\",\"error_description\":\"Unauthorized\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1365,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1364,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1364,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1364,\"provider\":\"google\",\"refreshToken\":\"dd5882ebce76e645292ce33ae74238abbb77c0a4ecc6a2bfe723cad82e72ba8e\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1364,\"provider\":\"google\",\"responseBody\":{\"error\":\"unauthorized_client\",\"error_description\":\"Unauthorized\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1364,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1370,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1370,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1370,\"provider\":\"office\",\"refreshToken\":\"b7ee8035306d0043cea6e00e7c4fe14f745e44074a1194db62a31cdf8b70af3e\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1370,\"provider\":\"office\",\"responseBody\":\"{\\\"error\\\":\\\"invalid_client\\\",\\\"error_description\\\":\\\"AADSTS7000215: Invalid client secret provided. Ensure the secret being sent in the request is the client secret value, not the client secret ID, for a secret added to app 'bbcbb2ef-6200-4fae-82bd-d81f5dd738da'. Trace ID: ef9bb388-453e-4744-a2e1-95e49ced1700 Correlation ID: 3b889c73-f943-4048-ba3b-63ac50581245 Timestamp: 2026-05-07 12:58:53Z\\\",\\\"error_codes\\\":[7000215],\\\"timestamp\\\":\\\"2026-05-07 12:58:53Z\\\",\\\"trace_id\\\":\\\"ef9bb388-453e-4744-a2e1-95e49ced1700\\\",\\\"correlation_id\\\":\\\"3b889c73-f943-4048-ba3b-63ac50581245\\\",\\\"error_uri\\\":\\\"https://login.microsoftonline.com/error?code=7000215\\\"}\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1370,\"provider\":\"office\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1202,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1202,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1202,\"provider\":\"office\",\"refreshToken\":\"b458799ccc29b21a6e2eb5260fdb63e49ccba21bf942a3973fb63799bd7f0afe\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1202,\"provider\":\"office\",\"responseBody\":\"{\\\"error\\\":\\\"invalid_client\\\",\\\"error_description\\\":\\\"AADSTS7000215: Invalid client secret provided. Ensure the secret being sent in the request is the client secret value, not the client secret ID, for a secret added to app 'bbcbb2ef-6200-4fae-82bd-d81f5dd738da'. Trace ID: 0b8181c0-c858-4d17-af69-c23b7f5a0a00 Correlation ID: 2ce9e931-f423-4048-b1d7-ae1910cd4834 Timestamp: 2026-05-07 12:58:54Z\\\",\\\"error_codes\\\":[7000215],\\\"timestamp\\\":\\\"2026-05-07 12:58:54Z\\\",\\\"trace_id\\\":\\\"0b8181c0-c858-4d17-af69-c23b7f5a0a00\\\",\\\"correlation_id\\\":\\\"2ce9e931-f423-4048-b1d7-ae1910cd4834\\\",\\\"error_uri\\\":\\\"https://login.microsoftonline.com/error?code=7000215\\\"}\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1202,\"provider\":\"office\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1502,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1502,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: Calendar sync job dispatched {\"calendar_id\":501} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1300,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1300,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1300,\"provider\":\"google\",\"refreshToken\":\"4b811db0725fd9602a95943519a7da935e2a5065da7d9ebfcb170752e3e1ddb8\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1300,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Account has been deleted\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1300,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1409,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1409,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1409,\"provider\":\"google\",\"refreshToken\":\"e2a3f2d06894894eed1ee87d9db1ace77d4d42ee6e1288a8940ad2c10333b0c4\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1409,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Bad Request\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1409,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1352,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1352,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1352,\"provider\":\"google\",\"refreshToken\":\"dd4b16b00fdc1216da6b717c02338c073636e29162826b2de6db3f064fc029eb\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1352,\"provider\":\"google\",\"responseBody\":{\"error\":\"unauthorized_client\",\"error_description\":\"Unauthorized\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1352,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1296,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1296,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1296,\"provider\":\"office\",\"refreshToken\":\"011ae723c9d800c674e0b4be76f49fc046dac7d501b66c59ef0d9549cfa56ae5\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1296,\"provider\":\"office\",\"responseBody\":\"{\\\"error\\\":\\\"invalid_client\\\",\\\"error_description\\\":\\\"AADSTS7000215: Invalid client secret provided. Ensure the secret being sent in the request is the client secret value, not the client secret ID, for a secret added to app 'bbcbb2ef-6200-4fae-82bd-d81f5dd738da'. Trace ID: 4f38b1ca-479e-445c-8db5-29366d0a0c00 Correlation ID: d0a4d623-1a23-4fcc-aebf-ccafeed44a92 Timestamp: 2026-05-07 12:58:56Z\\\",\\\"error_codes\\\":[7000215],\\\"timestamp\\\":\\\"2026-05-07 12:58:56Z\\\",\\\"trace_id\\\":\\\"4f38b1ca-479e-445c-8db5-29366d0a0c00\\\",\\\"correlation_id\\\":\\\"d0a4d623-1a23-4fcc-aebf-ccafeed44a92\\\",\\\"error_uri\\\":\\\"https://login.microsoftonline.com/error?code=7000215\\\"}\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1296,\"provider\":\"office\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":391,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":391,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":391,\"provider\":\"office\",\"refreshToken\":\"00045eebae0f39b34887c6d53f92ae78064f7145e1f4b67754aebd03cfb2d881\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1502,\"provider\":\"google\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1502,\"provider\":\"google\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [Calendar] Processing sync {\"calendarId\":\"a33076c1-8d97-431a-99f0-85c9524e118b\",\"from\":null,\"to\":null,\"delta\":\"CIiFh8TP44kDEIiFh8TP44kDGAUgkZvkzgIokZvkzgI=\",\"last_sync\":\"2024-12-09 07:12:53\",\"dateMode\":\"daily\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"integration-app\",\"crm_owner\":1695,\"team_id\":3143} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1502,\"provider\":\"google\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1502,\"provider\":\"google\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":391,\"provider\":\"office\",\"responseBody\":\"{\\\"error\\\":\\\"invalid_client\\\",\\\"error_description\\\":\\\"AADSTS7000215: Invalid client secret provided. Ensure the secret being sent in the request is the client secret value, not the client secret ID, for a secret added to app 'bbcbb2ef-6200-4fae-82bd-d81f5dd738da'. Trace ID: 1791a948-a974-424b-9246-7fedfa913b00 Correlation ID: b0e7bf62-d69e-49dd-b7c9-9550f0bd2aec Timestamp: 2026-05-07 12:58:56Z\\\",\\\"error_codes\\\":[7000215],\\\"timestamp\\\":\\\"2026-05-07 12:58:56Z\\\",\\\"trace_id\\\":\\\"1791a948-a974-424b-9246-7fedfa913b00\\\",\\\"correlation_id\\\":\\\"b0e7bf62-d69e-49dd-b7c9-9550f0bd2aec\\\",\\\"error_uri\\\":\\\"https://login.microsoftonline.com/error?code=7000215\\\"}\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":391,\"provider\":\"office\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1271,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1271,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1271,\"provider\":\"office\",\"refreshToken\":\"118cde2c06993147b07ccaec4cbcd5026a819dea6c71081166a492933e392afb\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [Google Calendar] Failed to watch channel for calendar {\"calendarId\":\"a33076c1-8d97-431a-99f0-85c9524e118b\",\"code\":400,\"reason\":\"{\n \\\"error\\\": {\n \\\"errors\\\": [\n {\n \\\"domain\\\": \\\"global\\\",\n \\\"reason\\\": \\\"push.webhookUrlNotHttps\\\",\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n ],\n \\\"code\\\": 400,\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n}\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.WARNING: [Calendar] Sync failed {\"calendarId\":\"a33076c1-8d97-431a-99f0-85c9524e118b\",\"code\":400,\"reason\":\"{\n \\\"error\\\": {\n \\\"errors\\\": [\n {\n \\\"domain\\\": \\\"global\\\",\n \\\"reason\\\": \\\"push.webhookUrlNotHttps\\\",\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n ],\n \\\"code\\\": 400,\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n}\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1271,\"provider\":\"office\",\"responseBody\":\"{\\\"error\\\":\\\"invalid_client\\\",\\\"error_description\\\":\\\"AADSTS7000215: Invalid client secret provided. Ensure the secret being sent in the request is the client secret value, not the client secret ID, for a secret added to app 'bbcbb2ef-6200-4fae-82bd-d81f5dd738da'. Trace ID: 2be27598-8820-475c-b6ca-a30513720c00 Correlation ID: d3ed2a98-4aa9-4a63-819b-d36fd20b8d62 Timestamp: 2026-05-07 12:58:57Z\\\",\\\"error_codes\\\":[7000215],\\\"timestamp\\\":\\\"2026-05-07 12:58:57Z\\\",\\\"trace_id\\\":\\\"2be27598-8820-475c-b6ca-a30513720c00\\\",\\\"correlation_id\\\":\\\"d3ed2a98-4aa9-4a63-819b-d36fd20b8d62\\\",\\\"error_uri\\\":\\\"https://login.microsoftonline.com/error?code=7000215\\\"}\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1271,\"provider\":\"office\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1351,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1351,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1351,\"provider\":\"google\",\"refreshToken\":\"4271d15b9e60a606439caddc68337f783e472c85b03dacff14d1b6dfded9051c\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1351,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Bad Request\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1351,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1366,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1366,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1366,\"provider\":\"google\",\"refreshToken\":\"ae21385059b2eebfd43f68aecd56eccd702a1aabb6598f1f7ab594ed8af491b4\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1366,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Bad Request\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1366,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1115,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1115,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: Calendar sync job dispatched {\"calendar_id\":378} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:58] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1421,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:58] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1421,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:58] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:58] local.INFO: Calendar sync job dispatched {\"calendar_id\":504} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:58] local.NOTICE: Calendar sync end {\"retrieved_calendars\":31,\"processed_calendars\":3} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:58] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"calendar:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1115,\"provider\":\"google\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1115,\"provider\":\"google\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [Calendar] Processing sync {\"calendarId\":\"2676cb6d-f86c-427e-bf78-591e388e3c1e\",\"from\":null,\"to\":null,\"delta\":\"CJ_x49O3jpIDEJ_x49O3jpIDGAUgw67KlwMow67KlwM=\",\"last_sync\":\"2026-01-19 07:48:40\",\"dateMode\":\"daily\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.WARNING: [Pipedrive] Account not connected for user {\"userId\":\"e6538737-e7b4-455f-a37a-3e79b665a220\",\"account\":{\"Jiminny\\\\Models\\\\SocialAccount\":{\"id\":1116,\"sociable_id\":241,\"provider_user_id\":\"19555731\",\"expires\":1775683749,\"refresh_token_expires\":null,\"provider\":\"pipedrive\",\"state\":\"full-refresh\",\"auth_scope\":\"base,deals:full,activities:full,contacts:full,search:read\",\"retry_after\":null,\"created_at\":\"2023-09-08 09:44:29\",\"updated_at\":\"2026-04-08 22:58:34\"}}} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {\"crm_provider\":\"pipedrive\",\"crm_owner\":241,\"team_id\":19} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {\"crm_provider\":\"pipedrive\",\"team_id\":19} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {\"crm_provider\":\"pipedrive\",\"team_id\":19} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.WARNING: [Calendar] CRM disconnected for user so events will not be matched {\"provider\":\"pipedrive\",\"user_id\":241,\"message\":\"Your Pipedrive account has become disconnected. Please login to Jiminny to reconnect.\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1115,\"provider\":\"google\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1115,\"provider\":\"google\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [Google Calendar] Failed to watch channel for calendar {\"calendarId\":\"2676cb6d-f86c-427e-bf78-591e388e3c1e\",\"code\":400,\"reason\":\"{\n \\\"error\\\": {\n \\\"errors\\\": [\n {\n \\\"domain\\\": \\\"global\\\",\n \\\"reason\\\": \\\"push.webhookUrlNotHttps\\\",\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n ],\n \\\"code\\\": 400,\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n}\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.WARNING: [Calendar] Sync failed {\"calendarId\":\"2676cb6d-f86c-427e-bf78-591e388e3c1e\",\"code\":400,\"reason\":\"{\n \\\"error\\\": {\n \\\"errors\\\": [\n {\n \\\"domain\\\": \\\"global\\\",\n \\\"reason\\\": \\\"push.webhookUrlNotHttps\\\",\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n ],\n \\\"code\\\": 400,\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n}\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1421,\"provider\":\"office\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1421,\"provider\":\"office\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [Calendar] Processing sync {\"calendarId\":\"9e8b1a2c-1a8f-42bd-b161-810fc0baf540\",\"from\":null,\"to\":null,\"delta\":\"R0usmcdvmMuZCBYV0hguCHhwR3crxfEuMI8zGlf-bMYpCFtdxXvSJWTlnqQvu_jjoOrOYL2VG9rZwFHCERHxGfGEK3CmQX6x8MJG3ZbBXGuVIS6C7u-doY5maMRdsfnrHIAEMJd4Bs_WMfMH4tDJ8j9aul7DHDEJaP7w0PoPPpcoxu4nEk4vk-MolJBEgkSrayEewuBs5JVItUX9lUY2tA.yO2roNQ4Vdm6hBgoutuphGchuzbvsk7aqt5wHfcyeFQ\",\"last_sync\":\"2026-05-06 15:58:35\",\"dateMode\":\"daily\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":89,\"team_id\":2} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [MS Office Calendar] Skipping delta sync for daily mode {\"calendarId\":\"9e8b1a2c-1a8f-42bd-b161-810fc0baf540\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:59:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"cb5f9d32-02db-4883-a5c9-a5b86c1a2fbb\",\"trace_id\":\"4fb8a9a0-53b1-414a-813d-a259b89f3203\"}\n[2026-05-07 12:59:06] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"cb5f9d32-02db-4883-a5c9-a5b86c1a2fbb\",\"trace_id\":\"4fb8a9a0-53b1-414a-813d-a259b89f3203\"}\n[2026-05-07 12:59:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"cb5f9d32-02db-4883-a5c9-a5b86c1a2fbb\",\"trace_id\":\"4fb8a9a0-53b1-414a-813d-a259b89f3203\"}\n[2026-05-07 12:59:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"64313a2b-3a92-4419-ae59-caabfc9e9731\",\"trace_id\":\"16443bac-2196-4257-88bc-59445729f276\"}\n[2026-05-07 12:59:09] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"64313a2b-3a92-4419-ae59-caabfc9e9731\",\"trace_id\":\"16443bac-2196-4257-88bc-59445729f276\"}\n[2026-05-07 12:59:11] local.NOTICE: Monitoring start {\"correlation_id\":\"7678c2ca-049f-44e4-acce-2e711f8d7d40\",\"trace_id\":\"54ef3d3c-f1ea-4a01-aed2-db19a6739a06\"}\n[2026-05-07 12:59:11] local.NOTICE: Monitoring end {\"correlation_id\":\"7678c2ca-049f-44e4-acce-2e711f8d7d40\",\"trace_id\":\"54ef3d3c-f1ea-4a01-aed2-db19a6739a06\"}\n[2026-05-07 12:59:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"44d7c1a1-dfc9-4401-9f63-ad8b5bff9942\",\"trace_id\":\"9f6f5f38-60f5-4869-bfd2-f366d52eaa00\"}\n[2026-05-07 12:59:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"44d7c1a1-dfc9-4401-9f63-ad8b5bff9942\",\"trace_id\":\"9f6f5f38-60f5-4869-bfd2-f366d52eaa00\"}\n[2026-05-07 12:59:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"f90f3b8c-5161-4963-a963-a40284567af1\",\"trace_id\":\"94731c50-8ce2-44ec-ace6-2d46fb00fdb1\"}\n[2026-05-07 12:59:15] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"f90f3b8c-5161-4963-a963-a40284567af1\",\"trace_id\":\"94731c50-8ce2-44ec-ace6-2d46fb00fdb1\"}\n[2026-05-07 12:59:15] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"f90f3b8c-5161-4963-a963-a40284567af1\",\"trace_id\":\"94731c50-8ce2-44ec-ace6-2d46fb00fdb1\"}\n[2026-05-07 12:59:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"f90f3b8c-5161-4963-a963-a40284567af1\",\"trace_id\":\"94731c50-8ce2-44ec-ace6-2d46fb00fdb1\"}\n[2026-05-07 13:00:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"6f98d5e3-0aa8-496e-853a-a77b7a8b74ec\",\"trace_id\":\"b63e8546-4347-49f0-ad1a-92f4e4504843\"}\n[2026-05-07 13:00:10] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"6f98d5e3-0aa8-496e-853a-a77b7a8b74ec\",\"trace_id\":\"b63e8546-4347-49f0-ad1a-92f4e4504843\"}\n[2026-05-07 13:00:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"6f98d5e3-0aa8-496e-853a-a77b7a8b74ec\",\"trace_id\":\"b63e8546-4347-49f0-ad1a-92f4e4504843\"}\n[2026-05-07 13:00:13] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"50260ccd-f119-47b0-baee-514de27801f2\",\"trace_id\":\"40e651df-62f6-4c3a-83ab-842112ec3ece\"}\n[2026-05-07 13:00:13] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"50260ccd-f119-47b0-baee-514de27801f2\",\"trace_id\":\"40e651df-62f6-4c3a-83ab-842112ec3ece\"}\n[2026-05-07 13:00:17] local.NOTICE: Monitoring start {\"correlation_id\":\"f6104856-aca3-4e7b-964e-bba66d730eb3\",\"trace_id\":\"98f34b7b-f715-49cb-8d3a-4e74c1118445\"}\n[2026-05-07 13:00:17] local.NOTICE: Monitoring end {\"correlation_id\":\"f6104856-aca3-4e7b-964e-bba66d730eb3\",\"trace_id\":\"98f34b7b-f715-49cb-8d3a-4e74c1118445\"}\n[2026-05-07 13:00:19] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"b4a9e9a2-968c-429b-8fa8-67dd59bb297f\",\"trace_id\":\"ed6a83d0-8edb-4392-8717-26d91ffde80b\"}\n[2026-05-07 13:00:19] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"b4a9e9a2-968c-429b-8fa8-67dd59bb297f\",\"trace_id\":\"ed6a83d0-8edb-4392-8717-26d91ffde80b\"}\n[2026-05-07 13:00:21] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"b11474b2-8b19-4a2f-89c3-621fde9d3b1f\",\"trace_id\":\"8018d825-0809-411b-9b2a-078e2da6bacb\"}\n[2026-05-07 13:00:21] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"b11474b2-8b19-4a2f-89c3-621fde9d3b1f\",\"trace_id\":\"8018d825-0809-411b-9b2a-078e2da6bacb\"}\n[2026-05-07 13:00:21] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"b11474b2-8b19-4a2f-89c3-621fde9d3b1f\",\"trace_id\":\"8018d825-0809-411b-9b2a-078e2da6bacb\"}\n[2026-05-07 13:00:21] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"b11474b2-8b19-4a2f-89c3-621fde9d3b1f\",\"trace_id\":\"8018d825-0809-411b-9b2a-078e2da6bacb\"}\n[2026-05-07 13:00:23] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"d3b79f58-f9c8-4063-ac7e-7a0445cd1111\",\"trace_id\":\"802cf505-95fb-4f92-8c1b-79aa3ac53084\"}\n[2026-05-07 13:00:23] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:58:00, 2026-05-07 13:00:00] {\"correlation_id\":\"d3b79f58-f9c8-4063-ac7e-7a0445cd1111\",\"trace_id\":\"802cf505-95fb-4f92-8c1b-79aa3ac53084\"}\n[2026-05-07 13:00:23] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:58:00, 2026-05-07 13:00:00] {\"correlation_id\":\"d3b79f58-f9c8-4063-ac7e-7a0445cd1111\",\"trace_id\":\"802cf505-95fb-4f92-8c1b-79aa3ac53084\"}\n[2026-05-07 13:00:23] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"d3b79f58-f9c8-4063-ac7e-7a0445cd1111\",\"trace_id\":\"802cf505-95fb-4f92-8c1b-79aa3ac53084\"}\n[2026-05-07 13:00:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:purge-stale\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"32bad9c1-861c-4a46-bece-585cc1170bfd\",\"trace_id\":\"0c20e20f-6a91-4346-9455-5cd1451c32a1\"}\n[2026-05-07 13:00:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:purge-stale\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"32bad9c1-861c-4a46-bece-585cc1170bfd\",\"trace_id\":\"0c20e20f-6a91-4346-9455-5cd1451c32a1\"}\n[2026-05-07 13:00:29] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:text-relay:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"c9d4f687-1643-431e-9377-2573a2e593fd\",\"trace_id\":\"02fab433-9c9a-49f7-b836-2b8a42551912\"}\n[2026-05-07 13:00:30] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:text-relay:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"c9d4f687-1643-431e-9377-2573a2e593fd\",\"trace_id\":\"02fab433-9c9a-49f7-b836-2b8a42551912\"}\n[2026-05-07 13:00:33] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:pre-meeting-notification\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"57870bb4-45e8-47d8-b192-21d3297d2208\",\"trace_id\":\"ba8e9eac-2dc9-4ed8-bbf1-4a35aedb9efb\"}\n[2026-05-07 13:00:33] local.INFO: Running pre-meeting notification command {\"correlation_id\":\"57870bb4-45e8-47d8-b192-21d3297d2208\",\"trace_id\":\"ba8e9eac-2dc9-4ed8-bbf1-4a35aedb9efb\"}\n[2026-05-07 13:00:33] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:pre-meeting-notification\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"57870bb4-45e8-47d8-b192-21d3297d2208\",\"trace_id\":\"ba8e9eac-2dc9-4ed8-bbf1-4a35aedb9efb\"}\n[2026-05-07 13:00:35] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:start\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"6aeb181b-8314-4d45-aff7-e378793b04d9\",\"trace_id\":\"8ffc66f1-af64-4a58-8ce8-481b3a299dbb\"}\n[2026-05-07 13:00:35] local.INFO: Running conference:monitor:start command for activities in (2026-05-07 12:50:00, 2026-05-07 12:55:00] {\"correlation_id\":\"6aeb181b-8314-4d45-aff7-e378793b04d9\",\"trace_id\":\"8ffc66f1-af64-4a58-8ce8-481b3a299dbb\"}\n[2026-05-07 13:00:35] local.INFO: [conference:monitor:start] No activities found in (2026-05-07 12:50:00, 2026-05-07 12:55:00] {\"correlation_id\":\"6aeb181b-8314-4d45-aff7-e378793b04d9\",\"trace_id\":\"8ffc66f1-af64-4a58-8ce8-481b3a299dbb\"}\n[2026-05-07 13:00:35] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:start\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"6aeb181b-8314-4d45-aff7-e378793b04d9\",\"trace_id\":\"8ffc66f1-af64-4a58-8ce8-481b3a299dbb\"}\n[2026-05-07 13:00:37] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:end\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"888d4f67-ad14-4457-b51d-2cf8b2d315f9\",\"trace_id\":\"eaf4b0b3-0414-4563-b227-ce9c6a2e5b7e\"}\n[2026-05-07 13:00:37] local.INFO: conference:monitor:end:Jiminny\\Console\\Commands\\Activities\\MonitorMeetingEndCommand::logActivitiesEnded {\"from\":\"12:55\",\"to\":\"13:00\"} {\"correlation_id\":\"888d4f67-ad14-4457-b51d-2cf8b2d315f9\",\"trace_id\":\"eaf4b0b3-0414-4563-b227-ce9c6a2e5b7e\"}\n[2026-05-07 13:00:37] local.INFO: conference:monitor:end:Jiminny\\Console\\Commands\\Activities\\MonitorMeetingEndCommand::logActivitiesWithUnfinishedSession {\"from\":\"02:50\",\"to\":\"02:55\"} {\"correlation_id\":\"888d4f67-ad14-4457-b51d-2cf8b2d315f9\",\"trace_id\":\"eaf4b0b3-0414-4563-b227-ce9c6a2e5b7e\"}\n[2026-05-07 13:00:37] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:end\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"888d4f67-ad14-4457-b51d-2cf8b2d315f9\",\"trace_id\":\"eaf4b0b3-0414-4563-b227-ce9c6a2e5b7e\"}\n[2026-05-07 13:00:39] local.NOTICE: Repairing HubSpot tokens start {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:39] local.INFO: Trying to refresh HubSpot token {\"account_id\":59,\"updated_at\":\"2025-10-03 09:32:05\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:39] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:39] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":59,\"provider\":\"hubspot\",\"refreshToken\":\"97b78f6e2cc49965c00c2492b602b02708b1392551e6b3f113fbaa48992af90b\",\"state\":\"full-refresh\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:39] local.ERROR: Failed to refresh HubSpot token {\"account_id\":59,\"updated_at\":\"2025-10-03 09:32:05\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:39] local.INFO: Trying to refresh HubSpot token {\"account_id\":306,\"updated_at\":\"2023-11-27 09:30:03\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:39] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:39] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":306,\"provider\":\"hubspot\",\"refreshToken\":\"6fa6aa8cc641d131231acc3470f5c03cb3b07b2e580fb18f8acb3b1dbb72549b\",\"state\":\"full-refresh\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:40] local.ERROR: Failed to refresh HubSpot token {\"account_id\":306,\"updated_at\":\"2023-11-27 09:30:03\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:40] local.INFO: Trying to refresh HubSpot token {\"account_id\":1372,\"updated_at\":\"2025-10-02 14:47:06\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:40] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:40] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1372,\"provider\":\"hubspot\",\"refreshToken\":\"9aa73948c761da29dce46c177cf9aee1fde483a44169ca38723f9f0597d7a8c4\",\"state\":\"full-refresh\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:40] local.ERROR: Failed to refresh HubSpot token {\"account_id\":1372,\"updated_at\":\"2025-10-02 14:47:06\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:40] local.NOTICE: Repairing HubSpot tokens end {\"total\":3,\"fixed\":0,\"failed\":3} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:45] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"jiminny:transcription:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"b619cc55-b4ef-4913-ab44-6bce51933f7e\",\"trace_id\":\"7cacb418-6e9c-410b-bf3a-15bdf1837908\"}\n[2026-05-07 13:00:45] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:pre-meeting-reminder\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"a765990f-ffe2-44e0-967f-816f5452ce69\",\"trace_id\":\"9aee0f3f-7668-455f-b207-181b58848478\"}\n[2026-05-07 13:00:45] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"jiminny:transcription:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"b619cc55-b4ef-4913-ab44-6bce51933f7e\",\"trace_id\":\"7cacb418-6e9c-410b-bf3a-15bdf1837908\"}\n[2026-05-07 13:00:45] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:45] local.INFO: [HubSpot Journal Command] Starting polling service {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:45] local.INFO: [HubSpot Journal Polling] Service starting {\"memory_limit\":\"256M\",\"max_execution_time\":\"0\",\"initial_memory_mb\":62.0} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:45] local.INFO: [HubSpot Journal Polling] Acquired polling lock {\"expires_at\":\"2026-05-07T13:02:45.724437Z\"} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:45] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:45] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:45] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:pre-meeting-reminder\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"a765990f-ffe2-44e0-967f-816f5452ce69\",\"trace_id\":\"9aee0f3f-7668-455f-b207-181b58848478\"}\n[2026-05-07 13:00:45] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:49] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"crm:reset-governor\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"055b4798-a759-4621-9e0b-652f8ee69ea1\",\"trace_id\":\"10911ef4-48d1-404a-9345-ecf0f5cb9977\"}\n[2026-05-07 13:00:49] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"crm:reset-governor\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"055b4798-a759-4621-9e0b-652f8ee69ea1\",\"trace_id\":\"10911ef4-48d1-404a-9345-ecf0f5cb9977\"}\n[2026-05-07 13:00:51] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:51] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:51] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:53] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:53] local.INFO: Dispatching activity sync job {\"import_id\":812331,\"provider\":\"twilio-flex\",\"team\":\"jiminny\"} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:53] local.INFO: Dispatching activity sync job {\"import_id\":812332,\"provider\":\"xant\",\"team\":\"jiminny\"} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:53] local.INFO: Dispatching activity sync job {\"import_id\":812333,\"provider\":\"apollo\",\"team\":\"jiminny\"} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:53] local.INFO: Dispatching activity sync job {\"import_id\":812334,\"provider\":\"groove\",\"team\":\"jiminny\"} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:53] local.INFO: Dispatching activity sync job {\"import_id\":812335,\"provider\":\"twilio-video\",\"team\":\"jiminny\"} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:53] local.INFO: Dispatching activity sync job {\"import_id\":812336,\"provider\":\"hubspot\",\"team\":\"hubspot\"} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:53] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.WARNING: [Salesforce] Account not connected for user {\"userId\":\"cdf8b554-d951-4758-bc2b-c1b85d1cd0b9\",\"account\":null} {\"correlation_id\":\"fb068e24-e135-4914-9973-94f1a0f5dae2\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {\"crm_provider\":\"salesforce\",\"crm_owner\":3,\"team_id\":1} {\"correlation_id\":\"fb068e24-e135-4914-9973-94f1a0f5dae2\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {\"crm_provider\":\"salesforce\",\"team_id\":1} {\"correlation_id\":\"fb068e24-e135-4914-9973-94f1a0f5dae2\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {\"crm_provider\":\"salesforce\",\"team_id\":1} {\"correlation_id\":\"fb068e24-e135-4914-9973-94f1a0f5dae2\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.ALERT: [SyncActivity] Failed {\"import_id\":812331,\"provider\":\"twilio-flex\",\"provider_id\":317,\"team\":\"jiminny\",\"team_id\":1,\"reason\":\"Social account for Salesforce cannot be found. Please login to Jiminny to connect.\",\"file\":\"/home/jiminny/app/Services/Crm/BaseService.php\",\"line\":646} {\"correlation_id\":\"fb068e24-e135-4914-9973-94f1a0f5dae2\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"fe9470d4-bc5a-4195-919d-e4908e439f7c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"fe9470d4-bc5a-4195-919d-e4908e439f7c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"fe9470d4-bc5a-4195-919d-e4908e439f7c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:56] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:56] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:56] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:56] local.ALERT: [SyncActivity] Failed {\"import_id\":812332,\"provider\":\"xant\",\"provider_id\":161,\"team\":\"jiminny\",\"team_id\":1,\"reason\":\"Activity Provider account not connected.\",\"file\":\"/home/jiminny/app/Services/Activity/ActivityProviderService.php\",\"line\":174} {\"correlation_id\":\"fe9470d4-bc5a-4195-919d-e4908e439f7c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:56] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"e3a8ef92-20c7-4698-a07d-1aa2c21ac82c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:56] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"e3a8ef92-20c7-4698-a07d-1aa2c21ac82c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:56] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"e3a8ef92-20c7-4698-a07d-1aa2c21ac82c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:56] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:fail-stalled\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"441dabbc-0c1f-4d49-871c-08f96adbed01\",\"trace_id\":\"13597461-50ff-4a40-a329-255430126395\"}\n[2026-05-07 13:00:56] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:fail-stalled\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"441dabbc-0c1f-4d49-871c-08f96adbed01\",\"trace_id\":\"13597461-50ff-4a40-a329-255430126395\"}\n[2026-05-07 13:00:57] local.ALERT: [SyncActivity] Failed {\"import_id\":812333,\"provider\":\"apollo\",\"provider_id\":441,\"team\":\"jiminny\",\"team_id\":1,\"reason\":\"Activity Provider account not connected.\",\"file\":\"/home/jiminny/app/Services/Activity/ActivityProviderService.php\",\"line\":174} {\"correlation_id\":\"e3a8ef92-20c7-4698-a07d-1aa2c21ac82c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:57] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"1a0b64ee-3927-48e6-8ae3-fda14f35babb\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:57] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"1a0b64ee-3927-48e6-8ae3-fda14f35babb\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:57] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"1a0b64ee-3927-48e6-8ae3-fda14f35babb\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:57] local.ALERT: [SyncActivity] Failed {\"import_id\":812334,\"provider\":\"groove\",\"provider_id\":228,\"team\":\"jiminny\",\"team_id\":1,\"reason\":\"Activity Provider account not connected.\",\"file\":\"/home/jiminny/app/Services/Activity/ActivityProviderService.php\",\"line\":174} {\"correlation_id\":\"1a0b64ee-3927-48e6-8ae3-fda14f35babb\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:57] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"5e6fecb1-9905-4ab2-a494-e6d8215430c0\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:57] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"5e6fecb1-9905-4ab2-a494-e6d8215430c0\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:57] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"5e6fecb1-9905-4ab2-a494-e6d8215430c0\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.ALERT: [SyncActivity] Failed {\"import_id\":812335,\"provider\":\"twilio-video\",\"provider_id\":243,\"team\":\"jiminny\",\"team_id\":1,\"reason\":\"Activity Provider account not connected.\",\"file\":\"/home/jiminny/app/Services/Activity/ActivityProviderService.php\",\"line\":174} {\"correlation_id\":\"5e6fecb1-9905-4ab2-a494-e6d8215430c0\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":89,\"team_id\":2} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":408,\"provider\":\"hubspot\"} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":408,\"provider\":\"hubspot\"} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [SyncActivity] Start {\"import_id\":812336,\"provider\":\"hubspot\",\"provider_id\":31,\"team\":\"hubspot\",\"team_id\":2} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [HubSpot] Search calls for period {\"from\":\"2026-05-07 12:44:00\",\"to\":\"2026-05-07 13:00:00\"} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [SyncActivity] End {\"import_id\":812336,\"provider\":\"hubspot\",\"provider_id\":31,\"team\":\"hubspot\",\"team_id\":2} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [SyncActivity] Memory usage {\"import_id\":812336,\"provider\":\"hubspot\",\"provider_id\":31,\"team\":\"hubspot\",\"team_id\":2,\"memory_usage\":27230632,\"memory_real_usage\":67108864,\"pid\":37116} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:59] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"jiminny:transcription:retry-stuck\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"1db560c5-5d8c-419a-bfb0-e761473ecf44\",\"trace_id\":\"79eb494e-fd21-4171-b59d-d7d47358f1fb\"}\n[2026-05-07 13:00:59] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"jiminny:transcription:retry-stuck\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"1db560c5-5d8c-419a-bfb0-e761473ecf44\",\"trace_id\":\"79eb494e-fd21-4171-b59d-d7d47358f1fb\"}\n[2026-05-07 13:01:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"73c0e9d6-7ef5-4040-8e35-0a9bb4028abf\",\"trace_id\":\"55b51c26-06b9-4b59-b444-53017b805b30\"}\n[2026-05-07 13:01:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"73c0e9d6-7ef5-4040-8e35-0a9bb4028abf\",\"trace_id\":\"55b51c26-06b9-4b59-b444-53017b805b30\"}\n[2026-05-07 13:01:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"5a7e717c-f314-4601-b1b8-fd550703f463\",\"trace_id\":\"a64281e5-027f-4856-a3e3-4f176c58eb6e\"}\n[2026-05-07 13:01:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"5a7e717c-f314-4601-b1b8-fd550703f463\",\"trace_id\":\"a64281e5-027f-4856-a3e3-4f176c58eb6e\"}\n[2026-05-07 13:01:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"0c425954-2696-4890-97b7-219ccc38cf46\",\"trace_id\":\"d609b364-f3b6-4b85-babb-67caf96efdb1\"}\n[2026-05-07 13:01:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"0c425954-2696-4890-97b7-219ccc38cf46\",\"trace_id\":\"d609b364-f3b6-4b85-babb-67caf96efdb1\"}\n[2026-05-07 13:01:11] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:11] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:11] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"a6bad97b-3db2-4dd6-839f-fcd485f06e65\",\"trace_id\":\"dcdde4a9-962c-46d1-9386-42adb54efbbf\"}\n[2026-05-07 13:01:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"a6bad97b-3db2-4dd6-839f-fcd485f06e65\",\"trace_id\":\"dcdde4a9-962c-46d1-9386-42adb54efbbf\"}\n[2026-05-07 13:01:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"2893478e-8c43-4719-a2e8-7c9c0e0783e9\",\"trace_id\":\"3fc8f1f0-0727-42f1-8ee6-f2b32bd8834b\"}\n[2026-05-07 13:01:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"2893478e-8c43-4719-a2e8-7c9c0e0783e9\",\"trace_id\":\"3fc8f1f0-0727-42f1-8ee6-f2b32bd8834b\"}\n[2026-05-07 13:01:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"64f52ca1-b54e-46da-a760-73dbdf407eaf\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:17] local.INFO: Dispatching activity sync job {\"import_id\":812337,\"provider\":\"hubspot\",\"team\":\"hubspot\"} {\"correlation_id\":\"64f52ca1-b54e-46da-a760-73dbdf407eaf\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"64f52ca1-b54e-46da-a760-73dbdf407eaf\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"crm:bullhorn:ping\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"3c44e0a7-ec5d-4206-a925-69f6e0783c2a\",\"trace_id\":\"60cf7a36-37ca-4ac4-a632-f317578d908f\"}\n[2026-05-07 13:01:19] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"crm:bullhorn:ping\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"3c44e0a7-ec5d-4206-a925-69f6e0783c2a\",\"trace_id\":\"60cf7a36-37ca-4ac4-a632-f317578d908f\"}\n[2026-05-07 13:01:19] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":89,\"team_id\":2} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":408,\"provider\":\"hubspot\"} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":408,\"provider\":\"hubspot\"} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [SyncActivity] Start {\"import_id\":812337,\"provider\":\"hubspot\",\"provider_id\":31,\"team\":\"hubspot\",\"team_id\":2} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [HubSpot] Search calls for period {\"from\":\"2026-05-07 12:00:00\",\"to\":\"2026-05-07 13:00:00\"} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:20] local.INFO: [SyncActivity] End {\"import_id\":812337,\"provider\":\"hubspot\",\"provider_id\":31,\"team\":\"hubspot\",\"team_id\":2} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:20] local.INFO: [SyncActivity] Memory usage {\"import_id\":812337,\"provider\":\"hubspot\",\"provider_id\":31,\"team\":\"hubspot\",\"team_id\":2,\"memory_usage\":27392888,\"memory_real_usage\":67108864,\"pid\":37116} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:21] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"nudges:send\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"55ebbc10-80bf-4724-ac64-678f6ef891cc\",\"trace_id\":\"f5392dc4-b352-4cae-b82a-004f77bbaf26\"}\n[2026-05-07 13:01:21] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"nudges:send\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"55ebbc10-80bf-4724-ac64-678f6ef891cc\",\"trace_id\":\"f5392dc4-b352-4cae-b82a-004f77bbaf26\"}\n[2026-05-07 13:01:23] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"jiminny:playlists:normalize-sort\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"9e29cfb5-b7fc-41bc-a9fd-a160d2253806\",\"trace_id\":\"3e180d83-299d-4c6c-bdda-d5a8ac156efc\"}\n[2026-05-07 13:01:23] local.INFO: [Jiminny\\Component\\Playlist\\Command\\NormalizeSortCommand::handle] starting. {\"playlists\":[]} {\"correlation_id\":\"9e29cfb5-b7fc-41bc-a9fd-a160d2253806\",\"trace_id\":\"3e180d83-299d-4c6c-bdda-d5a8ac156efc\"}\n[2026-05-07 13:01:23] local.INFO: [Jiminny\\Component\\Playlist\\Command\\NormalizeSortCommand::handle] finished. {\"normalizedPlaylists\":[],\"deletedPlaylists\":[]} {\"correlation_id\":\"9e29cfb5-b7fc-41bc-a9fd-a160d2253806\",\"trace_id\":\"3e180d83-299d-4c6c-bdda-d5a8ac156efc\"}\n[2026-05-07 13:01:23] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"jiminny:playlists:normalize-sort\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"9e29cfb5-b7fc-41bc-a9fd-a160d2253806\",\"trace_id\":\"3e180d83-299d-4c6c-bdda-d5a8ac156efc\"}\n[2026-05-07 13:01:41] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:41] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:41] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:41] local.WARNING: [HubSpot Journal Polling] Maximum empty results reached, stopping {\"empty_results\":5,\"max_empty_results\":5} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:41] local.WARNING: [HubSpot Journal Polling] Maximum empty results reached, stopping {\"empty_results\":5,\"max_empty_results\":5} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:41] local.INFO: [HubSpot Journal Polling] Service ending {\"runtime_seconds\":56,\"total_cycles\":5,\"files_downloaded\":0,\"empty_files\":0,\"other_portal_skipped\":0,\"total_events\":0,\"events_per_file\":0,\"avg_api_ms\":181.3,\"avg_download_ms\":0.0,\"avg_transform_ms\":0.0,\"avg_process_ms\":0.0,\"peak_memory_mb\":99.73} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:41] local.INFO: [HubSpot Journal Polling] Released polling lock {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:02:05] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"fe3480ce-754b-4304-b661-e4ac7234a778\",\"trace_id\":\"619e9c15-f95f-47ce-af85-6d78a6698327\"}\n[2026-05-07 13:02:05] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"fe3480ce-754b-4304-b661-e4ac7234a778\",\"trace_id\":\"619e9c15-f95f-47ce-af85-6d78a6698327\"}\n[2026-05-07 13:02:05] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"fe3480ce-754b-4304-b661-e4ac7234a778\",\"trace_id\":\"619e9c15-f95f-47ce-af85-6d78a6698327\"}\n[2026-05-07 13:02:07] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"aa98bf14-5737-4097-9f53-ac6833fb7983\",\"trace_id\":\"2f858b11-1073-43d4-996a-57e259ec2795\"}\n[2026-05-07 13:02:07] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"aa98bf14-5737-4097-9f53-ac6833fb7983\",\"trace_id\":\"2f858b11-1073-43d4-996a-57e259ec2795\"}\n[2026-05-07 13:02:08] local.NOTICE: Monitoring start {\"correlation_id\":\"25c588be-ddd6-41f1-8db8-ae28f3dd5bf5\",\"trace_id\":\"58b4c110-21ab-4c22-be4f-5be3534cd17d\"}\n[2026-05-07 13:02:08] local.NOTICE: Monitoring end {\"correlation_id\":\"25c588be-ddd6-41f1-8db8-ae28f3dd5bf5\",\"trace_id\":\"58b4c110-21ab-4c22-be4f-5be3534cd17d\"}\n[2026-05-07 13:02:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"5e453d7a-4daf-4001-b100-6aa9485d0353\",\"trace_id\":\"d97e1107-3696-4acf-95db-9cc7f37412e1\"}\n[2026-05-07 13:02:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"5e453d7a-4daf-4001-b100-6aa9485d0353\",\"trace_id\":\"d97e1107-3696-4acf-95db-9cc7f37412e1\"}\n[2026-05-07 13:02:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"3fab4dfb-f0ae-4c2c-a882-e09a1ad3ee9b\",\"trace_id\":\"3a66f9c4-3f01-40e2-aee2-e77fdabe793f\"}\n[2026-05-07 13:02:12] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"3fab4dfb-f0ae-4c2c-a882-e09a1ad3ee9b\",\"trace_id\":\"3a66f9c4-3f01-40e2-aee2-e77fdabe793f\"}\n[2026-05-07 13:02:12] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"3fab4dfb-f0ae-4c2c-a882-e09a1ad3ee9b\",\"trace_id\":\"3a66f9c4-3f01-40e2-aee2-e77fdabe793f\"}\n[2026-05-07 13:02:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"3fab4dfb-f0ae-4c2c-a882-e09a1ad3ee9b\",\"trace_id\":\"3a66f9c4-3f01-40e2-aee2-e77fdabe793f\"}\n[2026-05-07 13:02:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"63252e6d-894f-4cb9-818a-0034bf3545cb\",\"trace_id\":\"7ddf2e72-9174-4623-a622-1a5c9ee952c5\"}\n[2026-05-07 13:02:15] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 13:00:00, 2026-05-07 13:02:00] {\"correlation_id\":\"63252e6d-894f-4cb9-818a-0034bf3545cb\",\"trace_id\":\"7ddf2e72-9174-4623-a622-1a5c9ee952c5\"}\n[2026-05-07 13:02:15] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 13:00:00, 2026-05-07 13:02:00] {\"correlation_id\":\"63252e6d-894f-4cb9-818a-0034bf3545cb\",\"trace_id\":\"7ddf2e72-9174-4623-a622-1a5c9ee952c5\"}\n[2026-05-07 13:02:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"63252e6d-894f-4cb9-818a-0034bf3545cb\",\"trace_id\":\"7ddf2e72-9174-4623-a622-1a5c9ee952c5\"}\n[2026-05-07 13:02:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:create\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"cf65b2c4-c602-432d-8087-d0c0fb7f8e80\",\"trace_id\":\"b7b39317-045c-4475-879e-3d399e23fc3e\"}\n[2026-05-07 13:02:17] local.INFO: [EmailSchedule] STARTING batch create {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"cf65b2c4-c602-432d-8087-d0c0fb7f8e80\",\"trace_id\":\"b7b39317-045c-4475-879e-3d399e23fc3e\"}\n[2026-05-07 13:02:17] local.INFO: [EmailSchedule] FINISHED batch create {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"cf65b2c4-c602-432d-8087-d0c0fb7f8e80\",\"trace_id\":\"b7b39317-045c-4475-879e-3d399e23fc3e\"}\n[2026-05-07 13:02:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:create\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"cf65b2c4-c602-432d-8087-d0c0fb7f8e80\",\"trace_id\":\"b7b39317-045c-4475-879e-3d399e23fc3e\"}\n[2026-05-07 13:02:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"c481124d-04ae-43fb-b1d3-a4282f7af7ff\",\"trace_id\":\"d2d083d1-7cee-4d21-b80e-4485361d9969\"}\n[2026-05-07 13:02:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"c481124d-04ae-43fb-b1d3-a4282f7af7ff\",\"trace_id\":\"d2d083d1-7cee-4d21-b80e-4485361d9969\"}\n[2026-05-07 13:02:20] local.INFO: [Jiminny\\Jobs\\Mailbox\\CreateBatches] processed 2 inboxes and created 0 batches {\"userId\":null,\"batchSize\":30,\"maxBatches\":1000} {\"correlation_id\":\"3e2ef780-0c9d-4c30-9dc9-92315055c632\",\"trace_id\":\"b7b39317-045c-4475-879e-3d399e23fc3e\"}\n[2026-05-07 13:03:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"8cb6c7bf-4a2d-4960-bf8f-0368643fec27\",\"trace_id\":\"68c67cd4-9b92-4e41-bc1e-ebb282ea5211\"}\n[2026-05-07 13:03:06] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"8cb6c7bf-4a2d-4960-bf8f-0368643fec27\",\"trace_id\":\"68c67cd4-9b92-4e41-bc1e-ebb282ea5211\"}\n[2026-05-07 13:03:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"8cb6c7bf-4a2d-4960-bf8f-0368643fec27\",\"trace_id\":\"68c67cd4-9b92-4e41-bc1e-ebb282ea5211\"}\n[2026-05-07 13:03:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"b18dc815-6c91-43df-b083-125316724586\",\"trace_id\":\"62a636e8-4128-49eb-b99b-15efcfb37267\"}\n[2026-05-07 13:03:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"b18dc815-6c91-43df-b083-125316724586\",\"trace_id\":\"62a636e8-4128-49eb-b99b-15efcfb37267\"}\n[2026-05-07 13:03:10] local.NOTICE: Monitoring start {\"correlation_id\":\"d74c3e14-fd1a-4cab-9892-e9e924af1144\",\"trace_id\":\"29547049-25f5-4b62-a603-276e1de3dde8\"}\n[2026-05-07 13:03:10] local.NOTICE: Monitoring end {\"correlation_id\":\"d74c3e14-fd1a-4cab-9892-e9e924af1144\",\"trace_id\":\"29547049-25f5-4b62-a603-276e1de3dde8\"}\n[2026-05-07 13:03:13] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"bd7a8c2f-3f0b-48e9-86c2-0f01f2cfd9e8\",\"trace_id\":\"a3d1ecb5-4122-43c1-98ca-5d74c3dc989c\"}\n[2026-05-07 13:03:13] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"bd7a8c2f-3f0b-48e9-86c2-0f01f2cfd9e8\",\"trace_id\":\"a3d1ecb5-4122-43c1-98ca-5d74c3dc989c\"}\n[2026-05-07 13:03:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"4b20eb61-2970-4a63-8ee0-b392f7406a78\",\"trace_id\":\"892c9d93-c280-4b3f-a97a-bf1266f5c090\"}\n[2026-05-07 13:03:14] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"4b20eb61-2970-4a63-8ee0-b392f7406a78\",\"trace_id\":\"892c9d93-c280-4b3f-a97a-bf1266f5c090\"}\n[2026-05-07 13:03:14] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"4b20eb61-2970-4a63-8ee0-b392f7406a78\",\"trace_id\":\"892c9d93-c280-4b3f-a97a-bf1266f5c090\"}\n[2026-05-07 13:03:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"4b20eb61-2970-4a63-8ee0-b392f7406a78\",\"trace_id\":\"892c9d93-c280-4b3f-a97a-bf1266f5c090\"}\n[2026-05-07 13:03:18] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"6a165ea3-f101-4ac9-bfcc-e7ad618ac645\",\"trace_id\":\"383367e5-a337-4793-be1c-a88a2a6fa2e5\"}\n[2026-05-07 13:03:18] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"6a165ea3-f101-4ac9-bfcc-e7ad618ac645\",\"trace_id\":\"383367e5-a337-4793-be1c-a88a2a6fa2e5\"}","depth":4,"on_screen":true,"value":"[2026-05-07 12:52:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"fa8a3008-d298-4682-bbbc-fdc77520e0d7\",\"trace_id\":\"7cfb2afb-9fc4-4a77-81be-65dce93c7d80\"}\n[2026-05-07 12:52:08] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"fa8a3008-d298-4682-bbbc-fdc77520e0d7\",\"trace_id\":\"7cfb2afb-9fc4-4a77-81be-65dce93c7d80\"}\n[2026-05-07 12:52:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"fa8a3008-d298-4682-bbbc-fdc77520e0d7\",\"trace_id\":\"7cfb2afb-9fc4-4a77-81be-65dce93c7d80\"}\n[2026-05-07 12:52:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"932ced9d-9804-48ed-976a-1f8bf5e75707\",\"trace_id\":\"21bf320c-58f3-4082-831d-9f07f6c6a669\"}\n[2026-05-07 12:52:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"932ced9d-9804-48ed-976a-1f8bf5e75707\",\"trace_id\":\"21bf320c-58f3-4082-831d-9f07f6c6a669\"}\n[2026-05-07 12:52:17] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:17] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:17] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:17] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":148,\"team_id\":2} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:17] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.55,\"average_seconds_per_request\":0.55} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:18] local.NOTICE: Monitoring start {\"correlation_id\":\"ae3ec78f-432c-4e22-b73b-0413af73d9f3\",\"trace_id\":\"c2feb517-0f2b-4ad9-bce5-4d57476a164b\"}\n[2026-05-07 12:52:18] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.51,\"average_seconds_per_request\":0.51} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:18] local.NOTICE: Monitoring end {\"correlation_id\":\"ae3ec78f-432c-4e22-b73b-0413af73d9f3\",\"trace_id\":\"c2feb517-0f2b-4ad9-bce5-4d57476a164b\"}\n[2026-05-07 12:52:18] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.48,\"average_seconds_per_request\":0.48} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:19] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.49,\"average_seconds_per_request\":0.49} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:19] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.49,\"average_seconds_per_request\":0.49} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"2bf2f73f-007c-4909-925e-f1749fbf87b3\",\"trace_id\":\"8429123c-d92c-48d9-a154-29bc0aa0e2a1\"}\n[2026-05-07 12:52:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"2bf2f73f-007c-4909-925e-f1749fbf87b3\",\"trace_id\":\"8429123c-d92c-48d9-a154-29bc0aa0e2a1\"}\n[2026-05-07 12:52:20] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.48,\"average_seconds_per_request\":0.48} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:20] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.62,\"average_seconds_per_request\":0.62} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:21] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.78,\"average_seconds_per_request\":0.78} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:22] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":1.21,\"average_seconds_per_request\":1.21} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:23] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.53,\"average_seconds_per_request\":0.53} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8\",\"trace_id\":\"64ccac6b-34f7-45ed-a8ac-b63adbb19107\"}\n[2026-05-07 12:52:25] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8\",\"trace_id\":\"64ccac6b-34f7-45ed-a8ac-b63adbb19107\"}\n[2026-05-07 12:52:26] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8\",\"trace_id\":\"64ccac6b-34f7-45ed-a8ac-b63adbb19107\"}\n[2026-05-07 12:52:26] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8\",\"trace_id\":\"64ccac6b-34f7-45ed-a8ac-b63adbb19107\"}\n[2026-05-07 12:52:28] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"6e1a36d0-a87a-455f-88b9-04f16718ea33\",\"trace_id\":\"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c\"}\n[2026-05-07 12:52:28] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:50:00, 2026-05-07 12:52:00] {\"correlation_id\":\"6e1a36d0-a87a-455f-88b9-04f16718ea33\",\"trace_id\":\"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c\"}\n[2026-05-07 12:52:28] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:50:00, 2026-05-07 12:52:00] {\"correlation_id\":\"6e1a36d0-a87a-455f-88b9-04f16718ea33\",\"trace_id\":\"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c\"}\n[2026-05-07 12:52:28] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"6e1a36d0-a87a-455f-88b9-04f16718ea33\",\"trace_id\":\"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c\"}\n[2026-05-07 12:52:31] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:create\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"80549428-beea-4a6c-97d3-818ca0f059f3\",\"trace_id\":\"55ddd59b-073b-4331-8cdb-baa869dcff70\"}\n[2026-05-07 12:52:31] local.INFO: [EmailSchedule] STARTING batch create {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"80549428-beea-4a6c-97d3-818ca0f059f3\",\"trace_id\":\"55ddd59b-073b-4331-8cdb-baa869dcff70\"}\n[2026-05-07 12:52:31] local.INFO: [EmailSchedule] FINISHED batch create {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"80549428-beea-4a6c-97d3-818ca0f059f3\",\"trace_id\":\"55ddd59b-073b-4331-8cdb-baa869dcff70\"}\n[2026-05-07 12:52:31] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:create\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"80549428-beea-4a6c-97d3-818ca0f059f3\",\"trace_id\":\"55ddd59b-073b-4331-8cdb-baa869dcff70\"}\n[2026-05-07 12:52:32] local.INFO: [Jiminny\\Jobs\\Mailbox\\CreateBatches] processed 2 inboxes and created 0 batches {\"userId\":null,\"batchSize\":30,\"maxBatches\":1000} {\"correlation_id\":\"92242bd6-7014-4487-a50b-1570e1a88e7a\",\"trace_id\":\"55ddd59b-073b-4331-8cdb-baa869dcff70\"}\n[2026-05-07 12:52:39] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"d467eace-3254-4ecc-8d8e-a94688d6d3ad\",\"trace_id\":\"5105ca8f-3c0d-4798-b748-5a7d6fbd7531\"}\n[2026-05-07 12:52:39] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"d467eace-3254-4ecc-8d8e-a94688d6d3ad\",\"trace_id\":\"5105ca8f-3c0d-4798-b748-5a7d6fbd7531\"}\n[2026-05-07 12:53:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"04363b29-2f82-470a-89d0-c5ce4f4779d7\",\"trace_id\":\"3c76a1f1-3348-4e2b-897c-4a216ca95147\"}\n[2026-05-07 12:53:08] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"04363b29-2f82-470a-89d0-c5ce4f4779d7\",\"trace_id\":\"3c76a1f1-3348-4e2b-897c-4a216ca95147\"}\n[2026-05-07 12:53:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"04363b29-2f82-470a-89d0-c5ce4f4779d7\",\"trace_id\":\"3c76a1f1-3348-4e2b-897c-4a216ca95147\"}\n[2026-05-07 12:53:11] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"5ebbecd0-866c-443f-965f-b6ac03735379\",\"trace_id\":\"e0a724a5-bb4b-4fe6-9fe9-36ea1c3f0326\"}\n[2026-05-07 12:53:11] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"5ebbecd0-866c-443f-965f-b6ac03735379\",\"trace_id\":\"e0a724a5-bb4b-4fe6-9fe9-36ea1c3f0326\"}\n[2026-05-07 12:53:18] local.NOTICE: Monitoring start {\"correlation_id\":\"f39f0d3c-a292-41cb-8834-45dae1f8cf47\",\"trace_id\":\"b6e7e2a7-85af-401d-afc6-bec2bdab34d7\"}\n[2026-05-07 12:53:18] local.NOTICE: Monitoring end {\"correlation_id\":\"f39f0d3c-a292-41cb-8834-45dae1f8cf47\",\"trace_id\":\"b6e7e2a7-85af-401d-afc6-bec2bdab34d7\"}\n[2026-05-07 12:53:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"419bb747-2669-496f-944b-1073496cc271\",\"trace_id\":\"4cb913a4-ef75-422b-80eb-fbfb988521ed\"}\n[2026-05-07 12:53:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"419bb747-2669-496f-944b-1073496cc271\",\"trace_id\":\"4cb913a4-ef75-422b-80eb-fbfb988521ed\"}\n[2026-05-07 12:53:22] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"f4805c97-9344-4111-8be2-2b1efeae07bb\",\"trace_id\":\"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22\"}\n[2026-05-07 12:53:22] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"f4805c97-9344-4111-8be2-2b1efeae07bb\",\"trace_id\":\"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22\"}\n[2026-05-07 12:53:22] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"f4805c97-9344-4111-8be2-2b1efeae07bb\",\"trace_id\":\"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22\"}\n[2026-05-07 12:53:22] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"f4805c97-9344-4111-8be2-2b1efeae07bb\",\"trace_id\":\"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22\"}\n[2026-05-07 12:53:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"2eadb06b-2c2e-4a7f-8920-77bd30d6cd7f\",\"trace_id\":\"75f27a23-2021-41a5-9e5f-4b1cb4f143a6\"}\n[2026-05-07 12:53:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"2eadb06b-2c2e-4a7f-8920-77bd30d6cd7f\",\"trace_id\":\"75f27a23-2021-41a5-9e5f-4b1cb4f143a6\"}\n[2026-05-07 12:54:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"ad151521-f676-4351-a70b-f44dc0b94990\",\"trace_id\":\"17e39c4c-85cb-49a4-815e-b7315a8c2249\"}\n[2026-05-07 12:54:06] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"ad151521-f676-4351-a70b-f44dc0b94990\",\"trace_id\":\"17e39c4c-85cb-49a4-815e-b7315a8c2249\"}\n[2026-05-07 12:54:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"ad151521-f676-4351-a70b-f44dc0b94990\",\"trace_id\":\"17e39c4c-85cb-49a4-815e-b7315a8c2249\"}\n[2026-05-07 12:54:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"ed0583cf-03c6-4696-b859-876c8efa4473\",\"trace_id\":\"3f9e0a3c-2178-4885-95eb-8618b8cfc042\"}\n[2026-05-07 12:54:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"ed0583cf-03c6-4696-b859-876c8efa4473\",\"trace_id\":\"3f9e0a3c-2178-4885-95eb-8618b8cfc042\"}\n[2026-05-07 12:54:10] local.NOTICE: Monitoring start {\"correlation_id\":\"7142250a-b897-4620-8ff7-fd9b3a1f3802\",\"trace_id\":\"597def1e-ca38-4cc4-8890-fdcd5baff948\"}\n[2026-05-07 12:54:10] local.NOTICE: Monitoring end {\"correlation_id\":\"7142250a-b897-4620-8ff7-fd9b3a1f3802\",\"trace_id\":\"597def1e-ca38-4cc4-8890-fdcd5baff948\"}\n[2026-05-07 12:54:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"cb2ada48-0200-4eb3-a8c5-6cb8ea43ec0d\",\"trace_id\":\"73937bdc-10b9-4508-9ef2-86420fe774fc\"}\n[2026-05-07 12:54:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"cb2ada48-0200-4eb3-a8c5-6cb8ea43ec0d\",\"trace_id\":\"73937bdc-10b9-4508-9ef2-86420fe774fc\"}\n[2026-05-07 12:54:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"8f1d8932-2839-4256-99ab-1fd13e8381c6\",\"trace_id\":\"cc090767-edc2-4a89-90c2-116f1737de7f\"}\n[2026-05-07 12:54:14] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"8f1d8932-2839-4256-99ab-1fd13e8381c6\",\"trace_id\":\"cc090767-edc2-4a89-90c2-116f1737de7f\"}\n[2026-05-07 12:54:14] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"8f1d8932-2839-4256-99ab-1fd13e8381c6\",\"trace_id\":\"cc090767-edc2-4a89-90c2-116f1737de7f\"}\n[2026-05-07 12:54:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"8f1d8932-2839-4256-99ab-1fd13e8381c6\",\"trace_id\":\"cc090767-edc2-4a89-90c2-116f1737de7f\"}\n[2026-05-07 12:54:16] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"9d324c6d-5b36-46ee-89c6-f95f86bf3f39\",\"trace_id\":\"860cdff0-9356-4e94-84cc-e011a74ba56c\"}\n[2026-05-07 12:54:16] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:52:00, 2026-05-07 12:54:00] {\"correlation_id\":\"9d324c6d-5b36-46ee-89c6-f95f86bf3f39\",\"trace_id\":\"860cdff0-9356-4e94-84cc-e011a74ba56c\"}\n[2026-05-07 12:54:16] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:52:00, 2026-05-07 12:54:00] {\"correlation_id\":\"9d324c6d-5b36-46ee-89c6-f95f86bf3f39\",\"trace_id\":\"860cdff0-9356-4e94-84cc-e011a74ba56c\"}\n[2026-05-07 12:54:16] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"9d324c6d-5b36-46ee-89c6-f95f86bf3f39\",\"trace_id\":\"860cdff0-9356-4e94-84cc-e011a74ba56c\"}\n[2026-05-07 12:54:18] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:aircall:check-and-renew\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"c2009a88-eea6-4954-8642-ef5d9cb56b42\",\"trace_id\":\"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab\"}\n[2026-05-07 12:54:18] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1496,\"provider\":\"aircall\"} {\"correlation_id\":\"c2009a88-eea6-4954-8642-ef5d9cb56b42\",\"trace_id\":\"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab\"}\n[2026-05-07 12:54:18] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1496,\"provider\":\"aircall\"} {\"correlation_id\":\"c2009a88-eea6-4954-8642-ef5d9cb56b42\",\"trace_id\":\"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab\"}\n[2026-05-07 12:54:18] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"c2009a88-eea6-4954-8642-ef5d9cb56b42\",\"trace_id\":\"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab\"}\n[2026-05-07 12:54:19] local.ERROR: [Aircall] Re-activating webhooks failed {\"team_id\":1,\"reason\":\"{\\\"message\\\":\\\"Forbidden\\\"}\"} {\"correlation_id\":\"c2009a88-eea6-4954-8642-ef5d9cb56b42\",\"trace_id\":\"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab\"}\n[2026-05-07 12:54:19] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:aircall:check-and-renew\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"c2009a88-eea6-4954-8642-ef5d9cb56b42\",\"trace_id\":\"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab\"}\n[2026-05-07 12:54:21] local.INFO: [RetryFailedDownloads] Starting {\"options\":{\"from\":null,\"to\":null,\"help\":false,\"silent\":false,\"quiet\":false,\"verbose\":false,\"version\":false,\"ansi\":null,\"no-interaction\":false,\"env\":null}} {\"correlation_id\":\"825ef2d7-b5f8-45cd-b19d-20a179b06934\",\"trace_id\":\"5825a6c8-14c9-4bec-b688-d4895cfc41cc\"}\n[2026-05-07 12:55:05] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"c0dc8e25-7a51-4023-be61-d0abd6d72e37\",\"trace_id\":\"16b8fa3e-92b1-465e-82d4-642a2d14c7c5\"}\n[2026-05-07 12:55:05] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"c0dc8e25-7a51-4023-be61-d0abd6d72e37\",\"trace_id\":\"16b8fa3e-92b1-465e-82d4-642a2d14c7c5\"}\n[2026-05-07 12:55:05] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"c0dc8e25-7a51-4023-be61-d0abd6d72e37\",\"trace_id\":\"16b8fa3e-92b1-465e-82d4-642a2d14c7c5\"}\n[2026-05-07 12:55:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"1c65fdd1-1f79-435d-b469-add46ddafd63\",\"trace_id\":\"62f2a3bb-3be7-4c76-a9dd-222bfb895fab\"}\n[2026-05-07 12:55:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"1c65fdd1-1f79-435d-b469-add46ddafd63\",\"trace_id\":\"62f2a3bb-3be7-4c76-a9dd-222bfb895fab\"}\n[2026-05-07 12:55:11] local.NOTICE: Monitoring start {\"correlation_id\":\"f115f9bc-bb59-4fc9-8c9f-8b69baba1a55\",\"trace_id\":\"e75cb5c6-6dd8-4000-8d26-4418020c7cfe\"}\n[2026-05-07 12:55:11] local.NOTICE: Monitoring end {\"correlation_id\":\"f115f9bc-bb59-4fc9-8c9f-8b69baba1a55\",\"trace_id\":\"e75cb5c6-6dd8-4000-8d26-4418020c7cfe\"}\n[2026-05-07 12:55:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"dba5c474-4d40-44da-baf2-f8b30db9a2f5\",\"trace_id\":\"adb45622-1fb0-457c-bf20-8dcceab2d62a\"}\n[2026-05-07 12:55:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"dba5c474-4d40-44da-baf2-f8b30db9a2f5\",\"trace_id\":\"adb45622-1fb0-457c-bf20-8dcceab2d62a\"}\n[2026-05-07 12:55:16] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"22c96a8e-4424-4a1f-b349-206276eefe4c\",\"trace_id\":\"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c\"}\n[2026-05-07 12:55:16] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"22c96a8e-4424-4a1f-b349-206276eefe4c\",\"trace_id\":\"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c\"}\n[2026-05-07 12:55:16] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"22c96a8e-4424-4a1f-b349-206276eefe4c\",\"trace_id\":\"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c\"}\n[2026-05-07 12:55:16] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"22c96a8e-4424-4a1f-b349-206276eefe4c\",\"trace_id\":\"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c\"}\n[2026-05-07 12:55:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:purge-stale\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"5f958e8d-1d01-4144-abd6-2513e5524ad3\",\"trace_id\":\"828bc5b7-e2aa-4443-901f-38dd94bb7cc5\"}\n[2026-05-07 12:55:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:purge-stale\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"5f958e8d-1d01-4144-abd6-2513e5524ad3\",\"trace_id\":\"828bc5b7-e2aa-4443-901f-38dd94bb7cc5\"}\n[2026-05-07 12:55:22] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:text-relay:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"6bd1c9cb-cd9a-42a9-87fe-45cb7bac687a\",\"trace_id\":\"0f2f5d66-c4c9-46a5-a31b-6937663ce1ad\"}\n[2026-05-07 12:55:22] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:text-relay:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"6bd1c9cb-cd9a-42a9-87fe-45cb7bac687a\",\"trace_id\":\"0f2f5d66-c4c9-46a5-a31b-6937663ce1ad\"}\n[2026-05-07 12:55:24] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:pre-meeting-notification\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"c5dd8132-d7e1-4caa-84d1-0a50d02df8da\",\"trace_id\":\"bc7341c5-b8e2-48ea-9670-7ec375363180\"}\n[2026-05-07 12:55:24] local.INFO: Running pre-meeting notification command {\"correlation_id\":\"c5dd8132-d7e1-4caa-84d1-0a50d02df8da\",\"trace_id\":\"bc7341c5-b8e2-48ea-9670-7ec375363180\"}\n[2026-05-07 12:55:24] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:pre-meeting-notification\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"c5dd8132-d7e1-4caa-84d1-0a50d02df8da\",\"trace_id\":\"bc7341c5-b8e2-48ea-9670-7ec375363180\"}\n[2026-05-07 12:55:26] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:start\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0\",\"trace_id\":\"efb1619f-4185-4319-9bfb-305cee0b6bfc\"}\n[2026-05-07 12:55:26] local.INFO: Running conference:monitor:start command for activities in (2026-05-07 12:45:00, 2026-05-07 12:50:00] {\"correlation_id\":\"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0\",\"trace_id\":\"efb1619f-4185-4319-9bfb-305cee0b6bfc\"}\n[2026-05-07 12:55:26] local.INFO: [conference:monitor:start] No activities found in (2026-05-07 12:45:00, 2026-05-07 12:50:00] {\"correlation_id\":\"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0\",\"trace_id\":\"efb1619f-4185-4319-9bfb-305cee0b6bfc\"}\n[2026-05-07 12:55:26] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:start\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0\",\"trace_id\":\"efb1619f-4185-4319-9bfb-305cee0b6bfc\"}\n[2026-05-07 12:55:28] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:end\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"3792b31a-080a-4fe4-9823-5602361325ba\",\"trace_id\":\"41a2fde1-48f6-4667-84b7-a2f93e9ad2da\"}\n[2026-05-07 12:55:28] local.INFO: conference:monitor:end:Jiminny\\Console\\Commands\\Activities\\MonitorMeetingEndCommand::logActivitiesEnded {\"from\":\"12:50\",\"to\":\"12:55\"} {\"correlation_id\":\"3792b31a-080a-4fe4-9823-5602361325ba\",\"trace_id\":\"41a2fde1-48f6-4667-84b7-a2f93e9ad2da\"}\n[2026-05-07 12:55:28] local.INFO: conference:monitor:end:Jiminny\\Console\\Commands\\Activities\\MonitorMeetingEndCommand::logActivitiesWithUnfinishedSession {\"from\":\"02:45\",\"to\":\"02:50\"} {\"correlation_id\":\"3792b31a-080a-4fe4-9823-5602361325ba\",\"trace_id\":\"41a2fde1-48f6-4667-84b7-a2f93e9ad2da\"}\n[2026-05-07 12:55:28] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:end\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"3792b31a-080a-4fe4-9823-5602361325ba\",\"trace_id\":\"41a2fde1-48f6-4667-84b7-a2f93e9ad2da\"}\n[2026-05-07 12:55:30] local.NOTICE: Repairing HubSpot tokens start {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:30] local.INFO: Trying to refresh HubSpot token {\"account_id\":59,\"updated_at\":\"2025-10-03 09:32:05\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:30] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:30] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":59,\"provider\":\"hubspot\",\"refreshToken\":\"97b78f6e2cc49965c00c2492b602b02708b1392551e6b3f113fbaa48992af90b\",\"state\":\"full-refresh\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.ERROR: Failed to refresh HubSpot token {\"account_id\":59,\"updated_at\":\"2025-10-03 09:32:05\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.INFO: Trying to refresh HubSpot token {\"account_id\":306,\"updated_at\":\"2023-11-27 09:30:03\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":306,\"provider\":\"hubspot\",\"refreshToken\":\"6fa6aa8cc641d131231acc3470f5c03cb3b07b2e580fb18f8acb3b1dbb72549b\",\"state\":\"full-refresh\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.ERROR: Failed to refresh HubSpot token {\"account_id\":306,\"updated_at\":\"2023-11-27 09:30:03\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.INFO: Trying to refresh HubSpot token {\"account_id\":1372,\"updated_at\":\"2025-10-02 14:47:06\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1372,\"provider\":\"hubspot\",\"refreshToken\":\"9aa73948c761da29dce46c177cf9aee1fde483a44169ca38723f9f0597d7a8c4\",\"state\":\"full-refresh\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:32] local.ERROR: Failed to refresh HubSpot token {\"account_id\":1372,\"updated_at\":\"2025-10-02 14:47:06\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:32] local.NOTICE: Repairing HubSpot tokens end {\"total\":3,\"fixed\":0,\"failed\":3} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:40] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"crm:bullhorn:ping\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"5e676ae4-5d63-49d4-9001-559088adf06b\",\"trace_id\":\"2fcce073-dd68-4c99-b7c4-b9e03c20b8e4\"}\n[2026-05-07 12:55:40] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:pre-meeting-reminder\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"1f830896-8142-41d1-bfc9-4cbb9179ffda\",\"trace_id\":\"e348a096-7f37-4308-a6d8-66131e8be901\"}\n[2026-05-07 12:55:40] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"crm:bullhorn:ping\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"5e676ae4-5d63-49d4-9001-559088adf06b\",\"trace_id\":\"2fcce073-dd68-4c99-b7c4-b9e03c20b8e4\"}\n[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Command] Starting polling service {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Service starting {\"memory_limit\":\"256M\",\"max_execution_time\":\"0\",\"initial_memory_mb\":62.0} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Acquired polling lock {\"expires_at\":\"2026-05-07T12:57:40.609671Z\"} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:40] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:40] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:pre-meeting-reminder\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"1f830896-8142-41d1-bfc9-4cbb9179ffda\",\"trace_id\":\"e348a096-7f37-4308-a6d8-66131e8be901\"}\n[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:45] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:45] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:46] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:51] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:51] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:51] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:06] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:06] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:06] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"2d8b30b4-87aa-480f-9b9e-5a9c709b742a\",\"trace_id\":\"25b7be6c-1faf-430b-a724-a4ff28773a31\"}\n[2026-05-07 12:56:08] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"2d8b30b4-87aa-480f-9b9e-5a9c709b742a\",\"trace_id\":\"25b7be6c-1faf-430b-a724-a4ff28773a31\"}\n[2026-05-07 12:56:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"2d8b30b4-87aa-480f-9b9e-5a9c709b742a\",\"trace_id\":\"25b7be6c-1faf-430b-a724-a4ff28773a31\"}\n[2026-05-07 12:56:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"efd336d7-db4d-459e-b6e7-bf73454e955e\",\"trace_id\":\"0a82c3d5-0417-48c8-b88f-70ec33e2326a\"}\n[2026-05-07 12:56:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"efd336d7-db4d-459e-b6e7-bf73454e955e\",\"trace_id\":\"0a82c3d5-0417-48c8-b88f-70ec33e2326a\"}\n[2026-05-07 12:56:12] local.NOTICE: Monitoring start {\"correlation_id\":\"68481576-8ca6-4ee5-821b-07374702971d\",\"trace_id\":\"c73eac09-5d20-425f-9c22-bd6c65fc60c9\"}\n[2026-05-07 12:56:12] local.NOTICE: Monitoring end {\"correlation_id\":\"68481576-8ca6-4ee5-821b-07374702971d\",\"trace_id\":\"c73eac09-5d20-425f-9c22-bd6c65fc60c9\"}\n[2026-05-07 12:56:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"bd0cdc75-b5c2-4dbb-bc44-e36c96813d24\",\"trace_id\":\"f688cd98-c171-4e30-8c72-afc14f040861\"}\n[2026-05-07 12:56:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"bd0cdc75-b5c2-4dbb-bc44-e36c96813d24\",\"trace_id\":\"f688cd98-c171-4e30-8c72-afc14f040861\"}\n[2026-05-07 12:56:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"f01636a9-4059-4ab0-9ad2-b078d42cedbd\",\"trace_id\":\"fea938d8-aedc-40ec-b8c2-2f487e1ac808\"}\n[2026-05-07 12:56:20] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"f01636a9-4059-4ab0-9ad2-b078d42cedbd\",\"trace_id\":\"fea938d8-aedc-40ec-b8c2-2f487e1ac808\"}\n[2026-05-07 12:56:20] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"f01636a9-4059-4ab0-9ad2-b078d42cedbd\",\"trace_id\":\"fea938d8-aedc-40ec-b8c2-2f487e1ac808\"}\n[2026-05-07 12:56:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"f01636a9-4059-4ab0-9ad2-b078d42cedbd\",\"trace_id\":\"fea938d8-aedc-40ec-b8c2-2f487e1ac808\"}\n[2026-05-07 12:56:23] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"d4558901-264d-4238-8589-62a137bac1fd\",\"trace_id\":\"38e6b5dc-ebd6-46a7-8224-7374d4e58630\"}\n[2026-05-07 12:56:23] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:54:00, 2026-05-07 12:56:00] {\"correlation_id\":\"d4558901-264d-4238-8589-62a137bac1fd\",\"trace_id\":\"38e6b5dc-ebd6-46a7-8224-7374d4e58630\"}\n[2026-05-07 12:56:23] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:54:00, 2026-05-07 12:56:00] {\"correlation_id\":\"d4558901-264d-4238-8589-62a137bac1fd\",\"trace_id\":\"38e6b5dc-ebd6-46a7-8224-7374d4e58630\"}\n[2026-05-07 12:56:23] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"d4558901-264d-4238-8589-62a137bac1fd\",\"trace_id\":\"38e6b5dc-ebd6-46a7-8224-7374d4e58630\"}\n[2026-05-07 12:56:24] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"crm:sync-hubspot-objects\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"7bfaf9be-0ca1-4170-a0c9-83e0ed61881c\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:24] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"crm:sync-hubspot-objects\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"7bfaf9be-0ca1-4170-a0c9-83e0ed61881c\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:26] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:notify-not-logged\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"2541e0fa-1117-4863-9523-d723b5821a24\",\"trace_id\":\"d9600320-5133-4938-bdd1-2256dfdf8db4\"}\n[2026-05-07 12:56:26] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:notify-not-logged\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"2541e0fa-1117-4863-9523-d723b5821a24\",\"trace_id\":\"d9600320-5133-4938-bdd1-2256dfdf8db4\"}\n[2026-05-07 12:56:35] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"e444f776-37db-4c6d-b30e-20b01a089de7\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:36] local.INFO: [EmailSchedule] STARTING Inbox Sync {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"e444f776-37db-4c6d-b30e-20b01a089de7\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:36] local.INFO: [EmailSchedule] FINISHED Inbox Sync {\"host\":\"docker_lamp_1\",\"events\":2} {\"correlation_id\":\"e444f776-37db-4c6d-b30e-20b01a089de7\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:36] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"e444f776-37db-4c6d-b30e-20b01a089de7\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:36] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:36] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:36] local.INFO: [HubSpot Journal Auth] Requesting new client credentials token {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:37] local.INFO: [HubSpot Journal Auth] Successfully obtained new access token {\"expires_in\":1800,\"cached_for\":1500} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:37] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:37] local.WARNING: [HubSpot Journal Polling] Maximum empty results reached, stopping {\"empty_results\":5,\"max_empty_results\":5} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:37] local.WARNING: [HubSpot Journal Polling] Maximum empty results reached, stopping {\"empty_results\":5,\"max_empty_results\":5} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:37] local.INFO: [HubSpot Journal Polling] Service ending {\"runtime_seconds\":57,\"total_cycles\":5,\"files_downloaded\":0,\"empty_files\":0,\"other_portal_skipped\":0,\"total_events\":0,\"events_per_file\":0,\"avg_api_ms\":238.3,\"avg_download_ms\":0.0,\"avg_transform_ms\":0.0,\"avg_process_ms\":0.0,\"peak_memory_mb\":99.73} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:37] local.INFO: [HubSpot Journal Polling] Released polling lock {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:50] local.INFO: [Commands/AsyncUpdateEsEntities] Starting ES update worker {\"pid\":37119,\"workerId\":\"\",\"target\":\"activities\"} {\"correlation_id\":\"902cef33-4733-4b2a-9693-affb8645cecc\",\"trace_id\":\"4ffe2bb8-67c6-422a-a846-319973cc0259\"}\n[2026-05-07 12:56:50] local.INFO: [SyncHubspotObjects] Starting sync {\"team\":\"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4\",\"usage\":23195976,\"real_usage\":65011712,\"pid\":37113} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:50] local.INFO: [Sync Mailbox] Sync start {\"inbox_id\":59} {\"correlation_id\":\"20256b2c-2b69-48f6-bdd3-61d047eb0b0d\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:50] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:50] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:50] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:50] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1499,\"provider\":\"hubspot\",\"refreshToken\":\"96f94c623a404e02ebdbf07f1b75707bb6cdbf848cbf45d418baf608c41a8d86\",\"state\":\"connected\"} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:50] local.INFO: [Inbox service] Skipping METADATA SYNC for inbox 59 due to unauthorized access to the mailbox {\"correlation_id\":\"20256b2c-2b69-48f6-bdd3-61d047eb0b0d\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:50] local.INFO: [Sync Mailbox] Sync complete {\"inbox_id\":59} {\"correlation_id\":\"20256b2c-2b69-48f6-bdd3-61d047eb0b0d\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:50] local.INFO: [Sync Mailbox] Sync start {\"inbox_id\":212} {\"correlation_id\":\"b6c31853-3729-4780-a52b-ebcce17d41b9\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:50] local.INFO: [Inbox service] Skipping METADATA SYNC for inbox 212 due to unauthorized access to the mailbox {\"correlation_id\":\"b6c31853-3729-4780-a52b-ebcce17d41b9\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:50] local.INFO: [Sync Mailbox] Sync complete {\"inbox_id\":212} {\"correlation_id\":\"b6c31853-3729-4780-a52b-ebcce17d41b9\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:51] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:51] local.INFO: [SocialAccountObserver] Access token was modified, encrypting {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:51] local.INFO: [SocialAccountService] Token refreshed {\"socialAccountId\":1499,\"provider\":\"hubspot\",\"state\":\"connected\"} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:51] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":148,\"team_id\":2} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:51] local.INFO: [HubSpot] Syncing opportunities using strategy: lastModified {\"team\":2} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/deals/search\",\"total_requests\":0,\"total_records_fetched\":0,\"total_elapsed_seconds\":0.3,\"average_seconds_per_request\":0} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.INFO: [SyncHubspotObjects] Sync finished {\"team\":\"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4\",\"provider\":\"hubspot\",\"status\":\"completed\",\"duration_ms\":1854.64,\"usage\":24199288,\"real_usage\":65011712,\"pid\":37113} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.ERROR: Jiminny\\Services\\Crm\\Hubspot\\Pagination\\HubspotPaginationService::getPaginatedDataGenerator(): Return value must be of type Generator, none returned {\"exception\":\"[object] (TypeError(code: 0): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService::getPaginatedDataGenerator(): Return value must be of type Generator, none returned at /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php:82)\n[stacktrace]\n#0 /home/jiminny/app/Services/Crm/Hubspot/Client.php(194): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->getPaginatedDataGenerator(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), Array, 'deals', 0, 0, NULL)\n#1 /home/jiminny/app/Services/Crm/Hubspot/OpportunitySyncStrategy/HubspotSyncStrategyBase.php(55): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client->getPaginatedDataGenerator(Array, 'deals', 0, 0, NULL)\n#2 /home/jiminny/app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php(73): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\OpportunitySyncStrategy\\\\HubspotSyncStrategyBase->fetchOpportunities(Array, 0, NULL)\n#3 /home/jiminny/app/Jobs/Crm/SyncHubspotObjects.php(118): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service->syncOpportunities(Array)\n#4 /home/jiminny/app/Jobs/Crm/SyncHubspotObjects.php(86): Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects->syncHubspotCrmObjects(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service), Object(Illuminate\\\\Support\\\\Carbon))\n#5 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects->handle(Object(Jiminny\\\\Services\\\\ResolveTeamCrmConnection), Object(Illuminate\\\\Log\\\\LogManager), Object(Jiminny\\\\Repositories\\\\TeamRepository))\n#6 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#7 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#8 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#9 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#10 /home/jiminny/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(129): Illuminate\\\\Container\\\\Container->call(Array)\n#11 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\\\Bus\\\\Dispatcher->Illuminate\\\\Bus\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#12 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\\\\Pipeline\\\\Pipeline->Illuminate\\\\Pipeline\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#13 /home/jiminny/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(133): Illuminate\\\\Pipeline\\\\Pipeline->then(Object(Closure))\n#14 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(136): Illuminate\\\\Bus\\\\Dispatcher->dispatchNow(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects), false)\n#15 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\\\Queue\\\\CallQueuedHandler->Illuminate\\\\Queue\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#16 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\\\\Pipeline\\\\Pipeline->Illuminate\\\\Pipeline\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#17 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(129): Illuminate\\\\Pipeline\\\\Pipeline->then(Object(Closure))\n#18 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(70): Illuminate\\\\Queue\\\\CallQueuedHandler->dispatchThroughMiddleware(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#19 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Jobs/Job.php(102): Illuminate\\\\Queue\\\\CallQueuedHandler->call(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Array)\n#20 /home/jiminny/app/Queue/Worker/Worker.php(71): Illuminate\\\\Queue\\\\Jobs\\\\Job->fire()\n#21 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(435): Jiminny\\\\Queue\\\\Worker\\\\Worker->process('redis', Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#22 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(201): Illuminate\\\\Queue\\\\Worker->runJob(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), 'redis', Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#23 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(148): Illuminate\\\\Queue\\\\Worker->daemon('redis', 'crm-sync,crm-up...', Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#24 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(131): Illuminate\\\\Queue\\\\Console\\\\WorkCommand->runWorker('redis', 'crm-sync,crm-up...')\n#25 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Illuminate\\\\Queue\\\\Console\\\\WorkCommand->handle()\n#26 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#27 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#28 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#29 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#30 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(211): Illuminate\\\\Container\\\\Container->call(Array)\n#31 /home/jiminny/vendor/symfony/console/Command/Command.php(341): Illuminate\\\\Console\\\\Command->execute(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#32 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(180): Symfony\\\\Component\\\\Console\\\\Command\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#33 /home/jiminny/vendor/symfony/console/Application.php(1117): Illuminate\\\\Console\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#34 /home/jiminny/vendor/symfony/console/Application.php(356): Symfony\\\\Component\\\\Console\\\\Application->doRunCommand(Object(Illuminate\\\\Queue\\\\Console\\\\WorkCommand), Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#35 /home/jiminny/vendor/symfony/console/Application.php(195): Symfony\\\\Component\\\\Console\\\\Application->doRun(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#36 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(198): Symfony\\\\Component\\\\Console\\\\Application->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#37 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1235): Illuminate\\\\Foundation\\\\Console\\\\Kernel->handle(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#38 /home/jiminny/artisan(13): Illuminate\\\\Foundation\\\\Application->handleCommand(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput))\n#39 {main}\n\"} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.INFO: [SyncHubspotObjects] Starting sync {\"team\":\"b2d49a54-b645-4637-a7ae-a86cfce6e8e4\",\"usage\":25235152,\"real_usage\":65011712,\"pid\":37113} {\"correlation_id\":\"0d3cf2b0-a245-4a83-9bd5-1c5788b85738\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.WARNING: [HubSpot] Account not connected for user {\"userId\":\"2ac0447f-3c8c-4ce0-baeb-b63ddb76fa9b\",\"account\":null} {\"correlation_id\":\"0d3cf2b0-a245-4a83-9bd5-1c5788b85738\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {\"crm_provider\":\"hubspot\",\"crm_owner\":130,\"team_id\":42} {\"correlation_id\":\"0d3cf2b0-a245-4a83-9bd5-1c5788b85738\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":42} {\"correlation_id\":\"0d3cf2b0-a245-4a83-9bd5-1c5788b85738\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":42} {\"correlation_id\":\"0d3cf2b0-a245-4a83-9bd5-1c5788b85738\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.INFO: [SyncHubspotObjects] Sync finished {\"team\":\"b2d49a54-b645-4637-a7ae-a86cfce6e8e4\",\"provider\":\"hubspot\",\"status\":\"disconnected\",\"duration_ms\":70.53,\"usage\":25225384,\"real_usage\":65011712,\"pid\":37113,\"reason\":\"Social account for HubSpot cannot be found. Please login to Jiminny to connect.\"} {\"correlation_id\":\"0d3cf2b0-a245-4a83-9bd5-1c5788b85738\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Starting sync {\"team\":\"b2b115eb-93ce-4d1b-929c-173757df8fba\",\"usage\":25263936,\"real_usage\":65011712,\"pid\":37113} {\"correlation_id\":\"1e46be79-1db4-4829-b19c-1548141a94e0\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.WARNING: [HubSpot] Account not connected for user {\"userId\":\"33e34a7a-1c02-4f04-87ac-22c3a385e6e3\",\"account\":{\"Jiminny\\\\Models\\\\SocialAccount\":{\"id\":306,\"sociable_id\":109,\"provider_user_id\":\"11348452\",\"expires\":1701077403,\"refresh_token_expires\":null,\"provider\":\"hubspot\",\"state\":\"full-refresh\",\"auth_scope\":null,\"retry_after\":null,\"created_at\":\"2020-09-01 16:59:04\",\"updated_at\":\"2023-11-27 09:30:03\"}}} {\"correlation_id\":\"1e46be79-1db4-4829-b19c-1548141a94e0\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {\"crm_provider\":\"hubspot\",\"crm_owner\":109,\"team_id\":29} {\"correlation_id\":\"1e46be79-1db4-4829-b19c-1548141a94e0\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":29} {\"correlation_id\":\"1e46be79-1db4-4829-b19c-1548141a94e0\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":29} {\"correlation_id\":\"1e46be79-1db4-4829-b19c-1548141a94e0\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Sync finished {\"team\":\"b2b115eb-93ce-4d1b-929c-173757df8fba\",\"provider\":\"hubspot\",\"status\":\"disconnected\",\"duration_ms\":47.7,\"usage\":25451952,\"real_usage\":65011712,\"pid\":37113,\"reason\":\"Your HubSpot account has become disconnected. Please login to Jiminny to reconnect.\"} {\"correlation_id\":\"1e46be79-1db4-4829-b19c-1548141a94e0\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Starting sync {\"team\":\"c6b9d6b0-b48d-4832-a68c-a57d60651888\",\"usage\":25490320,\"real_usage\":65011712,\"pid\":37113} {\"correlation_id\":\"0da4e096-9534-4a72-bc1f-8e61561d8e37\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.WARNING: [HubSpot] Account not connected for user {\"userId\":\"71e3aac5-fb66-47c5-a236-2d051ae3e319\",\"account\":null} {\"correlation_id\":\"0da4e096-9534-4a72-bc1f-8e61561d8e37\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {\"crm_provider\":\"hubspot\",\"crm_owner\":256,\"team_id\":49} {\"correlation_id\":\"0da4e096-9534-4a72-bc1f-8e61561d8e37\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":49} {\"correlation_id\":\"0da4e096-9534-4a72-bc1f-8e61561d8e37\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":49} {\"correlation_id\":\"0da4e096-9534-4a72-bc1f-8e61561d8e37\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Sync finished {\"team\":\"c6b9d6b0-b48d-4832-a68c-a57d60651888\",\"provider\":\"hubspot\",\"status\":\"disconnected\",\"duration_ms\":44.12,\"usage\":25547952,\"real_usage\":65011712,\"pid\":37113,\"reason\":\"Social account for HubSpot cannot be found. Please login to Jiminny to connect.\"} {\"correlation_id\":\"0da4e096-9534-4a72-bc1f-8e61561d8e37\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Starting sync {\"team\":\"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4\",\"usage\":25587032,\"real_usage\":65011712,\"pid\":37113} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":148,\"team_id\":2} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [HubSpot] Syncing opportunities using strategy: lastModified {\"team\":2} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/deals/search\",\"total_requests\":0,\"total_records_fetched\":0,\"total_elapsed_seconds\":0.28,\"average_seconds_per_request\":0} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Sync finished {\"team\":\"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4\",\"provider\":\"hubspot\",\"status\":\"completed\",\"duration_ms\":412.19,\"usage\":25739960,\"real_usage\":65011712,\"pid\":37113} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.ERROR: Jiminny\\Services\\Crm\\Hubspot\\Pagination\\HubspotPaginationService::getPaginatedDataGenerator(): Return value must be of type Generator, none returned {\"exception\":\"[object] (TypeError(code: 0): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService::getPaginatedDataGenerator(): Return value must be of type Generator, none returned at /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php:82)\n[stacktrace]\n#0 /home/jiminny/app/Services/Crm/Hubspot/Client.php(194): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->getPaginatedDataGenerator(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), Array, 'deals', 0, 0, NULL)\n#1 /home/jiminny/app/Services/Crm/Hubspot/OpportunitySyncStrategy/HubspotSyncStrategyBase.php(55): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client->getPaginatedDataGenerator(Array, 'deals', 0, 0, NULL)\n#2 /home/jiminny/app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php(73): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\OpportunitySyncStrategy\\\\HubspotSyncStrategyBase->fetchOpportunities(Array, 0, NULL)\n#3 /home/jiminny/app/Jobs/Crm/SyncHubspotObjects.php(118): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service->syncOpportunities(Array)\n#4 /home/jiminny/app/Jobs/Crm/SyncHubspotObjects.php(86): Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects->syncHubspotCrmObjects(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service), Object(Illuminate\\\\Support\\\\Carbon))\n#5 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects->handle(Object(Jiminny\\\\Services\\\\ResolveTeamCrmConnection), Object(Illuminate\\\\Log\\\\LogManager), Object(Jiminny\\\\Repositories\\\\TeamRepository))\n#6 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#7 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#8 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#9 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#10 /home/jiminny/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(129): Illuminate\\\\Container\\\\Container->call(Array)\n#11 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\\\Bus\\\\Dispatcher->Illuminate\\\\Bus\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#12 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\\\\Pipeline\\\\Pipeline->Illuminate\\\\Pipeline\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#13 /home/jiminny/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(133): Illuminate\\\\Pipeline\\\\Pipeline->then(Object(Closure))\n#14 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(136): Illuminate\\\\Bus\\\\Dispatcher->dispatchNow(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects), false)\n#15 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\\\Queue\\\\CallQueuedHandler->Illuminate\\\\Queue\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#16 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\\\\Pipeline\\\\Pipeline->Illuminate\\\\Pipeline\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#17 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(129): Illuminate\\\\Pipeline\\\\Pipeline->then(Object(Closure))\n#18 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(70): Illuminate\\\\Queue\\\\CallQueuedHandler->dispatchThroughMiddleware(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#19 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Jobs/Job.php(102): Illuminate\\\\Queue\\\\CallQueuedHandler->call(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Array)\n#20 /home/jiminny/app/Queue/Worker/Worker.php(71): Illuminate\\\\Queue\\\\Jobs\\\\Job->fire()\n#21 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(435): Jiminny\\\\Queue\\\\Worker\\\\Worker->process('redis', Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#22 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(201): Illuminate\\\\Queue\\\\Worker->runJob(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), 'redis', Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#23 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(148): Illuminate\\\\Queue\\\\Worker->daemon('redis', 'crm-sync,crm-up...', Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#24 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(131): Illuminate\\\\Queue\\\\Console\\\\WorkCommand->runWorker('redis', 'crm-sync,crm-up...')\n#25 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Illuminate\\\\Queue\\\\Console\\\\WorkCommand->handle()\n#26 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#27 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#28 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#29 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#30 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(211): Illuminate\\\\Container\\\\Container->call(Array)\n#31 /home/jiminny/vendor/symfony/console/Command/Command.php(341): Illuminate\\\\Console\\\\Command->execute(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#32 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(180): Symfony\\\\Component\\\\Console\\\\Command\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#33 /home/jiminny/vendor/symfony/console/Application.php(1117): Illuminate\\\\Console\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#34 /home/jiminny/vendor/symfony/console/Application.php(356): Symfony\\\\Component\\\\Console\\\\Application->doRunCommand(Object(Illuminate\\\\Queue\\\\Console\\\\WorkCommand), Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#35 /home/jiminny/vendor/symfony/console/Application.php(195): Symfony\\\\Component\\\\Console\\\\Application->doRun(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#36 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(198): Symfony\\\\Component\\\\Console\\\\Application->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#37 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1235): Illuminate\\\\Foundation\\\\Console\\\\Kernel->handle(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#38 /home/jiminny/artisan(13): Illuminate\\\\Foundation\\\\Application->handleCommand(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput))\n#39 {main}\n\"} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Starting sync {\"team\":\"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4\",\"usage\":25172624,\"real_usage\":65011712,\"pid\":37113} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":148,\"team_id\":2} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [HubSpot] Syncing opportunities using strategy: lastModified {\"team\":2} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/deals/search\",\"total_requests\":0,\"total_records_fetched\":0,\"total_elapsed_seconds\":0.23,\"average_seconds_per_request\":0} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Sync finished {\"team\":\"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4\",\"provider\":\"hubspot\",\"status\":\"completed\",\"duration_ms\":291.83,\"usage\":25225088,\"real_usage\":65011712,\"pid\":37113} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:54] local.ERROR: Jiminny\\Services\\Crm\\Hubspot\\Pagination\\HubspotPaginationService::getPaginatedDataGenerator(): Return value must be of type Generator, none returned {\"exception\":\"[object] (TypeError(code: 0): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService::getPaginatedDataGenerator(): Return value must be of type Generator, none returned at /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php:82)\n[stacktrace]\n#0 /home/jiminny/app/Services/Crm/Hubspot/Client.php(194): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->getPaginatedDataGenerator(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), Array, 'deals', 0, 0, NULL)\n#1 /home/jiminny/app/Services/Crm/Hubspot/OpportunitySyncStrategy/HubspotSyncStrategyBase.php(55): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client->getPaginatedDataGenerator(Array, 'deals', 0, 0, NULL)\n#2 /home/jiminny/app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php(73): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\OpportunitySyncStrategy\\\\HubspotSyncStrategyBase->fetchOpportunities(Array, 0, NULL)\n#3 /home/jiminny/app/Jobs/Crm/SyncHubspotObjects.php(118): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service->syncOpportunities(Array)\n#4 /home/jiminny/app/Jobs/Crm/SyncHubspotObjects.php(86): Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects->syncHubspotCrmObjects(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service), Object(Illuminate\\\\Support\\\\Carbon))\n#5 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects->handle(Object(Jiminny\\\\Services\\\\ResolveTeamCrmConnection), Object(Illuminate\\\\Log\\\\LogManager), Object(Jiminny\\\\Repositories\\\\TeamRepository))\n#6 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#7 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#8 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#9 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#10 /home/jiminny/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(129): Illuminate\\\\Container\\\\Container->call(Array)\n#11 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\\\Bus\\\\Dispatcher->Illuminate\\\\Bus\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#12 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\\\\Pipeline\\\\Pipeline->Illuminate\\\\Pipeline\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#13 /home/jiminny/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(133): Illuminate\\\\Pipeline\\\\Pipeline->then(Object(Closure))\n#14 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(136): Illuminate\\\\Bus\\\\Dispatcher->dispatchNow(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects), false)\n#15 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\\\Queue\\\\CallQueuedHandler->Illuminate\\\\Queue\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#16 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\\\\Pipeline\\\\Pipeline->Illuminate\\\\Pipeline\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#17 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(129): Illuminate\\\\Pipeline\\\\Pipeline->then(Object(Closure))\n#18 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(70): Illuminate\\\\Queue\\\\CallQueuedHandler->dispatchThroughMiddleware(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#19 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Jobs/Job.php(102): Illuminate\\\\Queue\\\\CallQueuedHandler->call(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Array)\n#20 /home/jiminny/app/Queue/Worker/Worker.php(71): Illuminate\\\\Queue\\\\Jobs\\\\Job->fire()\n#21 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(435): Jiminny\\\\Queue\\\\Worker\\\\Worker->process('redis', Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#22 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(201): Illuminate\\\\Queue\\\\Worker->runJob(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), 'redis', Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#23 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(148): Illuminate\\\\Queue\\\\Worker->daemon('redis', 'crm-sync,crm-up...', Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#24 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(131): Illuminate\\\\Queue\\\\Console\\\\WorkCommand->runWorker('redis', 'crm-sync,crm-up...')\n#25 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Illuminate\\\\Queue\\\\Console\\\\WorkCommand->handle()\n#26 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#27 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#28 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#29 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#30 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(211): Illuminate\\\\Container\\\\Container->call(Array)\n#31 /home/jiminny/vendor/symfony/console/Command/Command.php(341): Illuminate\\\\Console\\\\Command->execute(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#32 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(180): Symfony\\\\Component\\\\Console\\\\Command\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#33 /home/jiminny/vendor/symfony/console/Application.php(1117): Illuminate\\\\Console\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#34 /home/jiminny/vendor/symfony/console/Application.php(356): Symfony\\\\Component\\\\Console\\\\Application->doRunCommand(Object(Illuminate\\\\Queue\\\\Console\\\\WorkCommand), Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#35 /home/jiminny/vendor/symfony/console/Application.php(195): Symfony\\\\Component\\\\Console\\\\Application->doRun(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#36 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(198): Symfony\\\\Component\\\\Console\\\\Application->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#37 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1235): Illuminate\\\\Foundation\\\\Console\\\\Kernel->handle(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#38 /home/jiminny/artisan(13): Illuminate\\\\Foundation\\\\Application->handleCommand(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput))\n#39 {main}\n\"} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:57:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"854299be-d77a-48bc-870c-b78333916d69\",\"trace_id\":\"89c1eb6c-bc78-419c-9304-b770093d5692\"}\n[2026-05-07 12:57:06] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"854299be-d77a-48bc-870c-b78333916d69\",\"trace_id\":\"89c1eb6c-bc78-419c-9304-b770093d5692\"}\n[2026-05-07 12:57:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"854299be-d77a-48bc-870c-b78333916d69\",\"trace_id\":\"89c1eb6c-bc78-419c-9304-b770093d5692\"}\n[2026-05-07 12:57:16] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"c4e512a3-a227-4569-bcd2-3258a9142d46\",\"trace_id\":\"016bf668-6712-4c0f-8c8c-c2e411a37889\"}\n[2026-05-07 12:57:16] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"c4e512a3-a227-4569-bcd2-3258a9142d46\",\"trace_id\":\"016bf668-6712-4c0f-8c8c-c2e411a37889\"}\n[2026-05-07 12:57:19] local.NOTICE: Monitoring start {\"correlation_id\":\"4c2d4775-716d-4ca6-b94d-cb17dace29a7\",\"trace_id\":\"e969e10d-e5f0-44c6-9767-97a70e05cfe5\"}\n[2026-05-07 12:57:19] local.NOTICE: Monitoring end {\"correlation_id\":\"4c2d4775-716d-4ca6-b94d-cb17dace29a7\",\"trace_id\":\"e969e10d-e5f0-44c6-9767-97a70e05cfe5\"}\n[2026-05-07 12:57:22] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"d03e9546-bfd0-44c6-84ee-299b1e6c14a2\",\"trace_id\":\"acbab6e5-17fc-4b11-907d-ff87322285d7\"}\n[2026-05-07 12:57:22] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"d03e9546-bfd0-44c6-84ee-299b1e6c14a2\",\"trace_id\":\"acbab6e5-17fc-4b11-907d-ff87322285d7\"}\n[2026-05-07 12:57:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"a2c0095a-18b2-427e-825b-c68c9dbf63a1\",\"trace_id\":\"9b170d6a-ed10-4a41-af79-684c99021967\"}\n[2026-05-07 12:57:25] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"a2c0095a-18b2-427e-825b-c68c9dbf63a1\",\"trace_id\":\"9b170d6a-ed10-4a41-af79-684c99021967\"}\n[2026-05-07 12:57:25] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"a2c0095a-18b2-427e-825b-c68c9dbf63a1\",\"trace_id\":\"9b170d6a-ed10-4a41-af79-684c99021967\"}\n[2026-05-07 12:57:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"a2c0095a-18b2-427e-825b-c68c9dbf63a1\",\"trace_id\":\"9b170d6a-ed10-4a41-af79-684c99021967\"}\n[2026-05-07 12:57:27] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:create\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"c4e70056-ceab-4c44-874a-8042963ce3ea\",\"trace_id\":\"011a70aa-ebb2-4ca8-aef6-4b4cca233da7\"}\n[2026-05-07 12:57:27] local.INFO: [EmailSchedule] STARTING batch create {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"c4e70056-ceab-4c44-874a-8042963ce3ea\",\"trace_id\":\"011a70aa-ebb2-4ca8-aef6-4b4cca233da7\"}\n[2026-05-07 12:57:27] local.INFO: [EmailSchedule] FINISHED batch create {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"c4e70056-ceab-4c44-874a-8042963ce3ea\",\"trace_id\":\"011a70aa-ebb2-4ca8-aef6-4b4cca233da7\"}\n[2026-05-07 12:57:27] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:create\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"c4e70056-ceab-4c44-874a-8042963ce3ea\",\"trace_id\":\"011a70aa-ebb2-4ca8-aef6-4b4cca233da7\"}\n[2026-05-07 12:57:28] local.INFO: [Jiminny\\Jobs\\Mailbox\\CreateBatches] processed 2 inboxes and created 0 batches {\"userId\":null,\"batchSize\":30,\"maxBatches\":1000} {\"correlation_id\":\"c296bf83-9f7c-4228-b6f5-99db6040fa01\",\"trace_id\":\"011a70aa-ebb2-4ca8-aef6-4b4cca233da7\"}\n[2026-05-07 12:58:06] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"a9e2de8b-b538-437e-bbe7-82636da81995\",\"trace_id\":\"e517ae80-e149-490c-b719-309e898b3c93\"}\n[2026-05-07 12:58:06] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"a9e2de8b-b538-437e-bbe7-82636da81995\",\"trace_id\":\"e517ae80-e149-490c-b719-309e898b3c93\"}\n[2026-05-07 12:58:06] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"a9e2de8b-b538-437e-bbe7-82636da81995\",\"trace_id\":\"e517ae80-e149-490c-b719-309e898b3c93\"}\n[2026-05-07 12:58:06] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":148,\"team_id\":2} {\"correlation_id\":\"a9e2de8b-b538-437e-bbe7-82636da81995\",\"trace_id\":\"e517ae80-e149-490c-b719-309e898b3c93\"}\n[2026-05-07 12:58:06] local.ERROR: Client error: `POST https://api.hubapi.com/crm/v3/objects/contact/search` resulted in a `429 Too Many Requests` response:\n{\"status\":\"error\",\"message\":\"You have reached your secondly limit.\",\"errorType\":\"RATE_LIMIT\",\"correlationId\":\"019e0284-5 (truncated...)\n {\"exception\":\"[object] (SevenShores\\\\Hubspot\\\\Exceptions\\\\BadRequest(code: 429): Client error: `POST https://api.hubapi.com/crm/v3/objects/contact/search` resulted in a `429 Too Many Requests` response:\n{\\\"status\\\":\\\"error\\\",\\\"message\\\":\\\"You have reached your secondly limit.\\\",\\\"errorType\\\":\\\"RATE_LIMIT\\\",\\\"correlationId\\\":\\\"019e0284-5 (truncated...)\n at /home/jiminny/vendor/hubspot/hubspot-php/src/Exceptions/HubspotException.php:24)\n[stacktrace]\n#0 /home/jiminny/vendor/hubspot/hubspot-php/src/Http/Client.php(125): SevenShores\\\\Hubspot\\\\Exceptions\\\\HubspotException::create(Object(GuzzleHttp\\\\Exception\\\\ClientException))\n#1 /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php(163): SevenShores\\\\Hubspot\\\\Http\\\\Client->request('POST', 'https://api.hub...', Array)\n#2 /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php(51): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->executeSearchRequest(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), 'https://api.hub...', Array, Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\PaginationState))\n#3 /home/jiminny/app/Services/Crm/Hubspot/Client.php(194): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->getPaginatedDataGenerator(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), Array, 'contact', 0, 0, NULL)\n#4 /home/jiminny/app/Services/Crm/Hubspot/Client.php(175): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client->getPaginatedDataGenerator(Array, 'contact', 0, 0, NULL)\n#5 /home/jiminny/app/Services/Crm/Hubspot/Service.php(1203): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client->getPaginatedData(Array, 'contact')\n#6 /home/jiminny/app/Console/Commands/JiminnyDebugCommand.php(353): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service->matchByName('Robot')\n#7 /home/jiminny/app/Console/Commands/JiminnyDebugCommand.php(44): Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand->rateLimit()\n#8 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand->handle(Object(Jiminny\\\\Jobs\\\\JobDispatcher), Object(Jiminny\\\\Services\\\\Kiosk\\\\AutomatedReports\\\\AutomatedReportsService), Object(Jiminny\\\\Repositories\\\\AutomatedReportsRepository), Object(Jiminny\\\\Services\\\\UserPilot\\\\UserPilotClient))\n#9 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#10 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#11 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#12 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#13 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(211): Illuminate\\\\Container\\\\Container->call(Array)\n#14 /home/jiminny/vendor/symfony/console/Command/Command.php(341): Illuminate\\\\Console\\\\Command->execute(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#15 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(180): Symfony\\\\Component\\\\Console\\\\Command\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#16 /home/jiminny/vendor/symfony/console/Application.php(1117): Illuminate\\\\Console\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#17 /home/jiminny/vendor/symfony/console/Application.php(356): Symfony\\\\Component\\\\Console\\\\Application->doRunCommand(Object(Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand), Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#18 /home/jiminny/vendor/symfony/console/Application.php(195): Symfony\\\\Component\\\\Console\\\\Application->doRun(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#19 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(198): Symfony\\\\Component\\\\Console\\\\Application->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#20 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1235): Illuminate\\\\Foundation\\\\Console\\\\Kernel->handle(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#21 /home/jiminny/artisan(13): Illuminate\\\\Foundation\\\\Application->handleCommand(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput))\n#22 {main}\n\n[previous exception] [object] (GuzzleHttp\\\\Exception\\\\ClientException(code: 429): Client error: `POST https://api.hubapi.com/crm/v3/objects/contact/search` resulted in a `429 Too Many Requests` response:\n{\\\"status\\\":\\\"error\\\",\\\"message\\\":\\\"You have reached your secondly limit.\\\",\\\"errorType\\\":\\\"RATE_LIMIT\\\",\\\"correlationId\\\":\\\"019e0284-5 (truncated...)\n at /home/jiminny/vendor/guzzlehttp/guzzle/src/Exception/RequestException.php:111)\n[stacktrace]\n#0 /home/jiminny/vendor/guzzlehttp/guzzle/src/Middleware.php(72): GuzzleHttp\\\\Exception\\\\RequestException::create(Object(GuzzleHttp\\\\Psr7\\\\Request), Object(GuzzleHttp\\\\Psr7\\\\Response), NULL, Array, NULL)\n#1 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(209): GuzzleHttp\\\\Middleware::GuzzleHttp\\\\{closure}(Object(GuzzleHttp\\\\Psr7\\\\Response))\n#2 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(158): GuzzleHttp\\\\Promise\\\\Promise::callHandler(1, Object(GuzzleHttp\\\\Psr7\\\\Response), NULL)\n#3 /home/jiminny/vendor/guzzlehttp/promises/src/TaskQueue.php(52): GuzzleHttp\\\\Promise\\\\Promise::GuzzleHttp\\\\Promise\\\\{closure}()\n#4 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(251): GuzzleHttp\\\\Promise\\\\TaskQueue->run(true)\n#5 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(227): GuzzleHttp\\\\Promise\\\\Promise->invokeWaitFn()\n#6 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(272): GuzzleHttp\\\\Promise\\\\Promise->waitIfPending()\n#7 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(229): GuzzleHttp\\\\Promise\\\\Promise->invokeWaitList()\n#8 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(69): GuzzleHttp\\\\Promise\\\\Promise->waitIfPending()\n#9 /home/jiminny/vendor/guzzlehttp/guzzle/src/Client.php(189): GuzzleHttp\\\\Promise\\\\Promise->wait()\n#10 /home/jiminny/vendor/hubspot/hubspot-php/src/Http/Client.php(113): GuzzleHttp\\\\Client->request('POST', 'https://api.hub...', Array)\n#11 /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php(163): SevenShores\\\\Hubspot\\\\Http\\\\Client->request('POST', 'https://api.hub...', Array)\n#12 /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php(51): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->executeSearchRequest(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), 'https://api.hub...', Array, Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\PaginationState))\n#13 /home/jiminny/app/Services/Crm/Hubspot/Client.php(194): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->getPaginatedDataGenerator(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), Array, 'contact', 0, 0, NULL)\n#14 /home/jiminny/app/Services/Crm/Hubspot/Client.php(175): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client->getPaginatedDataGenerator(Array, 'contact', 0, 0, NULL)\n#15 /home/jiminny/app/Services/Crm/Hubspot/Service.php(1203): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client->getPaginatedData(Array, 'contact')\n#16 /home/jiminny/app/Console/Commands/JiminnyDebugCommand.php(353): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service->matchByName('Robot')\n#17 /home/jiminny/app/Console/Commands/JiminnyDebugCommand.php(44): Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand->rateLimit()\n#18 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand->handle(Object(Jiminny\\\\Jobs\\\\JobDispatcher), Object(Jiminny\\\\Services\\\\Kiosk\\\\AutomatedReports\\\\AutomatedReportsService), Object(Jiminny\\\\Repositories\\\\AutomatedReportsRepository), Object(Jiminny\\\\Services\\\\UserPilot\\\\UserPilotClient))\n#19 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#20 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#21 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#22 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#23 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(211): Illuminate\\\\Container\\\\Container->call(Array)\n#24 /home/jiminny/vendor/symfony/console/Command/Command.php(341): Illuminate\\\\Console\\\\Command->execute(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#25 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(180): Symfony\\\\Component\\\\Console\\\\Command\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#26 /home/jiminny/vendor/symfony/console/Application.php(1117): Illuminate\\\\Console\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#27 /home/jiminny/vendor/symfony/console/Application.php(356): Symfony\\\\Component\\\\Console\\\\Application->doRunCommand(Object(Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand), Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#28 /home/jiminny/vendor/symfony/console/Application.php(195): Symfony\\\\Component\\\\Console\\\\Application->doRun(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#29 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(198): Symfony\\\\Component\\\\Console\\\\Application->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#30 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1235): Illuminate\\\\Foundation\\\\Console\\\\Kernel->handle(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#31 /home/jiminny/artisan(13): Illuminate\\\\Foundation\\\\Application->handleCommand(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput))\n#32 {main}\n\"} {\"correlation_id\":\"a9e2de8b-b538-437e-bbe7-82636da81995\",\"trace_id\":\"e517ae80-e149-490c-b719-309e898b3c93\"}\n[2026-05-07 12:58:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"fb59e309-d2cc-4fe0-9db2-544112c25477\",\"trace_id\":\"28ccdd4f-bf3a-4545-bc8a-d94188f8204f\"}\n[2026-05-07 12:58:10] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"fb59e309-d2cc-4fe0-9db2-544112c25477\",\"trace_id\":\"28ccdd4f-bf3a-4545-bc8a-d94188f8204f\"}\n[2026-05-07 12:58:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"fb59e309-d2cc-4fe0-9db2-544112c25477\",\"trace_id\":\"28ccdd4f-bf3a-4545-bc8a-d94188f8204f\"}\n[2026-05-07 12:58:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"bff14f9f-db1d-4b6c-bd92-ca810b31790a\",\"trace_id\":\"ed08145b-94b8-4585-8e81-0ad478d038dc\"}\n[2026-05-07 12:58:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"bff14f9f-db1d-4b6c-bd92-ca810b31790a\",\"trace_id\":\"ed08145b-94b8-4585-8e81-0ad478d038dc\"}\n[2026-05-07 12:58:16] local.NOTICE: Monitoring start {\"correlation_id\":\"54ed6493-c74e-4491-b2ff-9404528f1525\",\"trace_id\":\"9a1f78c0-6e74-482c-a091-8367df3d0f70\"}\n[2026-05-07 12:58:16] local.NOTICE: Monitoring end {\"correlation_id\":\"54ed6493-c74e-4491-b2ff-9404528f1525\",\"trace_id\":\"9a1f78c0-6e74-482c-a091-8367df3d0f70\"}\n[2026-05-07 12:58:24] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"7f141a32-060d-4123-bf20-8a8d7abc1482\",\"trace_id\":\"f7fdcb6b-932a-4f6b-ad95-f111628d6cf7\"}\n[2026-05-07 12:58:24] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"7f141a32-060d-4123-bf20-8a8d7abc1482\",\"trace_id\":\"f7fdcb6b-932a-4f6b-ad95-f111628d6cf7\"}\n[2026-05-07 12:58:36] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"f586fc15-711b-4199-8fdf-dcd2df95af0c\",\"trace_id\":\"828fb459-3b7f-4196-a690-12fc9ce99b1d\"}\n[2026-05-07 12:58:36] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"f586fc15-711b-4199-8fdf-dcd2df95af0c\",\"trace_id\":\"828fb459-3b7f-4196-a690-12fc9ce99b1d\"}\n[2026-05-07 12:58:37] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"f586fc15-711b-4199-8fdf-dcd2df95af0c\",\"trace_id\":\"828fb459-3b7f-4196-a690-12fc9ce99b1d\"}\n[2026-05-07 12:58:37] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"f586fc15-711b-4199-8fdf-dcd2df95af0c\",\"trace_id\":\"828fb459-3b7f-4196-a690-12fc9ce99b1d\"}\n[2026-05-07 12:58:40] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"01d4e25d-56d5-4c89-bc29-d873e21cc16f\",\"trace_id\":\"ee1fe1ac-362b-47c1-9db2-7915a30cf0f2\"}\n[2026-05-07 12:58:40] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:56:00, 2026-05-07 12:58:00] {\"correlation_id\":\"01d4e25d-56d5-4c89-bc29-d873e21cc16f\",\"trace_id\":\"ee1fe1ac-362b-47c1-9db2-7915a30cf0f2\"}\n[2026-05-07 12:58:40] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:56:00, 2026-05-07 12:58:00] {\"correlation_id\":\"01d4e25d-56d5-4c89-bc29-d873e21cc16f\",\"trace_id\":\"ee1fe1ac-362b-47c1-9db2-7915a30cf0f2\"}\n[2026-05-07 12:58:40] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"01d4e25d-56d5-4c89-bc29-d873e21cc16f\",\"trace_id\":\"ee1fe1ac-362b-47c1-9db2-7915a30cf0f2\"}\n[2026-05-07 12:58:48] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"924e149e-3462-4043-87da-00838220b970\",\"trace_id\":\"7d0922db-8131-4a52-a0c5-2a7a78df42e8\"}\n[2026-05-07 12:58:48] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"calendar:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:48] local.NOTICE: Calendar sync start {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:48] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"924e149e-3462-4043-87da-00838220b970\",\"trace_id\":\"7d0922db-8131-4a52-a0c5-2a7a78df42e8\"}\n[2026-05-07 12:58:49] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1393,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:49] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1393,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:49] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:49] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1393,\"provider\":\"google\",\"refreshToken\":\"5aa7e2d96b53201cd16fca5d2e4ef3ad03320971fc064781d18aee3ae7b99fbf\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1393,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Account has been deleted\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1393,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1387,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1387,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1387,\"provider\":\"google\",\"refreshToken\":\"8157ac6de94842937194009e9c50e459253600f799dacf6a40755ffdbeb5bba6\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1387,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Account has been deleted\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1387,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1348,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1348,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1348,\"provider\":\"google\",\"refreshToken\":\"9e7d13d3032d0cb1b79d8e95aef01383e8e91eb52ff8ee960c8a0b6b95cd8c73\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1348,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Bad Request\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1348,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1361,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1361,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1361,\"provider\":\"google\",\"refreshToken\":\"6c843da199c2b9907445329304fcc4ec5057a4ee748d8299641764395c08e1fd\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1361,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Account has been deleted\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1361,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1310,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1310,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1310,\"provider\":\"google\",\"refreshToken\":\"e34818922c2830a660813a63f6169a4a9a992ae2cccd7dc8dd7796cfdb470ef1\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1310,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Bad Request\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1310,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1333,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1333,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1333,\"provider\":\"google\",\"refreshToken\":\"6c902986546d8e8da1dc539b046cdc1d458f519acc972e5b5f1d6a1a295165e0\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1333,\"provider\":\"google\",\"responseBody\":{\"error\":\"unauthorized_client\",\"error_description\":\"Unauthorized\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1333,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1368,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1368,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1368,\"provider\":\"google\",\"refreshToken\":\"d2f128898ff8543bd16b69cfae37896ab85119b0f5ed2b431d739593bb600333\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1368,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Bad Request\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1368,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1365,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1365,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1365,\"provider\":\"google\",\"refreshToken\":\"7676e4a9afcd082b413248ab5ec6e487021fec6a9bdf315860a59cefad9caad8\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1365,\"provider\":\"google\",\"responseBody\":{\"error\":\"unauthorized_client\",\"error_description\":\"Unauthorized\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1365,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1364,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1364,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1364,\"provider\":\"google\",\"refreshToken\":\"dd5882ebce76e645292ce33ae74238abbb77c0a4ecc6a2bfe723cad82e72ba8e\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1364,\"provider\":\"google\",\"responseBody\":{\"error\":\"unauthorized_client\",\"error_description\":\"Unauthorized\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1364,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1370,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1370,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1370,\"provider\":\"office\",\"refreshToken\":\"b7ee8035306d0043cea6e00e7c4fe14f745e44074a1194db62a31cdf8b70af3e\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1370,\"provider\":\"office\",\"responseBody\":\"{\\\"error\\\":\\\"invalid_client\\\",\\\"error_description\\\":\\\"AADSTS7000215: Invalid client secret provided. Ensure the secret being sent in the request is the client secret value, not the client secret ID, for a secret added to app 'bbcbb2ef-6200-4fae-82bd-d81f5dd738da'. Trace ID: ef9bb388-453e-4744-a2e1-95e49ced1700 Correlation ID: 3b889c73-f943-4048-ba3b-63ac50581245 Timestamp: 2026-05-07 12:58:53Z\\\",\\\"error_codes\\\":[7000215],\\\"timestamp\\\":\\\"2026-05-07 12:58:53Z\\\",\\\"trace_id\\\":\\\"ef9bb388-453e-4744-a2e1-95e49ced1700\\\",\\\"correlation_id\\\":\\\"3b889c73-f943-4048-ba3b-63ac50581245\\\",\\\"error_uri\\\":\\\"https://login.microsoftonline.com/error?code=7000215\\\"}\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1370,\"provider\":\"office\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1202,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1202,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1202,\"provider\":\"office\",\"refreshToken\":\"b458799ccc29b21a6e2eb5260fdb63e49ccba21bf942a3973fb63799bd7f0afe\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1202,\"provider\":\"office\",\"responseBody\":\"{\\\"error\\\":\\\"invalid_client\\\",\\\"error_description\\\":\\\"AADSTS7000215: Invalid client secret provided. Ensure the secret being sent in the request is the client secret value, not the client secret ID, for a secret added to app 'bbcbb2ef-6200-4fae-82bd-d81f5dd738da'. Trace ID: 0b8181c0-c858-4d17-af69-c23b7f5a0a00 Correlation ID: 2ce9e931-f423-4048-b1d7-ae1910cd4834 Timestamp: 2026-05-07 12:58:54Z\\\",\\\"error_codes\\\":[7000215],\\\"timestamp\\\":\\\"2026-05-07 12:58:54Z\\\",\\\"trace_id\\\":\\\"0b8181c0-c858-4d17-af69-c23b7f5a0a00\\\",\\\"correlation_id\\\":\\\"2ce9e931-f423-4048-b1d7-ae1910cd4834\\\",\\\"error_uri\\\":\\\"https://login.microsoftonline.com/error?code=7000215\\\"}\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1202,\"provider\":\"office\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1502,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1502,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: Calendar sync job dispatched {\"calendar_id\":501} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1300,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1300,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1300,\"provider\":\"google\",\"refreshToken\":\"4b811db0725fd9602a95943519a7da935e2a5065da7d9ebfcb170752e3e1ddb8\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1300,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Account has been deleted\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1300,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1409,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1409,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1409,\"provider\":\"google\",\"refreshToken\":\"e2a3f2d06894894eed1ee87d9db1ace77d4d42ee6e1288a8940ad2c10333b0c4\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1409,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Bad Request\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1409,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1352,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1352,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1352,\"provider\":\"google\",\"refreshToken\":\"dd4b16b00fdc1216da6b717c02338c073636e29162826b2de6db3f064fc029eb\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1352,\"provider\":\"google\",\"responseBody\":{\"error\":\"unauthorized_client\",\"error_description\":\"Unauthorized\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1352,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1296,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1296,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1296,\"provider\":\"office\",\"refreshToken\":\"011ae723c9d800c674e0b4be76f49fc046dac7d501b66c59ef0d9549cfa56ae5\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1296,\"provider\":\"office\",\"responseBody\":\"{\\\"error\\\":\\\"invalid_client\\\",\\\"error_description\\\":\\\"AADSTS7000215: Invalid client secret provided. Ensure the secret being sent in the request is the client secret value, not the client secret ID, for a secret added to app 'bbcbb2ef-6200-4fae-82bd-d81f5dd738da'. Trace ID: 4f38b1ca-479e-445c-8db5-29366d0a0c00 Correlation ID: d0a4d623-1a23-4fcc-aebf-ccafeed44a92 Timestamp: 2026-05-07 12:58:56Z\\\",\\\"error_codes\\\":[7000215],\\\"timestamp\\\":\\\"2026-05-07 12:58:56Z\\\",\\\"trace_id\\\":\\\"4f38b1ca-479e-445c-8db5-29366d0a0c00\\\",\\\"correlation_id\\\":\\\"d0a4d623-1a23-4fcc-aebf-ccafeed44a92\\\",\\\"error_uri\\\":\\\"https://login.microsoftonline.com/error?code=7000215\\\"}\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1296,\"provider\":\"office\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":391,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":391,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":391,\"provider\":\"office\",\"refreshToken\":\"00045eebae0f39b34887c6d53f92ae78064f7145e1f4b67754aebd03cfb2d881\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1502,\"provider\":\"google\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1502,\"provider\":\"google\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [Calendar] Processing sync {\"calendarId\":\"a33076c1-8d97-431a-99f0-85c9524e118b\",\"from\":null,\"to\":null,\"delta\":\"CIiFh8TP44kDEIiFh8TP44kDGAUgkZvkzgIokZvkzgI=\",\"last_sync\":\"2024-12-09 07:12:53\",\"dateMode\":\"daily\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"integration-app\",\"crm_owner\":1695,\"team_id\":3143} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1502,\"provider\":\"google\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1502,\"provider\":\"google\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":391,\"provider\":\"office\",\"responseBody\":\"{\\\"error\\\":\\\"invalid_client\\\",\\\"error_description\\\":\\\"AADSTS7000215: Invalid client secret provided. Ensure the secret being sent in the request is the client secret value, not the client secret ID, for a secret added to app 'bbcbb2ef-6200-4fae-82bd-d81f5dd738da'. Trace ID: 1791a948-a974-424b-9246-7fedfa913b00 Correlation ID: b0e7bf62-d69e-49dd-b7c9-9550f0bd2aec Timestamp: 2026-05-07 12:58:56Z\\\",\\\"error_codes\\\":[7000215],\\\"timestamp\\\":\\\"2026-05-07 12:58:56Z\\\",\\\"trace_id\\\":\\\"1791a948-a974-424b-9246-7fedfa913b00\\\",\\\"correlation_id\\\":\\\"b0e7bf62-d69e-49dd-b7c9-9550f0bd2aec\\\",\\\"error_uri\\\":\\\"https://login.microsoftonline.com/error?code=7000215\\\"}\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":391,\"provider\":\"office\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1271,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1271,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1271,\"provider\":\"office\",\"refreshToken\":\"118cde2c06993147b07ccaec4cbcd5026a819dea6c71081166a492933e392afb\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [Google Calendar] Failed to watch channel for calendar {\"calendarId\":\"a33076c1-8d97-431a-99f0-85c9524e118b\",\"code\":400,\"reason\":\"{\n \\\"error\\\": {\n \\\"errors\\\": [\n {\n \\\"domain\\\": \\\"global\\\",\n \\\"reason\\\": \\\"push.webhookUrlNotHttps\\\",\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n ],\n \\\"code\\\": 400,\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n}\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.WARNING: [Calendar] Sync failed {\"calendarId\":\"a33076c1-8d97-431a-99f0-85c9524e118b\",\"code\":400,\"reason\":\"{\n \\\"error\\\": {\n \\\"errors\\\": [\n {\n \\\"domain\\\": \\\"global\\\",\n \\\"reason\\\": \\\"push.webhookUrlNotHttps\\\",\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n ],\n \\\"code\\\": 400,\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n}\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1271,\"provider\":\"office\",\"responseBody\":\"{\\\"error\\\":\\\"invalid_client\\\",\\\"error_description\\\":\\\"AADSTS7000215: Invalid client secret provided. Ensure the secret being sent in the request is the client secret value, not the client secret ID, for a secret added to app 'bbcbb2ef-6200-4fae-82bd-d81f5dd738da'. Trace ID: 2be27598-8820-475c-b6ca-a30513720c00 Correlation ID: d3ed2a98-4aa9-4a63-819b-d36fd20b8d62 Timestamp: 2026-05-07 12:58:57Z\\\",\\\"error_codes\\\":[7000215],\\\"timestamp\\\":\\\"2026-05-07 12:58:57Z\\\",\\\"trace_id\\\":\\\"2be27598-8820-475c-b6ca-a30513720c00\\\",\\\"correlation_id\\\":\\\"d3ed2a98-4aa9-4a63-819b-d36fd20b8d62\\\",\\\"error_uri\\\":\\\"https://login.microsoftonline.com/error?code=7000215\\\"}\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1271,\"provider\":\"office\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1351,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1351,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1351,\"provider\":\"google\",\"refreshToken\":\"4271d15b9e60a606439caddc68337f783e472c85b03dacff14d1b6dfded9051c\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1351,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Bad Request\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1351,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1366,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1366,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1366,\"provider\":\"google\",\"refreshToken\":\"ae21385059b2eebfd43f68aecd56eccd702a1aabb6598f1f7ab594ed8af491b4\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1366,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Bad Request\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1366,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1115,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1115,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: Calendar sync job dispatched {\"calendar_id\":378} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:58] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1421,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:58] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1421,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:58] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:58] local.INFO: Calendar sync job dispatched {\"calendar_id\":504} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:58] local.NOTICE: Calendar sync end {\"retrieved_calendars\":31,\"processed_calendars\":3} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:58] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"calendar:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1115,\"provider\":\"google\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1115,\"provider\":\"google\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [Calendar] Processing sync {\"calendarId\":\"2676cb6d-f86c-427e-bf78-591e388e3c1e\",\"from\":null,\"to\":null,\"delta\":\"CJ_x49O3jpIDEJ_x49O3jpIDGAUgw67KlwMow67KlwM=\",\"last_sync\":\"2026-01-19 07:48:40\",\"dateMode\":\"daily\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.WARNING: [Pipedrive] Account not connected for user {\"userId\":\"e6538737-e7b4-455f-a37a-3e79b665a220\",\"account\":{\"Jiminny\\\\Models\\\\SocialAccount\":{\"id\":1116,\"sociable_id\":241,\"provider_user_id\":\"19555731\",\"expires\":1775683749,\"refresh_token_expires\":null,\"provider\":\"pipedrive\",\"state\":\"full-refresh\",\"auth_scope\":\"base,deals:full,activities:full,contacts:full,search:read\",\"retry_after\":null,\"created_at\":\"2023-09-08 09:44:29\",\"updated_at\":\"2026-04-08 22:58:34\"}}} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {\"crm_provider\":\"pipedrive\",\"crm_owner\":241,\"team_id\":19} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {\"crm_provider\":\"pipedrive\",\"team_id\":19} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {\"crm_provider\":\"pipedrive\",\"team_id\":19} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.WARNING: [Calendar] CRM disconnected for user so events will not be matched {\"provider\":\"pipedrive\",\"user_id\":241,\"message\":\"Your Pipedrive account has become disconnected. Please login to Jiminny to reconnect.\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1115,\"provider\":\"google\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1115,\"provider\":\"google\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [Google Calendar] Failed to watch channel for calendar {\"calendarId\":\"2676cb6d-f86c-427e-bf78-591e388e3c1e\",\"code\":400,\"reason\":\"{\n \\\"error\\\": {\n \\\"errors\\\": [\n {\n \\\"domain\\\": \\\"global\\\",\n \\\"reason\\\": \\\"push.webhookUrlNotHttps\\\",\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n ],\n \\\"code\\\": 400,\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n}\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.WARNING: [Calendar] Sync failed {\"calendarId\":\"2676cb6d-f86c-427e-bf78-591e388e3c1e\",\"code\":400,\"reason\":\"{\n \\\"error\\\": {\n \\\"errors\\\": [\n {\n \\\"domain\\\": \\\"global\\\",\n \\\"reason\\\": \\\"push.webhookUrlNotHttps\\\",\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n ],\n \\\"code\\\": 400,\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n}\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1421,\"provider\":\"office\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1421,\"provider\":\"office\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [Calendar] Processing sync {\"calendarId\":\"9e8b1a2c-1a8f-42bd-b161-810fc0baf540\",\"from\":null,\"to\":null,\"delta\":\"R0usmcdvmMuZCBYV0hguCHhwR3crxfEuMI8zGlf-bMYpCFtdxXvSJWTlnqQvu_jjoOrOYL2VG9rZwFHCERHxGfGEK3CmQX6x8MJG3ZbBXGuVIS6C7u-doY5maMRdsfnrHIAEMJd4Bs_WMfMH4tDJ8j9aul7DHDEJaP7w0PoPPpcoxu4nEk4vk-MolJBEgkSrayEewuBs5JVItUX9lUY2tA.yO2roNQ4Vdm6hBgoutuphGchuzbvsk7aqt5wHfcyeFQ\",\"last_sync\":\"2026-05-06 15:58:35\",\"dateMode\":\"daily\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":89,\"team_id\":2} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [MS Office Calendar] Skipping delta sync for daily mode {\"calendarId\":\"9e8b1a2c-1a8f-42bd-b161-810fc0baf540\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:59:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"cb5f9d32-02db-4883-a5c9-a5b86c1a2fbb\",\"trace_id\":\"4fb8a9a0-53b1-414a-813d-a259b89f3203\"}\n[2026-05-07 12:59:06] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"cb5f9d32-02db-4883-a5c9-a5b86c1a2fbb\",\"trace_id\":\"4fb8a9a0-53b1-414a-813d-a259b89f3203\"}\n[2026-05-07 12:59:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"cb5f9d32-02db-4883-a5c9-a5b86c1a2fbb\",\"trace_id\":\"4fb8a9a0-53b1-414a-813d-a259b89f3203\"}\n[2026-05-07 12:59:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"64313a2b-3a92-4419-ae59-caabfc9e9731\",\"trace_id\":\"16443bac-2196-4257-88bc-59445729f276\"}\n[2026-05-07 12:59:09] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"64313a2b-3a92-4419-ae59-caabfc9e9731\",\"trace_id\":\"16443bac-2196-4257-88bc-59445729f276\"}\n[2026-05-07 12:59:11] local.NOTICE: Monitoring start {\"correlation_id\":\"7678c2ca-049f-44e4-acce-2e711f8d7d40\",\"trace_id\":\"54ef3d3c-f1ea-4a01-aed2-db19a6739a06\"}\n[2026-05-07 12:59:11] local.NOTICE: Monitoring end {\"correlation_id\":\"7678c2ca-049f-44e4-acce-2e711f8d7d40\",\"trace_id\":\"54ef3d3c-f1ea-4a01-aed2-db19a6739a06\"}\n[2026-05-07 12:59:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"44d7c1a1-dfc9-4401-9f63-ad8b5bff9942\",\"trace_id\":\"9f6f5f38-60f5-4869-bfd2-f366d52eaa00\"}\n[2026-05-07 12:59:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"44d7c1a1-dfc9-4401-9f63-ad8b5bff9942\",\"trace_id\":\"9f6f5f38-60f5-4869-bfd2-f366d52eaa00\"}\n[2026-05-07 12:59:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"f90f3b8c-5161-4963-a963-a40284567af1\",\"trace_id\":\"94731c50-8ce2-44ec-ace6-2d46fb00fdb1\"}\n[2026-05-07 12:59:15] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"f90f3b8c-5161-4963-a963-a40284567af1\",\"trace_id\":\"94731c50-8ce2-44ec-ace6-2d46fb00fdb1\"}\n[2026-05-07 12:59:15] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"f90f3b8c-5161-4963-a963-a40284567af1\",\"trace_id\":\"94731c50-8ce2-44ec-ace6-2d46fb00fdb1\"}\n[2026-05-07 12:59:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"f90f3b8c-5161-4963-a963-a40284567af1\",\"trace_id\":\"94731c50-8ce2-44ec-ace6-2d46fb00fdb1\"}\n[2026-05-07 13:00:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"6f98d5e3-0aa8-496e-853a-a77b7a8b74ec\",\"trace_id\":\"b63e8546-4347-49f0-ad1a-92f4e4504843\"}\n[2026-05-07 13:00:10] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"6f98d5e3-0aa8-496e-853a-a77b7a8b74ec\",\"trace_id\":\"b63e8546-4347-49f0-ad1a-92f4e4504843\"}\n[2026-05-07 13:00:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"6f98d5e3-0aa8-496e-853a-a77b7a8b74ec\",\"trace_id\":\"b63e8546-4347-49f0-ad1a-92f4e4504843\"}\n[2026-05-07 13:00:13] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"50260ccd-f119-47b0-baee-514de27801f2\",\"trace_id\":\"40e651df-62f6-4c3a-83ab-842112ec3ece\"}\n[2026-05-07 13:00:13] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"50260ccd-f119-47b0-baee-514de27801f2\",\"trace_id\":\"40e651df-62f6-4c3a-83ab-842112ec3ece\"}\n[2026-05-07 13:00:17] local.NOTICE: Monitoring start {\"correlation_id\":\"f6104856-aca3-4e7b-964e-bba66d730eb3\",\"trace_id\":\"98f34b7b-f715-49cb-8d3a-4e74c1118445\"}\n[2026-05-07 13:00:17] local.NOTICE: Monitoring end {\"correlation_id\":\"f6104856-aca3-4e7b-964e-bba66d730eb3\",\"trace_id\":\"98f34b7b-f715-49cb-8d3a-4e74c1118445\"}\n[2026-05-07 13:00:19] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"b4a9e9a2-968c-429b-8fa8-67dd59bb297f\",\"trace_id\":\"ed6a83d0-8edb-4392-8717-26d91ffde80b\"}\n[2026-05-07 13:00:19] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"b4a9e9a2-968c-429b-8fa8-67dd59bb297f\",\"trace_id\":\"ed6a83d0-8edb-4392-8717-26d91ffde80b\"}\n[2026-05-07 13:00:21] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"b11474b2-8b19-4a2f-89c3-621fde9d3b1f\",\"trace_id\":\"8018d825-0809-411b-9b2a-078e2da6bacb\"}\n[2026-05-07 13:00:21] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"b11474b2-8b19-4a2f-89c3-621fde9d3b1f\",\"trace_id\":\"8018d825-0809-411b-9b2a-078e2da6bacb\"}\n[2026-05-07 13:00:21] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"b11474b2-8b19-4a2f-89c3-621fde9d3b1f\",\"trace_id\":\"8018d825-0809-411b-9b2a-078e2da6bacb\"}\n[2026-05-07 13:00:21] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"b11474b2-8b19-4a2f-89c3-621fde9d3b1f\",\"trace_id\":\"8018d825-0809-411b-9b2a-078e2da6bacb\"}\n[2026-05-07 13:00:23] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"d3b79f58-f9c8-4063-ac7e-7a0445cd1111\",\"trace_id\":\"802cf505-95fb-4f92-8c1b-79aa3ac53084\"}\n[2026-05-07 13:00:23] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:58:00, 2026-05-07 13:00:00] {\"correlation_id\":\"d3b79f58-f9c8-4063-ac7e-7a0445cd1111\",\"trace_id\":\"802cf505-95fb-4f92-8c1b-79aa3ac53084\"}\n[2026-05-07 13:00:23] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:58:00, 2026-05-07 13:00:00] {\"correlation_id\":\"d3b79f58-f9c8-4063-ac7e-7a0445cd1111\",\"trace_id\":\"802cf505-95fb-4f92-8c1b-79aa3ac53084\"}\n[2026-05-07 13:00:23] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"d3b79f58-f9c8-4063-ac7e-7a0445cd1111\",\"trace_id\":\"802cf505-95fb-4f92-8c1b-79aa3ac53084\"}\n[2026-05-07 13:00:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:purge-stale\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"32bad9c1-861c-4a46-bece-585cc1170bfd\",\"trace_id\":\"0c20e20f-6a91-4346-9455-5cd1451c32a1\"}\n[2026-05-07 13:00:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:purge-stale\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"32bad9c1-861c-4a46-bece-585cc1170bfd\",\"trace_id\":\"0c20e20f-6a91-4346-9455-5cd1451c32a1\"}\n[2026-05-07 13:00:29] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:text-relay:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"c9d4f687-1643-431e-9377-2573a2e593fd\",\"trace_id\":\"02fab433-9c9a-49f7-b836-2b8a42551912\"}\n[2026-05-07 13:00:30] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:text-relay:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"c9d4f687-1643-431e-9377-2573a2e593fd\",\"trace_id\":\"02fab433-9c9a-49f7-b836-2b8a42551912\"}\n[2026-05-07 13:00:33] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:pre-meeting-notification\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"57870bb4-45e8-47d8-b192-21d3297d2208\",\"trace_id\":\"ba8e9eac-2dc9-4ed8-bbf1-4a35aedb9efb\"}\n[2026-05-07 13:00:33] local.INFO: Running pre-meeting notification command {\"correlation_id\":\"57870bb4-45e8-47d8-b192-21d3297d2208\",\"trace_id\":\"ba8e9eac-2dc9-4ed8-bbf1-4a35aedb9efb\"}\n[2026-05-07 13:00:33] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:pre-meeting-notification\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"57870bb4-45e8-47d8-b192-21d3297d2208\",\"trace_id\":\"ba8e9eac-2dc9-4ed8-bbf1-4a35aedb9efb\"}\n[2026-05-07 13:00:35] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:start\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"6aeb181b-8314-4d45-aff7-e378793b04d9\",\"trace_id\":\"8ffc66f1-af64-4a58-8ce8-481b3a299dbb\"}\n[2026-05-07 13:00:35] local.INFO: Running conference:monitor:start command for activities in (2026-05-07 12:50:00, 2026-05-07 12:55:00] {\"correlation_id\":\"6aeb181b-8314-4d45-aff7-e378793b04d9\",\"trace_id\":\"8ffc66f1-af64-4a58-8ce8-481b3a299dbb\"}\n[2026-05-07 13:00:35] local.INFO: [conference:monitor:start] No activities found in (2026-05-07 12:50:00, 2026-05-07 12:55:00] {\"correlation_id\":\"6aeb181b-8314-4d45-aff7-e378793b04d9\",\"trace_id\":\"8ffc66f1-af64-4a58-8ce8-481b3a299dbb\"}\n[2026-05-07 13:00:35] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:start\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"6aeb181b-8314-4d45-aff7-e378793b04d9\",\"trace_id\":\"8ffc66f1-af64-4a58-8ce8-481b3a299dbb\"}\n[2026-05-07 13:00:37] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:end\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"888d4f67-ad14-4457-b51d-2cf8b2d315f9\",\"trace_id\":\"eaf4b0b3-0414-4563-b227-ce9c6a2e5b7e\"}\n[2026-05-07 13:00:37] local.INFO: conference:monitor:end:Jiminny\\Console\\Commands\\Activities\\MonitorMeetingEndCommand::logActivitiesEnded {\"from\":\"12:55\",\"to\":\"13:00\"} {\"correlation_id\":\"888d4f67-ad14-4457-b51d-2cf8b2d315f9\",\"trace_id\":\"eaf4b0b3-0414-4563-b227-ce9c6a2e5b7e\"}\n[2026-05-07 13:00:37] local.INFO: conference:monitor:end:Jiminny\\Console\\Commands\\Activities\\MonitorMeetingEndCommand::logActivitiesWithUnfinishedSession {\"from\":\"02:50\",\"to\":\"02:55\"} {\"correlation_id\":\"888d4f67-ad14-4457-b51d-2cf8b2d315f9\",\"trace_id\":\"eaf4b0b3-0414-4563-b227-ce9c6a2e5b7e\"}\n[2026-05-07 13:00:37] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:end\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"888d4f67-ad14-4457-b51d-2cf8b2d315f9\",\"trace_id\":\"eaf4b0b3-0414-4563-b227-ce9c6a2e5b7e\"}\n[2026-05-07 13:00:39] local.NOTICE: Repairing HubSpot tokens start {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:39] local.INFO: Trying to refresh HubSpot token {\"account_id\":59,\"updated_at\":\"2025-10-03 09:32:05\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:39] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:39] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":59,\"provider\":\"hubspot\",\"refreshToken\":\"97b78f6e2cc49965c00c2492b602b02708b1392551e6b3f113fbaa48992af90b\",\"state\":\"full-refresh\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:39] local.ERROR: Failed to refresh HubSpot token {\"account_id\":59,\"updated_at\":\"2025-10-03 09:32:05\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:39] local.INFO: Trying to refresh HubSpot token {\"account_id\":306,\"updated_at\":\"2023-11-27 09:30:03\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:39] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:39] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":306,\"provider\":\"hubspot\",\"refreshToken\":\"6fa6aa8cc641d131231acc3470f5c03cb3b07b2e580fb18f8acb3b1dbb72549b\",\"state\":\"full-refresh\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:40] local.ERROR: Failed to refresh HubSpot token {\"account_id\":306,\"updated_at\":\"2023-11-27 09:30:03\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:40] local.INFO: Trying to refresh HubSpot token {\"account_id\":1372,\"updated_at\":\"2025-10-02 14:47:06\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:40] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:40] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1372,\"provider\":\"hubspot\",\"refreshToken\":\"9aa73948c761da29dce46c177cf9aee1fde483a44169ca38723f9f0597d7a8c4\",\"state\":\"full-refresh\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:40] local.ERROR: Failed to refresh HubSpot token {\"account_id\":1372,\"updated_at\":\"2025-10-02 14:47:06\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:40] local.NOTICE: Repairing HubSpot tokens end {\"total\":3,\"fixed\":0,\"failed\":3} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:45] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"jiminny:transcription:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"b619cc55-b4ef-4913-ab44-6bce51933f7e\",\"trace_id\":\"7cacb418-6e9c-410b-bf3a-15bdf1837908\"}\n[2026-05-07 13:00:45] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:pre-meeting-reminder\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"a765990f-ffe2-44e0-967f-816f5452ce69\",\"trace_id\":\"9aee0f3f-7668-455f-b207-181b58848478\"}\n[2026-05-07 13:00:45] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"jiminny:transcription:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"b619cc55-b4ef-4913-ab44-6bce51933f7e\",\"trace_id\":\"7cacb418-6e9c-410b-bf3a-15bdf1837908\"}\n[2026-05-07 13:00:45] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:45] local.INFO: [HubSpot Journal Command] Starting polling service {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:45] local.INFO: [HubSpot Journal Polling] Service starting {\"memory_limit\":\"256M\",\"max_execution_time\":\"0\",\"initial_memory_mb\":62.0} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:45] local.INFO: [HubSpot Journal Polling] Acquired polling lock {\"expires_at\":\"2026-05-07T13:02:45.724437Z\"} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:45] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:45] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:45] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:pre-meeting-reminder\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"a765990f-ffe2-44e0-967f-816f5452ce69\",\"trace_id\":\"9aee0f3f-7668-455f-b207-181b58848478\"}\n[2026-05-07 13:00:45] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:49] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"crm:reset-governor\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"055b4798-a759-4621-9e0b-652f8ee69ea1\",\"trace_id\":\"10911ef4-48d1-404a-9345-ecf0f5cb9977\"}\n[2026-05-07 13:00:49] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"crm:reset-governor\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"055b4798-a759-4621-9e0b-652f8ee69ea1\",\"trace_id\":\"10911ef4-48d1-404a-9345-ecf0f5cb9977\"}\n[2026-05-07 13:00:51] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:51] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:51] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:53] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:53] local.INFO: Dispatching activity sync job {\"import_id\":812331,\"provider\":\"twilio-flex\",\"team\":\"jiminny\"} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:53] local.INFO: Dispatching activity sync job {\"import_id\":812332,\"provider\":\"xant\",\"team\":\"jiminny\"} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:53] local.INFO: Dispatching activity sync job {\"import_id\":812333,\"provider\":\"apollo\",\"team\":\"jiminny\"} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:53] local.INFO: Dispatching activity sync job {\"import_id\":812334,\"provider\":\"groove\",\"team\":\"jiminny\"} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:53] local.INFO: Dispatching activity sync job {\"import_id\":812335,\"provider\":\"twilio-video\",\"team\":\"jiminny\"} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:53] local.INFO: Dispatching activity sync job {\"import_id\":812336,\"provider\":\"hubspot\",\"team\":\"hubspot\"} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:53] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.WARNING: [Salesforce] Account not connected for user {\"userId\":\"cdf8b554-d951-4758-bc2b-c1b85d1cd0b9\",\"account\":null} {\"correlation_id\":\"fb068e24-e135-4914-9973-94f1a0f5dae2\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {\"crm_provider\":\"salesforce\",\"crm_owner\":3,\"team_id\":1} {\"correlation_id\":\"fb068e24-e135-4914-9973-94f1a0f5dae2\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {\"crm_provider\":\"salesforce\",\"team_id\":1} {\"correlation_id\":\"fb068e24-e135-4914-9973-94f1a0f5dae2\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {\"crm_provider\":\"salesforce\",\"team_id\":1} {\"correlation_id\":\"fb068e24-e135-4914-9973-94f1a0f5dae2\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.ALERT: [SyncActivity] Failed {\"import_id\":812331,\"provider\":\"twilio-flex\",\"provider_id\":317,\"team\":\"jiminny\",\"team_id\":1,\"reason\":\"Social account for Salesforce cannot be found. Please login to Jiminny to connect.\",\"file\":\"/home/jiminny/app/Services/Crm/BaseService.php\",\"line\":646} {\"correlation_id\":\"fb068e24-e135-4914-9973-94f1a0f5dae2\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"fe9470d4-bc5a-4195-919d-e4908e439f7c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"fe9470d4-bc5a-4195-919d-e4908e439f7c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"fe9470d4-bc5a-4195-919d-e4908e439f7c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:56] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:56] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:56] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:56] local.ALERT: [SyncActivity] Failed {\"import_id\":812332,\"provider\":\"xant\",\"provider_id\":161,\"team\":\"jiminny\",\"team_id\":1,\"reason\":\"Activity Provider account not connected.\",\"file\":\"/home/jiminny/app/Services/Activity/ActivityProviderService.php\",\"line\":174} {\"correlation_id\":\"fe9470d4-bc5a-4195-919d-e4908e439f7c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:56] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"e3a8ef92-20c7-4698-a07d-1aa2c21ac82c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:56] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"e3a8ef92-20c7-4698-a07d-1aa2c21ac82c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:56] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"e3a8ef92-20c7-4698-a07d-1aa2c21ac82c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:56] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:fail-stalled\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"441dabbc-0c1f-4d49-871c-08f96adbed01\",\"trace_id\":\"13597461-50ff-4a40-a329-255430126395\"}\n[2026-05-07 13:00:56] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:fail-stalled\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"441dabbc-0c1f-4d49-871c-08f96adbed01\",\"trace_id\":\"13597461-50ff-4a40-a329-255430126395\"}\n[2026-05-07 13:00:57] local.ALERT: [SyncActivity] Failed {\"import_id\":812333,\"provider\":\"apollo\",\"provider_id\":441,\"team\":\"jiminny\",\"team_id\":1,\"reason\":\"Activity Provider account not connected.\",\"file\":\"/home/jiminny/app/Services/Activity/ActivityProviderService.php\",\"line\":174} {\"correlation_id\":\"e3a8ef92-20c7-4698-a07d-1aa2c21ac82c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:57] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"1a0b64ee-3927-48e6-8ae3-fda14f35babb\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:57] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"1a0b64ee-3927-48e6-8ae3-fda14f35babb\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:57] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"1a0b64ee-3927-48e6-8ae3-fda14f35babb\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:57] local.ALERT: [SyncActivity] Failed {\"import_id\":812334,\"provider\":\"groove\",\"provider_id\":228,\"team\":\"jiminny\",\"team_id\":1,\"reason\":\"Activity Provider account not connected.\",\"file\":\"/home/jiminny/app/Services/Activity/ActivityProviderService.php\",\"line\":174} {\"correlation_id\":\"1a0b64ee-3927-48e6-8ae3-fda14f35babb\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:57] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"5e6fecb1-9905-4ab2-a494-e6d8215430c0\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:57] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"5e6fecb1-9905-4ab2-a494-e6d8215430c0\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:57] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"5e6fecb1-9905-4ab2-a494-e6d8215430c0\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.ALERT: [SyncActivity] Failed {\"import_id\":812335,\"provider\":\"twilio-video\",\"provider_id\":243,\"team\":\"jiminny\",\"team_id\":1,\"reason\":\"Activity Provider account not connected.\",\"file\":\"/home/jiminny/app/Services/Activity/ActivityProviderService.php\",\"line\":174} {\"correlation_id\":\"5e6fecb1-9905-4ab2-a494-e6d8215430c0\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":89,\"team_id\":2} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":408,\"provider\":\"hubspot\"} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":408,\"provider\":\"hubspot\"} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [SyncActivity] Start {\"import_id\":812336,\"provider\":\"hubspot\",\"provider_id\":31,\"team\":\"hubspot\",\"team_id\":2} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [HubSpot] Search calls for period {\"from\":\"2026-05-07 12:44:00\",\"to\":\"2026-05-07 13:00:00\"} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [SyncActivity] End {\"import_id\":812336,\"provider\":\"hubspot\",\"provider_id\":31,\"team\":\"hubspot\",\"team_id\":2} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [SyncActivity] Memory usage {\"import_id\":812336,\"provider\":\"hubspot\",\"provider_id\":31,\"team\":\"hubspot\",\"team_id\":2,\"memory_usage\":27230632,\"memory_real_usage\":67108864,\"pid\":37116} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:59] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"jiminny:transcription:retry-stuck\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"1db560c5-5d8c-419a-bfb0-e761473ecf44\",\"trace_id\":\"79eb494e-fd21-4171-b59d-d7d47358f1fb\"}\n[2026-05-07 13:00:59] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"jiminny:transcription:retry-stuck\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"1db560c5-5d8c-419a-bfb0-e761473ecf44\",\"trace_id\":\"79eb494e-fd21-4171-b59d-d7d47358f1fb\"}\n[2026-05-07 13:01:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"73c0e9d6-7ef5-4040-8e35-0a9bb4028abf\",\"trace_id\":\"55b51c26-06b9-4b59-b444-53017b805b30\"}\n[2026-05-07 13:01:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"73c0e9d6-7ef5-4040-8e35-0a9bb4028abf\",\"trace_id\":\"55b51c26-06b9-4b59-b444-53017b805b30\"}\n[2026-05-07 13:01:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"5a7e717c-f314-4601-b1b8-fd550703f463\",\"trace_id\":\"a64281e5-027f-4856-a3e3-4f176c58eb6e\"}\n[2026-05-07 13:01:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"5a7e717c-f314-4601-b1b8-fd550703f463\",\"trace_id\":\"a64281e5-027f-4856-a3e3-4f176c58eb6e\"}\n[2026-05-07 13:01:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"0c425954-2696-4890-97b7-219ccc38cf46\",\"trace_id\":\"d609b364-f3b6-4b85-babb-67caf96efdb1\"}\n[2026-05-07 13:01:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"0c425954-2696-4890-97b7-219ccc38cf46\",\"trace_id\":\"d609b364-f3b6-4b85-babb-67caf96efdb1\"}\n[2026-05-07 13:01:11] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:11] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:11] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"a6bad97b-3db2-4dd6-839f-fcd485f06e65\",\"trace_id\":\"dcdde4a9-962c-46d1-9386-42adb54efbbf\"}\n[2026-05-07 13:01:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"a6bad97b-3db2-4dd6-839f-fcd485f06e65\",\"trace_id\":\"dcdde4a9-962c-46d1-9386-42adb54efbbf\"}\n[2026-05-07 13:01:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"2893478e-8c43-4719-a2e8-7c9c0e0783e9\",\"trace_id\":\"3fc8f1f0-0727-42f1-8ee6-f2b32bd8834b\"}\n[2026-05-07 13:01:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"2893478e-8c43-4719-a2e8-7c9c0e0783e9\",\"trace_id\":\"3fc8f1f0-0727-42f1-8ee6-f2b32bd8834b\"}\n[2026-05-07 13:01:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"64f52ca1-b54e-46da-a760-73dbdf407eaf\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:17] local.INFO: Dispatching activity sync job {\"import_id\":812337,\"provider\":\"hubspot\",\"team\":\"hubspot\"} {\"correlation_id\":\"64f52ca1-b54e-46da-a760-73dbdf407eaf\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"64f52ca1-b54e-46da-a760-73dbdf407eaf\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"crm:bullhorn:ping\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"3c44e0a7-ec5d-4206-a925-69f6e0783c2a\",\"trace_id\":\"60cf7a36-37ca-4ac4-a632-f317578d908f\"}\n[2026-05-07 13:01:19] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"crm:bullhorn:ping\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"3c44e0a7-ec5d-4206-a925-69f6e0783c2a\",\"trace_id\":\"60cf7a36-37ca-4ac4-a632-f317578d908f\"}\n[2026-05-07 13:01:19] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":89,\"team_id\":2} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":408,\"provider\":\"hubspot\"} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":408,\"provider\":\"hubspot\"} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [SyncActivity] Start {\"import_id\":812337,\"provider\":\"hubspot\",\"provider_id\":31,\"team\":\"hubspot\",\"team_id\":2} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [HubSpot] Search calls for period {\"from\":\"2026-05-07 12:00:00\",\"to\":\"2026-05-07 13:00:00\"} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:20] local.INFO: [SyncActivity] End {\"import_id\":812337,\"provider\":\"hubspot\",\"provider_id\":31,\"team\":\"hubspot\",\"team_id\":2} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:20] local.INFO: [SyncActivity] Memory usage {\"import_id\":812337,\"provider\":\"hubspot\",\"provider_id\":31,\"team\":\"hubspot\",\"team_id\":2,\"memory_usage\":27392888,\"memory_real_usage\":67108864,\"pid\":37116} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:21] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"nudges:send\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"55ebbc10-80bf-4724-ac64-678f6ef891cc\",\"trace_id\":\"f5392dc4-b352-4cae-b82a-004f77bbaf26\"}\n[2026-05-07 13:01:21] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"nudges:send\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"55ebbc10-80bf-4724-ac64-678f6ef891cc\",\"trace_id\":\"f5392dc4-b352-4cae-b82a-004f77bbaf26\"}\n[2026-05-07 13:01:23] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"jiminny:playlists:normalize-sort\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"9e29cfb5-b7fc-41bc-a9fd-a160d2253806\",\"trace_id\":\"3e180d83-299d-4c6c-bdda-d5a8ac156efc\"}\n[2026-05-07 13:01:23] local.INFO: [Jiminny\\Component\\Playlist\\Command\\NormalizeSortCommand::handle] starting. {\"playlists\":[]} {\"correlation_id\":\"9e29cfb5-b7fc-41bc-a9fd-a160d2253806\",\"trace_id\":\"3e180d83-299d-4c6c-bdda-d5a8ac156efc\"}\n[2026-05-07 13:01:23] local.INFO: [Jiminny\\Component\\Playlist\\Command\\NormalizeSortCommand::handle] finished. {\"normalizedPlaylists\":[],\"deletedPlaylists\":[]} {\"correlation_id\":\"9e29cfb5-b7fc-41bc-a9fd-a160d2253806\",\"trace_id\":\"3e180d83-299d-4c6c-bdda-d5a8ac156efc\"}\n[2026-05-07 13:01:23] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"jiminny:playlists:normalize-sort\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"9e29cfb5-b7fc-41bc-a9fd-a160d2253806\",\"trace_id\":\"3e180d83-299d-4c6c-bdda-d5a8ac156efc\"}\n[2026-05-07 13:01:41] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:41] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:41] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:41] local.WARNING: [HubSpot Journal Polling] Maximum empty results reached, stopping {\"empty_results\":5,\"max_empty_results\":5} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:41] local.WARNING: [HubSpot Journal Polling] Maximum empty results reached, stopping {\"empty_results\":5,\"max_empty_results\":5} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:41] local.INFO: [HubSpot Journal Polling] Service ending {\"runtime_seconds\":56,\"total_cycles\":5,\"files_downloaded\":0,\"empty_files\":0,\"other_portal_skipped\":0,\"total_events\":0,\"events_per_file\":0,\"avg_api_ms\":181.3,\"avg_download_ms\":0.0,\"avg_transform_ms\":0.0,\"avg_process_ms\":0.0,\"peak_memory_mb\":99.73} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:41] local.INFO: [HubSpot Journal Polling] Released polling lock {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:02:05] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"fe3480ce-754b-4304-b661-e4ac7234a778\",\"trace_id\":\"619e9c15-f95f-47ce-af85-6d78a6698327\"}\n[2026-05-07 13:02:05] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"fe3480ce-754b-4304-b661-e4ac7234a778\",\"trace_id\":\"619e9c15-f95f-47ce-af85-6d78a6698327\"}\n[2026-05-07 13:02:05] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"fe3480ce-754b-4304-b661-e4ac7234a778\",\"trace_id\":\"619e9c15-f95f-47ce-af85-6d78a6698327\"}\n[2026-05-07 13:02:07] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"aa98bf14-5737-4097-9f53-ac6833fb7983\",\"trace_id\":\"2f858b11-1073-43d4-996a-57e259ec2795\"}\n[2026-05-07 13:02:07] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"aa98bf14-5737-4097-9f53-ac6833fb7983\",\"trace_id\":\"2f858b11-1073-43d4-996a-57e259ec2795\"}\n[2026-05-07 13:02:08] local.NOTICE: Monitoring start {\"correlation_id\":\"25c588be-ddd6-41f1-8db8-ae28f3dd5bf5\",\"trace_id\":\"58b4c110-21ab-4c22-be4f-5be3534cd17d\"}\n[2026-05-07 13:02:08] local.NOTICE: Monitoring end {\"correlation_id\":\"25c588be-ddd6-41f1-8db8-ae28f3dd5bf5\",\"trace_id\":\"58b4c110-21ab-4c22-be4f-5be3534cd17d\"}\n[2026-05-07 13:02:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"5e453d7a-4daf-4001-b100-6aa9485d0353\",\"trace_id\":\"d97e1107-3696-4acf-95db-9cc7f37412e1\"}\n[2026-05-07 13:02:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"5e453d7a-4daf-4001-b100-6aa9485d0353\",\"trace_id\":\"d97e1107-3696-4acf-95db-9cc7f37412e1\"}\n[2026-05-07 13:02:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"3fab4dfb-f0ae-4c2c-a882-e09a1ad3ee9b\",\"trace_id\":\"3a66f9c4-3f01-40e2-aee2-e77fdabe793f\"}\n[2026-05-07 13:02:12] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"3fab4dfb-f0ae-4c2c-a882-e09a1ad3ee9b\",\"trace_id\":\"3a66f9c4-3f01-40e2-aee2-e77fdabe793f\"}\n[2026-05-07 13:02:12] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"3fab4dfb-f0ae-4c2c-a882-e09a1ad3ee9b\",\"trace_id\":\"3a66f9c4-3f01-40e2-aee2-e77fdabe793f\"}\n[2026-05-07 13:02:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"3fab4dfb-f0ae-4c2c-a882-e09a1ad3ee9b\",\"trace_id\":\"3a66f9c4-3f01-40e2-aee2-e77fdabe793f\"}\n[2026-05-07 13:02:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"63252e6d-894f-4cb9-818a-0034bf3545cb\",\"trace_id\":\"7ddf2e72-9174-4623-a622-1a5c9ee952c5\"}\n[2026-05-07 13:02:15] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 13:00:00, 2026-05-07 13:02:00] {\"correlation_id\":\"63252e6d-894f-4cb9-818a-0034bf3545cb\",\"trace_id\":\"7ddf2e72-9174-4623-a622-1a5c9ee952c5\"}\n[2026-05-07 13:02:15] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 13:00:00, 2026-05-07 13:02:00] {\"correlation_id\":\"63252e6d-894f-4cb9-818a-0034bf3545cb\",\"trace_id\":\"7ddf2e72-9174-4623-a622-1a5c9ee952c5\"}\n[2026-05-07 13:02:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"63252e6d-894f-4cb9-818a-0034bf3545cb\",\"trace_id\":\"7ddf2e72-9174-4623-a622-1a5c9ee952c5\"}\n[2026-05-07 13:02:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:create\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"cf65b2c4-c602-432d-8087-d0c0fb7f8e80\",\"trace_id\":\"b7b39317-045c-4475-879e-3d399e23fc3e\"}\n[2026-05-07 13:02:17] local.INFO: [EmailSchedule] STARTING batch create {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"cf65b2c4-c602-432d-8087-d0c0fb7f8e80\",\"trace_id\":\"b7b39317-045c-4475-879e-3d399e23fc3e\"}\n[2026-05-07 13:02:17] local.INFO: [EmailSchedule] FINISHED batch create {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"cf65b2c4-c602-432d-8087-d0c0fb7f8e80\",\"trace_id\":\"b7b39317-045c-4475-879e-3d399e23fc3e\"}\n[2026-05-07 13:02:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:create\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"cf65b2c4-c602-432d-8087-d0c0fb7f8e80\",\"trace_id\":\"b7b39317-045c-4475-879e-3d399e23fc3e\"}\n[2026-05-07 13:02:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"c481124d-04ae-43fb-b1d3-a4282f7af7ff\",\"trace_id\":\"d2d083d1-7cee-4d21-b80e-4485361d9969\"}\n[2026-05-07 13:02:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"c481124d-04ae-43fb-b1d3-a4282f7af7ff\",\"trace_id\":\"d2d083d1-7cee-4d21-b80e-4485361d9969\"}\n[2026-05-07 13:02:20] local.INFO: [Jiminny\\Jobs\\Mailbox\\CreateBatches] processed 2 inboxes and created 0 batches {\"userId\":null,\"batchSize\":30,\"maxBatches\":1000} {\"correlation_id\":\"3e2ef780-0c9d-4c30-9dc9-92315055c632\",\"trace_id\":\"b7b39317-045c-4475-879e-3d399e23fc3e\"}\n[2026-05-07 13:03:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"8cb6c7bf-4a2d-4960-bf8f-0368643fec27\",\"trace_id\":\"68c67cd4-9b92-4e41-bc1e-ebb282ea5211\"}\n[2026-05-07 13:03:06] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"8cb6c7bf-4a2d-4960-bf8f-0368643fec27\",\"trace_id\":\"68c67cd4-9b92-4e41-bc1e-ebb282ea5211\"}\n[2026-05-07 13:03:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"8cb6c7bf-4a2d-4960-bf8f-0368643fec27\",\"trace_id\":\"68c67cd4-9b92-4e41-bc1e-ebb282ea5211\"}\n[2026-05-07 13:03:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"b18dc815-6c91-43df-b083-125316724586\",\"trace_id\":\"62a636e8-4128-49eb-b99b-15efcfb37267\"}\n[2026-05-07 13:03:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"b18dc815-6c91-43df-b083-125316724586\",\"trace_id\":\"62a636e8-4128-49eb-b99b-15efcfb37267\"}\n[2026-05-07 13:03:10] local.NOTICE: Monitoring start {\"correlation_id\":\"d74c3e14-fd1a-4cab-9892-e9e924af1144\",\"trace_id\":\"29547049-25f5-4b62-a603-276e1de3dde8\"}\n[2026-05-07 13:03:10] local.NOTICE: Monitoring end {\"correlation_id\":\"d74c3e14-fd1a-4cab-9892-e9e924af1144\",\"trace_id\":\"29547049-25f5-4b62-a603-276e1de3dde8\"}\n[2026-05-07 13:03:13] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"bd7a8c2f-3f0b-48e9-86c2-0f01f2cfd9e8\",\"trace_id\":\"a3d1ecb5-4122-43c1-98ca-5d74c3dc989c\"}\n[2026-05-07 13:03:13] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"bd7a8c2f-3f0b-48e9-86c2-0f01f2cfd9e8\",\"trace_id\":\"a3d1ecb5-4122-43c1-98ca-5d74c3dc989c\"}\n[2026-05-07 13:03:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"4b20eb61-2970-4a63-8ee0-b392f7406a78\",\"trace_id\":\"892c9d93-c280-4b3f-a97a-bf1266f5c090\"}\n[2026-05-07 13:03:14] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"4b20eb61-2970-4a63-8ee0-b392f7406a78\",\"trace_id\":\"892c9d93-c280-4b3f-a97a-bf1266f5c090\"}\n[2026-05-07 13:03:14] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"4b20eb61-2970-4a63-8ee0-b392f7406a78\",\"trace_id\":\"892c9d93-c280-4b3f-a97a-bf1266f5c090\"}\n[2026-05-07 13:03:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"4b20eb61-2970-4a63-8ee0-b392f7406a78\",\"trace_id\":\"892c9d93-c280-4b3f-a97a-bf1266f5c090\"}\n[2026-05-07 13:03:18] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"6a165ea3-f101-4ac9-bfcc-e7ad618ac645\",\"trace_id\":\"383367e5-a337-4793-be1c-a88a2a6fa2e5\"}\n[2026-05-07 13:03:18] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"6a165ea3-f101-4ac9-bfcc-e7ad618ac645\",\"trace_id\":\"383367e5-a337-4793-be1c-a88a2a6fa2e5\"}","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.088194445,"height":0.027777778},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2","depth":4,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"68","depth":4,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"2","depth":4,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Highlighted Error","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Services\\Crm\\Hubspot;\n\nuse HubSpot\\Client\\Crm\\Deals\\ApiException as DealApiException;\nuse HubSpot\\Client\\Crm\\Contacts\\ApiException as ContactApiException;\nuse HubSpot\\Client\\Crm\\Companies\\ApiException as CompanyApiException;\nuse HubSpot\\Client\\Crm\\Contacts\\Model\\SimplePublicObjectWithAssociations as ContactsWithAssociations;\nuse HubSpot\\Client\\Crm\\Companies\\Model\\SimplePublicObjectWithAssociations as CompaniesWithAssociations;\nuse HubSpot\\Client\\Crm\\Deals\\Model\\SimplePublicObjectWithAssociations as DealWithAssociations;\nuse HubSpot\\Client\\Crm\\Objects\\Model\\SimplePublicObjectInput;\nuse HubSpot\\Client\\Crm\\Objects\\Model\\SimplePublicObjectWithAssociations as ObjectWithAssociations;\nuse HubSpot\\Client\\Crm\\Pipelines\\Model\\Error;\nuse HubSpot\\Client\\Crm\\Pipelines\\Model\\PipelineStage;\nuse HubSpot\\Client\\Crm\\Properties\\Model\\Property;\nuse HubSpot\\Discovery\\Discovery;\nuse Jiminny\\Component\\Utility\\Service\\ProviderRateLimiter;\nuse Jiminny\\Exceptions\\CrmException;\nuse Jiminny\\Exceptions\\RateLimitException;\nuse Jiminny\\Exceptions\\SocialAccountTokenInvalidException;\nuse Jiminny\\Jobs\\Crm\\NoteObject;\nuse Jiminny\\Models\\Crm\\Field;\nuse Jiminny\\Services\\Crm\\BaseClient;\nuse Jiminny\\Services\\Crm\\Hubspot\\DTO\\Response\\Owner;\nuse Jiminny\\Services\\SocialAccountService;\nuse SevenShores\\Hubspot\\Exceptions\\BadRequest;\nuse SevenShores\\Hubspot\\Exceptions\\HubspotException;\nuse SevenShores\\Hubspot\\Factory;\nuse SevenShores\\Hubspot\\Http\\Response;\nuse Jiminny\\Services\\Crm\\Hubspot\\Pagination\\HubspotPaginationService;\nuse Throwable;\n\n/**\n * @phpstan-type CrmFieldOption array{id:string, label:string, value?:string}\n */\nclass Client extends BaseClient implements HubspotClientInterface\n{\n public const string MIN_API_VERSION = '2';\n\n public const string BASE_URL = 'https://api.hubapi.com';\n\n public const int ASSOCIATIONS_BATCH_SIZE_LIMIT = 1000;\n\n private HubspotPaginationService $paginationService;\n private HubspotTokenManager $tokenManager;\n private ProviderRateLimiter $rateLimiter;\n\n public function __construct(\n SocialAccountService $socialAccountService,\n HubspotPaginationService $paginationService,\n HubspotTokenManager $tokenManager,\n ProviderRateLimiter $rateLimiter,\n ) {\n parent::__construct($socialAccountService);\n $this->paginationService = $paginationService;\n $this->tokenManager = $tokenManager;\n $this->rateLimiter = $rateLimiter;\n\n $this->setBaseUrl(self::BASE_URL);\n $this->setVersion(self::MIN_API_VERSION);\n }\n\n /**\n * Single entry point for every HubSpot API call. Enforces the per-portal\n * rate limit configured in the rate_limits table (morphed to the current\n * Configuration) and reacts to a real 429 from HubSpot by translating it\n * into a RateLimitException carrying Retry-After.\n *\n * Wrap any outbound HubSpot call (SDK or raw HTTP) like:\n *\n * $this->executeRequest(fn () => $this->getNewInstance()->crm()->...);\n *\n * @template T\n * @param callable(): T $apiCall\n * @return T\n *\n * @throws RateLimitException\n */\n private function executeRequest(callable $apiCall)\n {\n if (! $this->rateLimiter->canMakeRequest($this->config)) {\n $retryAfter = $this->rateLimiter->requestAvailableIn($this->config);\n\n $this->log->warning('[Hubspot] Rate limit exceeded, deferring request', [\n 'team_id' => $this->config->team_id,\n 'config_id' => $this->config->getId(),\n 'retry_after' => $retryAfter,\n ]);\n\n throw new RateLimitException(\n 'Hubspot rate limit reached for configuration ' . $this->config->getId(),\n $retryAfter,\n );\n }\n\n $this->rateLimiter->incrementRequestCount($this->config);\n\n try {\n return $apiCall();\n } catch (Throwable $e) {\n if ($this->isHubspotRateLimit($e)) {\n $retryAfter = $this->parseRetryAfter($e);\n\n $this->log->warning('[Hubspot] Received 429 from API', [\n 'team_id' => $this->config->team_id,\n 'config_id' => $this->config->getId(),\n 'retry_after' => $retryAfter,\n 'reason' => $e->getMessage(),\n ]);\n\n throw new RateLimitException('Hubspot returned 429', $retryAfter, $e);\n }\n\n throw $e;\n }\n }\n\n private function isHubspotRateLimit(Throwable $e): bool\n {\n return method_exists($e, 'getCode') && (int) $e->getCode() === 429;\n }\n\n private function parseRetryAfter(Throwable $e): int\n {\n if (method_exists($e, 'getResponseHeaders')) {\n $headers = $e->getResponseHeaders() ?: [];\n $value = $headers['Retry-After'] ?? $headers['retry-after'] ?? null;\n if (is_array($value)) {\n $value = $value[0] ?? null;\n }\n if (is_numeric($value)) {\n return (int) $value;\n }\n }\n\n return 10;\n }\n\n public function getMinimumApiVersion(): string\n {\n return self::MIN_API_VERSION;\n }\n\n public function getInstance(): Factory\n {\n return new Factory([\n 'key' => $this->accessToken,\n 'oauth2' => true,\n 'base_url' => $this->baseUrl,\n ]);\n }\n\n public function getNewInstance(): Discovery\n {\n return \\HubSpot\\Factory::createWithAccessToken($this->accessToken);\n }\n\n /**\n * Secondly and daily limits for Hubspot API\n *\n * Product Tier: Free & Starter | Professional & Enterprise | API add-on (any tier)\n * Burst: 100/10 seconds | 150/10 seconds | 200/10 seconds\n * Daily: 250,000 | 500,000 | 1,000,000\n *\n * Official documentation states: The search endpoints are rate limited to five requests per second.\n * Since with 5 RPS were still hitting secondly rate limits we lowered it to 4\n */\n public function getPaginatedData(array $payload, string $type, int $offset = 0): array\n {\n $total = 0;\n $lastId = null;\n $rows = [];\n foreach ($this->getPaginatedDataGenerator($payload, $type, $offset, $total, $lastId) as $row) {\n $rows[] = $row;\n }\n\n return ['results' => $rows, 'total' => $total, 'last_record' => $lastId];\n }\n\n /**\n * @throws HubspotException\n * @throws SocialAccountTokenInvalidException\n * @throws BadRequest\n */\n public function getPaginatedDataGenerator(\n array $payload,\n string $type,\n int $offset = 0,\n int &$total = 0,\n ?string &$lastRecordId = null\n ): \\Generator {\n return $this->paginationService->getPaginatedDataGenerator(\n $this,\n $payload,\n $type,\n $offset,\n $total,\n $lastRecordId\n );\n }\n\n /**\n * @throws DealApiException\n * @throws CrmException\n */\n public function getOpportunityById(string $crmId, array $fields): array\n {\n try {\n// $deal = $this->executeRequest(fn () => $this->getNewInstance()->crm()->deals()->basicApi()->getById(\n $deal = $this->getNewInstance()->crm()->deals()->basicApi()->getById(\n $crmId,\n implode(',', $fields),\n 'companies,contacts'\n );\n } catch (DealApiException $e) {\n $this->log->info('[Hubspot] Failed to fetch opportunity', [\n 'crm_id' => $crmId,\n 'reason' => $e->getMessage(),\n ]);\n\n throw $e;\n }\n\n if (! $deal instanceof DealWithAssociations) {\n throw new CrmException('Deal not found');\n }\n\n return [\n 'id' => $deal->getId(),\n 'properties' => $deal->getProperties(),\n 'associations' => $deal->getAssociations(),\n ];\n }\n\n /**\n * Generic batch read method for HubSpot objects\n *\n * @param string $objectType The object type ('deals', 'companies', 'contacts')\n * @param array<string> $crmIds Array of HubSpot object IDs (max 100)\n * @param array<string> $fields Array of property names to fetch\n *\n * @return array<string, array> Array keyed by CRM ID with object data\n */\n private function batchReadObjects(string $objectType, array $crmIds, array $fields): array\n {\n if (empty($crmIds)) {\n return [];\n }\n\n $this->validateBatchSize($objectType, $crmIds);\n $this->ensureValidToken();\n\n try {\n $batchConfig = $this->createBatchConfiguration($objectType);\n $batchReadRequest = $this->prepareBatchRequest($batchConfig, $crmIds, $fields);\n $response = $batchConfig['api']->read($batchReadRequest);\n\n $this->validateApiResponse($response, $objectType);\n\n $results = $this->processApiResults($response);\n $this->logBatchResults($objectType, $crmIds, $results);\n\n return $results;\n } catch (\\Throwable $e) {\n $this->handleBatchError($e, $objectType, $crmIds);\n }\n }\n\n private function validateBatchSize(string $objectType, array $crmIds): void\n {\n if (count($crmIds) > 100) {\n throw new \\InvalidArgumentException(\"Batch size cannot exceed 100 {$objectType}\");\n }\n }\n\n private function createBatchConfiguration(string $objectType): array\n {\n $configurations = [\n 'deals' => [\n 'batchReadRequest' => new \\HubSpot\\Client\\Crm\\Deals\\Model\\BatchReadInputSimplePublicObjectId(),\n 'inputClass' => \\HubSpot\\Client\\Crm\\Deals\\Model\\SimplePublicObjectId::class,\n 'api' => $this->getNewInstance()->crm()->deals()->batchApi(),\n ],\n 'companies' => [\n 'batchReadRequest' => new \\HubSpot\\Client\\Crm\\Companies\\Model\\BatchReadInputSimplePublicObjectId(),\n 'inputClass' => \\HubSpot\\Client\\Crm\\Companies\\Model\\SimplePublicObjectId::class,\n 'api' => $this->getNewInstance()->crm()->companies()->batchApi(),\n ],\n 'contacts' => [\n 'batchReadRequest' => new \\HubSpot\\Client\\Crm\\Contacts\\Model\\BatchReadInputSimplePublicObjectId(),\n 'inputClass' => \\HubSpot\\Client\\Crm\\Contacts\\Model\\SimplePublicObjectId::class,\n 'api' => $this->getNewInstance()->crm()->contacts()->batchApi(),\n ],\n ];\n\n if (! isset($configurations[$objectType])) {\n throw new \\InvalidArgumentException(\"Unsupported object type: {$objectType}\");\n }\n\n return $configurations[$objectType];\n }\n\n private function prepareBatchRequest(array $batchConfig, array $crmIds, array $fields): object\n {\n $batchReadRequest = $batchConfig['batchReadRequest'];\n $inputClass = $batchConfig['inputClass'];\n\n $inputs = array_map(function ($crmId) use ($inputClass) {\n $input = new $inputClass();\n $input->setId($crmId);\n\n return $input;\n }, $crmIds);\n\n $batchReadRequest->setInputs($inputs);\n $batchReadRequest->setProperties($fields);\n\n return $batchReadRequest;\n }\n\n private function validateApiResponse($response, string $objectType): void\n {\n if (! $response) {\n throw new CrmException(\"HubSpot API returned null response for {$objectType} batch read\");\n }\n }\n\n private function processApiResults($response): array\n {\n $results = [];\n $responseResults = $response->getResults();\n\n if ($responseResults) {\n foreach ($responseResults as $object) {\n if ($object && $object->getId()) {\n $results[$object->getId()] = [\n 'id' => $object->getId(),\n 'properties' => $object->getProperties() ?: [],\n ];\n }\n }\n }\n\n return $results;\n }\n\n private function logBatchResults(string $objectType, array $crmIds, array $results): void\n {\n $this->log->info(\"[HubSpot] Batch fetched {$objectType}\", [\n 'requested_count' => count($crmIds),\n 'returned_count' => count($results),\n 'crm_ids' => $crmIds,\n ]);\n }\n\n private function handleBatchError(\\Throwable $e, string $objectType, array $crmIds): void\n {\n $errorMessage = $e->getMessage() ?: 'Unknown error';\n $errorTrace = $e->getTraceAsString() ?: 'No trace available';\n\n $this->log->error(\"[HubSpot] Failed to batch fetch {$objectType}\", [\n 'crm_ids' => $crmIds,\n 'error' => $errorMessage,\n 'trace' => $errorTrace,\n ]);\n\n throw new CrmException(\"Failed to batch fetch {$objectType}: \" . $errorMessage);\n }\n\n /**\n * Batch read multiple opportunities by their CRM IDs\n *\n * @param array<string> $crmIds Array of HubSpot deal IDs (max 100)\n * @param array<string> $fields Array of property names to fetch\n *\n * @return array<string, array> Array keyed by CRM ID with opportunity data\n */\n public function getOpportunitiesByIds(array $crmIds, array $fields): array\n {\n return $this->batchReadObjects('deals', $crmIds, $fields);\n }\n\n /**\n * Batch read multiple companies by their CRM IDs\n *\n * @param array<string> $crmIds Array of HubSpot company IDs (max 100)\n * @param array<string> $fields Array of property names to fetch\n *\n * @return array<string, array> Array keyed by CRM ID with company data\n */\n public function getCompaniesByIds(array $crmIds, array $fields): array\n {\n return $this->batchReadObjects('companies', $crmIds, $fields);\n }\n\n /**\n * Batch read multiple contacts by their CRM IDs\n *\n * @param array<string> $crmIds Array of HubSpot contact IDs (max 100)\n * @param array<string> $fields Array of property names to fetch\n *\n * @return array<string, array> Array keyed by CRM ID with contact data\n */\n public function getContactsByIds(array $crmIds, array $fields): array\n {\n return $this->batchReadObjects('contacts', $crmIds, $fields);\n }\n\n /**\n * @throws CompanyApiException\n * @throws CrmException\n */\n public function getAccountById(string $crmId, array $fields): array\n {\n try {\n $company = $this->getNewInstance()->crm()->companies()->basicApi()->getById(\n $crmId,\n implode(',', $fields),\n );\n } catch (CompanyApiException $e) {\n $this->log->info('[Hubspot] Failed to fetch account', [\n 'crm_id' => $crmId,\n 'reason' => $e->getMessage(),\n ]);\n\n throw $e;\n }\n\n if (! $company instanceof CompaniesWithAssociations) {\n throw new CrmException('Account not found');\n }\n\n return [\n 'id' => $company->getId(),\n 'properties' => $company->getProperties(),\n ];\n }\n\n /**\n * @throws ContactApiException\n * @throws CrmException\n */\n public function getContactById(string $crmId, array $fields): array\n {\n try {\n $contact = $this->getNewInstance()->crm()->contacts()->basicApi()->getById(\n $crmId,\n implode(',', $fields)\n );\n } catch (ContactApiException $e) {\n $this->log->info('[Hubspot] Failed to fetch contact', [\n 'crm_id' => $crmId,\n 'reason' => $e->getMessage(),\n ]);\n\n throw $e;\n }\n\n if (! $contact instanceof ContactsWithAssociations) {\n throw new CrmException('Contact not found');\n }\n\n return [\n 'id' => $contact->getId(),\n 'properties' => $contact->getProperties(),\n ];\n }\n\n /**\n * This is email search request that Hubspot offers as GET (more generous quota)\n */\n public function getContactByEmail(string $email, array $fields = []): array\n {\n try {\n $contact = $this->getNewInstance()->crm()->contacts()->basicApi()->getById(\n $email,\n implode(',', $fields),\n null,\n false,\n 'email'\n );\n\n return [\n 'id' => $contact->getId(),\n 'properties' => $contact->getProperties(),\n ];\n } catch (ContactApiException $e) {\n $this->log->info('[Hubspot] Failed to fetch contact', [\n 'email' => $email,\n 'reason' => $e->getMessage(),\n ]);\n\n return [];\n }\n }\n\n /**\n * @throws CrmException\n */\n public function fetchProperty(string $objectType, string $propertyId): Property\n {\n $result = $this->getNewInstance()->crm()->properties()->coreApi()->getByName($objectType, $propertyId);\n\n if (! $result instanceof Property) {\n $this->log->error('[Hubspot] Failed to fetch property', [\n 'object_type' => $objectType,\n 'property_id' => $propertyId,\n 'reason' => $result->getMessage(),\n ]);\n\n throw new CrmException('Failed to fetch property');\n }\n\n return $result;\n }\n\n /**\n * @return array<CrmFieldOption>\n */\n public function fetchPropertyOptions(string $objectType, string $propertyId): array\n {\n /** @var array<CrmFieldOption> */\n return $this->fetchProperty($objectType, $propertyId)->getOptions();\n }\n\n /**\n * @return array<array{id:string, label:string, deleted:bool}>\n */\n public function fetchCallDispositions(): array\n {\n /** @var Response $response */\n $response = $this->getInstance()->engagements()->getCallDispositions();\n\n /**\n * @var array<array{\n * id:string,\n * label:string,\n * deleted: bool\n * }>\n */\n return $response->toArray();\n }\n\n /**\n * @return array<CrmFieldOption>\n */\n public function fetchOpportunityPipelineStages(): array\n {\n $stages = [];\n $apiResponse = $this->getNewInstance()->crm()->pipelines()->pipelinesApi()->getAll('deals');\n\n if ($apiResponse instanceof Error) {\n $this->log->error('[Hubspot] Failed to fetch opportunity pipelines', [\n 'reason' => $apiResponse->getMessage(),\n ]);\n\n return [];\n }\n\n foreach ($apiResponse->getResults() as $pipeline) {\n $pipelineStages = array_map(\n static function (PipelineStage $stage) {\n return [\n 'id' => $stage->getId(),\n 'label' => $stage->getLabel(),\n ];\n },\n $pipeline->getStages()\n );\n\n $stages = array_merge($stages, $pipelineStages);\n }\n\n return $stages;\n }\n\n public function fetchOpportunityPipelines(): array\n {\n $pipelines = [];\n\n try {\n $apiResponse = $this->makeRequest('/crm/v3/pipelines/deals');\n } catch (\\Exception $e) {\n $this->log->info('[Hubspot] Failed to fetch opportunity pipelines', [\n 'reason' => $e->getMessage(),\n ]);\n\n return [];\n }\n\n $response = $apiResponse->toArray();\n\n foreach ($response['results'] as $pipeline) {\n $pipelines[] = [\n 'id' => $pipeline['id'],\n 'label' => $pipeline['label'],\n ];\n }\n\n return $pipelines;\n }\n\n /**\n * @return array<CrmFieldOption>\n */\n public function fetchMeetingOutcomeFieldOptions(Field $field): array\n {\n return $field->getCrmProviderId() === 'meetingOutcome'\n ? $this->fetchMeetingOutcomeTypes()\n : $this->fetchCallActivityTypes();\n }\n\n public function fetchMeetingOutcomeTypes(): array\n {\n return $this->extractMeetingTypeOptions(\n 'https://api.hubapi.com/crm/v3/properties/meeting/hs_meeting_outcome'\n );\n }\n\n public function fetchCallActivityTypes(): array\n {\n return $this->extractMeetingTypeOptions(\n 'https://api.hubapi.com/crm/v3/properties/call/hs_activity_type'\n );\n }\n\n private function extractMeetingTypeOptions(string $endpoint): array\n {\n /** @var Response $response */\n $response = $this->getInstance()\n ->getClient()\n ->request('GET', $endpoint);\n\n /**\n * @var array<array{\n * value: string,\n * label: string,\n * displayOrder: int\n * }> $optionData\n */\n $optionData = $response->toArray()['options'] ?? [];\n\n $options = [];\n foreach ($optionData as $item) {\n $options[] = [\n 'id' => $item['value'],\n 'value' => $item['value'],\n 'label' => $item['label'],\n 'display_order' => $item['displayOrder'],\n ];\n }\n\n return $options;\n }\n\n /**\n * @return array<CrmFieldOption>\n */\n public function fetchDispositionFieldOptions(): array\n {\n $options = [];\n\n $dispositions = $this->fetchCallDispositions();\n\n foreach ($dispositions as $disposition) {\n if ($disposition['deleted'] !== false) {\n continue;\n }\n\n $option['value'] = $disposition['id'];\n $option['id'] = $disposition['id'];\n $option['label'] = $disposition['label'];\n\n $options[] = $option;\n }\n\n return $options;\n }\n\n /**\n * @return array<CrmFieldOption>\n */\n public function fetchOpportunityFieldOptions(Field $field): array\n {\n if ($field->isStageField()) {\n return $this->fetchOpportunityPipelineStages();\n }\n\n if ($field->isPipelineField()) {\n return $this->fetchOpportunityPipelines();\n }\n\n return $this->fetchPropertyOptions('deals', $field->getCrmProviderId());\n }\n\n /**\n * @throws BadRequest\n * @throws HubspotException\n */\n public function makeRequest(string $endpoint, $method = 'GET', $payload = [], ?string $queryString = null)\n {\n $endpoint = self::BASE_URL . $endpoint;\n\n if ($method === 'GET') {\n $response = $this->getInstance()->getClient()?->request(\n method: $method,\n endpoint: $endpoint,\n query_string: $queryString\n );\n } else {\n $response = $this->getInstance()->getClient()->request($method, $endpoint, [\n 'json' => ($payload),\n ]);\n }\n\n $max = $response->getHeaderLine('X-HubSpot-RateLimit-Max'); // \"110\"\n $remaining = $response->getHeaderLine('X-HubSpot-RateLimit-Remaining'); // \"109\"\n $interval = $response->getHeaderLine('X-HubSpot-RateLimit-Interval-Milliseconds'); // \"10000\"\n $body = json_decode((string) $response->getBody(), true);\n\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$max ' . PHP_EOL . print_r($max, true));\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$remaining ' . PHP_EOL . print_r($remaining, true));\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$interval ' . PHP_EOL . print_r($interval, true));\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$body ' . PHP_EOL . print_r($body, true));\n\n return $response;\n }\n\n /**\n * @throws BadRequest\n * @throws HubspotException\n */\n public function createMeeting(array $payload): Response\n {\n $endpoint = '/crm/v3/objects/meetings';\n\n return $this->makeRequest($endpoint, 'POST', $payload);\n }\n\n /**\n * @throws BadRequest\n * @throws HubspotException\n */\n public function updateMeeting(string $meetingId, array $payload): Response\n {\n $endpoint = '/crm/v3/objects/meetings/' . $meetingId;\n\n return $this->makeRequest($endpoint, 'PATCH', $payload);\n }\n\n /**\n * @throws \\Exception\n */\n public function createNote(\n string $body,\n string $ownerId,\n int $timestamp,\n string $objectId,\n NoteObject $noteObject\n ): ?string {\n try {\n $noteInput = new SimplePublicObjectInput([\n 'properties' => [\n 'hs_note_body' => $body,\n 'hubspot_owner_id' => $ownerId,\n 'hs_timestamp' => $timestamp,\n ],\n ]);\n\n // Create note\n $note = $this->getNewInstance()->crm()->objects()->basicApi()->create('note', $noteInput);\n\n $this->getNewInstance()->crm()->objects()->associationsApi()->create(\n 'note',\n $note->getId(),\n $this->getNoteObject($noteObject),\n $objectId,\n $this->getNoteAssociationType($noteObject),\n );\n\n return $note->getId();\n } catch (\\Exception $e) {\n $this->log->error('[Hubspot] Failed to create note', [\n 'objectId' => $objectId,\n 'noteObject' => $noteObject->getObjectType(),\n 'reason' => $e->getMessage(),\n ]);\n\n \\Sentry::captureException($e);\n }\n\n return null;\n }\n\n public function updateEngagement(string $objectId, array $engagement, array $metadata): void\n {\n $this->getInstance()->engagements()->update($objectId, $engagement, $metadata);\n }\n\n public function getEngagementData(string $engagementId): array\n {\n $engagement = $this->getInstance()->engagements()->get($engagementId);\n\n return $engagement->toArray();\n }\n\n public function createEngagement(array $engagement, array $associations, array $metadata): Response\n {\n return $this->getInstance()\n ->engagements()\n ->create($engagement, $associations, $metadata);\n }\n\n public function isUnauthorizedException(\\Exception $e): bool\n {\n // Check for specific HubSpot API exception types first\n if ($e instanceof BadRequest) {\n // BadRequest can contain 401 status codes\n return $e->getCode() === 401;\n }\n\n // Check for HTTP client exceptions with status codes\n if ($e instanceof \\GuzzleHttp\\Exception\\RequestException && $e->hasResponse()) {\n $response = $e->getResponse();\n if ($response !== null) {\n return $response->getStatusCode() === 401;\n }\n }\n\n // Check for Guzzle HTTP exceptions\n if ($e instanceof \\GuzzleHttp\\Exception\\ClientException) {\n return $e->getCode() === 401;\n }\n\n // Fallback to string matching as last resort, but be more specific\n $message = strtolower($e->getMessage());\n\n return str_contains($message, '401 unauthorized') ||\n str_contains($message, 'http 401') ||\n str_contains($message, 'status code 401') ||\n (preg_match('/\\b401\\b/', $message) && str_contains($message, 'unauthorized'));\n }\n\n /**\n * Validates and refreshes the access token if needed before API requests.\n * This ensures long-running processes don't fail due to token expiration.\n *\n * @throws SocialAccountTokenInvalidException\n */\n public function ensureValidToken(): void\n {\n if ($this->oauthAccount === null) {\n return;\n }\n\n $newToken = $this->tokenManager->ensureValidToken($this->oauthAccount);\n if ($newToken !== null) {\n $this->accessToken = $newToken;\n }\n }\n\n public function getConfig()\n {\n return $this->config;\n }\n\n // returns only active (archived=false)\n public function getOwners(): array\n {\n return $this->getNewInstance()->crm()->owners()->getAll();\n }\n\n /**\n * @param bool $archived\n *\n * @return array<Owner>|[]\n */\n public function getOwnersArchived(bool $archived = true): array\n {\n $endpoint = '/crm/v3/owners';\n $queryParams = [\n 'archived' => $archived ? 'true' : 'false',\n ];\n $queryString = http_build_query($queryParams);\n\n $owners = [];\n\n try {\n $response = $this->makeRequest(endpoint: $endpoint, queryString: $queryString);\n $responseData = $response?->toArray();\n\n foreach ($responseData['results'] as $result) {\n try {\n $owners[] = Owner::create($result);\n } catch (Throwable $e) {\n $this->log->error('[HubSpot] Failed to process owner data', [\n 'result' => $result,\n 'error' => $e->getMessage(),\n ]);\n\n continue;\n }\n }\n } catch (Throwable $e) {\n $this->log->error('HubSpot] Failed to fetch owners', [\n 'archived' => $archived,\n 'error' => $e->getMessage(),\n ]);\n\n return [];\n }\n\n return $owners;\n }\n\n public function getMeeting(string $engagementId): ObjectWithAssociations\n {\n return $this->getNewInstance()->crm()->objects()->basicApi()\n ->getById('meeting', $engagementId, null, 'contact,company,deal');\n }\n\n public function deleteEngagement(string $engagementId): void\n {\n $this->getInstance()->engagements()->delete((int) $engagementId);\n }\n\n public function getAssociationsData(array $ids, string $fromObject, string $toObject): array\n {\n $associationData = [];\n $idChunks = array_chunk($ids, self::ASSOCIATIONS_BATCH_SIZE_LIMIT);\n\n foreach ($idChunks as $idChunk) {\n try {\n $batchInput = new \\HubSpot\\Client\\Crm\\Associations\\Model\\BatchInputPublicObjectId();\n $batchInput->setInputs(array_map(function ($id) {\n $publicObjectId = new \\HubSpot\\Client\\Crm\\Associations\\Model\\PublicObjectId();\n $publicObjectId->setId($id);\n\n return $publicObjectId;\n }, $idChunk));\n\n $associatedObjectsData = $this\n ->getNewInstance()\n ->crm()\n ->associations()\n ->batchApi()\n ->read($fromObject, $toObject, $batchInput);\n\n if ($associatedObjectsData instanceof \\HubSpot\\Client\\Crm\\Associations\\Model\\BatchResponsePublicAssociationMulti) {\n foreach ($associatedObjectsData->getResults() as $association) {\n $from = $association->getFrom()->getId();\n $toAssociations = $association->getTo();\n\n if (! empty($toAssociations)) {\n $associationData[$from] = array_map(function ($item) {\n return $item->getId();\n }, $toAssociations);\n }\n }\n }\n } catch (\\Exception $e) {\n $this->log->error('[Hubspot] Failed to fetch associations', [\n 'from_object' => $fromObject,\n 'to_object' => $toObject,\n 'reason' => $e->getMessage(),\n ]);\n }\n }\n\n return $associationData;\n }\n\n /**\n * @throws \\Exception\n */\n private function getNoteAssociationType(NoteObject $noteObject): string\n {\n return match($noteObject) {\n NoteObject::Opportunity => 'note_to_deal',\n NoteObject::Lead, NoteObject::Contact => 'note_to_contact', // or 'note_to_lead' if your portal supports it\n NoteObject::Account => 'note_to_company',\n NoteObject::Call, NoteObject::Event => throw new \\Exception('Not supported'),\n };\n }\n\n /**\n * @throws \\Exception\n */\n private function getNoteObject(NoteObject $noteObject): string\n {\n return match($noteObject) {\n NoteObject::Opportunity => 'deal',\n NoteObject::Lead, NoteObject::Contact => 'contact',\n NoteObject::Account => 'company',\n NoteObject::Call, NoteObject::Event => throw new \\Exception('Not supported'),\n };\n }\n\n public function addAssociations(string $objectType, string $associationType, array $payload): Response\n {\n $endpoint = \"/crm/v4/associations/$objectType/$associationType/batch/create\";\n\n return $this->makeRequest($endpoint, 'POST', $payload);\n }\n\n public function removeAssociations(string $objectType, string $associationType, array $payload): Response\n {\n $endpoint = \"/crm/v4/associations/$objectType/$associationType/batch/archive\";\n\n return $this->makeRequest($endpoint, 'POST', $payload);\n }\n}","depth":4,"on_screen":true,"value":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Services\\Crm\\Hubspot;\n\nuse HubSpot\\Client\\Crm\\Deals\\ApiException as DealApiException;\nuse HubSpot\\Client\\Crm\\Contacts\\ApiException as ContactApiException;\nuse HubSpot\\Client\\Crm\\Companies\\ApiException as CompanyApiException;\nuse HubSpot\\Client\\Crm\\Contacts\\Model\\SimplePublicObjectWithAssociations as ContactsWithAssociations;\nuse HubSpot\\Client\\Crm\\Companies\\Model\\SimplePublicObjectWithAssociations as CompaniesWithAssociations;\nuse HubSpot\\Client\\Crm\\Deals\\Model\\SimplePublicObjectWithAssociations as DealWithAssociations;\nuse HubSpot\\Client\\Crm\\Objects\\Model\\SimplePublicObjectInput;\nuse HubSpot\\Client\\Crm\\Objects\\Model\\SimplePublicObjectWithAssociations as ObjectWithAssociations;\nuse HubSpot\\Client\\Crm\\Pipelines\\Model\\Error;\nuse HubSpot\\Client\\Crm\\Pipelines\\Model\\PipelineStage;\nuse HubSpot\\Client\\Crm\\Properties\\Model\\Property;\nuse HubSpot\\Discovery\\Discovery;\nuse Jiminny\\Component\\Utility\\Service\\ProviderRateLimiter;\nuse Jiminny\\Exceptions\\CrmException;\nuse Jiminny\\Exceptions\\RateLimitException;\nuse Jiminny\\Exceptions\\SocialAccountTokenInvalidException;\nuse Jiminny\\Jobs\\Crm\\NoteObject;\nuse Jiminny\\Models\\Crm\\Field;\nuse Jiminny\\Services\\Crm\\BaseClient;\nuse Jiminny\\Services\\Crm\\Hubspot\\DTO\\Response\\Owner;\nuse Jiminny\\Services\\SocialAccountService;\nuse SevenShores\\Hubspot\\Exceptions\\BadRequest;\nuse SevenShores\\Hubspot\\Exceptions\\HubspotException;\nuse SevenShores\\Hubspot\\Factory;\nuse SevenShores\\Hubspot\\Http\\Response;\nuse Jiminny\\Services\\Crm\\Hubspot\\Pagination\\HubspotPaginationService;\nuse Throwable;\n\n/**\n * @phpstan-type CrmFieldOption array{id:string, label:string, value?:string}\n */\nclass Client extends BaseClient implements HubspotClientInterface\n{\n public const string MIN_API_VERSION = '2';\n\n public const string BASE_URL = 'https://api.hubapi.com';\n\n public const int ASSOCIATIONS_BATCH_SIZE_LIMIT = 1000;\n\n private HubspotPaginationService $paginationService;\n private HubspotTokenManager $tokenManager;\n private ProviderRateLimiter $rateLimiter;\n\n public function __construct(\n SocialAccountService $socialAccountService,\n HubspotPaginationService $paginationService,\n HubspotTokenManager $tokenManager,\n ProviderRateLimiter $rateLimiter,\n ) {\n parent::__construct($socialAccountService);\n $this->paginationService = $paginationService;\n $this->tokenManager = $tokenManager;\n $this->rateLimiter = $rateLimiter;\n\n $this->setBaseUrl(self::BASE_URL);\n $this->setVersion(self::MIN_API_VERSION);\n }\n\n /**\n * Single entry point for every HubSpot API call. Enforces the per-portal\n * rate limit configured in the rate_limits table (morphed to the current\n * Configuration) and reacts to a real 429 from HubSpot by translating it\n * into a RateLimitException carrying Retry-After.\n *\n * Wrap any outbound HubSpot call (SDK or raw HTTP) like:\n *\n * $this->executeRequest(fn () => $this->getNewInstance()->crm()->...);\n *\n * @template T\n * @param callable(): T $apiCall\n * @return T\n *\n * @throws RateLimitException\n */\n private function executeRequest(callable $apiCall)\n {\n if (! $this->rateLimiter->canMakeRequest($this->config)) {\n $retryAfter = $this->rateLimiter->requestAvailableIn($this->config);\n\n $this->log->warning('[Hubspot] Rate limit exceeded, deferring request', [\n 'team_id' => $this->config->team_id,\n 'config_id' => $this->config->getId(),\n 'retry_after' => $retryAfter,\n ]);\n\n throw new RateLimitException(\n 'Hubspot rate limit reached for configuration ' . $this->config->getId(),\n $retryAfter,\n );\n }\n\n $this->rateLimiter->incrementRequestCount($this->config);\n\n try {\n return $apiCall();\n } catch (Throwable $e) {\n if ($this->isHubspotRateLimit($e)) {\n $retryAfter = $this->parseRetryAfter($e);\n\n $this->log->warning('[Hubspot] Received 429 from API', [\n 'team_id' => $this->config->team_id,\n 'config_id' => $this->config->getId(),\n 'retry_after' => $retryAfter,\n 'reason' => $e->getMessage(),\n ]);\n\n throw new RateLimitException('Hubspot returned 429', $retryAfter, $e);\n }\n\n throw $e;\n }\n }\n\n private function isHubspotRateLimit(Throwable $e): bool\n {\n return method_exists($e, 'getCode') && (int) $e->getCode() === 429;\n }\n\n private function parseRetryAfter(Throwable $e): int\n {\n if (method_exists($e, 'getResponseHeaders')) {\n $headers = $e->getResponseHeaders() ?: [];\n $value = $headers['Retry-After'] ?? $headers['retry-after'] ?? null;\n if (is_array($value)) {\n $value = $value[0] ?? null;\n }\n if (is_numeric($value)) {\n return (int) $value;\n }\n }\n\n return 10;\n }\n\n public function getMinimumApiVersion(): string\n {\n return self::MIN_API_VERSION;\n }\n\n public function getInstance(): Factory\n {\n return new Factory([\n 'key' => $this->accessToken,\n 'oauth2' => true,\n 'base_url' => $this->baseUrl,\n ]);\n }\n\n public function getNewInstance(): Discovery\n {\n return \\HubSpot\\Factory::createWithAccessToken($this->accessToken);\n }\n\n /**\n * Secondly and daily limits for Hubspot API\n *\n * Product Tier: Free & Starter | Professional & Enterprise | API add-on (any tier)\n * Burst: 100/10 seconds | 150/10 seconds | 200/10 seconds\n * Daily: 250,000 | 500,000 | 1,000,000\n *\n * Official documentation states: The search endpoints are rate limited to five requests per second.\n * Since with 5 RPS were still hitting secondly rate limits we lowered it to 4\n */\n public function getPaginatedData(array $payload, string $type, int $offset = 0): array\n {\n $total = 0;\n $lastId = null;\n $rows = [];\n foreach ($this->getPaginatedDataGenerator($payload, $type, $offset, $total, $lastId) as $row) {\n $rows[] = $row;\n }\n\n return ['results' => $rows, 'total' => $total, 'last_record' => $lastId];\n }\n\n /**\n * @throws HubspotException\n * @throws SocialAccountTokenInvalidException\n * @throws BadRequest\n */\n public function getPaginatedDataGenerator(\n array $payload,\n string $type,\n int $offset = 0,\n int &$total = 0,\n ?string &$lastRecordId = null\n ): \\Generator {\n return $this->paginationService->getPaginatedDataGenerator(\n $this,\n $payload,\n $type,\n $offset,\n $total,\n $lastRecordId\n );\n }\n\n /**\n * @throws DealApiException\n * @throws CrmException\n */\n public function getOpportunityById(string $crmId, array $fields): array\n {\n try {\n// $deal = $this->executeRequest(fn () => $this->getNewInstance()->crm()->deals()->basicApi()->getById(\n $deal = $this->getNewInstance()->crm()->deals()->basicApi()->getById(\n $crmId,\n implode(',', $fields),\n 'companies,contacts'\n );\n } catch (DealApiException $e) {\n $this->log->info('[Hubspot] Failed to fetch opportunity', [\n 'crm_id' => $crmId,\n 'reason' => $e->getMessage(),\n ]);\n\n throw $e;\n }\n\n if (! $deal instanceof DealWithAssociations) {\n throw new CrmException('Deal not found');\n }\n\n return [\n 'id' => $deal->getId(),\n 'properties' => $deal->getProperties(),\n 'associations' => $deal->getAssociations(),\n ];\n }\n\n /**\n * Generic batch read method for HubSpot objects\n *\n * @param string $objectType The object type ('deals', 'companies', 'contacts')\n * @param array<string> $crmIds Array of HubSpot object IDs (max 100)\n * @param array<string> $fields Array of property names to fetch\n *\n * @return array<string, array> Array keyed by CRM ID with object data\n */\n private function batchReadObjects(string $objectType, array $crmIds, array $fields): array\n {\n if (empty($crmIds)) {\n return [];\n }\n\n $this->validateBatchSize($objectType, $crmIds);\n $this->ensureValidToken();\n\n try {\n $batchConfig = $this->createBatchConfiguration($objectType);\n $batchReadRequest = $this->prepareBatchRequest($batchConfig, $crmIds, $fields);\n $response = $batchConfig['api']->read($batchReadRequest);\n\n $this->validateApiResponse($response, $objectType);\n\n $results = $this->processApiResults($response);\n $this->logBatchResults($objectType, $crmIds, $results);\n\n return $results;\n } catch (\\Throwable $e) {\n $this->handleBatchError($e, $objectType, $crmIds);\n }\n }\n\n private function validateBatchSize(string $objectType, array $crmIds): void\n {\n if (count($crmIds) > 100) {\n throw new \\InvalidArgumentException(\"Batch size cannot exceed 100 {$objectType}\");\n }\n }\n\n private function createBatchConfiguration(string $objectType): array\n {\n $configurations = [\n 'deals' => [\n 'batchReadRequest' => new \\HubSpot\\Client\\Crm\\Deals\\Model\\BatchReadInputSimplePublicObjectId(),\n 'inputClass' => \\HubSpot\\Client\\Crm\\Deals\\Model\\SimplePublicObjectId::class,\n 'api' => $this->getNewInstance()->crm()->deals()->batchApi(),\n ],\n 'companies' => [\n 'batchReadRequest' => new \\HubSpot\\Client\\Crm\\Companies\\Model\\BatchReadInputSimplePublicObjectId(),\n 'inputClass' => \\HubSpot\\Client\\Crm\\Companies\\Model\\SimplePublicObjectId::class,\n 'api' => $this->getNewInstance()->crm()->companies()->batchApi(),\n ],\n 'contacts' => [\n 'batchReadRequest' => new \\HubSpot\\Client\\Crm\\Contacts\\Model\\BatchReadInputSimplePublicObjectId(),\n 'inputClass' => \\HubSpot\\Client\\Crm\\Contacts\\Model\\SimplePublicObjectId::class,\n 'api' => $this->getNewInstance()->crm()->contacts()->batchApi(),\n ],\n ];\n\n if (! isset($configurations[$objectType])) {\n throw new \\InvalidArgumentException(\"Unsupported object type: {$objectType}\");\n }\n\n return $configurations[$objectType];\n }\n\n private function prepareBatchRequest(array $batchConfig, array $crmIds, array $fields): object\n {\n $batchReadRequest = $batchConfig['batchReadRequest'];\n $inputClass = $batchConfig['inputClass'];\n\n $inputs = array_map(function ($crmId) use ($inputClass) {\n $input = new $inputClass();\n $input->setId($crmId);\n\n return $input;\n }, $crmIds);\n\n $batchReadRequest->setInputs($inputs);\n $batchReadRequest->setProperties($fields);\n\n return $batchReadRequest;\n }\n\n private function validateApiResponse($response, string $objectType): void\n {\n if (! $response) {\n throw new CrmException(\"HubSpot API returned null response for {$objectType} batch read\");\n }\n }\n\n private function processApiResults($response): array\n {\n $results = [];\n $responseResults = $response->getResults();\n\n if ($responseResults) {\n foreach ($responseResults as $object) {\n if ($object && $object->getId()) {\n $results[$object->getId()] = [\n 'id' => $object->getId(),\n 'properties' => $object->getProperties() ?: [],\n ];\n }\n }\n }\n\n return $results;\n }\n\n private function logBatchResults(string $objectType, array $crmIds, array $results): void\n {\n $this->log->info(\"[HubSpot] Batch fetched {$objectType}\", [\n 'requested_count' => count($crmIds),\n 'returned_count' => count($results),\n 'crm_ids' => $crmIds,\n ]);\n }\n\n private function handleBatchError(\\Throwable $e, string $objectType, array $crmIds): void\n {\n $errorMessage = $e->getMessage() ?: 'Unknown error';\n $errorTrace = $e->getTraceAsString() ?: 'No trace available';\n\n $this->log->error(\"[HubSpot] Failed to batch fetch {$objectType}\", [\n 'crm_ids' => $crmIds,\n 'error' => $errorMessage,\n 'trace' => $errorTrace,\n ]);\n\n throw new CrmException(\"Failed to batch fetch {$objectType}: \" . $errorMessage);\n }\n\n /**\n * Batch read multiple opportunities by their CRM IDs\n *\n * @param array<string> $crmIds Array of HubSpot deal IDs (max 100)\n * @param array<string> $fields Array of property names to fetch\n *\n * @return array<string, array> Array keyed by CRM ID with opportunity data\n */\n public function getOpportunitiesByIds(array $crmIds, array $fields): array\n {\n return $this->batchReadObjects('deals', $crmIds, $fields);\n }\n\n /**\n * Batch read multiple companies by their CRM IDs\n *\n * @param array<string> $crmIds Array of HubSpot company IDs (max 100)\n * @param array<string> $fields Array of property names to fetch\n *\n * @return array<string, array> Array keyed by CRM ID with company data\n */\n public function getCompaniesByIds(array $crmIds, array $fields): array\n {\n return $this->batchReadObjects('companies', $crmIds, $fields);\n }\n\n /**\n * Batch read multiple contacts by their CRM IDs\n *\n * @param array<string> $crmIds Array of HubSpot contact IDs (max 100)\n * @param array<string> $fields Array of property names to fetch\n *\n * @return array<string, array> Array keyed by CRM ID with contact data\n */\n public function getContactsByIds(array $crmIds, array $fields): array\n {\n return $this->batchReadObjects('contacts', $crmIds, $fields);\n }\n\n /**\n * @throws CompanyApiException\n * @throws CrmException\n */\n public function getAccountById(string $crmId, array $fields): array\n {\n try {\n $company = $this->getNewInstance()->crm()->companies()->basicApi()->getById(\n $crmId,\n implode(',', $fields),\n );\n } catch (CompanyApiException $e) {\n $this->log->info('[Hubspot] Failed to fetch account', [\n 'crm_id' => $crmId,\n 'reason' => $e->getMessage(),\n ]);\n\n throw $e;\n }\n\n if (! $company instanceof CompaniesWithAssociations) {\n throw new CrmException('Account not found');\n }\n\n return [\n 'id' => $company->getId(),\n 'properties' => $company->getProperties(),\n ];\n }\n\n /**\n * @throws ContactApiException\n * @throws CrmException\n */\n public function getContactById(string $crmId, array $fields): array\n {\n try {\n $contact = $this->getNewInstance()->crm()->contacts()->basicApi()->getById(\n $crmId,\n implode(',', $fields)\n );\n } catch (ContactApiException $e) {\n $this->log->info('[Hubspot] Failed to fetch contact', [\n 'crm_id' => $crmId,\n 'reason' => $e->getMessage(),\n ]);\n\n throw $e;\n }\n\n if (! $contact instanceof ContactsWithAssociations) {\n throw new CrmException('Contact not found');\n }\n\n return [\n 'id' => $contact->getId(),\n 'properties' => $contact->getProperties(),\n ];\n }\n\n /**\n * This is email search request that Hubspot offers as GET (more generous quota)\n */\n public function getContactByEmail(string $email, array $fields = []): array\n {\n try {\n $contact = $this->getNewInstance()->crm()->contacts()->basicApi()->getById(\n $email,\n implode(',', $fields),\n null,\n false,\n 'email'\n );\n\n return [\n 'id' => $contact->getId(),\n 'properties' => $contact->getProperties(),\n ];\n } catch (ContactApiException $e) {\n $this->log->info('[Hubspot] Failed to fetch contact', [\n 'email' => $email,\n 'reason' => $e->getMessage(),\n ]);\n\n return [];\n }\n }\n\n /**\n * @throws CrmException\n */\n public function fetchProperty(string $objectType, string $propertyId): Property\n {\n $result = $this->getNewInstance()->crm()->properties()->coreApi()->getByName($objectType, $propertyId);\n\n if (! $result instanceof Property) {\n $this->log->error('[Hubspot] Failed to fetch property', [\n 'object_type' => $objectType,\n 'property_id' => $propertyId,\n 'reason' => $result->getMessage(),\n ]);\n\n throw new CrmException('Failed to fetch property');\n }\n\n return $result;\n }\n\n /**\n * @return array<CrmFieldOption>\n */\n public function fetchPropertyOptions(string $objectType, string $propertyId): array\n {\n /** @var array<CrmFieldOption> */\n return $this->fetchProperty($objectType, $propertyId)->getOptions();\n }\n\n /**\n * @return array<array{id:string, label:string, deleted:bool}>\n */\n public function fetchCallDispositions(): array\n {\n /** @var Response $response */\n $response = $this->getInstance()->engagements()->getCallDispositions();\n\n /**\n * @var array<array{\n * id:string,\n * label:string,\n * deleted: bool\n * }>\n */\n return $response->toArray();\n }\n\n /**\n * @return array<CrmFieldOption>\n */\n public function fetchOpportunityPipelineStages(): array\n {\n $stages = [];\n $apiResponse = $this->getNewInstance()->crm()->pipelines()->pipelinesApi()->getAll('deals');\n\n if ($apiResponse instanceof Error) {\n $this->log->error('[Hubspot] Failed to fetch opportunity pipelines', [\n 'reason' => $apiResponse->getMessage(),\n ]);\n\n return [];\n }\n\n foreach ($apiResponse->getResults() as $pipeline) {\n $pipelineStages = array_map(\n static function (PipelineStage $stage) {\n return [\n 'id' => $stage->getId(),\n 'label' => $stage->getLabel(),\n ];\n },\n $pipeline->getStages()\n );\n\n $stages = array_merge($stages, $pipelineStages);\n }\n\n return $stages;\n }\n\n public function fetchOpportunityPipelines(): array\n {\n $pipelines = [];\n\n try {\n $apiResponse = $this->makeRequest('/crm/v3/pipelines/deals');\n } catch (\\Exception $e) {\n $this->log->info('[Hubspot] Failed to fetch opportunity pipelines', [\n 'reason' => $e->getMessage(),\n ]);\n\n return [];\n }\n\n $response = $apiResponse->toArray();\n\n foreach ($response['results'] as $pipeline) {\n $pipelines[] = [\n 'id' => $pipeline['id'],\n 'label' => $pipeline['label'],\n ];\n }\n\n return $pipelines;\n }\n\n /**\n * @return array<CrmFieldOption>\n */\n public function fetchMeetingOutcomeFieldOptions(Field $field): array\n {\n return $field->getCrmProviderId() === 'meetingOutcome'\n ? $this->fetchMeetingOutcomeTypes()\n : $this->fetchCallActivityTypes();\n }\n\n public function fetchMeetingOutcomeTypes(): array\n {\n return $this->extractMeetingTypeOptions(\n 'https://api.hubapi.com/crm/v3/properties/meeting/hs_meeting_outcome'\n );\n }\n\n public function fetchCallActivityTypes(): array\n {\n return $this->extractMeetingTypeOptions(\n 'https://api.hubapi.com/crm/v3/properties/call/hs_activity_type'\n );\n }\n\n private function extractMeetingTypeOptions(string $endpoint): array\n {\n /** @var Response $response */\n $response = $this->getInstance()\n ->getClient()\n ->request('GET', $endpoint);\n\n /**\n * @var array<array{\n * value: string,\n * label: string,\n * displayOrder: int\n * }> $optionData\n */\n $optionData = $response->toArray()['options'] ?? [];\n\n $options = [];\n foreach ($optionData as $item) {\n $options[] = [\n 'id' => $item['value'],\n 'value' => $item['value'],\n 'label' => $item['label'],\n 'display_order' => $item['displayOrder'],\n ];\n }\n\n return $options;\n }\n\n /**\n * @return array<CrmFieldOption>\n */\n public function fetchDispositionFieldOptions(): array\n {\n $options = [];\n\n $dispositions = $this->fetchCallDispositions();\n\n foreach ($dispositions as $disposition) {\n if ($disposition['deleted'] !== false) {\n continue;\n }\n\n $option['value'] = $disposition['id'];\n $option['id'] = $disposition['id'];\n $option['label'] = $disposition['label'];\n\n $options[] = $option;\n }\n\n return $options;\n }\n\n /**\n * @return array<CrmFieldOption>\n */\n public function fetchOpportunityFieldOptions(Field $field): array\n {\n if ($field->isStageField()) {\n return $this->fetchOpportunityPipelineStages();\n }\n\n if ($field->isPipelineField()) {\n return $this->fetchOpportunityPipelines();\n }\n\n return $this->fetchPropertyOptions('deals', $field->getCrmProviderId());\n }\n\n /**\n * @throws BadRequest\n * @throws HubspotException\n */\n public function makeRequest(string $endpoint, $method = 'GET', $payload = [], ?string $queryString = null)\n {\n $endpoint = self::BASE_URL . $endpoint;\n\n if ($method === 'GET') {\n $response = $this->getInstance()->getClient()?->request(\n method: $method,\n endpoint: $endpoint,\n query_string: $queryString\n );\n } else {\n $response = $this->getInstance()->getClient()->request($method, $endpoint, [\n 'json' => ($payload),\n ]);\n }\n\n $max = $response->getHeaderLine('X-HubSpot-RateLimit-Max'); // \"110\"\n $remaining = $response->getHeaderLine('X-HubSpot-RateLimit-Remaining'); // \"109\"\n $interval = $response->getHeaderLine('X-HubSpot-RateLimit-Interval-Milliseconds'); // \"10000\"\n $body = json_decode((string) $response->getBody(), true);\n\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$max ' . PHP_EOL . print_r($max, true));\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$remaining ' . PHP_EOL . print_r($remaining, true));\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$interval ' . PHP_EOL . print_r($interval, true));\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$body ' . PHP_EOL . print_r($body, true));\n\n return $response;\n }\n\n /**\n * @throws BadRequest\n * @throws HubspotException\n */\n public function createMeeting(array $payload): Response\n {\n $endpoint = '/crm/v3/objects/meetings';\n\n return $this->makeRequest($endpoint, 'POST', $payload);\n }\n\n /**\n * @throws BadRequest\n * @throws HubspotException\n */\n public function updateMeeting(string $meetingId, array $payload): Response\n {\n $endpoint = '/crm/v3/objects/meetings/' . $meetingId;\n\n return $this->makeRequest($endpoint, 'PATCH', $payload);\n }\n\n /**\n * @throws \\Exception\n */\n public function createNote(\n string $body,\n string $ownerId,\n int $timestamp,\n string $objectId,\n NoteObject $noteObject\n ): ?string {\n try {\n $noteInput = new SimplePublicObjectInput([\n 'properties' => [\n 'hs_note_body' => $body,\n 'hubspot_owner_id' => $ownerId,\n 'hs_timestamp' => $timestamp,\n ],\n ]);\n\n // Create note\n $note = $this->getNewInstance()->crm()->objects()->basicApi()->create('note', $noteInput);\n\n $this->getNewInstance()->crm()->objects()->associationsApi()->create(\n 'note',\n $note->getId(),\n $this->getNoteObject($noteObject),\n $objectId,\n $this->getNoteAssociationType($noteObject),\n );\n\n return $note->getId();\n } catch (\\Exception $e) {\n $this->log->error('[Hubspot] Failed to create note', [\n 'objectId' => $objectId,\n 'noteObject' => $noteObject->getObjectType(),\n 'reason' => $e->getMessage(),\n ]);\n\n \\Sentry::captureException($e);\n }\n\n return null;\n }\n\n public function updateEngagement(string $objectId, array $engagement, array $metadata): void\n {\n $this->getInstance()->engagements()->update($objectId, $engagement, $metadata);\n }\n\n public function getEngagementData(string $engagementId): array\n {\n $engagement = $this->getInstance()->engagements()->get($engagementId);\n\n return $engagement->toArray();\n }\n\n public function createEngagement(array $engagement, array $associations, array $metadata): Response\n {\n return $this->getInstance()\n ->engagements()\n ->create($engagement, $associations, $metadata);\n }\n\n public function isUnauthorizedException(\\Exception $e): bool\n {\n // Check for specific HubSpot API exception types first\n if ($e instanceof BadRequest) {\n // BadRequest can contain 401 status codes\n return $e->getCode() === 401;\n }\n\n // Check for HTTP client exceptions with status codes\n if ($e instanceof \\GuzzleHttp\\Exception\\RequestException && $e->hasResponse()) {\n $response = $e->getResponse();\n if ($response !== null) {\n return $response->getStatusCode() === 401;\n }\n }\n\n // Check for Guzzle HTTP exceptions\n if ($e instanceof \\GuzzleHttp\\Exception\\ClientException) {\n return $e->getCode() === 401;\n }\n\n // Fallback to string matching as last resort, but be more specific\n $message = strtolower($e->getMessage());\n\n return str_contains($message, '401 unauthorized') ||\n str_contains($message, 'http 401') ||\n str_contains($message, 'status code 401') ||\n (preg_match('/\\b401\\b/', $message) && str_contains($message, 'unauthorized'));\n }\n\n /**\n * Validates and refreshes the access token if needed before API requests.\n * This ensures long-running processes don't fail due to token expiration.\n *\n * @throws SocialAccountTokenInvalidException\n */\n public function ensureValidToken(): void\n {\n if ($this->oauthAccount === null) {\n return;\n }\n\n $newToken = $this->tokenManager->ensureValidToken($this->oauthAccount);\n if ($newToken !== null) {\n $this->accessToken = $newToken;\n }\n }\n\n public function getConfig()\n {\n return $this->config;\n }\n\n // returns only active (archived=false)\n public function getOwners(): array\n {\n return $this->getNewInstance()->crm()->owners()->getAll();\n }\n\n /**\n * @param bool $archived\n *\n * @return array<Owner>|[]\n */\n public function getOwnersArchived(bool $archived = true): array\n {\n $endpoint = '/crm/v3/owners';\n $queryParams = [\n 'archived' => $archived ? 'true' : 'false',\n ];\n $queryString = http_build_query($queryParams);\n\n $owners = [];\n\n try {\n $response = $this->makeRequest(endpoint: $endpoint, queryString: $queryString);\n $responseData = $response?->toArray();\n\n foreach ($responseData['results'] as $result) {\n try {\n $owners[] = Owner::create($result);\n } catch (Throwable $e) {\n $this->log->error('[HubSpot] Failed to process owner data', [\n 'result' => $result,\n 'error' => $e->getMessage(),\n ]);\n\n continue;\n }\n }\n } catch (Throwable $e) {\n $this->log->error('HubSpot] Failed to fetch owners', [\n 'archived' => $archived,\n 'error' => $e->getMessage(),\n ]);\n\n return [];\n }\n\n return $owners;\n }\n\n public function getMeeting(string $engagementId): ObjectWithAssociations\n {\n return $this->getNewInstance()->crm()->objects()->basicApi()\n ->getById('meeting', $engagementId, null, 'contact,company,deal');\n }\n\n public function deleteEngagement(string $engagementId): void\n {\n $this->getInstance()->engagements()->delete((int) $engagementId);\n }\n\n public function getAssociationsData(array $ids, string $fromObject, string $toObject): array\n {\n $associationData = [];\n $idChunks = array_chunk($ids, self::ASSOCIATIONS_BATCH_SIZE_LIMIT);\n\n foreach ($idChunks as $idChunk) {\n try {\n $batchInput = new \\HubSpot\\Client\\Crm\\Associations\\Model\\BatchInputPublicObjectId();\n $batchInput->setInputs(array_map(function ($id) {\n $publicObjectId = new \\HubSpot\\Client\\Crm\\Associations\\Model\\PublicObjectId();\n $publicObjectId->setId($id);\n\n return $publicObjectId;\n }, $idChunk));\n\n $associatedObjectsData = $this\n ->getNewInstance()\n ->crm()\n ->associations()\n ->batchApi()\n ->read($fromObject, $toObject, $batchInput);\n\n if ($associatedObjectsData instanceof \\HubSpot\\Client\\Crm\\Associations\\Model\\BatchResponsePublicAssociationMulti) {\n foreach ($associatedObjectsData->getResults() as $association) {\n $from = $association->getFrom()->getId();\n $toAssociations = $association->getTo();\n\n if (! empty($toAssociations)) {\n $associationData[$from] = array_map(function ($item) {\n return $item->getId();\n }, $toAssociations);\n }\n }\n }\n } catch (\\Exception $e) {\n $this->log->error('[Hubspot] Failed to fetch associations', [\n 'from_object' => $fromObject,\n 'to_object' => $toObject,\n 'reason' => $e->getMessage(),\n ]);\n }\n }\n\n return $associationData;\n }\n\n /**\n * @throws \\Exception\n */\n private function getNoteAssociationType(NoteObject $noteObject): string\n {\n return match($noteObject) {\n NoteObject::Opportunity => 'note_to_deal',\n NoteObject::Lead, NoteObject::Contact => 'note_to_contact', // or 'note_to_lead' if your portal supports it\n NoteObject::Account => 'note_to_company',\n NoteObject::Call, NoteObject::Event => throw new \\Exception('Not supported'),\n };\n }\n\n /**\n * @throws \\Exception\n */\n private function getNoteObject(NoteObject $noteObject): string\n {\n return match($noteObject) {\n NoteObject::Opportunity => 'deal',\n NoteObject::Lead, NoteObject::Contact => 'contact',\n NoteObject::Account => 'company',\n NoteObject::Call, NoteObject::Event => throw new \\Exception('Not supported'),\n };\n }\n\n public function addAssociations(string $objectType, string $associationType, array $payload): Response\n {\n $endpoint = \"/crm/v4/associations/$objectType/$associationType/batch/create\";\n\n return $this->makeRequest($endpoint, 'POST', $payload);\n }\n\n public function removeAssociations(string $objectType, string $associationType, array $payload): Response\n {\n $endpoint = \"/crm/v4/associations/$objectType/$associationType/batch/archive\";\n\n return $this->makeRequest($endpoint, 'POST', $payload);\n }\n}","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Project","depth":3,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Project","depth":3,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"New File or Directory…","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Expand Selected","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Collapse All","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Options","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
-2379307789937465929
|
6701760610910178365
|
click
|
accessibility
|
NULL
|
Project: faVsco.js, menu
master, menu
Start Listen Project: faVsco.js, menu
master, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Show Replace Field
Search History
retry_error
New Line
Match Case
Words
Regex
Replace History
Replace
New Line
Preserve case
0 results
Previous Occurrence
Next Occurrence
Filter Search Results
Open in Window, Multiple Cursors
Click to highlight
Close
Sync Changes
Hide This Notification
Code changed:
Hide
238
Previous Highlighted Error
Next Highlighted Error
[2026-05-07 12:52:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"fa8a3008-d298-4682-bbbc-fdc77520e0d7","trace_id":"7cfb2afb-9fc4-4a77-81be-65dce93c7d80"}
[2026-05-07 12:52:08] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"fa8a3008-d298-4682-bbbc-fdc77520e0d7","trace_id":"7cfb2afb-9fc4-4a77-81be-65dce93c7d80"}
[2026-05-07 12:52:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"fa8a3008-d298-4682-bbbc-fdc77520e0d7","trace_id":"7cfb2afb-9fc4-4a77-81be-65dce93c7d80"}
[2026-05-07 12:52:12] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"932ced9d-9804-48ed-976a-1f8bf5e75707","trace_id":"21bf320c-58f3-4082-831d-9f07f6c6a669"}
[2026-05-07 12:52:12] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"932ced9d-9804-48ed-976a-1f8bf5e75707","trace_id":"21bf320c-58f3-4082-831d-9f07f6c6a669"}
[2026-05-07 12:52:17] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1499,"provider":"hubspot"} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:17] local.INFO: [SocialAccountService] Token retrieved {"socialAccountId":1499,"provider":"hubspot"} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:17] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:17] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {"crm_provider":"hubspot","crm_owner":148,"team_id":2} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:17] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.55,"average_seconds_per_request":0.55} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:18] local.NOTICE: Monitoring start {"correlation_id":"ae3ec78f-432c-4e22-b73b-0413af73d9f3","trace_id":"c2feb517-0f2b-4ad9-bce5-4d57476a164b"}
[2026-05-07 12:52:18] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.51,"average_seconds_per_request":0.51} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:18] local.NOTICE: Monitoring end {"correlation_id":"ae3ec78f-432c-4e22-b73b-0413af73d9f3","trace_id":"c2feb517-0f2b-4ad9-bce5-4d57476a164b"}
[2026-05-07 12:52:18] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.48,"average_seconds_per_request":0.48} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:19] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.49,"average_seconds_per_request":0.49} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:19] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.49,"average_seconds_per_request":0.49} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"2bf2f73f-007c-4909-925e-f1749fbf87b3","trace_id":"8429123c-d92c-48d9-a154-29bc0aa0e2a1"}
[2026-05-07 12:52:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"2bf2f73f-007c-4909-925e-f1749fbf87b3","trace_id":"8429123c-d92c-48d9-a154-29bc0aa0e2a1"}
[2026-05-07 12:52:20] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.48,"average_seconds_per_request":0.48} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:20] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.62,"average_seconds_per_request":0.62} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:21] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.78,"average_seconds_per_request":0.78} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:22] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":1.21,"average_seconds_per_request":1.21} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:23] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.53,"average_seconds_per_request":0.53} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:25] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8","trace_id":"64ccac6b-34f7-45ed-a8ac-b63adbb19107"}
[2026-05-07 12:52:25] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8","trace_id":"64ccac6b-34f7-45ed-a8ac-b63adbb19107"}
[2026-05-07 12:52:26] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8","trace_id":"64ccac6b-34f7-45ed-a8ac-b63adbb19107"}
[2026-05-07 12:52:26] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8","trace_id":"64ccac6b-34f7-45ed-a8ac-b63adbb19107"}
[2026-05-07 12:52:28] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:count","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"6e1a36d0-a87a-455f-88b9-04f16718ea33","trace_id":"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c"}
[2026-05-07 12:52:28] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:50:00, 2026-05-07 12:52:00] {"correlation_id":"6e1a36d0-a87a-455f-88b9-04f16718ea33","trace_id":"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c"}
[2026-05-07 12:52:28] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:50:00, 2026-05-07 12:52:00] {"correlation_id":"6e1a36d0-a87a-455f-88b9-04f16718ea33","trace_id":"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c"}
[2026-05-07 12:52:28] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:count","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"6e1a36d0-a87a-455f-88b9-04f16718ea33","trace_id":"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c"}
[2026-05-07 12:52:31] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:create","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"80549428-beea-4a6c-97d3-818ca0f059f3","trace_id":"55ddd59b-073b-4331-8cdb-baa869dcff70"}
[2026-05-07 12:52:31] local.INFO: [EmailSchedule] STARTING batch create {"host":"docker_lamp_1"} {"correlation_id":"80549428-beea-4a6c-97d3-818ca0f059f3","trace_id":"55ddd59b-073b-4331-8cdb-baa869dcff70"}
[2026-05-07 12:52:31] local.INFO: [EmailSchedule] FINISHED batch create {"host":"docker_lamp_1"} {"correlation_id":"80549428-beea-4a6c-97d3-818ca0f059f3","trace_id":"55ddd59b-073b-4331-8cdb-baa869dcff70"}
[2026-05-07 12:52:31] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:create","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"80549428-beea-4a6c-97d3-818ca0f059f3","trace_id":"55ddd59b-073b-4331-8cdb-baa869dcff70"}
[2026-05-07 12:52:32] local.INFO: [Jiminny\Jobs\Mailbox\CreateBatches] processed 2 inboxes and created 0 batches {"userId":null,"batchSize":30,"maxBatches":1000} {"correlation_id":"92242bd6-7014-4487-a50b-1570e1a88e7a","trace_id":"55ddd59b-073b-4331-8cdb-baa869dcff70"}
[2026-05-07 12:52:39] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"activity:sync","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"d467eace-3254-4ecc-8d8e-a94688d6d3ad","trace_id":"5105ca8f-3c0d-4798-b748-5a7d6fbd7531"}
[2026-05-07 12:52:39] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"activity:sync","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"d467eace-3254-4ecc-8d8e-a94688d6d3ad","trace_id":"5105ca8f-3c0d-4798-b748-5a7d6fbd7531"}
[2026-05-07 12:53:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"04363b29-2f82-470a-89d0-c5ce4f4779d7","trace_id":"3c76a1f1-3348-4e2b-897c-4a216ca95147"}
[2026-05-07 12:53:08] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"04363b29-2f82-470a-89d0-c5ce4f4779d7","trace_id":"3c76a1f1-3348-4e2b-897c-4a216ca95147"}
[2026-05-07 12:53:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"04363b29-2f82-470a-89d0-c5ce4f4779d7","trace_id":"3c76a1f1-3348-4e2b-897c-4a216ca95147"}
[2026-05-07 12:53:11] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"5ebbecd0-866c-443f-965f-b6ac03735379","trace_id":"e0a724a5-bb4b-4fe6-9fe9-36ea1c3f0326"}
[2026-05-07 12:53:11] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"5ebbecd0-866c-443f-965f-b6ac03735379","trace_id":"e0a724a5-bb4b-4fe6-9fe9-36ea1c3f0326"}
[2026-05-07 12:53:18] local.NOTICE: Monitoring start {"correlation_id":"f39f0d3c-a292-41cb-8834-45dae1f8cf47","trace_id":"b6e7e2a7-85af-401d-afc6-bec2bdab34d7"}
[2026-05-07 12:53:18] local.NOTICE: Monitoring end {"correlation_id":"f39f0d3c-a292-41cb-8834-45dae1f8cf47","trace_id":"b6e7e2a7-85af-401d-afc6-bec2bdab34d7"}
[2026-05-07 12:53:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"419bb747-2669-496f-944b-1073496cc271","trace_id":"4cb913a4-ef75-422b-80eb-fbfb988521ed"}
[2026-05-07 12:53:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"419bb747-2669-496f-944b-1073496cc271","trace_id":"4cb913a4-ef75-422b-80eb-fbfb988521ed"}
[2026-05-07 12:53:22] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"f4805c97-9344-4111-8be2-2b1efeae07bb","trace_id":"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22"}
[2026-05-07 12:53:22] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"f4805c97-9344-4111-8be2-2b1efeae07bb","trace_id":"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22"}
[2026-05-07 12:53:22] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"f4805c97-9344-4111-8be2-2b1efeae07bb","trace_id":"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22"}
[2026-05-07 12:53:22] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"f4805c97-9344-4111-8be2-2b1efeae07bb","trace_id":"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22"}
[2026-05-07 12:53:25] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:retry-failed","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"2eadb06b-2c2e-4a7f-8920-77bd30d6cd7f","trace_id":"75f27a23-2021-41a5-9e5f-4b1cb4f143a6"}
[2026-05-07 12:53:25] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:retry-failed","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"2eadb06b-2c2e-4a7f-8920-77bd30d6cd7f","trace_id":"75f27a23-2021-41a5-9e5f-4b1cb4f143a6"}
[2026-05-07 12:54:06] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"ad151521-f676-4351-a70b-f44dc0b94990","trace_id":"17e39c4c-85cb-49a4-815e-b7315a8c2249"}
[2026-05-07 12:54:06] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"ad151521-f676-4351-a70b-f44dc0b94990","trace_id":"17e39c4c-85cb-49a4-815e-b7315a8c2249"}
[2026-05-07 12:54:06] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"ad151521-f676-4351-a70b-f44dc0b94990","trace_id":"17e39c4c-85cb-49a4-815e-b7315a8c2249"}
[2026-05-07 12:54:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"ed0583cf-03c6-4696-b859-876c8efa4473","trace_id":"3f9e0a3c-2178-4885-95eb-8618b8cfc042"}
[2026-05-07 12:54:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"ed0583cf-03c6-4696-b859-876c8efa4473","trace_id":"3f9e0a3c-2178-4885-95eb-8618b8cfc042"}
[2026-05-07 12:54:10] local.NOTICE: Monitoring start {"correlation_id":"7142250a-b897-4620-8ff7-fd9b3a1f3802","trace_id":"597def1e-ca38-4cc4-8890-fdcd5baff948"}
[2026-05-07 12:54:10] local.NOTICE: Monitoring end {"correlation_id":"7142250a-b897-4620-8ff7-fd9b3a1f3802","trace_id":"597def1e-ca38-4cc4-8890-fdcd5baff948"}
[2026-05-07 12:54:12] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"cb2ada48-0200-4eb3-a8c5-6cb8ea43ec0d","trace_id":"73937bdc-10b9-4508-9ef2-86420fe774fc"}
[2026-05-07 12:54:12] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"cb2ada48-0200-4eb3-a8c5-6cb8ea43ec0d","trace_id":"73937bdc-10b9-4508-9ef2-86420fe774fc"}
[2026-05-07 12:54:14] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"8f1d8932-2839-4256-99ab-1fd13e8381c6","trace_id":"cc090767-edc2-4a89-90c2-116f1737de7f"}
[2026-05-07 12:54:14] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"8f1d8932-2839-4256-99ab-1fd13e8381c6","trace_id":"cc090767-edc2-4a89-90c2-116f1737de7f"}
[2026-05-07 12:54:14] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"8f1d8932-2839-4256-99ab-1fd13e8381c6","trace_id":"cc090767-edc2-4a89-90c2-116f1737de7f"}
[2026-05-07 12:54:14] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"8f1d8932-2839-4256-99ab-1fd13e8381c6","trace_id":"cc090767-edc2-4a89-90c2-116f1737de7f"}
[2026-05-07 12:54:16] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:count","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"9d324c6d-5b36-46ee-89c6-f95f86bf3f39","trace_id":"860cdff0-9356-4e94-84cc-e011a74ba56c"}
[2026-05-07 12:54:16] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:52:00, 2026-05-07 12:54:00] {"correlation_id":"9d324c6d-5b36-46ee-89c6-f95f86bf3f39","trace_id":"860cdff0-9356-4e94-84cc-e011a74ba56c"}
[2026-05-07 12:54:16] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:52:00, 2026-05-07 12:54:00] {"correlation_id":"9d324c6d-5b36-46ee-89c6-f95f86bf3f39","trace_id":"860cdff0-9356-4e94-84cc-e011a74ba56c"}
[2026-05-07 12:54:16] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:count","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"9d324c6d-5b36-46ee-89c6-f95f86bf3f39","trace_id":"860cdff0-9356-4e94-84cc-e011a74ba56c"}
[2026-05-07 12:54:18] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"activity:aircall:check-and-renew","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"c2009a88-eea6-4954-8642-ef5d9cb56b42","trace_id":"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab"}
[2026-05-07 12:54:18] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1496,"provider":"aircall"} {"correlation_id":"c2009a88-eea6-4954-8642-ef5d9cb56b42","trace_id":"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab"}
[2026-05-07 12:54:18] local.INFO: [SocialAccountService] Token retrieved {"socialAccountId":1496,"provider":"aircall"} {"correlation_id":"c2009a88-eea6-4954-8642-ef5d9cb56b42","trace_id":"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab"}
[2026-05-07 12:54:18] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"c2009a88-eea6-4954-8642-ef5d9cb56b42","trace_id":"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab"}
[2026-05-07 12:54:19] local.ERROR: [Aircall] Re-activating webhooks failed {"team_id":1,"reason":"{\"message\":\"Forbidden\"}"} {"correlation_id":"c2009a88-eea6-4954-8642-ef5d9cb56b42","trace_id":"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab"}
[2026-05-07 12:54:19] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"activity:aircall:check-and-renew","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"c2009a88-eea6-4954-8642-ef5d9cb56b42","trace_id":"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab"}
[2026-05-07 12:54:21] local.INFO: [RetryFailedDownloads] Starting {"options":{"from":null,"to":null,"help":false,"silent":false,"quiet":false,"verbose":false,"version":false,"ansi":null,"no-interaction":false,"env":null}} {"correlation_id":"825ef2d7-b5f8-45cd-b19d-20a179b06934","trace_id":"5825a6c8-14c9-4bec-b688-d4895cfc41cc"}
[2026-05-07 12:55:05] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"c0dc8e25-7a51-4023-be61-d0abd6d72e37","trace_id":"16b8fa3e-92b1-465e-82d4-642a2d14c7c5"}
[2026-05-07 12:55:05] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"c0dc8e25-7a51-4023-be61-d0abd6d72e37","trace_id":"16b8fa3e-92b1-465e-82d4-642a2d14c7c5"}
[2026-05-07 12:55:05] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"c0dc8e25-7a51-4023-be61-d0abd6d72e37","trace_id":"16b8fa3e-92b1-465e-82d4-642a2d14c7c5"}
[2026-05-07 12:55:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"1c65fdd1-1f79-435d-b469-add46ddafd63","trace_id":"62f2a3bb-3be7-4c76-a9dd-222bfb895fab"}
[2026-05-07 12:55:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"1c65fdd1-1f79-435d-b469-add46ddafd63","trace_id":"62f2a3bb-3be7-4c76-a9dd-222bfb895fab"}
[2026-05-07 12:55:11] local.NOTICE: Monitoring start {"correlation_id":"f115f9bc-bb59-4fc9-8c9f-8b69baba1a55","trace_id":"e75cb5c6-6dd8-4000-8d26-4418020c7cfe"}
[2026-05-07 12:55:11] local.NOTICE: Monitoring end {"correlation_id":"f115f9bc-bb59-4fc9-8c9f-8b69baba1a55","trace_id":"e75cb5c6-6dd8-4000-8d26-4418020c7cfe"}
[2026-05-07 12:55:14] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"dba5c474-4d40-44da-baf2-f8b30db9a2f5","trace_id":"adb45622-1fb0-457c-bf20-8dcceab2d62a"}
[2026-05-07 12:55:14] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"dba5c474-4d40-44da-baf2-f8b30db9a2f5","trace_id":"adb45622-1fb0-457c-bf20-8dcceab2d62a"}
[2026-05-07 12:55:16] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"22c96a8e-4424-4a1f-b349-206276eefe4c","trace_id":"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c"}
[2026-05-07 12:55:16] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"22c96a8e-4424-4a1f-b349-206276eefe4c","trace_id":"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c"}
[2026-05-07 12:55:16] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"22c96a8e-4424-4a1f-b349-206276eefe4c","trace_id":"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c"}
[2026-05-07 12:55:16] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"22c96a8e-4424-4a1f-b349-206276eefe4c","trace_id":"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c"}
[2026-05-07 12:55:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"activity:purge-stale","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"5f958e8d-1d01-4144-abd6-2513e5524ad3","trace_id":"828bc5b7-e2aa-4443-901f-38dd94bb7cc5"}
[2026-05-07 12:55:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"activity:purge-stale","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"5f958e8d-1d01-4144-abd6-2513e5524ad3","trace_id":"828bc5b7-e2aa-4443-901f-38dd94bb7cc5"}
[2026-05-07 12:55:22] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:text-relay:sync","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"6bd1c9cb-cd9a-42a9-87fe-45cb7bac687a","trace_id":"0f2f5d66-c4c9-46a5-a31b-6937663ce1ad"}
[2026-05-07 12:55:22] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:text-relay:sync","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"6bd1c9cb-cd9a-42a9-87fe-45cb7bac687a","trace_id":"0f2f5d66-c4c9-46a5-a31b-6937663ce1ad"}
[2026-05-07 12:55:24] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:pre-meeting-notification","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"c5dd8132-d7e1-4caa-84d1-0a50d02df8da","trace_id":"bc7341c5-b8e2-48ea-9670-7ec375363180"}
[2026-05-07 12:55:24] local.INFO: Running pre-meeting notification command {"correlation_id":"c5dd8132-d7e1-4caa-84d1-0a50d02df8da","trace_id":"bc7341c5-b8e2-48ea-9670-7ec375363180"}
[2026-05-07 12:55:24] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:pre-meeting-notification","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"c5dd8132-d7e1-4caa-84d1-0a50d02df8da","trace_id":"bc7341c5-b8e2-48ea-9670-7ec375363180"}
[2026-05-07 12:55:26] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:start","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0","trace_id":"efb1619f-4185-4319-9bfb-305cee0b6bfc"}
[2026-05-07 12:55:26] local.INFO: Running conference:monitor:start command for activities in (2026-05-07 12:45:00, 2026-05-07 12:50:00] {"correlation_id":"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0","trace_id":"efb1619f-4185-4319-9bfb-305cee0b6bfc"}
[2026-05-07 12:55:26] local.INFO: [conference:monitor:start] No activities found in (2026-05-07 12:45:00, 2026-05-07 12:50:00] {"correlation_id":"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0","trace_id":"efb1619f-4185-4319-9bfb-305cee0b6bfc"}
[2026-05-07 12:55:26] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:start","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0","trace_id":"efb1619f-4185-4319-9bfb-305cee0b6bfc"}
[2026-05-07 12:55:28] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:end","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"3792b31a-080a-4fe4-9823-5602361325ba","trace_id":"41a2fde1-48f6-4667-84b7-a2f93e9ad2da"}
[2026-05-07 12:55:28] local.INFO: conference:monitor:end:Jiminny\Console\Commands\Activities\MonitorMeetingEndCommand::logActivitiesEnded {"from":"12:50","to":"12:55"} {"correlation_id":"3792b31a-080a-4fe4-9823-5602361325ba","trace_id":"41a2fde1-48f6-4667-84b7-a2f93e9ad2da"}
[2026-05-07 12:55:28] local.INFO: conference:monitor:end:Jiminny\Console\Commands\Activities\MonitorMeetingEndCommand::logActivitiesWithUnfinishedSession {"from":"02:45","to":"02:50"} {"correlation_id":"3792b31a-080a-4fe4-9823-5602361325ba","trace_id":"41a2fde1-48f6-4667-84b7-a2f93e9ad2da"}
[2026-05-07 12:55:28] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:end","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"3792b31a-080a-4fe4-9823-5602361325ba","trace_id":"41a2fde1-48f6-4667-84b7-a2f93e9ad2da"}
[2026-05-07 12:55:30] local.NOTICE: Repairing HubSpot tokens start {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:30] local.INFO: Trying to refresh HubSpot token {"account_id":59,"updated_at":"2025-10-03 09:32:05"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:30] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:30] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":59,"provider":"hubspot","refreshToken":"97b78f6e2cc49965c00c2492b602b02708b1392551e6b3f113fbaa48992af90b","state":"full-refresh"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.ERROR: Failed to refresh HubSpot token {"account_id":59,"updated_at":"2025-10-03 09:32:05","reason":"missing or invalid refresh token","previous":""} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.INFO: Trying to refresh HubSpot token {"account_id":306,"updated_at":"2023-11-27 09:30:03"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":306,"provider":"hubspot","refreshToken":"6fa6aa8cc641d131231acc3470f5c03cb3b07b2e580fb18f8acb3b1dbb72549b","state":"full-refresh"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.ERROR: Failed to refresh HubSpot token {"account_id":306,"updated_at":"2023-11-27 09:30:03","reason":"missing or invalid refresh token","previous":""} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.INFO: Trying to refresh HubSpot token {"account_id":1372,"updated_at":"2025-10-02 14:47:06"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1372,"provider":"hubspot","refreshToken":"9aa73948c761da29dce46c177cf9aee1fde483a44169ca38723f9f0597d7a8c4","state":"full-refresh"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:32] local.ERROR: Failed to refresh HubSpot token {"account_id":1372,"updated_at":"2025-10-02 14:47:06","reason":"missing or invalid refresh token","previous":""} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:32] local.NOTICE: Repairing HubSpot tokens end {"total":3,"fixed":0,"failed":3} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:40] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"crm:bullhorn:ping","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"5e676ae4-5d63-49d4-9001-559088adf06b","trace_id":"2fcce073-dd68-4c99-b7c4-b9e03c20b8e4"}
[2026-05-07 12:55:40] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:pre-meeting-reminder","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"1f830896-8142-41d1-bfc9-4cbb9179ffda","trace_id":"e348a096-7f37-4308-a6d8-66131e8be901"}
[2026-05-07 12:55:40] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"crm:bullhorn:ping","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"5e676ae4-5d63-49d4-9001-559088adf06b","trace_id":"2fcce073-dd68-4c99-b7c4-b9e03c20b8e4"}
[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Command] Starting polling service {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Service starting {"memory_limit":"256M","max_execution_time":"0","initial_memory_mb":62.0} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Acquired polling lock {"expires_at":"2026-05-07T12:57:40.609671Z"} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:40] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:40] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:pre-meeting-reminder","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"1f830896-8142-41d1-bfc9-4cbb9179ffda","trace_id":"e348a096-7f37-4308-a6d8-66131e8be901"}
[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:45] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:45] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:46] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:51] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:51] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:51] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:06] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:06] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:06] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"2d8b30b4-87aa-480f-9b9e-5a9c709b742a","trace_id":"25b7be6c-1faf-430b-a724-a4ff28773a31"}
[2026-05-07 12:56:08] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"2d8b30b4-87aa-480f-9b9e-5a9c709b742a","trace_id":"25b7be6c-1faf-430b-a724-a4ff28773a31"}
[2026-05-07 12:56:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"2d8b30b4-87aa-480f-9b9e-5a9c709b742a","trace_id":"25b7be6c-1faf-430b-a724-a4ff28773a31"}
[2026-05-07 12:56:10] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"efd336d7-db4d-459e-b6e7-bf73454e955e","trace_id":"0a82c3d5-0417-48c8-b88f-70ec33e2326a"}
[2026-05-07 12:56:10] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"efd336d7-db4d-459e-b6e7-bf73454e955e","trace_id":"0a82c3d5-0417-48c8-b88f-70ec33e2326a"}
[2026-05-07 12:56:12] local.NOTICE: Monitoring start {"correlation_id":"68481576-8ca6-4ee5-821b-07374702971d","trace_id":"c73eac09-5d20-425f-9c22-bd6c65fc60c9"}
[2026-05-07 12:56:12] local.NOTICE: Monitoring end {"correlation_id":"68481576-8ca6-4ee5-821b-07374702971d","trace_id":"c73eac09-5d20-425f-9c22-bd6c65fc60c9"}
[2026-05-07 12:56:17] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"bd0cdc75-b5c2-4dbb-bc44-e36c96813d24","trace_id":"f688cd98-c171-4e30-8c72-afc14f040861"}
[2026-05-07 12:56:17] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"bd0cdc75-b5c2-4dbb-bc44-e36c96813d24","trace_id":"f688cd98-c171-4e30-8c72-afc14f040861"}
[2026-05-07 12:56:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"f01636a9-4059-4ab0-9ad2-b078d42cedbd","trace_id":"fea938d8-aedc-40ec-b8c2-2f487e1ac808"}
[2026-05-07 12:56:20] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"f01636a9-4059-4ab0-9ad2-b078d42cedbd","trace_id":"fea938d8-aedc-40ec-b8c2-2f487e1ac808"}
[2026-05-07 12:56:20] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"f01636a9-4059-4ab0-9ad2-b078d42cedbd","trace_id":"fea938d8-aedc-40ec-b8c2-2f487e1ac808"}
[2026-05-07 12:56:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"f01636a9-4059-4ab0-9ad2-b078d42cedbd","trace_id":"fea938d8-aedc-40ec-b8c2-2f487e1ac808"}
[2026-05-07 12:56:23] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:count","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"d4558901-264d-4238-8589-62a137bac1fd","trace_id":"38e6b5dc-ebd6-46a7-8224-7374d4e58630"}
[2026-05-07 12:56:23] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:54:00, 2026-05-07 12:56:00] {"correlation_id":"d4558901-264d-4238-8589-62a137bac1fd","trace_id":"38e6b5dc-ebd6-46a7-8224-7374d4e58630"}
[2026-05-07 12:56:23] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:54:00, 2026-05-07 12:56:00] {"correlation_id":"d4558901-264d-4238-8589-62a137bac1fd","trace_id":"38e6b5dc-ebd6-46a7-8224-7374d4e58630"}
[2026-05-07 12:56:23] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:count","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"d4558901-264d-4238-8589-62a137bac1fd","trace_id":"38e6b5dc-ebd6-46a7-8224-7374d4e58630"}
[2026-05-07 12:56:24] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"crm:sync-hubspot-objects","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"7bfaf9be-0ca1-4170-a0c9-83e0ed61881c","trace_id":"ba7f9eee-8dcb-4c94-acb0-18f9363757ad"}
[2026-05-07 12:56:24] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"crm:sync-hubspot-objects","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"7bfaf9be-0ca1-4170-a0c9-83e0ed61881c","trace_id":"ba7f9eee-8dcb-4c94-acb0-18f9363757ad"}
[2026-05-07 12:56:26] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"activity:notify-not-logged","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"2541e0fa-1117-4863-9523-d723b5821a24","trace_id":"d9600320-5133-4938-bdd1-2256dfdf8db4"}
[2026-05-07 12:56:26] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"activity:notify-not-logged","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"2541e0fa-1117-4863-9523-d723b5821a24","trace_id":"d9600320-5133-4938-bdd1-2256dfdf8db4"}
[2026-05-07 12:56:35] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:sync","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"e444f776-37db-4c6d-b30e-20b01a089de7","trace_id":"1168869e-e07c-4702-a046-42fc95a91f6d"}
[2026-05-07 12:56:36] local.INFO: [EmailSchedule] STARTING Inbox Sync {"host":"docker_lamp_1"} {"correlation_id":"e444f776-37db-4c6d-b30e-20b01a089de7","trace_id":"1168869e-e07c-4702-a046-42fc95a91f6d"}
[2026-05-07 12:56:36] local.INFO: [EmailSchedule] FINISHED Inbox Sync {"host":"docker_lamp_1","events":2} {"correlation_id":"e444f776-37db-4c6d-b30e-20b01a089de7","trace_id":"1168869e-e07c-4702-a046-42fc95a91f6d"}
[2026-05-07 12:56:36] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:sync","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"e444f776-37db-4c6d-b30e-20b01a089de7","trace_id":"1168869e-e07c-4702-a046-42fc95a91f6d"}
[2026-05-07 12:56:36] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:36] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:36] local.INFO: [HubSpot Journal Auth] Requesting new client credentials token {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:37] local.INFO: [HubSpot Journal Auth] Successfully obtained new access token {"expires_in":1800,"cached_for":1500} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:37] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:37] local.WARNING: [HubSpot Journal Polling] Maximum empty results reached, stopping {"empty_results":5,"max_empty_results":5} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:37] local.WARNING: [HubSpot Journal Polling] Maximum empty results reached, stopping {"empty_results":5,"max_empty_results":5} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:37] local.INFO: [HubSpot Journal Polling] Service ending {"runtime_seconds":57,"total_cycles":5,"files_downloaded":0,"empty_files":0,"other_portal_skipped":0,"total_events":0,"events_per_file":0,"avg_api_ms":238.3,"avg_download_ms":0.0,"avg_transform_ms":0.0,"avg_process_ms":0.0,"peak_memory_mb":99.73} {"correlation_id"...
|
4116
|
NULL
|
NULL
|
NULL
|
|
4152
|
NULL
|
0
|
2026-05-07T13:11:29.417512+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-07/1778 /Users/lukas/.screenpipe/data/data/2026-05-07/1778159489417_m2.jpg...
|
PhpStorm
|
faVsco.js – HubspotPaginationService.php
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
master, menu
Start Listen Project: faVsco.js, menu
master, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Show Replace Field
Search History
retry_error
New Line
Match Case
Words
Regex
Replace History
Replace
New Line
Preserve case
0 results
Previous Occurrence
Next Occurrence
Filter Search Results
Open in Window, Multiple Cursors
Click to highlight
Close
Sync Changes
Hide This Notification
Code changed:
Hide
934
Previous Highlighted Error
Next Highlighted Error
[2026-05-07 12:52:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"fa8a3008-d298-4682-bbbc-fdc77520e0d7","trace_id":"7cfb2afb-9fc4-4a77-81be-65dce93c7d80"}
[2026-05-07 12:52:08] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"fa8a3008-d298-4682-bbbc-fdc77520e0d7","trace_id":"7cfb2afb-9fc4-4a77-81be-65dce93c7d80"}
[2026-05-07 12:52:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"fa8a3008-d298-4682-bbbc-fdc77520e0d7","trace_id":"7cfb2afb-9fc4-4a77-81be-65dce93c7d80"}
[2026-05-07 12:52:12] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"932ced9d-9804-48ed-976a-1f8bf5e75707","trace_id":"21bf320c-58f3-4082-831d-9f07f6c6a669"}
[2026-05-07 12:52:12] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"932ced9d-9804-48ed-976a-1f8bf5e75707","trace_id":"21bf320c-58f3-4082-831d-9f07f6c6a669"}
[2026-05-07 12:52:17] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1499,"provider":"hubspot"} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:17] local.INFO: [SocialAccountService] Token retrieved {"socialAccountId":1499,"provider":"hubspot"} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:17] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:17] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {"crm_provider":"hubspot","crm_owner":148,"team_id":2} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:17] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.55,"average_seconds_per_request":0.55} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:18] local.NOTICE: Monitoring start {"correlation_id":"ae3ec78f-432c-4e22-b73b-0413af73d9f3","trace_id":"c2feb517-0f2b-4ad9-bce5-4d57476a164b"}
[2026-05-07 12:52:18] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.51,"average_seconds_per_request":0.51} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:18] local.NOTICE: Monitoring end {"correlation_id":"ae3ec78f-432c-4e22-b73b-0413af73d9f3","trace_id":"c2feb517-0f2b-4ad9-bce5-4d57476a164b"}
[2026-05-07 12:52:18] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.48,"average_seconds_per_request":0.48} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:19] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.49,"average_seconds_per_request":0.49} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:19] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.49,"average_seconds_per_request":0.49} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"2bf2f73f-007c-4909-925e-f1749fbf87b3","trace_id":"8429123c-d92c-48d9-a154-29bc0aa0e2a1"}
[2026-05-07 12:52:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"2bf2f73f-007c-4909-925e-f1749fbf87b3","trace_id":"8429123c-d92c-48d9-a154-29bc0aa0e2a1"}
[2026-05-07 12:52:20] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.48,"average_seconds_per_request":0.48} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:20] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.62,"average_seconds_per_request":0.62} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:21] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.78,"average_seconds_per_request":0.78} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:22] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":1.21,"average_seconds_per_request":1.21} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:23] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.53,"average_seconds_per_request":0.53} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:25] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8","trace_id":"64ccac6b-34f7-45ed-a8ac-b63adbb19107"}
[2026-05-07 12:52:25] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8","trace_id":"64ccac6b-34f7-45ed-a8ac-b63adbb19107"}
[2026-05-07 12:52:26] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8","trace_id":"64ccac6b-34f7-45ed-a8ac-b63adbb19107"}
[2026-05-07 12:52:26] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8","trace_id":"64ccac6b-34f7-45ed-a8ac-b63adbb19107"}
[2026-05-07 12:52:28] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:count","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"6e1a36d0-a87a-455f-88b9-04f16718ea33","trace_id":"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c"}
[2026-05-07 12:52:28] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:50:00, 2026-05-07 12:52:00] {"correlation_id":"6e1a36d0-a87a-455f-88b9-04f16718ea33","trace_id":"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c"}
[2026-05-07 12:52:28] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:50:00, 2026-05-07 12:52:00] {"correlation_id":"6e1a36d0-a87a-455f-88b9-04f16718ea33","trace_id":"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c"}
[2026-05-07 12:52:28] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:count","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"6e1a36d0-a87a-455f-88b9-04f16718ea33","trace_id":"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c"}
[2026-05-07 12:52:31] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:create","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"80549428-beea-4a6c-97d3-818ca0f059f3","trace_id":"55ddd59b-073b-4331-8cdb-baa869dcff70"}
[2026-05-07 12:52:31] local.INFO: [EmailSchedule] STARTING batch create {"host":"docker_lamp_1"} {"correlation_id":"80549428-beea-4a6c-97d3-818ca0f059f3","trace_id":"55ddd59b-073b-4331-8cdb-baa869dcff70"}
[2026-05-07 12:52:31] local.INFO: [EmailSchedule] FINISHED batch create {"host":"docker_lamp_1"} {"correlation_id":"80549428-beea-4a6c-97d3-818ca0f059f3","trace_id":"55ddd59b-073b-4331-8cdb-baa869dcff70"}
[2026-05-07 12:52:31] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:create","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"80549428-beea-4a6c-97d3-818ca0f059f3","trace_id":"55ddd59b-073b-4331-8cdb-baa869dcff70"}
[2026-05-07 12:52:32] local.INFO: [Jiminny\Jobs\Mailbox\CreateBatches] processed 2 inboxes and created 0 batches {"userId":null,"batchSize":30,"maxBatches":1000} {"correlation_id":"92242bd6-7014-4487-a50b-1570e1a88e7a","trace_id":"55ddd59b-073b-4331-8cdb-baa869dcff70"}
[2026-05-07 12:52:39] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"activity:sync","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"d467eace-3254-4ecc-8d8e-a94688d6d3ad","trace_id":"5105ca8f-3c0d-4798-b748-5a7d6fbd7531"}
[2026-05-07 12:52:39] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"activity:sync","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"d467eace-3254-4ecc-8d8e-a94688d6d3ad","trace_id":"5105ca8f-3c0d-4798-b748-5a7d6fbd7531"}
[2026-05-07 12:53:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"04363b29-2f82-470a-89d0-c5ce4f4779d7","trace_id":"3c76a1f1-3348-4e2b-897c-4a216ca95147"}
[2026-05-07 12:53:08] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"04363b29-2f82-470a-89d0-c5ce4f4779d7","trace_id":"3c76a1f1-3348-4e2b-897c-4a216ca95147"}
[2026-05-07 12:53:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"04363b29-2f82-470a-89d0-c5ce4f4779d7","trace_id":"3c76a1f1-3348-4e2b-897c-4a216ca95147"}
[2026-05-07 12:53:11] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"5ebbecd0-866c-443f-965f-b6ac03735379","trace_id":"e0a724a5-bb4b-4fe6-9fe9-36ea1c3f0326"}
[2026-05-07 12:53:11] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"5ebbecd0-866c-443f-965f-b6ac03735379","trace_id":"e0a724a5-bb4b-4fe6-9fe9-36ea1c3f0326"}
[2026-05-07 12:53:18] local.NOTICE: Monitoring start {"correlation_id":"f39f0d3c-a292-41cb-8834-45dae1f8cf47","trace_id":"b6e7e2a7-85af-401d-afc6-bec2bdab34d7"}
[2026-05-07 12:53:18] local.NOTICE: Monitoring end {"correlation_id":"f39f0d3c-a292-41cb-8834-45dae1f8cf47","trace_id":"b6e7e2a7-85af-401d-afc6-bec2bdab34d7"}
[2026-05-07 12:53:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"419bb747-2669-496f-944b-1073496cc271","trace_id":"4cb913a4-ef75-422b-80eb-fbfb988521ed"}
[2026-05-07 12:53:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"419bb747-2669-496f-944b-1073496cc271","trace_id":"4cb913a4-ef75-422b-80eb-fbfb988521ed"}
[2026-05-07 12:53:22] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"f4805c97-9344-4111-8be2-2b1efeae07bb","trace_id":"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22"}
[2026-05-07 12:53:22] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"f4805c97-9344-4111-8be2-2b1efeae07bb","trace_id":"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22"}
[2026-05-07 12:53:22] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"f4805c97-9344-4111-8be2-2b1efeae07bb","trace_id":"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22"}
[2026-05-07 12:53:22] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"f4805c97-9344-4111-8be2-2b1efeae07bb","trace_id":"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22"}
[2026-05-07 12:53:25] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:retry-failed","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"2eadb06b-2c2e-4a7f-8920-77bd30d6cd7f","trace_id":"75f27a23-2021-41a5-9e5f-4b1cb4f143a6"}
[2026-05-07 12:53:25] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:retry-failed","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"2eadb06b-2c2e-4a7f-8920-77bd30d6cd7f","trace_id":"75f27a23-2021-41a5-9e5f-4b1cb4f143a6"}
[2026-05-07 12:54:06] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"ad151521-f676-4351-a70b-f44dc0b94990","trace_id":"17e39c4c-85cb-49a4-815e-b7315a8c2249"}
[2026-05-07 12:54:06] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"ad151521-f676-4351-a70b-f44dc0b94990","trace_id":"17e39c4c-85cb-49a4-815e-b7315a8c2249"}
[2026-05-07 12:54:06] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"ad151521-f676-4351-a70b-f44dc0b94990","trace_id":"17e39c4c-85cb-49a4-815e-b7315a8c2249"}
[2026-05-07 12:54:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"ed0583cf-03c6-4696-b859-876c8efa4473","trace_id":"3f9e0a3c-2178-4885-95eb-8618b8cfc042"}
[2026-05-07 12:54:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"ed0583cf-03c6-4696-b859-876c8efa4473","trace_id":"3f9e0a3c-2178-4885-95eb-8618b8cfc042"}
[2026-05-07 12:54:10] local.NOTICE: Monitoring start {"correlation_id":"7142250a-b897-4620-8ff7-fd9b3a1f3802","trace_id":"597def1e-ca38-4cc4-8890-fdcd5baff948"}
[2026-05-07 12:54:10] local.NOTICE: Monitoring end {"correlation_id":"7142250a-b897-4620-8ff7-fd9b3a1f3802","trace_id":"597def1e-ca38-4cc4-8890-fdcd5baff948"}
[2026-05-07 12:54:12] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"cb2ada48-0200-4eb3-a8c5-6cb8ea43ec0d","trace_id":"73937bdc-10b9-4508-9ef2-86420fe774fc"}
[2026-05-07 12:54:12] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"cb2ada48-0200-4eb3-a8c5-6cb8ea43ec0d","trace_id":"73937bdc-10b9-4508-9ef2-86420fe774fc"}
[2026-05-07 12:54:14] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"8f1d8932-2839-4256-99ab-1fd13e8381c6","trace_id":"cc090767-edc2-4a89-90c2-116f1737de7f"}
[2026-05-07 12:54:14] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"8f1d8932-2839-4256-99ab-1fd13e8381c6","trace_id":"cc090767-edc2-4a89-90c2-116f1737de7f"}
[2026-05-07 12:54:14] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"8f1d8932-2839-4256-99ab-1fd13e8381c6","trace_id":"cc090767-edc2-4a89-90c2-116f1737de7f"}
[2026-05-07 12:54:14] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"8f1d8932-2839-4256-99ab-1fd13e8381c6","trace_id":"cc090767-edc2-4a89-90c2-116f1737de7f"}
[2026-05-07 12:54:16] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:count","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"9d324c6d-5b36-46ee-89c6-f95f86bf3f39","trace_id":"860cdff0-9356-4e94-84cc-e011a74ba56c"}
[2026-05-07 12:54:16] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:52:00, 2026-05-07 12:54:00] {"correlation_id":"9d324c6d-5b36-46ee-89c6-f95f86bf3f39","trace_id":"860cdff0-9356-4e94-84cc-e011a74ba56c"}
[2026-05-07 12:54:16] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:52:00, 2026-05-07 12:54:00] {"correlation_id":"9d324c6d-5b36-46ee-89c6-f95f86bf3f39","trace_id":"860cdff0-9356-4e94-84cc-e011a74ba56c"}
[2026-05-07 12:54:16] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:count","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"9d324c6d-5b36-46ee-89c6-f95f86bf3f39","trace_id":"860cdff0-9356-4e94-84cc-e011a74ba56c"}
[2026-05-07 12:54:18] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"activity:aircall:check-and-renew","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"c2009a88-eea6-4954-8642-ef5d9cb56b42","trace_id":"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab"}
[2026-05-07 12:54:18] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1496,"provider":"aircall"} {"correlation_id":"c2009a88-eea6-4954-8642-ef5d9cb56b42","trace_id":"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab"}
[2026-05-07 12:54:18] local.INFO: [SocialAccountService] Token retrieved {"socialAccountId":1496,"provider":"aircall"} {"correlation_id":"c2009a88-eea6-4954-8642-ef5d9cb56b42","trace_id":"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab"}
[2026-05-07 12:54:18] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"c2009a88-eea6-4954-8642-ef5d9cb56b42","trace_id":"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab"}
[2026-05-07 12:54:19] local.ERROR: [Aircall] Re-activating webhooks failed {"team_id":1,"reason":"{\"message\":\"Forbidden\"}"} {"correlation_id":"c2009a88-eea6-4954-8642-ef5d9cb56b42","trace_id":"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab"}
[2026-05-07 12:54:19] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"activity:aircall:check-and-renew","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"c2009a88-eea6-4954-8642-ef5d9cb56b42","trace_id":"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab"}
[2026-05-07 12:54:21] local.INFO: [RetryFailedDownloads] Starting {"options":{"from":null,"to":null,"help":false,"silent":false,"quiet":false,"verbose":false,"version":false,"ansi":null,"no-interaction":false,"env":null}} {"correlation_id":"825ef2d7-b5f8-45cd-b19d-20a179b06934","trace_id":"5825a6c8-14c9-4bec-b688-d4895cfc41cc"}
[2026-05-07 12:55:05] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"c0dc8e25-7a51-4023-be61-d0abd6d72e37","trace_id":"16b8fa3e-92b1-465e-82d4-642a2d14c7c5"}
[2026-05-07 12:55:05] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"c0dc8e25-7a51-4023-be61-d0abd6d72e37","trace_id":"16b8fa3e-92b1-465e-82d4-642a2d14c7c5"}
[2026-05-07 12:55:05] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"c0dc8e25-7a51-4023-be61-d0abd6d72e37","trace_id":"16b8fa3e-92b1-465e-82d4-642a2d14c7c5"}
[2026-05-07 12:55:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"1c65fdd1-1f79-435d-b469-add46ddafd63","trace_id":"62f2a3bb-3be7-4c76-a9dd-222bfb895fab"}
[2026-05-07 12:55:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"1c65fdd1-1f79-435d-b469-add46ddafd63","trace_id":"62f2a3bb-3be7-4c76-a9dd-222bfb895fab"}
[2026-05-07 12:55:11] local.NOTICE: Monitoring start {"correlation_id":"f115f9bc-bb59-4fc9-8c9f-8b69baba1a55","trace_id":"e75cb5c6-6dd8-4000-8d26-4418020c7cfe"}
[2026-05-07 12:55:11] local.NOTICE: Monitoring end {"correlation_id":"f115f9bc-bb59-4fc9-8c9f-8b69baba1a55","trace_id":"e75cb5c6-6dd8-4000-8d26-4418020c7cfe"}
[2026-05-07 12:55:14] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"dba5c474-4d40-44da-baf2-f8b30db9a2f5","trace_id":"adb45622-1fb0-457c-bf20-8dcceab2d62a"}
[2026-05-07 12:55:14] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"dba5c474-4d40-44da-baf2-f8b30db9a2f5","trace_id":"adb45622-1fb0-457c-bf20-8dcceab2d62a"}
[2026-05-07 12:55:16] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"22c96a8e-4424-4a1f-b349-206276eefe4c","trace_id":"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c"}
[2026-05-07 12:55:16] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"22c96a8e-4424-4a1f-b349-206276eefe4c","trace_id":"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c"}
[2026-05-07 12:55:16] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"22c96a8e-4424-4a1f-b349-206276eefe4c","trace_id":"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c"}
[2026-05-07 12:55:16] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"22c96a8e-4424-4a1f-b349-206276eefe4c","trace_id":"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c"}
[2026-05-07 12:55:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"activity:purge-stale","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"5f958e8d-1d01-4144-abd6-2513e5524ad3","trace_id":"828bc5b7-e2aa-4443-901f-38dd94bb7cc5"}
[2026-05-07 12:55:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"activity:purge-stale","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"5f958e8d-1d01-4144-abd6-2513e5524ad3","trace_id":"828bc5b7-e2aa-4443-901f-38dd94bb7cc5"}
[2026-05-07 12:55:22] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:text-relay:sync","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"6bd1c9cb-cd9a-42a9-87fe-45cb7bac687a","trace_id":"0f2f5d66-c4c9-46a5-a31b-6937663ce1ad"}
[2026-05-07 12:55:22] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:text-relay:sync","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"6bd1c9cb-cd9a-42a9-87fe-45cb7bac687a","trace_id":"0f2f5d66-c4c9-46a5-a31b-6937663ce1ad"}
[2026-05-07 12:55:24] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:pre-meeting-notification","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"c5dd8132-d7e1-4caa-84d1-0a50d02df8da","trace_id":"bc7341c5-b8e2-48ea-9670-7ec375363180"}
[2026-05-07 12:55:24] local.INFO: Running pre-meeting notification command {"correlation_id":"c5dd8132-d7e1-4caa-84d1-0a50d02df8da","trace_id":"bc7341c5-b8e2-48ea-9670-7ec375363180"}
[2026-05-07 12:55:24] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:pre-meeting-notification","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"c5dd8132-d7e1-4caa-84d1-0a50d02df8da","trace_id":"bc7341c5-b8e2-48ea-9670-7ec375363180"}
[2026-05-07 12:55:26] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:start","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0","trace_id":"efb1619f-4185-4319-9bfb-305cee0b6bfc"}
[2026-05-07 12:55:26] local.INFO: Running conference:monitor:start command for activities in (2026-05-07 12:45:00, 2026-05-07 12:50:00] {"correlation_id":"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0","trace_id":"efb1619f-4185-4319-9bfb-305cee0b6bfc"}
[2026-05-07 12:55:26] local.INFO: [conference:monitor:start] No activities found in (2026-05-07 12:45:00, 2026-05-07 12:50:00] {"correlation_id":"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0","trace_id":"efb1619f-4185-4319-9bfb-305cee0b6bfc"}
[2026-05-07 12:55:26] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:start","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0","trace_id":"efb1619f-4185-4319-9bfb-305cee0b6bfc"}
[2026-05-07 12:55:28] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:end","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"3792b31a-080a-4fe4-9823-5602361325ba","trace_id":"41a2fde1-48f6-4667-84b7-a2f93e9ad2da"}
[2026-05-07 12:55:28] local.INFO: conference:monitor:end:Jiminny\Console\Commands\Activities\MonitorMeetingEndCommand::logActivitiesEnded {"from":"12:50","to":"12:55"} {"correlation_id":"3792b31a-080a-4fe4-9823-5602361325ba","trace_id":"41a2fde1-48f6-4667-84b7-a2f93e9ad2da"}
[2026-05-07 12:55:28] local.INFO: conference:monitor:end:Jiminny\Console\Commands\Activities\MonitorMeetingEndCommand::logActivitiesWithUnfinishedSession {"from":"02:45","to":"02:50"} {"correlation_id":"3792b31a-080a-4fe4-9823-5602361325ba","trace_id":"41a2fde1-48f6-4667-84b7-a2f93e9ad2da"}
[2026-05-07 12:55:28] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:end","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"3792b31a-080a-4fe4-9823-5602361325ba","trace_id":"41a2fde1-48f6-4667-84b7-a2f93e9ad2da"}
[2026-05-07 12:55:30] local.NOTICE: Repairing HubSpot tokens start {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:30] local.INFO: Trying to refresh HubSpot token {"account_id":59,"updated_at":"2025-10-03 09:32:05"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:30] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:30] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":59,"provider":"hubspot","refreshToken":"97b78f6e2cc49965c00c2492b602b02708b1392551e6b3f113fbaa48992af90b","state":"full-refresh"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.ERROR: Failed to refresh HubSpot token {"account_id":59,"updated_at":"2025-10-03 09:32:05","reason":"missing or invalid refresh token","previous":""} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.INFO: Trying to refresh HubSpot token {"account_id":306,"updated_at":"2023-11-27 09:30:03"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":306,"provider":"hubspot","refreshToken":"6fa6aa8cc641d131231acc3470f5c03cb3b07b2e580fb18f8acb3b1dbb72549b","state":"full-refresh"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.ERROR: Failed to refresh HubSpot token {"account_id":306,"updated_at":"2023-11-27 09:30:03","reason":"missing or invalid refresh token","previous":""} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.INFO: Trying to refresh HubSpot token {"account_id":1372,"updated_at":"2025-10-02 14:47:06"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1372,"provider":"hubspot","refreshToken":"9aa73948c761da29dce46c177cf9aee1fde483a44169ca38723f9f0597d7a8c4","state":"full-refresh"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:32] local.ERROR: Failed to refresh HubSpot token {"account_id":1372,"updated_at":"2025-10-02 14:47:06","reason":"missing or invalid refresh token","previous":""} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:32] local.NOTICE: Repairing HubSpot tokens end {"total":3,"fixed":0,"failed":3} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:40] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"crm:bullhorn:ping","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"5e676ae4-5d63-49d4-9001-559088adf06b","trace_id":"2fcce073-dd68-4c99-b7c4-b9e03c20b8e4"}
[2026-05-07 12:55:40] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:pre-meeting-reminder","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"1f830896-8142-41d1-bfc9-4cbb9179ffda","trace_id":"e348a096-7f37-4308-a6d8-66131e8be901"}
[2026-05-07 12:55:40] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"crm:bullhorn:ping","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"5e676ae4-5d63-49d4-9001-559088adf06b","trace_id":"2fcce073-dd68-4c99-b7c4-b9e03c20b8e4"}
[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Command] Starting polling service {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Service starting {"memory_limit":"256M","max_execution_time":"0","initial_memory_mb":62.0} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Acquired polling lock {"expires_at":"2026-05-07T12:57:40.609671Z"} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:40] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:40] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:pre-meeting-reminder","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"1f830896-8142-41d1-bfc9-4cbb9179ffda","trace_id":"e348a096-7f37-4308-a6d8-66131e8be901"}
[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:45] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:45] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:46] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:51] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:51] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:51] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:06] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:06] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:06] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"2d8b30b4-87aa-480f-9b9e-5a9c709b742a","trace_id":"25b7be6c-1faf-430b-a724-a4ff28773a31"}
[2026-05-07 12:56:08] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"2d8b30b4-87aa-480f-9b9e-5a9c709b742a","trace_id":"25b7be6c-1faf-430b-a724-a4ff28773a31"}
[2026-05-07 12:56:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"2d8b30b4-87aa-480f-9b9e-5a9c709b742a","trace_id":"25b7be6c-1faf-430b-a724-a4ff28773a31"}
[2026-05-07 12:56:10] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"efd336d7-db4d-459e-b6e7-bf73454e955e","trace_id":"0a82c3d5-0417-48c8-b88f-70ec33e2326a"}
[2026-05-07 12:56:10] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"efd336d7-db4d-459e-b6e7-bf73454e955e","trace_id":"0a82c3d5-0417-48c8-b88f-70ec33e2326a"}
[2026-05-07 12:56:12] local.NOTICE: Monitoring start {"correlation_id":"68481576-8ca6-4ee5-821b-07374702971d","trace_id":"c73eac09-5d20-425f-9c22-bd6c65fc60c9"}
[2026-05-07 12:56:12] local.NOTICE: Monitoring end {"correlation_id":"68481576-8ca6-4ee5-821b-07374702971d","trace_id":"c73eac09-5d20-425f-9c22-bd6c65fc60c9"}
[2026-05-07 12:56:17] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"bd0cdc75-b5c2-4dbb-bc44-e36c96813d24","trace_id":"f688cd98-c171-4e30-8c72-afc14f040861"}
[2026-05-07 12:56:17] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"bd0cdc75-b5c2-4dbb-bc44-e36c96813d24","trace_id":"f688cd98-c171-4e30-8c72-afc14f040861"}
[2026-05-07 12:56:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"f01636a9-4059-4ab0-9ad2-b078d42cedbd","trace_id":"fea938d8-aedc-40ec-b8c2-2f487e1ac808"}
[2026-05-07 12:56:20] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"f01636a9-4059-4ab0-9ad2-b078d42cedbd","trace_id":"fea938d8-aedc-40ec-b8c2-2f487e1ac808"}
[2026-05-07 12:56:20] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"f01636a9-4059-4ab0-9ad2-b078d42cedbd","trace_id":"fea938d8-aedc-40ec-b8c2-2f487e1ac808"}
[2026-05-07 12:56:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"f01636a9-4059-4ab0-9ad2-b078d42cedbd","trace_id":"fea938d8-aedc-40ec-b8c2-2f487e1ac808"}
[2026-05-07 12:56:23] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:count","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"d4558901-264d-4238-8589-62a137bac1fd","trace_id":"38e6b5dc-ebd6-46a7-8224-7374d4e58630"}
[2026-05-07 12:56:23] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:54:00, 2026-05-07 12:56:00] {"correlation_id":"d4558901-264d-4238-8589-62a137bac1fd","trace_id":"38e6b5dc-ebd6-46a7-8224-7374d4e58630"}
[2026-05-07 12:56:23] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:54:00, 2026-05-07 12:56:00] {"correlation_id":"d4558901-264d-4238-8589-62a137bac1fd","trace_id":"38e6b5dc-ebd6-46a7-8224-7374d4e58630"}
[2026-05-07 12:56:23] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:count","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"d4558901-264d-4238-8589-62a137bac1fd","trace_id":"38e6b5dc-ebd6-46a7-8224-7374d4e58630"}
[2026-05-07 12:56:24] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"crm:sync-hubspot-objects","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"7bfaf9be-0ca1-4170-a0c9-83e0ed61881c","trace_id":"ba7f9eee-8dcb-4c94-acb0-18f9363757ad"}
[2026-05-07 12:56:24] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"crm:sync-hubspot-objects","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"7bfaf9be-0ca1-4170-a0c9-83e0ed61881c","trace_id":"ba7f9eee-8dcb-4c94-acb0-18f9363757ad"}
[2026-05-07 12:56:26] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"activity:notify-not-logged","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"2541e0fa-1117-4863-9523-d723b5821a24","trace_id":"d9600320-5133-4938-bdd1-2256dfdf8db4"}
[2026-05-07 12:56:26] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"activity:notify-not-logged","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"2541e0fa-1117-4863-9523-d723b5821a24","trace_id":"d9600320-5133-4938-bdd1-2256dfdf8db4"}
[2026-05-07 12:56:35] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:sync","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"e444f776-37db-4c6d-b30e-20b01a089de7","trace_id":"1168869e-e07c-4702-a046-42fc95a91f6d"}
[2026-05-07 12:56:36] local.INFO: [EmailSchedule] STARTING Inbox Sync {"host":"docker_lamp_1"} {"correlation_id":"e444f776-37db-4c6d-b30e-20b01a089de7","trace_id":"1168869e-e07c-4702-a046-42fc95a91f6d"}
[2026-05-07 12:56:36] local.INFO: [EmailSchedule] FINISHED Inbox Sync {"host":"docker_lamp_1","events":2} {"correlation_id":"e444f776-37db-4c6d-b30e-20b01a089de7","trace_id":"1168869e-e07c-4702-a046-42fc95a91f6d"}
[2026-05-07 12:56:36] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:sync","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"e444f776-37db-4c6d-b30e-20b01a089de7","trace_id":"1168869e-e07c-4702-a046-42fc95a91f6d"}
[2026-05-07 12:56:36] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:36] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:36] local.INFO: [HubSpot Journal Auth] Requesting new client credentials token {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:37] local.INFO: [HubSpot Journal Auth] Successfully obtained new access token {"expires_in":1800,"cached_for":1500} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:37] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:37] local.WARNING: [HubSpot Journal Polling] Maximum empty results reached, stopping {"empty_results":5,"max_empty_results":5} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:37] local.WARNING: [HubSpot Journal Polling] Maximum empty results reached, stopping {"empty_results":5,"max_empty_results":5} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:37] local.INFO: [HubSpot Journal Polling] Service ending {"runtime_seconds":57,"total_cycles":5,"files_downloaded":0,"empty_files":0,"other_portal_skipped":0,"total_events":0,"events_per_file":0,"avg_api_ms":238.3,"avg_download_ms":0.0,"avg_transform_ms":0.0,"avg_process_ms":0.0,"peak_memory_mb":99.73} {"correlation_id"...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"bounds":{"left":0.025930852,"top":0.019952115,"width":0.03856383,"height":0.025538707},"on_screen":true,"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"master, menu","depth":5,"bounds":{"left":0.064494684,"top":0.019952115,"width":0.040226065,"height":0.025538707},"on_screen":true,"help_text":"Git Branch: master<br/>Some incoming commits are not fetched<br/>","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Start Listening for PHP Debug Connections","depth":5,"bounds":{"left":0.8081782,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"AskJiminnyReportActivityServiceTest","depth":6,"bounds":{"left":0.8234708,"top":0.019952115,"width":0.09208777,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'AskJiminnyReportActivityServiceTest'","depth":6,"bounds":{"left":0.9155585,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'AskJiminnyReportActivityServiceTest'","depth":6,"bounds":{"left":0.9268617,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More Actions","depth":6,"bounds":{"left":0.9381649,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JetBrains AI","depth":5,"bounds":{"left":0.96609044,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Search Everywhere","depth":5,"bounds":{"left":0.9773936,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"IDE and Project Settings","depth":5,"bounds":{"left":0.9886968,"top":0.019952115,"width":0.011303186,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Show Replace Field","depth":4,"bounds":{"left":0.39926863,"top":0.105347164,"width":0.008643617,"height":0.01915403},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Search History","depth":3,"bounds":{"left":0.4119016,"top":0.10454908,"width":0.00731383,"height":0.017557861},"on_screen":true,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"retry_error","depth":4,"bounds":{"left":0.42287233,"top":0.10454908,"width":0.043882977,"height":0.015961692},"on_screen":true,"value":"retry_error","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"New Line","depth":3,"bounds":{"left":0.47573137,"top":0.10454908,"width":0.00731383,"height":0.017557861},"on_screen":true,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Match Case","depth":3,"bounds":{"left":0.48570478,"top":0.10454908,"width":0.00731383,"height":0.017557861},"on_screen":true,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Words","depth":3,"bounds":{"left":0.4943484,"top":0.10454908,"width":0.00731383,"height":0.017557861},"on_screen":true,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Regex","depth":3,"bounds":{"left":0.50299203,"top":0.10454908,"width":0.00731383,"height":0.017557861},"on_screen":true,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Replace History","depth":3,"bounds":{"left":0.27027926,"top":1.0,"width":0.00731383,"height":0.0},"on_screen":false,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"Replace","depth":4,"on_screen":false,"role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"New Line","depth":3,"bounds":{"left":0.27027926,"top":1.0,"width":0.00731383,"height":0.0},"on_screen":false,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Preserve case","depth":3,"bounds":{"left":0.27027926,"top":1.0,"width":0.00731383,"height":0.0},"on_screen":false,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"0 results","depth":4,"bounds":{"left":0.51662236,"top":0.103751,"width":0.025598405,"height":0.017557861},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Previous Occurrence","depth":4,"bounds":{"left":0.5422208,"top":0.10295291,"width":0.008643617,"height":0.01915403},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Occurrence","depth":4,"bounds":{"left":0.55086434,"top":0.10295291,"width":0.008643617,"height":0.01915403},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Filter Search Results","depth":4,"bounds":{"left":0.55950797,"top":0.10295291,"width":0.008643617,"height":0.01915403},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Open in Window, Multiple Cursors","depth":4,"bounds":{"left":0.5681516,"top":0.10295291,"width":0.008643617,"height":0.01915403},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Click to highlight","depth":4,"on_screen":false,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close","depth":4,"bounds":{"left":0.6988032,"top":0.10295291,"width":0.008643617,"height":0.01915403},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.042220745,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"934","depth":4,"bounds":{"left":0.6831782,"top":0.13407822,"width":0.012632979,"height":0.015163607},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"bounds":{"left":0.6974734,"top":0.13248204,"width":0.00731383,"height":0.018355945},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Highlighted Error","depth":4,"bounds":{"left":0.70478725,"top":0.13248204,"width":0.006981383,"height":0.018355945},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"[2026-05-07 12:52:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"fa8a3008-d298-4682-bbbc-fdc77520e0d7\",\"trace_id\":\"7cfb2afb-9fc4-4a77-81be-65dce93c7d80\"}\n[2026-05-07 12:52:08] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"fa8a3008-d298-4682-bbbc-fdc77520e0d7\",\"trace_id\":\"7cfb2afb-9fc4-4a77-81be-65dce93c7d80\"}\n[2026-05-07 12:52:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"fa8a3008-d298-4682-bbbc-fdc77520e0d7\",\"trace_id\":\"7cfb2afb-9fc4-4a77-81be-65dce93c7d80\"}\n[2026-05-07 12:52:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"932ced9d-9804-48ed-976a-1f8bf5e75707\",\"trace_id\":\"21bf320c-58f3-4082-831d-9f07f6c6a669\"}\n[2026-05-07 12:52:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"932ced9d-9804-48ed-976a-1f8bf5e75707\",\"trace_id\":\"21bf320c-58f3-4082-831d-9f07f6c6a669\"}\n[2026-05-07 12:52:17] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:17] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:17] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:17] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":148,\"team_id\":2} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:17] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.55,\"average_seconds_per_request\":0.55} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:18] local.NOTICE: Monitoring start {\"correlation_id\":\"ae3ec78f-432c-4e22-b73b-0413af73d9f3\",\"trace_id\":\"c2feb517-0f2b-4ad9-bce5-4d57476a164b\"}\n[2026-05-07 12:52:18] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.51,\"average_seconds_per_request\":0.51} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:18] local.NOTICE: Monitoring end {\"correlation_id\":\"ae3ec78f-432c-4e22-b73b-0413af73d9f3\",\"trace_id\":\"c2feb517-0f2b-4ad9-bce5-4d57476a164b\"}\n[2026-05-07 12:52:18] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.48,\"average_seconds_per_request\":0.48} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:19] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.49,\"average_seconds_per_request\":0.49} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:19] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.49,\"average_seconds_per_request\":0.49} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"2bf2f73f-007c-4909-925e-f1749fbf87b3\",\"trace_id\":\"8429123c-d92c-48d9-a154-29bc0aa0e2a1\"}\n[2026-05-07 12:52:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"2bf2f73f-007c-4909-925e-f1749fbf87b3\",\"trace_id\":\"8429123c-d92c-48d9-a154-29bc0aa0e2a1\"}\n[2026-05-07 12:52:20] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.48,\"average_seconds_per_request\":0.48} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:20] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.62,\"average_seconds_per_request\":0.62} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:21] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.78,\"average_seconds_per_request\":0.78} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:22] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":1.21,\"average_seconds_per_request\":1.21} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:23] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.53,\"average_seconds_per_request\":0.53} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8\",\"trace_id\":\"64ccac6b-34f7-45ed-a8ac-b63adbb19107\"}\n[2026-05-07 12:52:25] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8\",\"trace_id\":\"64ccac6b-34f7-45ed-a8ac-b63adbb19107\"}\n[2026-05-07 12:52:26] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8\",\"trace_id\":\"64ccac6b-34f7-45ed-a8ac-b63adbb19107\"}\n[2026-05-07 12:52:26] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8\",\"trace_id\":\"64ccac6b-34f7-45ed-a8ac-b63adbb19107\"}\n[2026-05-07 12:52:28] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"6e1a36d0-a87a-455f-88b9-04f16718ea33\",\"trace_id\":\"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c\"}\n[2026-05-07 12:52:28] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:50:00, 2026-05-07 12:52:00] {\"correlation_id\":\"6e1a36d0-a87a-455f-88b9-04f16718ea33\",\"trace_id\":\"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c\"}\n[2026-05-07 12:52:28] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:50:00, 2026-05-07 12:52:00] {\"correlation_id\":\"6e1a36d0-a87a-455f-88b9-04f16718ea33\",\"trace_id\":\"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c\"}\n[2026-05-07 12:52:28] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"6e1a36d0-a87a-455f-88b9-04f16718ea33\",\"trace_id\":\"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c\"}\n[2026-05-07 12:52:31] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:create\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"80549428-beea-4a6c-97d3-818ca0f059f3\",\"trace_id\":\"55ddd59b-073b-4331-8cdb-baa869dcff70\"}\n[2026-05-07 12:52:31] local.INFO: [EmailSchedule] STARTING batch create {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"80549428-beea-4a6c-97d3-818ca0f059f3\",\"trace_id\":\"55ddd59b-073b-4331-8cdb-baa869dcff70\"}\n[2026-05-07 12:52:31] local.INFO: [EmailSchedule] FINISHED batch create {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"80549428-beea-4a6c-97d3-818ca0f059f3\",\"trace_id\":\"55ddd59b-073b-4331-8cdb-baa869dcff70\"}\n[2026-05-07 12:52:31] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:create\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"80549428-beea-4a6c-97d3-818ca0f059f3\",\"trace_id\":\"55ddd59b-073b-4331-8cdb-baa869dcff70\"}\n[2026-05-07 12:52:32] local.INFO: [Jiminny\\Jobs\\Mailbox\\CreateBatches] processed 2 inboxes and created 0 batches {\"userId\":null,\"batchSize\":30,\"maxBatches\":1000} {\"correlation_id\":\"92242bd6-7014-4487-a50b-1570e1a88e7a\",\"trace_id\":\"55ddd59b-073b-4331-8cdb-baa869dcff70\"}\n[2026-05-07 12:52:39] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"d467eace-3254-4ecc-8d8e-a94688d6d3ad\",\"trace_id\":\"5105ca8f-3c0d-4798-b748-5a7d6fbd7531\"}\n[2026-05-07 12:52:39] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"d467eace-3254-4ecc-8d8e-a94688d6d3ad\",\"trace_id\":\"5105ca8f-3c0d-4798-b748-5a7d6fbd7531\"}\n[2026-05-07 12:53:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"04363b29-2f82-470a-89d0-c5ce4f4779d7\",\"trace_id\":\"3c76a1f1-3348-4e2b-897c-4a216ca95147\"}\n[2026-05-07 12:53:08] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"04363b29-2f82-470a-89d0-c5ce4f4779d7\",\"trace_id\":\"3c76a1f1-3348-4e2b-897c-4a216ca95147\"}\n[2026-05-07 12:53:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"04363b29-2f82-470a-89d0-c5ce4f4779d7\",\"trace_id\":\"3c76a1f1-3348-4e2b-897c-4a216ca95147\"}\n[2026-05-07 12:53:11] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"5ebbecd0-866c-443f-965f-b6ac03735379\",\"trace_id\":\"e0a724a5-bb4b-4fe6-9fe9-36ea1c3f0326\"}\n[2026-05-07 12:53:11] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"5ebbecd0-866c-443f-965f-b6ac03735379\",\"trace_id\":\"e0a724a5-bb4b-4fe6-9fe9-36ea1c3f0326\"}\n[2026-05-07 12:53:18] local.NOTICE: Monitoring start {\"correlation_id\":\"f39f0d3c-a292-41cb-8834-45dae1f8cf47\",\"trace_id\":\"b6e7e2a7-85af-401d-afc6-bec2bdab34d7\"}\n[2026-05-07 12:53:18] local.NOTICE: Monitoring end {\"correlation_id\":\"f39f0d3c-a292-41cb-8834-45dae1f8cf47\",\"trace_id\":\"b6e7e2a7-85af-401d-afc6-bec2bdab34d7\"}\n[2026-05-07 12:53:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"419bb747-2669-496f-944b-1073496cc271\",\"trace_id\":\"4cb913a4-ef75-422b-80eb-fbfb988521ed\"}\n[2026-05-07 12:53:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"419bb747-2669-496f-944b-1073496cc271\",\"trace_id\":\"4cb913a4-ef75-422b-80eb-fbfb988521ed\"}\n[2026-05-07 12:53:22] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"f4805c97-9344-4111-8be2-2b1efeae07bb\",\"trace_id\":\"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22\"}\n[2026-05-07 12:53:22] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"f4805c97-9344-4111-8be2-2b1efeae07bb\",\"trace_id\":\"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22\"}\n[2026-05-07 12:53:22] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"f4805c97-9344-4111-8be2-2b1efeae07bb\",\"trace_id\":\"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22\"}\n[2026-05-07 12:53:22] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"f4805c97-9344-4111-8be2-2b1efeae07bb\",\"trace_id\":\"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22\"}\n[2026-05-07 12:53:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"2eadb06b-2c2e-4a7f-8920-77bd30d6cd7f\",\"trace_id\":\"75f27a23-2021-41a5-9e5f-4b1cb4f143a6\"}\n[2026-05-07 12:53:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"2eadb06b-2c2e-4a7f-8920-77bd30d6cd7f\",\"trace_id\":\"75f27a23-2021-41a5-9e5f-4b1cb4f143a6\"}\n[2026-05-07 12:54:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"ad151521-f676-4351-a70b-f44dc0b94990\",\"trace_id\":\"17e39c4c-85cb-49a4-815e-b7315a8c2249\"}\n[2026-05-07 12:54:06] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"ad151521-f676-4351-a70b-f44dc0b94990\",\"trace_id\":\"17e39c4c-85cb-49a4-815e-b7315a8c2249\"}\n[2026-05-07 12:54:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"ad151521-f676-4351-a70b-f44dc0b94990\",\"trace_id\":\"17e39c4c-85cb-49a4-815e-b7315a8c2249\"}\n[2026-05-07 12:54:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"ed0583cf-03c6-4696-b859-876c8efa4473\",\"trace_id\":\"3f9e0a3c-2178-4885-95eb-8618b8cfc042\"}\n[2026-05-07 12:54:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"ed0583cf-03c6-4696-b859-876c8efa4473\",\"trace_id\":\"3f9e0a3c-2178-4885-95eb-8618b8cfc042\"}\n[2026-05-07 12:54:10] local.NOTICE: Monitoring start {\"correlation_id\":\"7142250a-b897-4620-8ff7-fd9b3a1f3802\",\"trace_id\":\"597def1e-ca38-4cc4-8890-fdcd5baff948\"}\n[2026-05-07 12:54:10] local.NOTICE: Monitoring end {\"correlation_id\":\"7142250a-b897-4620-8ff7-fd9b3a1f3802\",\"trace_id\":\"597def1e-ca38-4cc4-8890-fdcd5baff948\"}\n[2026-05-07 12:54:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"cb2ada48-0200-4eb3-a8c5-6cb8ea43ec0d\",\"trace_id\":\"73937bdc-10b9-4508-9ef2-86420fe774fc\"}\n[2026-05-07 12:54:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"cb2ada48-0200-4eb3-a8c5-6cb8ea43ec0d\",\"trace_id\":\"73937bdc-10b9-4508-9ef2-86420fe774fc\"}\n[2026-05-07 12:54:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"8f1d8932-2839-4256-99ab-1fd13e8381c6\",\"trace_id\":\"cc090767-edc2-4a89-90c2-116f1737de7f\"}\n[2026-05-07 12:54:14] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"8f1d8932-2839-4256-99ab-1fd13e8381c6\",\"trace_id\":\"cc090767-edc2-4a89-90c2-116f1737de7f\"}\n[2026-05-07 12:54:14] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"8f1d8932-2839-4256-99ab-1fd13e8381c6\",\"trace_id\":\"cc090767-edc2-4a89-90c2-116f1737de7f\"}\n[2026-05-07 12:54:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"8f1d8932-2839-4256-99ab-1fd13e8381c6\",\"trace_id\":\"cc090767-edc2-4a89-90c2-116f1737de7f\"}\n[2026-05-07 12:54:16] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"9d324c6d-5b36-46ee-89c6-f95f86bf3f39\",\"trace_id\":\"860cdff0-9356-4e94-84cc-e011a74ba56c\"}\n[2026-05-07 12:54:16] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:52:00, 2026-05-07 12:54:00] {\"correlation_id\":\"9d324c6d-5b36-46ee-89c6-f95f86bf3f39\",\"trace_id\":\"860cdff0-9356-4e94-84cc-e011a74ba56c\"}\n[2026-05-07 12:54:16] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:52:00, 2026-05-07 12:54:00] {\"correlation_id\":\"9d324c6d-5b36-46ee-89c6-f95f86bf3f39\",\"trace_id\":\"860cdff0-9356-4e94-84cc-e011a74ba56c\"}\n[2026-05-07 12:54:16] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"9d324c6d-5b36-46ee-89c6-f95f86bf3f39\",\"trace_id\":\"860cdff0-9356-4e94-84cc-e011a74ba56c\"}\n[2026-05-07 12:54:18] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:aircall:check-and-renew\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"c2009a88-eea6-4954-8642-ef5d9cb56b42\",\"trace_id\":\"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab\"}\n[2026-05-07 12:54:18] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1496,\"provider\":\"aircall\"} {\"correlation_id\":\"c2009a88-eea6-4954-8642-ef5d9cb56b42\",\"trace_id\":\"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab\"}\n[2026-05-07 12:54:18] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1496,\"provider\":\"aircall\"} {\"correlation_id\":\"c2009a88-eea6-4954-8642-ef5d9cb56b42\",\"trace_id\":\"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab\"}\n[2026-05-07 12:54:18] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"c2009a88-eea6-4954-8642-ef5d9cb56b42\",\"trace_id\":\"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab\"}\n[2026-05-07 12:54:19] local.ERROR: [Aircall] Re-activating webhooks failed {\"team_id\":1,\"reason\":\"{\\\"message\\\":\\\"Forbidden\\\"}\"} {\"correlation_id\":\"c2009a88-eea6-4954-8642-ef5d9cb56b42\",\"trace_id\":\"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab\"}\n[2026-05-07 12:54:19] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:aircall:check-and-renew\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"c2009a88-eea6-4954-8642-ef5d9cb56b42\",\"trace_id\":\"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab\"}\n[2026-05-07 12:54:21] local.INFO: [RetryFailedDownloads] Starting {\"options\":{\"from\":null,\"to\":null,\"help\":false,\"silent\":false,\"quiet\":false,\"verbose\":false,\"version\":false,\"ansi\":null,\"no-interaction\":false,\"env\":null}} {\"correlation_id\":\"825ef2d7-b5f8-45cd-b19d-20a179b06934\",\"trace_id\":\"5825a6c8-14c9-4bec-b688-d4895cfc41cc\"}\n[2026-05-07 12:55:05] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"c0dc8e25-7a51-4023-be61-d0abd6d72e37\",\"trace_id\":\"16b8fa3e-92b1-465e-82d4-642a2d14c7c5\"}\n[2026-05-07 12:55:05] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"c0dc8e25-7a51-4023-be61-d0abd6d72e37\",\"trace_id\":\"16b8fa3e-92b1-465e-82d4-642a2d14c7c5\"}\n[2026-05-07 12:55:05] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"c0dc8e25-7a51-4023-be61-d0abd6d72e37\",\"trace_id\":\"16b8fa3e-92b1-465e-82d4-642a2d14c7c5\"}\n[2026-05-07 12:55:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"1c65fdd1-1f79-435d-b469-add46ddafd63\",\"trace_id\":\"62f2a3bb-3be7-4c76-a9dd-222bfb895fab\"}\n[2026-05-07 12:55:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"1c65fdd1-1f79-435d-b469-add46ddafd63\",\"trace_id\":\"62f2a3bb-3be7-4c76-a9dd-222bfb895fab\"}\n[2026-05-07 12:55:11] local.NOTICE: Monitoring start {\"correlation_id\":\"f115f9bc-bb59-4fc9-8c9f-8b69baba1a55\",\"trace_id\":\"e75cb5c6-6dd8-4000-8d26-4418020c7cfe\"}\n[2026-05-07 12:55:11] local.NOTICE: Monitoring end {\"correlation_id\":\"f115f9bc-bb59-4fc9-8c9f-8b69baba1a55\",\"trace_id\":\"e75cb5c6-6dd8-4000-8d26-4418020c7cfe\"}\n[2026-05-07 12:55:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"dba5c474-4d40-44da-baf2-f8b30db9a2f5\",\"trace_id\":\"adb45622-1fb0-457c-bf20-8dcceab2d62a\"}\n[2026-05-07 12:55:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"dba5c474-4d40-44da-baf2-f8b30db9a2f5\",\"trace_id\":\"adb45622-1fb0-457c-bf20-8dcceab2d62a\"}\n[2026-05-07 12:55:16] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"22c96a8e-4424-4a1f-b349-206276eefe4c\",\"trace_id\":\"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c\"}\n[2026-05-07 12:55:16] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"22c96a8e-4424-4a1f-b349-206276eefe4c\",\"trace_id\":\"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c\"}\n[2026-05-07 12:55:16] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"22c96a8e-4424-4a1f-b349-206276eefe4c\",\"trace_id\":\"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c\"}\n[2026-05-07 12:55:16] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"22c96a8e-4424-4a1f-b349-206276eefe4c\",\"trace_id\":\"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c\"}\n[2026-05-07 12:55:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:purge-stale\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"5f958e8d-1d01-4144-abd6-2513e5524ad3\",\"trace_id\":\"828bc5b7-e2aa-4443-901f-38dd94bb7cc5\"}\n[2026-05-07 12:55:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:purge-stale\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"5f958e8d-1d01-4144-abd6-2513e5524ad3\",\"trace_id\":\"828bc5b7-e2aa-4443-901f-38dd94bb7cc5\"}\n[2026-05-07 12:55:22] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:text-relay:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"6bd1c9cb-cd9a-42a9-87fe-45cb7bac687a\",\"trace_id\":\"0f2f5d66-c4c9-46a5-a31b-6937663ce1ad\"}\n[2026-05-07 12:55:22] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:text-relay:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"6bd1c9cb-cd9a-42a9-87fe-45cb7bac687a\",\"trace_id\":\"0f2f5d66-c4c9-46a5-a31b-6937663ce1ad\"}\n[2026-05-07 12:55:24] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:pre-meeting-notification\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"c5dd8132-d7e1-4caa-84d1-0a50d02df8da\",\"trace_id\":\"bc7341c5-b8e2-48ea-9670-7ec375363180\"}\n[2026-05-07 12:55:24] local.INFO: Running pre-meeting notification command {\"correlation_id\":\"c5dd8132-d7e1-4caa-84d1-0a50d02df8da\",\"trace_id\":\"bc7341c5-b8e2-48ea-9670-7ec375363180\"}\n[2026-05-07 12:55:24] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:pre-meeting-notification\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"c5dd8132-d7e1-4caa-84d1-0a50d02df8da\",\"trace_id\":\"bc7341c5-b8e2-48ea-9670-7ec375363180\"}\n[2026-05-07 12:55:26] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:start\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0\",\"trace_id\":\"efb1619f-4185-4319-9bfb-305cee0b6bfc\"}\n[2026-05-07 12:55:26] local.INFO: Running conference:monitor:start command for activities in (2026-05-07 12:45:00, 2026-05-07 12:50:00] {\"correlation_id\":\"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0\",\"trace_id\":\"efb1619f-4185-4319-9bfb-305cee0b6bfc\"}\n[2026-05-07 12:55:26] local.INFO: [conference:monitor:start] No activities found in (2026-05-07 12:45:00, 2026-05-07 12:50:00] {\"correlation_id\":\"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0\",\"trace_id\":\"efb1619f-4185-4319-9bfb-305cee0b6bfc\"}\n[2026-05-07 12:55:26] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:start\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0\",\"trace_id\":\"efb1619f-4185-4319-9bfb-305cee0b6bfc\"}\n[2026-05-07 12:55:28] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:end\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"3792b31a-080a-4fe4-9823-5602361325ba\",\"trace_id\":\"41a2fde1-48f6-4667-84b7-a2f93e9ad2da\"}\n[2026-05-07 12:55:28] local.INFO: conference:monitor:end:Jiminny\\Console\\Commands\\Activities\\MonitorMeetingEndCommand::logActivitiesEnded {\"from\":\"12:50\",\"to\":\"12:55\"} {\"correlation_id\":\"3792b31a-080a-4fe4-9823-5602361325ba\",\"trace_id\":\"41a2fde1-48f6-4667-84b7-a2f93e9ad2da\"}\n[2026-05-07 12:55:28] local.INFO: conference:monitor:end:Jiminny\\Console\\Commands\\Activities\\MonitorMeetingEndCommand::logActivitiesWithUnfinishedSession {\"from\":\"02:45\",\"to\":\"02:50\"} {\"correlation_id\":\"3792b31a-080a-4fe4-9823-5602361325ba\",\"trace_id\":\"41a2fde1-48f6-4667-84b7-a2f93e9ad2da\"}\n[2026-05-07 12:55:28] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:end\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"3792b31a-080a-4fe4-9823-5602361325ba\",\"trace_id\":\"41a2fde1-48f6-4667-84b7-a2f93e9ad2da\"}\n[2026-05-07 12:55:30] local.NOTICE: Repairing HubSpot tokens start {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:30] local.INFO: Trying to refresh HubSpot token {\"account_id\":59,\"updated_at\":\"2025-10-03 09:32:05\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:30] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:30] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":59,\"provider\":\"hubspot\",\"refreshToken\":\"97b78f6e2cc49965c00c2492b602b02708b1392551e6b3f113fbaa48992af90b\",\"state\":\"full-refresh\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.ERROR: Failed to refresh HubSpot token {\"account_id\":59,\"updated_at\":\"2025-10-03 09:32:05\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.INFO: Trying to refresh HubSpot token {\"account_id\":306,\"updated_at\":\"2023-11-27 09:30:03\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":306,\"provider\":\"hubspot\",\"refreshToken\":\"6fa6aa8cc641d131231acc3470f5c03cb3b07b2e580fb18f8acb3b1dbb72549b\",\"state\":\"full-refresh\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.ERROR: Failed to refresh HubSpot token {\"account_id\":306,\"updated_at\":\"2023-11-27 09:30:03\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.INFO: Trying to refresh HubSpot token {\"account_id\":1372,\"updated_at\":\"2025-10-02 14:47:06\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1372,\"provider\":\"hubspot\",\"refreshToken\":\"9aa73948c761da29dce46c177cf9aee1fde483a44169ca38723f9f0597d7a8c4\",\"state\":\"full-refresh\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:32] local.ERROR: Failed to refresh HubSpot token {\"account_id\":1372,\"updated_at\":\"2025-10-02 14:47:06\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:32] local.NOTICE: Repairing HubSpot tokens end {\"total\":3,\"fixed\":0,\"failed\":3} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:40] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"crm:bullhorn:ping\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"5e676ae4-5d63-49d4-9001-559088adf06b\",\"trace_id\":\"2fcce073-dd68-4c99-b7c4-b9e03c20b8e4\"}\n[2026-05-07 12:55:40] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:pre-meeting-reminder\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"1f830896-8142-41d1-bfc9-4cbb9179ffda\",\"trace_id\":\"e348a096-7f37-4308-a6d8-66131e8be901\"}\n[2026-05-07 12:55:40] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"crm:bullhorn:ping\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"5e676ae4-5d63-49d4-9001-559088adf06b\",\"trace_id\":\"2fcce073-dd68-4c99-b7c4-b9e03c20b8e4\"}\n[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Command] Starting polling service {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Service starting {\"memory_limit\":\"256M\",\"max_execution_time\":\"0\",\"initial_memory_mb\":62.0} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Acquired polling lock {\"expires_at\":\"2026-05-07T12:57:40.609671Z\"} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:40] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:40] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:pre-meeting-reminder\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"1f830896-8142-41d1-bfc9-4cbb9179ffda\",\"trace_id\":\"e348a096-7f37-4308-a6d8-66131e8be901\"}\n[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:45] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:45] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:46] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:51] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:51] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:51] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:06] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:06] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:06] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"2d8b30b4-87aa-480f-9b9e-5a9c709b742a\",\"trace_id\":\"25b7be6c-1faf-430b-a724-a4ff28773a31\"}\n[2026-05-07 12:56:08] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"2d8b30b4-87aa-480f-9b9e-5a9c709b742a\",\"trace_id\":\"25b7be6c-1faf-430b-a724-a4ff28773a31\"}\n[2026-05-07 12:56:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"2d8b30b4-87aa-480f-9b9e-5a9c709b742a\",\"trace_id\":\"25b7be6c-1faf-430b-a724-a4ff28773a31\"}\n[2026-05-07 12:56:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"efd336d7-db4d-459e-b6e7-bf73454e955e\",\"trace_id\":\"0a82c3d5-0417-48c8-b88f-70ec33e2326a\"}\n[2026-05-07 12:56:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"efd336d7-db4d-459e-b6e7-bf73454e955e\",\"trace_id\":\"0a82c3d5-0417-48c8-b88f-70ec33e2326a\"}\n[2026-05-07 12:56:12] local.NOTICE: Monitoring start {\"correlation_id\":\"68481576-8ca6-4ee5-821b-07374702971d\",\"trace_id\":\"c73eac09-5d20-425f-9c22-bd6c65fc60c9\"}\n[2026-05-07 12:56:12] local.NOTICE: Monitoring end {\"correlation_id\":\"68481576-8ca6-4ee5-821b-07374702971d\",\"trace_id\":\"c73eac09-5d20-425f-9c22-bd6c65fc60c9\"}\n[2026-05-07 12:56:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"bd0cdc75-b5c2-4dbb-bc44-e36c96813d24\",\"trace_id\":\"f688cd98-c171-4e30-8c72-afc14f040861\"}\n[2026-05-07 12:56:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"bd0cdc75-b5c2-4dbb-bc44-e36c96813d24\",\"trace_id\":\"f688cd98-c171-4e30-8c72-afc14f040861\"}\n[2026-05-07 12:56:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"f01636a9-4059-4ab0-9ad2-b078d42cedbd\",\"trace_id\":\"fea938d8-aedc-40ec-b8c2-2f487e1ac808\"}\n[2026-05-07 12:56:20] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"f01636a9-4059-4ab0-9ad2-b078d42cedbd\",\"trace_id\":\"fea938d8-aedc-40ec-b8c2-2f487e1ac808\"}\n[2026-05-07 12:56:20] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"f01636a9-4059-4ab0-9ad2-b078d42cedbd\",\"trace_id\":\"fea938d8-aedc-40ec-b8c2-2f487e1ac808\"}\n[2026-05-07 12:56:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"f01636a9-4059-4ab0-9ad2-b078d42cedbd\",\"trace_id\":\"fea938d8-aedc-40ec-b8c2-2f487e1ac808\"}\n[2026-05-07 12:56:23] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"d4558901-264d-4238-8589-62a137bac1fd\",\"trace_id\":\"38e6b5dc-ebd6-46a7-8224-7374d4e58630\"}\n[2026-05-07 12:56:23] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:54:00, 2026-05-07 12:56:00] {\"correlation_id\":\"d4558901-264d-4238-8589-62a137bac1fd\",\"trace_id\":\"38e6b5dc-ebd6-46a7-8224-7374d4e58630\"}\n[2026-05-07 12:56:23] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:54:00, 2026-05-07 12:56:00] {\"correlation_id\":\"d4558901-264d-4238-8589-62a137bac1fd\",\"trace_id\":\"38e6b5dc-ebd6-46a7-8224-7374d4e58630\"}\n[2026-05-07 12:56:23] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"d4558901-264d-4238-8589-62a137bac1fd\",\"trace_id\":\"38e6b5dc-ebd6-46a7-8224-7374d4e58630\"}\n[2026-05-07 12:56:24] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"crm:sync-hubspot-objects\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"7bfaf9be-0ca1-4170-a0c9-83e0ed61881c\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:24] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"crm:sync-hubspot-objects\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"7bfaf9be-0ca1-4170-a0c9-83e0ed61881c\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:26] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:notify-not-logged\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"2541e0fa-1117-4863-9523-d723b5821a24\",\"trace_id\":\"d9600320-5133-4938-bdd1-2256dfdf8db4\"}\n[2026-05-07 12:56:26] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:notify-not-logged\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"2541e0fa-1117-4863-9523-d723b5821a24\",\"trace_id\":\"d9600320-5133-4938-bdd1-2256dfdf8db4\"}\n[2026-05-07 12:56:35] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"e444f776-37db-4c6d-b30e-20b01a089de7\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:36] local.INFO: [EmailSchedule] STARTING Inbox Sync {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"e444f776-37db-4c6d-b30e-20b01a089de7\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:36] local.INFO: [EmailSchedule] FINISHED Inbox Sync {\"host\":\"docker_lamp_1\",\"events\":2} {\"correlation_id\":\"e444f776-37db-4c6d-b30e-20b01a089de7\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:36] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"e444f776-37db-4c6d-b30e-20b01a089de7\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:36] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:36] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:36] local.INFO: [HubSpot Journal Auth] Requesting new client credentials token {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:37] local.INFO: [HubSpot Journal Auth] Successfully obtained new access token {\"expires_in\":1800,\"cached_for\":1500} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:37] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:37] local.WARNING: [HubSpot Journal Polling] Maximum empty results reached, stopping {\"empty_results\":5,\"max_empty_results\":5} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:37] local.WARNING: [HubSpot Journal Polling] Maximum empty results reached, stopping {\"empty_results\":5,\"max_empty_results\":5} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:37] local.INFO: [HubSpot Journal Polling] Service ending {\"runtime_seconds\":57,\"total_cycles\":5,\"files_downloaded\":0,\"empty_files\":0,\"other_portal_skipped\":0,\"total_events\":0,\"events_per_file\":0,\"avg_api_ms\":238.3,\"avg_download_ms\":0.0,\"avg_transform_ms\":0.0,\"avg_process_ms\":0.0,\"peak_memory_mb\":99.73} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:37] local.INFO: [HubSpot Journal Polling] Released polling lock {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:50] local.INFO: [Commands/AsyncUpdateEsEntities] Starting ES update worker {\"pid\":37119,\"workerId\":\"\",\"target\":\"activities\"} {\"correlation_id\":\"902cef33-4733-4b2a-9693-affb8645cecc\",\"trace_id\":\"4ffe2bb8-67c6-422a-a846-319973cc0259\"}\n[2026-05-07 12:56:50] local.INFO: [SyncHubspotObjects] Starting sync {\"team\":\"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4\",\"usage\":23195976,\"real_usage\":65011712,\"pid\":37113} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:50] local.INFO: [Sync Mailbox] Sync start {\"inbox_id\":59} {\"correlation_id\":\"20256b2c-2b69-48f6-bdd3-61d047eb0b0d\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:50] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:50] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:50] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:50] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1499,\"provider\":\"hubspot\",\"refreshToken\":\"96f94c623a404e02ebdbf07f1b75707bb6cdbf848cbf45d418baf608c41a8d86\",\"state\":\"connected\"} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:50] local.INFO: [Inbox service] Skipping METADATA SYNC for inbox 59 due to unauthorized access to the mailbox {\"correlation_id\":\"20256b2c-2b69-48f6-bdd3-61d047eb0b0d\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:50] local.INFO: [Sync Mailbox] Sync complete {\"inbox_id\":59} {\"correlation_id\":\"20256b2c-2b69-48f6-bdd3-61d047eb0b0d\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:50] local.INFO: [Sync Mailbox] Sync start {\"inbox_id\":212} {\"correlation_id\":\"b6c31853-3729-4780-a52b-ebcce17d41b9\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:50] local.INFO: [Inbox service] Skipping METADATA SYNC for inbox 212 due to unauthorized access to the mailbox {\"correlation_id\":\"b6c31853-3729-4780-a52b-ebcce17d41b9\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:50] local.INFO: [Sync Mailbox] Sync complete {\"inbox_id\":212} {\"correlation_id\":\"b6c31853-3729-4780-a52b-ebcce17d41b9\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:51] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:51] local.INFO: [SocialAccountObserver] Access token was modified, encrypting {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:51] local.INFO: [SocialAccountService] Token refreshed {\"socialAccountId\":1499,\"provider\":\"hubspot\",\"state\":\"connected\"} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:51] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":148,\"team_id\":2} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:51] local.INFO: [HubSpot] Syncing opportunities using strategy: lastModified {\"team\":2} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/deals/search\",\"total_requests\":0,\"total_records_fetched\":0,\"total_elapsed_seconds\":0.3,\"average_seconds_per_request\":0} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.INFO: [SyncHubspotObjects] Sync finished {\"team\":\"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4\",\"provider\":\"hubspot\",\"status\":\"completed\",\"duration_ms\":1854.64,\"usage\":24199288,\"real_usage\":65011712,\"pid\":37113} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.ERROR: Jiminny\\Services\\Crm\\Hubspot\\Pagination\\HubspotPaginationService::getPaginatedDataGenerator(): Return value must be of type Generator, none returned {\"exception\":\"[object] (TypeError(code: 0): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService::getPaginatedDataGenerator(): Return value must be of type Generator, none returned at /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php:82)\n[stacktrace]\n#0 /home/jiminny/app/Services/Crm/Hubspot/Client.php(194): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->getPaginatedDataGenerator(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), Array, 'deals', 0, 0, NULL)\n#1 /home/jiminny/app/Services/Crm/Hubspot/OpportunitySyncStrategy/HubspotSyncStrategyBase.php(55): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client->getPaginatedDataGenerator(Array, 'deals', 0, 0, NULL)\n#2 /home/jiminny/app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php(73): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\OpportunitySyncStrategy\\\\HubspotSyncStrategyBase->fetchOpportunities(Array, 0, NULL)\n#3 /home/jiminny/app/Jobs/Crm/SyncHubspotObjects.php(118): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service->syncOpportunities(Array)\n#4 /home/jiminny/app/Jobs/Crm/SyncHubspotObjects.php(86): Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects->syncHubspotCrmObjects(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service), Object(Illuminate\\\\Support\\\\Carbon))\n#5 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects->handle(Object(Jiminny\\\\Services\\\\ResolveTeamCrmConnection), Object(Illuminate\\\\Log\\\\LogManager), Object(Jiminny\\\\Repositories\\\\TeamRepository))\n#6 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#7 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#8 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#9 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#10 /home/jiminny/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(129): Illuminate\\\\Container\\\\Container->call(Array)\n#11 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\\\Bus\\\\Dispatcher->Illuminate\\\\Bus\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#12 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\\\\Pipeline\\\\Pipeline->Illuminate\\\\Pipeline\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#13 /home/jiminny/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(133): Illuminate\\\\Pipeline\\\\Pipeline->then(Object(Closure))\n#14 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(136): Illuminate\\\\Bus\\\\Dispatcher->dispatchNow(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects), false)\n#15 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\\\Queue\\\\CallQueuedHandler->Illuminate\\\\Queue\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#16 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\\\\Pipeline\\\\Pipeline->Illuminate\\\\Pipeline\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#17 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(129): Illuminate\\\\Pipeline\\\\Pipeline->then(Object(Closure))\n#18 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(70): Illuminate\\\\Queue\\\\CallQueuedHandler->dispatchThroughMiddleware(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#19 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Jobs/Job.php(102): Illuminate\\\\Queue\\\\CallQueuedHandler->call(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Array)\n#20 /home/jiminny/app/Queue/Worker/Worker.php(71): Illuminate\\\\Queue\\\\Jobs\\\\Job->fire()\n#21 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(435): Jiminny\\\\Queue\\\\Worker\\\\Worker->process('redis', Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#22 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(201): Illuminate\\\\Queue\\\\Worker->runJob(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), 'redis', Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#23 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(148): Illuminate\\\\Queue\\\\Worker->daemon('redis', 'crm-sync,crm-up...', Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#24 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(131): Illuminate\\\\Queue\\\\Console\\\\WorkCommand->runWorker('redis', 'crm-sync,crm-up...')\n#25 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Illuminate\\\\Queue\\\\Console\\\\WorkCommand->handle()\n#26 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#27 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#28 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#29 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#30 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(211): Illuminate\\\\Container\\\\Container->call(Array)\n#31 /home/jiminny/vendor/symfony/console/Command/Command.php(341): Illuminate\\\\Console\\\\Command->execute(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#32 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(180): Symfony\\\\Component\\\\Console\\\\Command\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#33 /home/jiminny/vendor/symfony/console/Application.php(1117): Illuminate\\\\Console\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#34 /home/jiminny/vendor/symfony/console/Application.php(356): Symfony\\\\Component\\\\Console\\\\Application->doRunCommand(Object(Illuminate\\\\Queue\\\\Console\\\\WorkCommand), Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#35 /home/jiminny/vendor/symfony/console/Application.php(195): Symfony\\\\Component\\\\Console\\\\Application->doRun(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#36 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(198): Symfony\\\\Component\\\\Console\\\\Application->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#37 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1235): Illuminate\\\\Foundation\\\\Console\\\\Kernel->handle(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#38 /home/jiminny/artisan(13): Illuminate\\\\Foundation\\\\Application->handleCommand(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput))\n#39 {main}\n\"} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.INFO: [SyncHubspotObjects] Starting sync {\"team\":\"b2d49a54-b645-4637-a7ae-a86cfce6e8e4\",\"usage\":25235152,\"real_usage\":65011712,\"pid\":37113} {\"correlation_id\":\"0d3cf2b0-a245-4a83-9bd5-1c5788b85738\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.WARNING: [HubSpot] Account not connected for user {\"userId\":\"2ac0447f-3c8c-4ce0-baeb-b63ddb76fa9b\",\"account\":null} {\"correlation_id\":\"0d3cf2b0-a245-4a83-9bd5-1c5788b85738\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {\"crm_provider\":\"hubspot\",\"crm_owner\":130,\"team_id\":42} {\"correlation_id\":\"0d3cf2b0-a245-4a83-9bd5-1c5788b85738\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":42} {\"correlation_id\":\"0d3cf2b0-a245-4a83-9bd5-1c5788b85738\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":42} {\"correlation_id\":\"0d3cf2b0-a245-4a83-9bd5-1c5788b85738\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.INFO: [SyncHubspotObjects] Sync finished {\"team\":\"b2d49a54-b645-4637-a7ae-a86cfce6e8e4\",\"provider\":\"hubspot\",\"status\":\"disconnected\",\"duration_ms\":70.53,\"usage\":25225384,\"real_usage\":65011712,\"pid\":37113,\"reason\":\"Social account for HubSpot cannot be found. Please login to Jiminny to connect.\"} {\"correlation_id\":\"0d3cf2b0-a245-4a83-9bd5-1c5788b85738\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Starting sync {\"team\":\"b2b115eb-93ce-4d1b-929c-173757df8fba\",\"usage\":25263936,\"real_usage\":65011712,\"pid\":37113} {\"correlation_id\":\"1e46be79-1db4-4829-b19c-1548141a94e0\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.WARNING: [HubSpot] Account not connected for user {\"userId\":\"33e34a7a-1c02-4f04-87ac-22c3a385e6e3\",\"account\":{\"Jiminny\\\\Models\\\\SocialAccount\":{\"id\":306,\"sociable_id\":109,\"provider_user_id\":\"11348452\",\"expires\":1701077403,\"refresh_token_expires\":null,\"provider\":\"hubspot\",\"state\":\"full-refresh\",\"auth_scope\":null,\"retry_after\":null,\"created_at\":\"2020-09-01 16:59:04\",\"updated_at\":\"2023-11-27 09:30:03\"}}} {\"correlation_id\":\"1e46be79-1db4-4829-b19c-1548141a94e0\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {\"crm_provider\":\"hubspot\",\"crm_owner\":109,\"team_id\":29} {\"correlation_id\":\"1e46be79-1db4-4829-b19c-1548141a94e0\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":29} {\"correlation_id\":\"1e46be79-1db4-4829-b19c-1548141a94e0\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":29} {\"correlation_id\":\"1e46be79-1db4-4829-b19c-1548141a94e0\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Sync finished {\"team\":\"b2b115eb-93ce-4d1b-929c-173757df8fba\",\"provider\":\"hubspot\",\"status\":\"disconnected\",\"duration_ms\":47.7,\"usage\":25451952,\"real_usage\":65011712,\"pid\":37113,\"reason\":\"Your HubSpot account has become disconnected. Please login to Jiminny to reconnect.\"} {\"correlation_id\":\"1e46be79-1db4-4829-b19c-1548141a94e0\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Starting sync {\"team\":\"c6b9d6b0-b48d-4832-a68c-a57d60651888\",\"usage\":25490320,\"real_usage\":65011712,\"pid\":37113} {\"correlation_id\":\"0da4e096-9534-4a72-bc1f-8e61561d8e37\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.WARNING: [HubSpot] Account not connected for user {\"userId\":\"71e3aac5-fb66-47c5-a236-2d051ae3e319\",\"account\":null} {\"correlation_id\":\"0da4e096-9534-4a72-bc1f-8e61561d8e37\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {\"crm_provider\":\"hubspot\",\"crm_owner\":256,\"team_id\":49} {\"correlation_id\":\"0da4e096-9534-4a72-bc1f-8e61561d8e37\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":49} {\"correlation_id\":\"0da4e096-9534-4a72-bc1f-8e61561d8e37\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":49} {\"correlation_id\":\"0da4e096-9534-4a72-bc1f-8e61561d8e37\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Sync finished {\"team\":\"c6b9d6b0-b48d-4832-a68c-a57d60651888\",\"provider\":\"hubspot\",\"status\":\"disconnected\",\"duration_ms\":44.12,\"usage\":25547952,\"real_usage\":65011712,\"pid\":37113,\"reason\":\"Social account for HubSpot cannot be found. Please login to Jiminny to connect.\"} {\"correlation_id\":\"0da4e096-9534-4a72-bc1f-8e61561d8e37\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Starting sync {\"team\":\"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4\",\"usage\":25587032,\"real_usage\":65011712,\"pid\":37113} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":148,\"team_id\":2} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [HubSpot] Syncing opportunities using strategy: lastModified {\"team\":2} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/deals/search\",\"total_requests\":0,\"total_records_fetched\":0,\"total_elapsed_seconds\":0.28,\"average_seconds_per_request\":0} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Sync finished {\"team\":\"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4\",\"provider\":\"hubspot\",\"status\":\"completed\",\"duration_ms\":412.19,\"usage\":25739960,\"real_usage\":65011712,\"pid\":37113} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.ERROR: Jiminny\\Services\\Crm\\Hubspot\\Pagination\\HubspotPaginationService::getPaginatedDataGenerator(): Return value must be of type Generator, none returned {\"exception\":\"[object] (TypeError(code: 0): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService::getPaginatedDataGenerator(): Return value must be of type Generator, none returned at /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php:82)\n[stacktrace]\n#0 /home/jiminny/app/Services/Crm/Hubspot/Client.php(194): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->getPaginatedDataGenerator(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), Array, 'deals', 0, 0, NULL)\n#1 /home/jiminny/app/Services/Crm/Hubspot/OpportunitySyncStrategy/HubspotSyncStrategyBase.php(55): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client->getPaginatedDataGenerator(Array, 'deals', 0, 0, NULL)\n#2 /home/jiminny/app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php(73): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\OpportunitySyncStrategy\\\\HubspotSyncStrategyBase->fetchOpportunities(Array, 0, NULL)\n#3 /home/jiminny/app/Jobs/Crm/SyncHubspotObjects.php(118): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service->syncOpportunities(Array)\n#4 /home/jiminny/app/Jobs/Crm/SyncHubspotObjects.php(86): Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects->syncHubspotCrmObjects(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service), Object(Illuminate\\\\Support\\\\Carbon))\n#5 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects->handle(Object(Jiminny\\\\Services\\\\ResolveTeamCrmConnection), Object(Illuminate\\\\Log\\\\LogManager), Object(Jiminny\\\\Repositories\\\\TeamRepository))\n#6 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#7 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#8 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#9 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#10 /home/jiminny/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(129): Illuminate\\\\Container\\\\Container->call(Array)\n#11 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\\\Bus\\\\Dispatcher->Illuminate\\\\Bus\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#12 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\\\\Pipeline\\\\Pipeline->Illuminate\\\\Pipeline\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#13 /home/jiminny/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(133): Illuminate\\\\Pipeline\\\\Pipeline->then(Object(Closure))\n#14 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(136): Illuminate\\\\Bus\\\\Dispatcher->dispatchNow(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects), false)\n#15 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\\\Queue\\\\CallQueuedHandler->Illuminate\\\\Queue\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#16 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\\\\Pipeline\\\\Pipeline->Illuminate\\\\Pipeline\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#17 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(129): Illuminate\\\\Pipeline\\\\Pipeline->then(Object(Closure))\n#18 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(70): Illuminate\\\\Queue\\\\CallQueuedHandler->dispatchThroughMiddleware(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#19 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Jobs/Job.php(102): Illuminate\\\\Queue\\\\CallQueuedHandler->call(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Array)\n#20 /home/jiminny/app/Queue/Worker/Worker.php(71): Illuminate\\\\Queue\\\\Jobs\\\\Job->fire()\n#21 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(435): Jiminny\\\\Queue\\\\Worker\\\\Worker->process('redis', Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#22 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(201): Illuminate\\\\Queue\\\\Worker->runJob(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), 'redis', Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#23 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(148): Illuminate\\\\Queue\\\\Worker->daemon('redis', 'crm-sync,crm-up...', Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#24 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(131): Illuminate\\\\Queue\\\\Console\\\\WorkCommand->runWorker('redis', 'crm-sync,crm-up...')\n#25 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Illuminate\\\\Queue\\\\Console\\\\WorkCommand->handle()\n#26 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#27 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#28 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#29 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#30 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(211): Illuminate\\\\Container\\\\Container->call(Array)\n#31 /home/jiminny/vendor/symfony/console/Command/Command.php(341): Illuminate\\\\Console\\\\Command->execute(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#32 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(180): Symfony\\\\Component\\\\Console\\\\Command\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#33 /home/jiminny/vendor/symfony/console/Application.php(1117): Illuminate\\\\Console\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#34 /home/jiminny/vendor/symfony/console/Application.php(356): Symfony\\\\Component\\\\Console\\\\Application->doRunCommand(Object(Illuminate\\\\Queue\\\\Console\\\\WorkCommand), Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#35 /home/jiminny/vendor/symfony/console/Application.php(195): Symfony\\\\Component\\\\Console\\\\Application->doRun(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#36 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(198): Symfony\\\\Component\\\\Console\\\\Application->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#37 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1235): Illuminate\\\\Foundation\\\\Console\\\\Kernel->handle(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#38 /home/jiminny/artisan(13): Illuminate\\\\Foundation\\\\Application->handleCommand(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput))\n#39 {main}\n\"} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Starting sync {\"team\":\"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4\",\"usage\":25172624,\"real_usage\":65011712,\"pid\":37113} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":148,\"team_id\":2} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [HubSpot] Syncing opportunities using strategy: lastModified {\"team\":2} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/deals/search\",\"total_requests\":0,\"total_records_fetched\":0,\"total_elapsed_seconds\":0.23,\"average_seconds_per_request\":0} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Sync finished {\"team\":\"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4\",\"provider\":\"hubspot\",\"status\":\"completed\",\"duration_ms\":291.83,\"usage\":25225088,\"real_usage\":65011712,\"pid\":37113} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:54] local.ERROR: Jiminny\\Services\\Crm\\Hubspot\\Pagination\\HubspotPaginationService::getPaginatedDataGenerator(): Return value must be of type Generator, none returned {\"exception\":\"[object] (TypeError(code: 0): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService::getPaginatedDataGenerator(): Return value must be of type Generator, none returned at /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php:82)\n[stacktrace]\n#0 /home/jiminny/app/Services/Crm/Hubspot/Client.php(194): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->getPaginatedDataGenerator(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), Array, 'deals', 0, 0, NULL)\n#1 /home/jiminny/app/Services/Crm/Hubspot/OpportunitySyncStrategy/HubspotSyncStrategyBase.php(55): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client->getPaginatedDataGenerator(Array, 'deals', 0, 0, NULL)\n#2 /home/jiminny/app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php(73): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\OpportunitySyncStrategy\\\\HubspotSyncStrategyBase->fetchOpportunities(Array, 0, NULL)\n#3 /home/jiminny/app/Jobs/Crm/SyncHubspotObjects.php(118): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service->syncOpportunities(Array)\n#4 /home/jiminny/app/Jobs/Crm/SyncHubspotObjects.php(86): Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects->syncHubspotCrmObjects(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service), Object(Illuminate\\\\Support\\\\Carbon))\n#5 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects->handle(Object(Jiminny\\\\Services\\\\ResolveTeamCrmConnection), Object(Illuminate\\\\Log\\\\LogManager), Object(Jiminny\\\\Repositories\\\\TeamRepository))\n#6 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#7 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#8 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#9 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#10 /home/jiminny/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(129): Illuminate\\\\Container\\\\Container->call(Array)\n#11 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\\\Bus\\\\Dispatcher->Illuminate\\\\Bus\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#12 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\\\\Pipeline\\\\Pipeline->Illuminate\\\\Pipeline\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#13 /home/jiminny/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(133): Illuminate\\\\Pipeline\\\\Pipeline->then(Object(Closure))\n#14 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(136): Illuminate\\\\Bus\\\\Dispatcher->dispatchNow(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects), false)\n#15 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\\\Queue\\\\CallQueuedHandler->Illuminate\\\\Queue\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#16 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\\\\Pipeline\\\\Pipeline->Illuminate\\\\Pipeline\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#17 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(129): Illuminate\\\\Pipeline\\\\Pipeline->then(Object(Closure))\n#18 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(70): Illuminate\\\\Queue\\\\CallQueuedHandler->dispatchThroughMiddleware(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#19 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Jobs/Job.php(102): Illuminate\\\\Queue\\\\CallQueuedHandler->call(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Array)\n#20 /home/jiminny/app/Queue/Worker/Worker.php(71): Illuminate\\\\Queue\\\\Jobs\\\\Job->fire()\n#21 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(435): Jiminny\\\\Queue\\\\Worker\\\\Worker->process('redis', Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#22 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(201): Illuminate\\\\Queue\\\\Worker->runJob(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), 'redis', Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#23 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(148): Illuminate\\\\Queue\\\\Worker->daemon('redis', 'crm-sync,crm-up...', Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#24 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(131): Illuminate\\\\Queue\\\\Console\\\\WorkCommand->runWorker('redis', 'crm-sync,crm-up...')\n#25 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Illuminate\\\\Queue\\\\Console\\\\WorkCommand->handle()\n#26 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#27 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#28 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#29 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#30 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(211): Illuminate\\\\Container\\\\Container->call(Array)\n#31 /home/jiminny/vendor/symfony/console/Command/Command.php(341): Illuminate\\\\Console\\\\Command->execute(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#32 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(180): Symfony\\\\Component\\\\Console\\\\Command\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#33 /home/jiminny/vendor/symfony/console/Application.php(1117): Illuminate\\\\Console\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#34 /home/jiminny/vendor/symfony/console/Application.php(356): Symfony\\\\Component\\\\Console\\\\Application->doRunCommand(Object(Illuminate\\\\Queue\\\\Console\\\\WorkCommand), Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#35 /home/jiminny/vendor/symfony/console/Application.php(195): Symfony\\\\Component\\\\Console\\\\Application->doRun(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#36 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(198): Symfony\\\\Component\\\\Console\\\\Application->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#37 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1235): Illuminate\\\\Foundation\\\\Console\\\\Kernel->handle(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#38 /home/jiminny/artisan(13): Illuminate\\\\Foundation\\\\Application->handleCommand(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput))\n#39 {main}\n\"} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:57:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"854299be-d77a-48bc-870c-b78333916d69\",\"trace_id\":\"89c1eb6c-bc78-419c-9304-b770093d5692\"}\n[2026-05-07 12:57:06] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"854299be-d77a-48bc-870c-b78333916d69\",\"trace_id\":\"89c1eb6c-bc78-419c-9304-b770093d5692\"}\n[2026-05-07 12:57:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"854299be-d77a-48bc-870c-b78333916d69\",\"trace_id\":\"89c1eb6c-bc78-419c-9304-b770093d5692\"}\n[2026-05-07 12:57:16] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"c4e512a3-a227-4569-bcd2-3258a9142d46\",\"trace_id\":\"016bf668-6712-4c0f-8c8c-c2e411a37889\"}\n[2026-05-07 12:57:16] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"c4e512a3-a227-4569-bcd2-3258a9142d46\",\"trace_id\":\"016bf668-6712-4c0f-8c8c-c2e411a37889\"}\n[2026-05-07 12:57:19] local.NOTICE: Monitoring start {\"correlation_id\":\"4c2d4775-716d-4ca6-b94d-cb17dace29a7\",\"trace_id\":\"e969e10d-e5f0-44c6-9767-97a70e05cfe5\"}\n[2026-05-07 12:57:19] local.NOTICE: Monitoring end {\"correlation_id\":\"4c2d4775-716d-4ca6-b94d-cb17dace29a7\",\"trace_id\":\"e969e10d-e5f0-44c6-9767-97a70e05cfe5\"}\n[2026-05-07 12:57:22] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"d03e9546-bfd0-44c6-84ee-299b1e6c14a2\",\"trace_id\":\"acbab6e5-17fc-4b11-907d-ff87322285d7\"}\n[2026-05-07 12:57:22] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"d03e9546-bfd0-44c6-84ee-299b1e6c14a2\",\"trace_id\":\"acbab6e5-17fc-4b11-907d-ff87322285d7\"}\n[2026-05-07 12:57:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"a2c0095a-18b2-427e-825b-c68c9dbf63a1\",\"trace_id\":\"9b170d6a-ed10-4a41-af79-684c99021967\"}\n[2026-05-07 12:57:25] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"a2c0095a-18b2-427e-825b-c68c9dbf63a1\",\"trace_id\":\"9b170d6a-ed10-4a41-af79-684c99021967\"}\n[2026-05-07 12:57:25] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"a2c0095a-18b2-427e-825b-c68c9dbf63a1\",\"trace_id\":\"9b170d6a-ed10-4a41-af79-684c99021967\"}\n[2026-05-07 12:57:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"a2c0095a-18b2-427e-825b-c68c9dbf63a1\",\"trace_id\":\"9b170d6a-ed10-4a41-af79-684c99021967\"}\n[2026-05-07 12:57:27] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:create\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"c4e70056-ceab-4c44-874a-8042963ce3ea\",\"trace_id\":\"011a70aa-ebb2-4ca8-aef6-4b4cca233da7\"}\n[2026-05-07 12:57:27] local.INFO: [EmailSchedule] STARTING batch create {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"c4e70056-ceab-4c44-874a-8042963ce3ea\",\"trace_id\":\"011a70aa-ebb2-4ca8-aef6-4b4cca233da7\"}\n[2026-05-07 12:57:27] local.INFO: [EmailSchedule] FINISHED batch create {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"c4e70056-ceab-4c44-874a-8042963ce3ea\",\"trace_id\":\"011a70aa-ebb2-4ca8-aef6-4b4cca233da7\"}\n[2026-05-07 12:57:27] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:create\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"c4e70056-ceab-4c44-874a-8042963ce3ea\",\"trace_id\":\"011a70aa-ebb2-4ca8-aef6-4b4cca233da7\"}\n[2026-05-07 12:57:28] local.INFO: [Jiminny\\Jobs\\Mailbox\\CreateBatches] processed 2 inboxes and created 0 batches {\"userId\":null,\"batchSize\":30,\"maxBatches\":1000} {\"correlation_id\":\"c296bf83-9f7c-4228-b6f5-99db6040fa01\",\"trace_id\":\"011a70aa-ebb2-4ca8-aef6-4b4cca233da7\"}\n[2026-05-07 12:58:06] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"a9e2de8b-b538-437e-bbe7-82636da81995\",\"trace_id\":\"e517ae80-e149-490c-b719-309e898b3c93\"}\n[2026-05-07 12:58:06] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"a9e2de8b-b538-437e-bbe7-82636da81995\",\"trace_id\":\"e517ae80-e149-490c-b719-309e898b3c93\"}\n[2026-05-07 12:58:06] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"a9e2de8b-b538-437e-bbe7-82636da81995\",\"trace_id\":\"e517ae80-e149-490c-b719-309e898b3c93\"}\n[2026-05-07 12:58:06] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":148,\"team_id\":2} {\"correlation_id\":\"a9e2de8b-b538-437e-bbe7-82636da81995\",\"trace_id\":\"e517ae80-e149-490c-b719-309e898b3c93\"}\n[2026-05-07 12:58:06] local.ERROR: Client error: `POST https://api.hubapi.com/crm/v3/objects/contact/search` resulted in a `429 Too Many Requests` response:\n{\"status\":\"error\",\"message\":\"You have reached your secondly limit.\",\"errorType\":\"RATE_LIMIT\",\"correlationId\":\"019e0284-5 (truncated...)\n {\"exception\":\"[object] (SevenShores\\\\Hubspot\\\\Exceptions\\\\BadRequest(code: 429): Client error: `POST https://api.hubapi.com/crm/v3/objects/contact/search` resulted in a `429 Too Many Requests` response:\n{\\\"status\\\":\\\"error\\\",\\\"message\\\":\\\"You have reached your secondly limit.\\\",\\\"errorType\\\":\\\"RATE_LIMIT\\\",\\\"correlationId\\\":\\\"019e0284-5 (truncated...)\n at /home/jiminny/vendor/hubspot/hubspot-php/src/Exceptions/HubspotException.php:24)\n[stacktrace]\n#0 /home/jiminny/vendor/hubspot/hubspot-php/src/Http/Client.php(125): SevenShores\\\\Hubspot\\\\Exceptions\\\\HubspotException::create(Object(GuzzleHttp\\\\Exception\\\\ClientException))\n#1 /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php(163): SevenShores\\\\Hubspot\\\\Http\\\\Client->request('POST', 'https://api.hub...', Array)\n#2 /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php(51): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->executeSearchRequest(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), 'https://api.hub...', Array, Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\PaginationState))\n#3 /home/jiminny/app/Services/Crm/Hubspot/Client.php(194): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->getPaginatedDataGenerator(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), Array, 'contact', 0, 0, NULL)\n#4 /home/jiminny/app/Services/Crm/Hubspot/Client.php(175): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client->getPaginatedDataGenerator(Array, 'contact', 0, 0, NULL)\n#5 /home/jiminny/app/Services/Crm/Hubspot/Service.php(1203): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client->getPaginatedData(Array, 'contact')\n#6 /home/jiminny/app/Console/Commands/JiminnyDebugCommand.php(353): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service->matchByName('Robot')\n#7 /home/jiminny/app/Console/Commands/JiminnyDebugCommand.php(44): Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand->rateLimit()\n#8 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand->handle(Object(Jiminny\\\\Jobs\\\\JobDispatcher), Object(Jiminny\\\\Services\\\\Kiosk\\\\AutomatedReports\\\\AutomatedReportsService), Object(Jiminny\\\\Repositories\\\\AutomatedReportsRepository), Object(Jiminny\\\\Services\\\\UserPilot\\\\UserPilotClient))\n#9 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#10 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#11 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#12 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#13 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(211): Illuminate\\\\Container\\\\Container->call(Array)\n#14 /home/jiminny/vendor/symfony/console/Command/Command.php(341): Illuminate\\\\Console\\\\Command->execute(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#15 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(180): Symfony\\\\Component\\\\Console\\\\Command\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#16 /home/jiminny/vendor/symfony/console/Application.php(1117): Illuminate\\\\Console\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#17 /home/jiminny/vendor/symfony/console/Application.php(356): Symfony\\\\Component\\\\Console\\\\Application->doRunCommand(Object(Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand), Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#18 /home/jiminny/vendor/symfony/console/Application.php(195): Symfony\\\\Component\\\\Console\\\\Application->doRun(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#19 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(198): Symfony\\\\Component\\\\Console\\\\Application->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#20 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1235): Illuminate\\\\Foundation\\\\Console\\\\Kernel->handle(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#21 /home/jiminny/artisan(13): Illuminate\\\\Foundation\\\\Application->handleCommand(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput))\n#22 {main}\n\n[previous exception] [object] (GuzzleHttp\\\\Exception\\\\ClientException(code: 429): Client error: `POST https://api.hubapi.com/crm/v3/objects/contact/search` resulted in a `429 Too Many Requests` response:\n{\\\"status\\\":\\\"error\\\",\\\"message\\\":\\\"You have reached your secondly limit.\\\",\\\"errorType\\\":\\\"RATE_LIMIT\\\",\\\"correlationId\\\":\\\"019e0284-5 (truncated...)\n at /home/jiminny/vendor/guzzlehttp/guzzle/src/Exception/RequestException.php:111)\n[stacktrace]\n#0 /home/jiminny/vendor/guzzlehttp/guzzle/src/Middleware.php(72): GuzzleHttp\\\\Exception\\\\RequestException::create(Object(GuzzleHttp\\\\Psr7\\\\Request), Object(GuzzleHttp\\\\Psr7\\\\Response), NULL, Array, NULL)\n#1 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(209): GuzzleHttp\\\\Middleware::GuzzleHttp\\\\{closure}(Object(GuzzleHttp\\\\Psr7\\\\Response))\n#2 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(158): GuzzleHttp\\\\Promise\\\\Promise::callHandler(1, Object(GuzzleHttp\\\\Psr7\\\\Response), NULL)\n#3 /home/jiminny/vendor/guzzlehttp/promises/src/TaskQueue.php(52): GuzzleHttp\\\\Promise\\\\Promise::GuzzleHttp\\\\Promise\\\\{closure}()\n#4 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(251): GuzzleHttp\\\\Promise\\\\TaskQueue->run(true)\n#5 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(227): GuzzleHttp\\\\Promise\\\\Promise->invokeWaitFn()\n#6 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(272): GuzzleHttp\\\\Promise\\\\Promise->waitIfPending()\n#7 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(229): GuzzleHttp\\\\Promise\\\\Promise->invokeWaitList()\n#8 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(69): GuzzleHttp\\\\Promise\\\\Promise->waitIfPending()\n#9 /home/jiminny/vendor/guzzlehttp/guzzle/src/Client.php(189): GuzzleHttp\\\\Promise\\\\Promise->wait()\n#10 /home/jiminny/vendor/hubspot/hubspot-php/src/Http/Client.php(113): GuzzleHttp\\\\Client->request('POST', 'https://api.hub...', Array)\n#11 /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php(163): SevenShores\\\\Hubspot\\\\Http\\\\Client->request('POST', 'https://api.hub...', Array)\n#12 /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php(51): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->executeSearchRequest(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), 'https://api.hub...', Array, Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\PaginationState))\n#13 /home/jiminny/app/Services/Crm/Hubspot/Client.php(194): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->getPaginatedDataGenerator(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), Array, 'contact', 0, 0, NULL)\n#14 /home/jiminny/app/Services/Crm/Hubspot/Client.php(175): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client->getPaginatedDataGenerator(Array, 'contact', 0, 0, NULL)\n#15 /home/jiminny/app/Services/Crm/Hubspot/Service.php(1203): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client->getPaginatedData(Array, 'contact')\n#16 /home/jiminny/app/Console/Commands/JiminnyDebugCommand.php(353): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service->matchByName('Robot')\n#17 /home/jiminny/app/Console/Commands/JiminnyDebugCommand.php(44): Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand->rateLimit()\n#18 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand->handle(Object(Jiminny\\\\Jobs\\\\JobDispatcher), Object(Jiminny\\\\Services\\\\Kiosk\\\\AutomatedReports\\\\AutomatedReportsService), Object(Jiminny\\\\Repositories\\\\AutomatedReportsRepository), Object(Jiminny\\\\Services\\\\UserPilot\\\\UserPilotClient))\n#19 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#20 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#21 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#22 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#23 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(211): Illuminate\\\\Container\\\\Container->call(Array)\n#24 /home/jiminny/vendor/symfony/console/Command/Command.php(341): Illuminate\\\\Console\\\\Command->execute(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#25 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(180): Symfony\\\\Component\\\\Console\\\\Command\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#26 /home/jiminny/vendor/symfony/console/Application.php(1117): Illuminate\\\\Console\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#27 /home/jiminny/vendor/symfony/console/Application.php(356): Symfony\\\\Component\\\\Console\\\\Application->doRunCommand(Object(Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand), Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#28 /home/jiminny/vendor/symfony/console/Application.php(195): Symfony\\\\Component\\\\Console\\\\Application->doRun(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#29 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(198): Symfony\\\\Component\\\\Console\\\\Application->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#30 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1235): Illuminate\\\\Foundation\\\\Console\\\\Kernel->handle(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#31 /home/jiminny/artisan(13): Illuminate\\\\Foundation\\\\Application->handleCommand(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput))\n#32 {main}\n\"} {\"correlation_id\":\"a9e2de8b-b538-437e-bbe7-82636da81995\",\"trace_id\":\"e517ae80-e149-490c-b719-309e898b3c93\"}\n[2026-05-07 12:58:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"fb59e309-d2cc-4fe0-9db2-544112c25477\",\"trace_id\":\"28ccdd4f-bf3a-4545-bc8a-d94188f8204f\"}\n[2026-05-07 12:58:10] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"fb59e309-d2cc-4fe0-9db2-544112c25477\",\"trace_id\":\"28ccdd4f-bf3a-4545-bc8a-d94188f8204f\"}\n[2026-05-07 12:58:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"fb59e309-d2cc-4fe0-9db2-544112c25477\",\"trace_id\":\"28ccdd4f-bf3a-4545-bc8a-d94188f8204f\"}\n[2026-05-07 12:58:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"bff14f9f-db1d-4b6c-bd92-ca810b31790a\",\"trace_id\":\"ed08145b-94b8-4585-8e81-0ad478d038dc\"}\n[2026-05-07 12:58:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"bff14f9f-db1d-4b6c-bd92-ca810b31790a\",\"trace_id\":\"ed08145b-94b8-4585-8e81-0ad478d038dc\"}\n[2026-05-07 12:58:16] local.NOTICE: Monitoring start {\"correlation_id\":\"54ed6493-c74e-4491-b2ff-9404528f1525\",\"trace_id\":\"9a1f78c0-6e74-482c-a091-8367df3d0f70\"}\n[2026-05-07 12:58:16] local.NOTICE: Monitoring end {\"correlation_id\":\"54ed6493-c74e-4491-b2ff-9404528f1525\",\"trace_id\":\"9a1f78c0-6e74-482c-a091-8367df3d0f70\"}\n[2026-05-07 12:58:24] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"7f141a32-060d-4123-bf20-8a8d7abc1482\",\"trace_id\":\"f7fdcb6b-932a-4f6b-ad95-f111628d6cf7\"}\n[2026-05-07 12:58:24] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"7f141a32-060d-4123-bf20-8a8d7abc1482\",\"trace_id\":\"f7fdcb6b-932a-4f6b-ad95-f111628d6cf7\"}\n[2026-05-07 12:58:36] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"f586fc15-711b-4199-8fdf-dcd2df95af0c\",\"trace_id\":\"828fb459-3b7f-4196-a690-12fc9ce99b1d\"}\n[2026-05-07 12:58:36] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"f586fc15-711b-4199-8fdf-dcd2df95af0c\",\"trace_id\":\"828fb459-3b7f-4196-a690-12fc9ce99b1d\"}\n[2026-05-07 12:58:37] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"f586fc15-711b-4199-8fdf-dcd2df95af0c\",\"trace_id\":\"828fb459-3b7f-4196-a690-12fc9ce99b1d\"}\n[2026-05-07 12:58:37] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"f586fc15-711b-4199-8fdf-dcd2df95af0c\",\"trace_id\":\"828fb459-3b7f-4196-a690-12fc9ce99b1d\"}\n[2026-05-07 12:58:40] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"01d4e25d-56d5-4c89-bc29-d873e21cc16f\",\"trace_id\":\"ee1fe1ac-362b-47c1-9db2-7915a30cf0f2\"}\n[2026-05-07 12:58:40] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:56:00, 2026-05-07 12:58:00] {\"correlation_id\":\"01d4e25d-56d5-4c89-bc29-d873e21cc16f\",\"trace_id\":\"ee1fe1ac-362b-47c1-9db2-7915a30cf0f2\"}\n[2026-05-07 12:58:40] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:56:00, 2026-05-07 12:58:00] {\"correlation_id\":\"01d4e25d-56d5-4c89-bc29-d873e21cc16f\",\"trace_id\":\"ee1fe1ac-362b-47c1-9db2-7915a30cf0f2\"}\n[2026-05-07 12:58:40] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"01d4e25d-56d5-4c89-bc29-d873e21cc16f\",\"trace_id\":\"ee1fe1ac-362b-47c1-9db2-7915a30cf0f2\"}\n[2026-05-07 12:58:48] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"924e149e-3462-4043-87da-00838220b970\",\"trace_id\":\"7d0922db-8131-4a52-a0c5-2a7a78df42e8\"}\n[2026-05-07 12:58:48] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"calendar:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:48] local.NOTICE: Calendar sync start {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:48] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"924e149e-3462-4043-87da-00838220b970\",\"trace_id\":\"7d0922db-8131-4a52-a0c5-2a7a78df42e8\"}\n[2026-05-07 12:58:49] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1393,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:49] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1393,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:49] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:49] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1393,\"provider\":\"google\",\"refreshToken\":\"5aa7e2d96b53201cd16fca5d2e4ef3ad03320971fc064781d18aee3ae7b99fbf\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1393,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Account has been deleted\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1393,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1387,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1387,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1387,\"provider\":\"google\",\"refreshToken\":\"8157ac6de94842937194009e9c50e459253600f799dacf6a40755ffdbeb5bba6\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1387,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Account has been deleted\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1387,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1348,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1348,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1348,\"provider\":\"google\",\"refreshToken\":\"9e7d13d3032d0cb1b79d8e95aef01383e8e91eb52ff8ee960c8a0b6b95cd8c73\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1348,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Bad Request\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1348,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1361,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1361,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1361,\"provider\":\"google\",\"refreshToken\":\"6c843da199c2b9907445329304fcc4ec5057a4ee748d8299641764395c08e1fd\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1361,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Account has been deleted\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1361,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1310,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1310,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1310,\"provider\":\"google\",\"refreshToken\":\"e34818922c2830a660813a63f6169a4a9a992ae2cccd7dc8dd7796cfdb470ef1\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1310,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Bad Request\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1310,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1333,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1333,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1333,\"provider\":\"google\",\"refreshToken\":\"6c902986546d8e8da1dc539b046cdc1d458f519acc972e5b5f1d6a1a295165e0\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1333,\"provider\":\"google\",\"responseBody\":{\"error\":\"unauthorized_client\",\"error_description\":\"Unauthorized\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1333,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1368,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1368,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1368,\"provider\":\"google\",\"refreshToken\":\"d2f128898ff8543bd16b69cfae37896ab85119b0f5ed2b431d739593bb600333\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1368,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Bad Request\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1368,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1365,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1365,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1365,\"provider\":\"google\",\"refreshToken\":\"7676e4a9afcd082b413248ab5ec6e487021fec6a9bdf315860a59cefad9caad8\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1365,\"provider\":\"google\",\"responseBody\":{\"error\":\"unauthorized_client\",\"error_description\":\"Unauthorized\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1365,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1364,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1364,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1364,\"provider\":\"google\",\"refreshToken\":\"dd5882ebce76e645292ce33ae74238abbb77c0a4ecc6a2bfe723cad82e72ba8e\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1364,\"provider\":\"google\",\"responseBody\":{\"error\":\"unauthorized_client\",\"error_description\":\"Unauthorized\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1364,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1370,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1370,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1370,\"provider\":\"office\",\"refreshToken\":\"b7ee8035306d0043cea6e00e7c4fe14f745e44074a1194db62a31cdf8b70af3e\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1370,\"provider\":\"office\",\"responseBody\":\"{\\\"error\\\":\\\"invalid_client\\\",\\\"error_description\\\":\\\"AADSTS7000215: Invalid client secret provided. Ensure the secret being sent in the request is the client secret value, not the client secret ID, for a secret added to app 'bbcbb2ef-6200-4fae-82bd-d81f5dd738da'. Trace ID: ef9bb388-453e-4744-a2e1-95e49ced1700 Correlation ID: 3b889c73-f943-4048-ba3b-63ac50581245 Timestamp: 2026-05-07 12:58:53Z\\\",\\\"error_codes\\\":[7000215],\\\"timestamp\\\":\\\"2026-05-07 12:58:53Z\\\",\\\"trace_id\\\":\\\"ef9bb388-453e-4744-a2e1-95e49ced1700\\\",\\\"correlation_id\\\":\\\"3b889c73-f943-4048-ba3b-63ac50581245\\\",\\\"error_uri\\\":\\\"https://login.microsoftonline.com/error?code=7000215\\\"}\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1370,\"provider\":\"office\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1202,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1202,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1202,\"provider\":\"office\",\"refreshToken\":\"b458799ccc29b21a6e2eb5260fdb63e49ccba21bf942a3973fb63799bd7f0afe\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1202,\"provider\":\"office\",\"responseBody\":\"{\\\"error\\\":\\\"invalid_client\\\",\\\"error_description\\\":\\\"AADSTS7000215: Invalid client secret provided. Ensure the secret being sent in the request is the client secret value, not the client secret ID, for a secret added to app 'bbcbb2ef-6200-4fae-82bd-d81f5dd738da'. Trace ID: 0b8181c0-c858-4d17-af69-c23b7f5a0a00 Correlation ID: 2ce9e931-f423-4048-b1d7-ae1910cd4834 Timestamp: 2026-05-07 12:58:54Z\\\",\\\"error_codes\\\":[7000215],\\\"timestamp\\\":\\\"2026-05-07 12:58:54Z\\\",\\\"trace_id\\\":\\\"0b8181c0-c858-4d17-af69-c23b7f5a0a00\\\",\\\"correlation_id\\\":\\\"2ce9e931-f423-4048-b1d7-ae1910cd4834\\\",\\\"error_uri\\\":\\\"https://login.microsoftonline.com/error?code=7000215\\\"}\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1202,\"provider\":\"office\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1502,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1502,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: Calendar sync job dispatched {\"calendar_id\":501} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1300,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1300,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1300,\"provider\":\"google\",\"refreshToken\":\"4b811db0725fd9602a95943519a7da935e2a5065da7d9ebfcb170752e3e1ddb8\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1300,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Account has been deleted\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1300,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1409,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1409,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1409,\"provider\":\"google\",\"refreshToken\":\"e2a3f2d06894894eed1ee87d9db1ace77d4d42ee6e1288a8940ad2c10333b0c4\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1409,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Bad Request\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1409,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1352,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1352,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1352,\"provider\":\"google\",\"refreshToken\":\"dd4b16b00fdc1216da6b717c02338c073636e29162826b2de6db3f064fc029eb\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1352,\"provider\":\"google\",\"responseBody\":{\"error\":\"unauthorized_client\",\"error_description\":\"Unauthorized\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1352,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1296,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1296,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1296,\"provider\":\"office\",\"refreshToken\":\"011ae723c9d800c674e0b4be76f49fc046dac7d501b66c59ef0d9549cfa56ae5\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1296,\"provider\":\"office\",\"responseBody\":\"{\\\"error\\\":\\\"invalid_client\\\",\\\"error_description\\\":\\\"AADSTS7000215: Invalid client secret provided. Ensure the secret being sent in the request is the client secret value, not the client secret ID, for a secret added to app 'bbcbb2ef-6200-4fae-82bd-d81f5dd738da'. Trace ID: 4f38b1ca-479e-445c-8db5-29366d0a0c00 Correlation ID: d0a4d623-1a23-4fcc-aebf-ccafeed44a92 Timestamp: 2026-05-07 12:58:56Z\\\",\\\"error_codes\\\":[7000215],\\\"timestamp\\\":\\\"2026-05-07 12:58:56Z\\\",\\\"trace_id\\\":\\\"4f38b1ca-479e-445c-8db5-29366d0a0c00\\\",\\\"correlation_id\\\":\\\"d0a4d623-1a23-4fcc-aebf-ccafeed44a92\\\",\\\"error_uri\\\":\\\"https://login.microsoftonline.com/error?code=7000215\\\"}\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1296,\"provider\":\"office\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":391,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":391,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":391,\"provider\":\"office\",\"refreshToken\":\"00045eebae0f39b34887c6d53f92ae78064f7145e1f4b67754aebd03cfb2d881\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1502,\"provider\":\"google\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1502,\"provider\":\"google\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [Calendar] Processing sync {\"calendarId\":\"a33076c1-8d97-431a-99f0-85c9524e118b\",\"from\":null,\"to\":null,\"delta\":\"CIiFh8TP44kDEIiFh8TP44kDGAUgkZvkzgIokZvkzgI=\",\"last_sync\":\"2024-12-09 07:12:53\",\"dateMode\":\"daily\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"integration-app\",\"crm_owner\":1695,\"team_id\":3143} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1502,\"provider\":\"google\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1502,\"provider\":\"google\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":391,\"provider\":\"office\",\"responseBody\":\"{\\\"error\\\":\\\"invalid_client\\\",\\\"error_description\\\":\\\"AADSTS7000215: Invalid client secret provided. Ensure the secret being sent in the request is the client secret value, not the client secret ID, for a secret added to app 'bbcbb2ef-6200-4fae-82bd-d81f5dd738da'. Trace ID: 1791a948-a974-424b-9246-7fedfa913b00 Correlation ID: b0e7bf62-d69e-49dd-b7c9-9550f0bd2aec Timestamp: 2026-05-07 12:58:56Z\\\",\\\"error_codes\\\":[7000215],\\\"timestamp\\\":\\\"2026-05-07 12:58:56Z\\\",\\\"trace_id\\\":\\\"1791a948-a974-424b-9246-7fedfa913b00\\\",\\\"correlation_id\\\":\\\"b0e7bf62-d69e-49dd-b7c9-9550f0bd2aec\\\",\\\"error_uri\\\":\\\"https://login.microsoftonline.com/error?code=7000215\\\"}\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":391,\"provider\":\"office\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1271,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1271,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1271,\"provider\":\"office\",\"refreshToken\":\"118cde2c06993147b07ccaec4cbcd5026a819dea6c71081166a492933e392afb\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [Google Calendar] Failed to watch channel for calendar {\"calendarId\":\"a33076c1-8d97-431a-99f0-85c9524e118b\",\"code\":400,\"reason\":\"{\n \\\"error\\\": {\n \\\"errors\\\": [\n {\n \\\"domain\\\": \\\"global\\\",\n \\\"reason\\\": \\\"push.webhookUrlNotHttps\\\",\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n ],\n \\\"code\\\": 400,\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n}\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.WARNING: [Calendar] Sync failed {\"calendarId\":\"a33076c1-8d97-431a-99f0-85c9524e118b\",\"code\":400,\"reason\":\"{\n \\\"error\\\": {\n \\\"errors\\\": [\n {\n \\\"domain\\\": \\\"global\\\",\n \\\"reason\\\": \\\"push.webhookUrlNotHttps\\\",\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n ],\n \\\"code\\\": 400,\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n}\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1271,\"provider\":\"office\",\"responseBody\":\"{\\\"error\\\":\\\"invalid_client\\\",\\\"error_description\\\":\\\"AADSTS7000215: Invalid client secret provided. Ensure the secret being sent in the request is the client secret value, not the client secret ID, for a secret added to app 'bbcbb2ef-6200-4fae-82bd-d81f5dd738da'. Trace ID: 2be27598-8820-475c-b6ca-a30513720c00 Correlation ID: d3ed2a98-4aa9-4a63-819b-d36fd20b8d62 Timestamp: 2026-05-07 12:58:57Z\\\",\\\"error_codes\\\":[7000215],\\\"timestamp\\\":\\\"2026-05-07 12:58:57Z\\\",\\\"trace_id\\\":\\\"2be27598-8820-475c-b6ca-a30513720c00\\\",\\\"correlation_id\\\":\\\"d3ed2a98-4aa9-4a63-819b-d36fd20b8d62\\\",\\\"error_uri\\\":\\\"https://login.microsoftonline.com/error?code=7000215\\\"}\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1271,\"provider\":\"office\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1351,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1351,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1351,\"provider\":\"google\",\"refreshToken\":\"4271d15b9e60a606439caddc68337f783e472c85b03dacff14d1b6dfded9051c\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1351,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Bad Request\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1351,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1366,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1366,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1366,\"provider\":\"google\",\"refreshToken\":\"ae21385059b2eebfd43f68aecd56eccd702a1aabb6598f1f7ab594ed8af491b4\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1366,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Bad Request\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1366,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1115,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1115,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: Calendar sync job dispatched {\"calendar_id\":378} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:58] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1421,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:58] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1421,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:58] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:58] local.INFO: Calendar sync job dispatched {\"calendar_id\":504} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:58] local.NOTICE: Calendar sync end {\"retrieved_calendars\":31,\"processed_calendars\":3} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:58] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"calendar:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1115,\"provider\":\"google\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1115,\"provider\":\"google\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [Calendar] Processing sync {\"calendarId\":\"2676cb6d-f86c-427e-bf78-591e388e3c1e\",\"from\":null,\"to\":null,\"delta\":\"CJ_x49O3jpIDEJ_x49O3jpIDGAUgw67KlwMow67KlwM=\",\"last_sync\":\"2026-01-19 07:48:40\",\"dateMode\":\"daily\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.WARNING: [Pipedrive] Account not connected for user {\"userId\":\"e6538737-e7b4-455f-a37a-3e79b665a220\",\"account\":{\"Jiminny\\\\Models\\\\SocialAccount\":{\"id\":1116,\"sociable_id\":241,\"provider_user_id\":\"19555731\",\"expires\":1775683749,\"refresh_token_expires\":null,\"provider\":\"pipedrive\",\"state\":\"full-refresh\",\"auth_scope\":\"base,deals:full,activities:full,contacts:full,search:read\",\"retry_after\":null,\"created_at\":\"2023-09-08 09:44:29\",\"updated_at\":\"2026-04-08 22:58:34\"}}} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {\"crm_provider\":\"pipedrive\",\"crm_owner\":241,\"team_id\":19} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {\"crm_provider\":\"pipedrive\",\"team_id\":19} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {\"crm_provider\":\"pipedrive\",\"team_id\":19} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.WARNING: [Calendar] CRM disconnected for user so events will not be matched {\"provider\":\"pipedrive\",\"user_id\":241,\"message\":\"Your Pipedrive account has become disconnected. Please login to Jiminny to reconnect.\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1115,\"provider\":\"google\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1115,\"provider\":\"google\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [Google Calendar] Failed to watch channel for calendar {\"calendarId\":\"2676cb6d-f86c-427e-bf78-591e388e3c1e\",\"code\":400,\"reason\":\"{\n \\\"error\\\": {\n \\\"errors\\\": [\n {\n \\\"domain\\\": \\\"global\\\",\n \\\"reason\\\": \\\"push.webhookUrlNotHttps\\\",\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n ],\n \\\"code\\\": 400,\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n}\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.WARNING: [Calendar] Sync failed {\"calendarId\":\"2676cb6d-f86c-427e-bf78-591e388e3c1e\",\"code\":400,\"reason\":\"{\n \\\"error\\\": {\n \\\"errors\\\": [\n {\n \\\"domain\\\": \\\"global\\\",\n \\\"reason\\\": \\\"push.webhookUrlNotHttps\\\",\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n ],\n \\\"code\\\": 400,\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n}\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1421,\"provider\":\"office\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1421,\"provider\":\"office\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [Calendar] Processing sync {\"calendarId\":\"9e8b1a2c-1a8f-42bd-b161-810fc0baf540\",\"from\":null,\"to\":null,\"delta\":\"R0usmcdvmMuZCBYV0hguCHhwR3crxfEuMI8zGlf-bMYpCFtdxXvSJWTlnqQvu_jjoOrOYL2VG9rZwFHCERHxGfGEK3CmQX6x8MJG3ZbBXGuVIS6C7u-doY5maMRdsfnrHIAEMJd4Bs_WMfMH4tDJ8j9aul7DHDEJaP7w0PoPPpcoxu4nEk4vk-MolJBEgkSrayEewuBs5JVItUX9lUY2tA.yO2roNQ4Vdm6hBgoutuphGchuzbvsk7aqt5wHfcyeFQ\",\"last_sync\":\"2026-05-06 15:58:35\",\"dateMode\":\"daily\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":89,\"team_id\":2} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [MS Office Calendar] Skipping delta sync for daily mode {\"calendarId\":\"9e8b1a2c-1a8f-42bd-b161-810fc0baf540\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:59:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"cb5f9d32-02db-4883-a5c9-a5b86c1a2fbb\",\"trace_id\":\"4fb8a9a0-53b1-414a-813d-a259b89f3203\"}\n[2026-05-07 12:59:06] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"cb5f9d32-02db-4883-a5c9-a5b86c1a2fbb\",\"trace_id\":\"4fb8a9a0-53b1-414a-813d-a259b89f3203\"}\n[2026-05-07 12:59:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"cb5f9d32-02db-4883-a5c9-a5b86c1a2fbb\",\"trace_id\":\"4fb8a9a0-53b1-414a-813d-a259b89f3203\"}\n[2026-05-07 12:59:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"64313a2b-3a92-4419-ae59-caabfc9e9731\",\"trace_id\":\"16443bac-2196-4257-88bc-59445729f276\"}\n[2026-05-07 12:59:09] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"64313a2b-3a92-4419-ae59-caabfc9e9731\",\"trace_id\":\"16443bac-2196-4257-88bc-59445729f276\"}\n[2026-05-07 12:59:11] local.NOTICE: Monitoring start {\"correlation_id\":\"7678c2ca-049f-44e4-acce-2e711f8d7d40\",\"trace_id\":\"54ef3d3c-f1ea-4a01-aed2-db19a6739a06\"}\n[2026-05-07 12:59:11] local.NOTICE: Monitoring end {\"correlation_id\":\"7678c2ca-049f-44e4-acce-2e711f8d7d40\",\"trace_id\":\"54ef3d3c-f1ea-4a01-aed2-db19a6739a06\"}\n[2026-05-07 12:59:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"44d7c1a1-dfc9-4401-9f63-ad8b5bff9942\",\"trace_id\":\"9f6f5f38-60f5-4869-bfd2-f366d52eaa00\"}\n[2026-05-07 12:59:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"44d7c1a1-dfc9-4401-9f63-ad8b5bff9942\",\"trace_id\":\"9f6f5f38-60f5-4869-bfd2-f366d52eaa00\"}\n[2026-05-07 12:59:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"f90f3b8c-5161-4963-a963-a40284567af1\",\"trace_id\":\"94731c50-8ce2-44ec-ace6-2d46fb00fdb1\"}\n[2026-05-07 12:59:15] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"f90f3b8c-5161-4963-a963-a40284567af1\",\"trace_id\":\"94731c50-8ce2-44ec-ace6-2d46fb00fdb1\"}\n[2026-05-07 12:59:15] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"f90f3b8c-5161-4963-a963-a40284567af1\",\"trace_id\":\"94731c50-8ce2-44ec-ace6-2d46fb00fdb1\"}\n[2026-05-07 12:59:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"f90f3b8c-5161-4963-a963-a40284567af1\",\"trace_id\":\"94731c50-8ce2-44ec-ace6-2d46fb00fdb1\"}\n[2026-05-07 13:00:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"6f98d5e3-0aa8-496e-853a-a77b7a8b74ec\",\"trace_id\":\"b63e8546-4347-49f0-ad1a-92f4e4504843\"}\n[2026-05-07 13:00:10] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"6f98d5e3-0aa8-496e-853a-a77b7a8b74ec\",\"trace_id\":\"b63e8546-4347-49f0-ad1a-92f4e4504843\"}\n[2026-05-07 13:00:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"6f98d5e3-0aa8-496e-853a-a77b7a8b74ec\",\"trace_id\":\"b63e8546-4347-49f0-ad1a-92f4e4504843\"}\n[2026-05-07 13:00:13] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"50260ccd-f119-47b0-baee-514de27801f2\",\"trace_id\":\"40e651df-62f6-4c3a-83ab-842112ec3ece\"}\n[2026-05-07 13:00:13] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"50260ccd-f119-47b0-baee-514de27801f2\",\"trace_id\":\"40e651df-62f6-4c3a-83ab-842112ec3ece\"}\n[2026-05-07 13:00:17] local.NOTICE: Monitoring start {\"correlation_id\":\"f6104856-aca3-4e7b-964e-bba66d730eb3\",\"trace_id\":\"98f34b7b-f715-49cb-8d3a-4e74c1118445\"}\n[2026-05-07 13:00:17] local.NOTICE: Monitoring end {\"correlation_id\":\"f6104856-aca3-4e7b-964e-bba66d730eb3\",\"trace_id\":\"98f34b7b-f715-49cb-8d3a-4e74c1118445\"}\n[2026-05-07 13:00:19] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"b4a9e9a2-968c-429b-8fa8-67dd59bb297f\",\"trace_id\":\"ed6a83d0-8edb-4392-8717-26d91ffde80b\"}\n[2026-05-07 13:00:19] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"b4a9e9a2-968c-429b-8fa8-67dd59bb297f\",\"trace_id\":\"ed6a83d0-8edb-4392-8717-26d91ffde80b\"}\n[2026-05-07 13:00:21] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"b11474b2-8b19-4a2f-89c3-621fde9d3b1f\",\"trace_id\":\"8018d825-0809-411b-9b2a-078e2da6bacb\"}\n[2026-05-07 13:00:21] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"b11474b2-8b19-4a2f-89c3-621fde9d3b1f\",\"trace_id\":\"8018d825-0809-411b-9b2a-078e2da6bacb\"}\n[2026-05-07 13:00:21] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"b11474b2-8b19-4a2f-89c3-621fde9d3b1f\",\"trace_id\":\"8018d825-0809-411b-9b2a-078e2da6bacb\"}\n[2026-05-07 13:00:21] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"b11474b2-8b19-4a2f-89c3-621fde9d3b1f\",\"trace_id\":\"8018d825-0809-411b-9b2a-078e2da6bacb\"}\n[2026-05-07 13:00:23] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"d3b79f58-f9c8-4063-ac7e-7a0445cd1111\",\"trace_id\":\"802cf505-95fb-4f92-8c1b-79aa3ac53084\"}\n[2026-05-07 13:00:23] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:58:00, 2026-05-07 13:00:00] {\"correlation_id\":\"d3b79f58-f9c8-4063-ac7e-7a0445cd1111\",\"trace_id\":\"802cf505-95fb-4f92-8c1b-79aa3ac53084\"}\n[2026-05-07 13:00:23] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:58:00, 2026-05-07 13:00:00] {\"correlation_id\":\"d3b79f58-f9c8-4063-ac7e-7a0445cd1111\",\"trace_id\":\"802cf505-95fb-4f92-8c1b-79aa3ac53084\"}\n[2026-05-07 13:00:23] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"d3b79f58-f9c8-4063-ac7e-7a0445cd1111\",\"trace_id\":\"802cf505-95fb-4f92-8c1b-79aa3ac53084\"}\n[2026-05-07 13:00:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:purge-stale\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"32bad9c1-861c-4a46-bece-585cc1170bfd\",\"trace_id\":\"0c20e20f-6a91-4346-9455-5cd1451c32a1\"}\n[2026-05-07 13:00:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:purge-stale\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"32bad9c1-861c-4a46-bece-585cc1170bfd\",\"trace_id\":\"0c20e20f-6a91-4346-9455-5cd1451c32a1\"}\n[2026-05-07 13:00:29] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:text-relay:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"c9d4f687-1643-431e-9377-2573a2e593fd\",\"trace_id\":\"02fab433-9c9a-49f7-b836-2b8a42551912\"}\n[2026-05-07 13:00:30] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:text-relay:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"c9d4f687-1643-431e-9377-2573a2e593fd\",\"trace_id\":\"02fab433-9c9a-49f7-b836-2b8a42551912\"}\n[2026-05-07 13:00:33] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:pre-meeting-notification\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"57870bb4-45e8-47d8-b192-21d3297d2208\",\"trace_id\":\"ba8e9eac-2dc9-4ed8-bbf1-4a35aedb9efb\"}\n[2026-05-07 13:00:33] local.INFO: Running pre-meeting notification command {\"correlation_id\":\"57870bb4-45e8-47d8-b192-21d3297d2208\",\"trace_id\":\"ba8e9eac-2dc9-4ed8-bbf1-4a35aedb9efb\"}\n[2026-05-07 13:00:33] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:pre-meeting-notification\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"57870bb4-45e8-47d8-b192-21d3297d2208\",\"trace_id\":\"ba8e9eac-2dc9-4ed8-bbf1-4a35aedb9efb\"}\n[2026-05-07 13:00:35] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:start\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"6aeb181b-8314-4d45-aff7-e378793b04d9\",\"trace_id\":\"8ffc66f1-af64-4a58-8ce8-481b3a299dbb\"}\n[2026-05-07 13:00:35] local.INFO: Running conference:monitor:start command for activities in (2026-05-07 12:50:00, 2026-05-07 12:55:00] {\"correlation_id\":\"6aeb181b-8314-4d45-aff7-e378793b04d9\",\"trace_id\":\"8ffc66f1-af64-4a58-8ce8-481b3a299dbb\"}\n[2026-05-07 13:00:35] local.INFO: [conference:monitor:start] No activities found in (2026-05-07 12:50:00, 2026-05-07 12:55:00] {\"correlation_id\":\"6aeb181b-8314-4d45-aff7-e378793b04d9\",\"trace_id\":\"8ffc66f1-af64-4a58-8ce8-481b3a299dbb\"}\n[2026-05-07 13:00:35] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:start\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"6aeb181b-8314-4d45-aff7-e378793b04d9\",\"trace_id\":\"8ffc66f1-af64-4a58-8ce8-481b3a299dbb\"}\n[2026-05-07 13:00:37] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:end\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"888d4f67-ad14-4457-b51d-2cf8b2d315f9\",\"trace_id\":\"eaf4b0b3-0414-4563-b227-ce9c6a2e5b7e\"}\n[2026-05-07 13:00:37] local.INFO: conference:monitor:end:Jiminny\\Console\\Commands\\Activities\\MonitorMeetingEndCommand::logActivitiesEnded {\"from\":\"12:55\",\"to\":\"13:00\"} {\"correlation_id\":\"888d4f67-ad14-4457-b51d-2cf8b2d315f9\",\"trace_id\":\"eaf4b0b3-0414-4563-b227-ce9c6a2e5b7e\"}\n[2026-05-07 13:00:37] local.INFO: conference:monitor:end:Jiminny\\Console\\Commands\\Activities\\MonitorMeetingEndCommand::logActivitiesWithUnfinishedSession {\"from\":\"02:50\",\"to\":\"02:55\"} {\"correlation_id\":\"888d4f67-ad14-4457-b51d-2cf8b2d315f9\",\"trace_id\":\"eaf4b0b3-0414-4563-b227-ce9c6a2e5b7e\"}\n[2026-05-07 13:00:37] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:end\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"888d4f67-ad14-4457-b51d-2cf8b2d315f9\",\"trace_id\":\"eaf4b0b3-0414-4563-b227-ce9c6a2e5b7e\"}\n[2026-05-07 13:00:39] local.NOTICE: Repairing HubSpot tokens start {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:39] local.INFO: Trying to refresh HubSpot token {\"account_id\":59,\"updated_at\":\"2025-10-03 09:32:05\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:39] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:39] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":59,\"provider\":\"hubspot\",\"refreshToken\":\"97b78f6e2cc49965c00c2492b602b02708b1392551e6b3f113fbaa48992af90b\",\"state\":\"full-refresh\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:39] local.ERROR: Failed to refresh HubSpot token {\"account_id\":59,\"updated_at\":\"2025-10-03 09:32:05\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:39] local.INFO: Trying to refresh HubSpot token {\"account_id\":306,\"updated_at\":\"2023-11-27 09:30:03\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:39] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:39] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":306,\"provider\":\"hubspot\",\"refreshToken\":\"6fa6aa8cc641d131231acc3470f5c03cb3b07b2e580fb18f8acb3b1dbb72549b\",\"state\":\"full-refresh\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:40] local.ERROR: Failed to refresh HubSpot token {\"account_id\":306,\"updated_at\":\"2023-11-27 09:30:03\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:40] local.INFO: Trying to refresh HubSpot token {\"account_id\":1372,\"updated_at\":\"2025-10-02 14:47:06\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:40] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:40] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1372,\"provider\":\"hubspot\",\"refreshToken\":\"9aa73948c761da29dce46c177cf9aee1fde483a44169ca38723f9f0597d7a8c4\",\"state\":\"full-refresh\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:40] local.ERROR: Failed to refresh HubSpot token {\"account_id\":1372,\"updated_at\":\"2025-10-02 14:47:06\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:40] local.NOTICE: Repairing HubSpot tokens end {\"total\":3,\"fixed\":0,\"failed\":3} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:45] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"jiminny:transcription:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"b619cc55-b4ef-4913-ab44-6bce51933f7e\",\"trace_id\":\"7cacb418-6e9c-410b-bf3a-15bdf1837908\"}\n[2026-05-07 13:00:45] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:pre-meeting-reminder\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"a765990f-ffe2-44e0-967f-816f5452ce69\",\"trace_id\":\"9aee0f3f-7668-455f-b207-181b58848478\"}\n[2026-05-07 13:00:45] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"jiminny:transcription:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"b619cc55-b4ef-4913-ab44-6bce51933f7e\",\"trace_id\":\"7cacb418-6e9c-410b-bf3a-15bdf1837908\"}\n[2026-05-07 13:00:45] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:45] local.INFO: [HubSpot Journal Command] Starting polling service {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:45] local.INFO: [HubSpot Journal Polling] Service starting {\"memory_limit\":\"256M\",\"max_execution_time\":\"0\",\"initial_memory_mb\":62.0} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:45] local.INFO: [HubSpot Journal Polling] Acquired polling lock {\"expires_at\":\"2026-05-07T13:02:45.724437Z\"} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:45] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:45] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:45] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:pre-meeting-reminder\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"a765990f-ffe2-44e0-967f-816f5452ce69\",\"trace_id\":\"9aee0f3f-7668-455f-b207-181b58848478\"}\n[2026-05-07 13:00:45] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:49] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"crm:reset-governor\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"055b4798-a759-4621-9e0b-652f8ee69ea1\",\"trace_id\":\"10911ef4-48d1-404a-9345-ecf0f5cb9977\"}\n[2026-05-07 13:00:49] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"crm:reset-governor\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"055b4798-a759-4621-9e0b-652f8ee69ea1\",\"trace_id\":\"10911ef4-48d1-404a-9345-ecf0f5cb9977\"}\n[2026-05-07 13:00:51] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:51] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:51] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:53] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:53] local.INFO: Dispatching activity sync job {\"import_id\":812331,\"provider\":\"twilio-flex\",\"team\":\"jiminny\"} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:53] local.INFO: Dispatching activity sync job {\"import_id\":812332,\"provider\":\"xant\",\"team\":\"jiminny\"} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:53] local.INFO: Dispatching activity sync job {\"import_id\":812333,\"provider\":\"apollo\",\"team\":\"jiminny\"} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:53] local.INFO: Dispatching activity sync job {\"import_id\":812334,\"provider\":\"groove\",\"team\":\"jiminny\"} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:53] local.INFO: Dispatching activity sync job {\"import_id\":812335,\"provider\":\"twilio-video\",\"team\":\"jiminny\"} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:53] local.INFO: Dispatching activity sync job {\"import_id\":812336,\"provider\":\"hubspot\",\"team\":\"hubspot\"} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:53] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.WARNING: [Salesforce] Account not connected for user {\"userId\":\"cdf8b554-d951-4758-bc2b-c1b85d1cd0b9\",\"account\":null} {\"correlation_id\":\"fb068e24-e135-4914-9973-94f1a0f5dae2\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {\"crm_provider\":\"salesforce\",\"crm_owner\":3,\"team_id\":1} {\"correlation_id\":\"fb068e24-e135-4914-9973-94f1a0f5dae2\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {\"crm_provider\":\"salesforce\",\"team_id\":1} {\"correlation_id\":\"fb068e24-e135-4914-9973-94f1a0f5dae2\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {\"crm_provider\":\"salesforce\",\"team_id\":1} {\"correlation_id\":\"fb068e24-e135-4914-9973-94f1a0f5dae2\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.ALERT: [SyncActivity] Failed {\"import_id\":812331,\"provider\":\"twilio-flex\",\"provider_id\":317,\"team\":\"jiminny\",\"team_id\":1,\"reason\":\"Social account for Salesforce cannot be found. Please login to Jiminny to connect.\",\"file\":\"/home/jiminny/app/Services/Crm/BaseService.php\",\"line\":646} {\"correlation_id\":\"fb068e24-e135-4914-9973-94f1a0f5dae2\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"fe9470d4-bc5a-4195-919d-e4908e439f7c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"fe9470d4-bc5a-4195-919d-e4908e439f7c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"fe9470d4-bc5a-4195-919d-e4908e439f7c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:56] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:56] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:56] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:56] local.ALERT: [SyncActivity] Failed {\"import_id\":812332,\"provider\":\"xant\",\"provider_id\":161,\"team\":\"jiminny\",\"team_id\":1,\"reason\":\"Activity Provider account not connected.\",\"file\":\"/home/jiminny/app/Services/Activity/ActivityProviderService.php\",\"line\":174} {\"correlation_id\":\"fe9470d4-bc5a-4195-919d-e4908e439f7c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:56] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"e3a8ef92-20c7-4698-a07d-1aa2c21ac82c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:56] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"e3a8ef92-20c7-4698-a07d-1aa2c21ac82c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:56] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"e3a8ef92-20c7-4698-a07d-1aa2c21ac82c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:56] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:fail-stalled\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"441dabbc-0c1f-4d49-871c-08f96adbed01\",\"trace_id\":\"13597461-50ff-4a40-a329-255430126395\"}\n[2026-05-07 13:00:56] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:fail-stalled\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"441dabbc-0c1f-4d49-871c-08f96adbed01\",\"trace_id\":\"13597461-50ff-4a40-a329-255430126395\"}\n[2026-05-07 13:00:57] local.ALERT: [SyncActivity] Failed {\"import_id\":812333,\"provider\":\"apollo\",\"provider_id\":441,\"team\":\"jiminny\",\"team_id\":1,\"reason\":\"Activity Provider account not connected.\",\"file\":\"/home/jiminny/app/Services/Activity/ActivityProviderService.php\",\"line\":174} {\"correlation_id\":\"e3a8ef92-20c7-4698-a07d-1aa2c21ac82c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:57] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"1a0b64ee-3927-48e6-8ae3-fda14f35babb\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:57] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"1a0b64ee-3927-48e6-8ae3-fda14f35babb\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:57] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"1a0b64ee-3927-48e6-8ae3-fda14f35babb\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:57] local.ALERT: [SyncActivity] Failed {\"import_id\":812334,\"provider\":\"groove\",\"provider_id\":228,\"team\":\"jiminny\",\"team_id\":1,\"reason\":\"Activity Provider account not connected.\",\"file\":\"/home/jiminny/app/Services/Activity/ActivityProviderService.php\",\"line\":174} {\"correlation_id\":\"1a0b64ee-3927-48e6-8ae3-fda14f35babb\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:57] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"5e6fecb1-9905-4ab2-a494-e6d8215430c0\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:57] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"5e6fecb1-9905-4ab2-a494-e6d8215430c0\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:57] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"5e6fecb1-9905-4ab2-a494-e6d8215430c0\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.ALERT: [SyncActivity] Failed {\"import_id\":812335,\"provider\":\"twilio-video\",\"provider_id\":243,\"team\":\"jiminny\",\"team_id\":1,\"reason\":\"Activity Provider account not connected.\",\"file\":\"/home/jiminny/app/Services/Activity/ActivityProviderService.php\",\"line\":174} {\"correlation_id\":\"5e6fecb1-9905-4ab2-a494-e6d8215430c0\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":89,\"team_id\":2} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":408,\"provider\":\"hubspot\"} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":408,\"provider\":\"hubspot\"} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [SyncActivity] Start {\"import_id\":812336,\"provider\":\"hubspot\",\"provider_id\":31,\"team\":\"hubspot\",\"team_id\":2} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [HubSpot] Search calls for period {\"from\":\"2026-05-07 12:44:00\",\"to\":\"2026-05-07 13:00:00\"} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [SyncActivity] End {\"import_id\":812336,\"provider\":\"hubspot\",\"provider_id\":31,\"team\":\"hubspot\",\"team_id\":2} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [SyncActivity] Memory usage {\"import_id\":812336,\"provider\":\"hubspot\",\"provider_id\":31,\"team\":\"hubspot\",\"team_id\":2,\"memory_usage\":27230632,\"memory_real_usage\":67108864,\"pid\":37116} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:59] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"jiminny:transcription:retry-stuck\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"1db560c5-5d8c-419a-bfb0-e761473ecf44\",\"trace_id\":\"79eb494e-fd21-4171-b59d-d7d47358f1fb\"}\n[2026-05-07 13:00:59] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"jiminny:transcription:retry-stuck\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"1db560c5-5d8c-419a-bfb0-e761473ecf44\",\"trace_id\":\"79eb494e-fd21-4171-b59d-d7d47358f1fb\"}\n[2026-05-07 13:01:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"73c0e9d6-7ef5-4040-8e35-0a9bb4028abf\",\"trace_id\":\"55b51c26-06b9-4b59-b444-53017b805b30\"}\n[2026-05-07 13:01:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"73c0e9d6-7ef5-4040-8e35-0a9bb4028abf\",\"trace_id\":\"55b51c26-06b9-4b59-b444-53017b805b30\"}\n[2026-05-07 13:01:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"5a7e717c-f314-4601-b1b8-fd550703f463\",\"trace_id\":\"a64281e5-027f-4856-a3e3-4f176c58eb6e\"}\n[2026-05-07 13:01:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"5a7e717c-f314-4601-b1b8-fd550703f463\",\"trace_id\":\"a64281e5-027f-4856-a3e3-4f176c58eb6e\"}\n[2026-05-07 13:01:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"0c425954-2696-4890-97b7-219ccc38cf46\",\"trace_id\":\"d609b364-f3b6-4b85-babb-67caf96efdb1\"}\n[2026-05-07 13:01:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"0c425954-2696-4890-97b7-219ccc38cf46\",\"trace_id\":\"d609b364-f3b6-4b85-babb-67caf96efdb1\"}\n[2026-05-07 13:01:11] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:11] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:11] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"a6bad97b-3db2-4dd6-839f-fcd485f06e65\",\"trace_id\":\"dcdde4a9-962c-46d1-9386-42adb54efbbf\"}\n[2026-05-07 13:01:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"a6bad97b-3db2-4dd6-839f-fcd485f06e65\",\"trace_id\":\"dcdde4a9-962c-46d1-9386-42adb54efbbf\"}\n[2026-05-07 13:01:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"2893478e-8c43-4719-a2e8-7c9c0e0783e9\",\"trace_id\":\"3fc8f1f0-0727-42f1-8ee6-f2b32bd8834b\"}\n[2026-05-07 13:01:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"2893478e-8c43-4719-a2e8-7c9c0e0783e9\",\"trace_id\":\"3fc8f1f0-0727-42f1-8ee6-f2b32bd8834b\"}\n[2026-05-07 13:01:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"64f52ca1-b54e-46da-a760-73dbdf407eaf\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:17] local.INFO: Dispatching activity sync job {\"import_id\":812337,\"provider\":\"hubspot\",\"team\":\"hubspot\"} {\"correlation_id\":\"64f52ca1-b54e-46da-a760-73dbdf407eaf\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"64f52ca1-b54e-46da-a760-73dbdf407eaf\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"crm:bullhorn:ping\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"3c44e0a7-ec5d-4206-a925-69f6e0783c2a\",\"trace_id\":\"60cf7a36-37ca-4ac4-a632-f317578d908f\"}\n[2026-05-07 13:01:19] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"crm:bullhorn:ping\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"3c44e0a7-ec5d-4206-a925-69f6e0783c2a\",\"trace_id\":\"60cf7a36-37ca-4ac4-a632-f317578d908f\"}\n[2026-05-07 13:01:19] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":89,\"team_id\":2} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":408,\"provider\":\"hubspot\"} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":408,\"provider\":\"hubspot\"} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [SyncActivity] Start {\"import_id\":812337,\"provider\":\"hubspot\",\"provider_id\":31,\"team\":\"hubspot\",\"team_id\":2} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [HubSpot] Search calls for period {\"from\":\"2026-05-07 12:00:00\",\"to\":\"2026-05-07 13:00:00\"} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:20] local.INFO: [SyncActivity] End {\"import_id\":812337,\"provider\":\"hubspot\",\"provider_id\":31,\"team\":\"hubspot\",\"team_id\":2} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:20] local.INFO: [SyncActivity] Memory usage {\"import_id\":812337,\"provider\":\"hubspot\",\"provider_id\":31,\"team\":\"hubspot\",\"team_id\":2,\"memory_usage\":27392888,\"memory_real_usage\":67108864,\"pid\":37116} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:21] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"nudges:send\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"55ebbc10-80bf-4724-ac64-678f6ef891cc\",\"trace_id\":\"f5392dc4-b352-4cae-b82a-004f77bbaf26\"}\n[2026-05-07 13:01:21] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"nudges:send\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"55ebbc10-80bf-4724-ac64-678f6ef891cc\",\"trace_id\":\"f5392dc4-b352-4cae-b82a-004f77bbaf26\"}\n[2026-05-07 13:01:23] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"jiminny:playlists:normalize-sort\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"9e29cfb5-b7fc-41bc-a9fd-a160d2253806\",\"trace_id\":\"3e180d83-299d-4c6c-bdda-d5a8ac156efc\"}\n[2026-05-07 13:01:23] local.INFO: [Jiminny\\Component\\Playlist\\Command\\NormalizeSortCommand::handle] starting. {\"playlists\":[]} {\"correlation_id\":\"9e29cfb5-b7fc-41bc-a9fd-a160d2253806\",\"trace_id\":\"3e180d83-299d-4c6c-bdda-d5a8ac156efc\"}\n[2026-05-07 13:01:23] local.INFO: [Jiminny\\Component\\Playlist\\Command\\NormalizeSortCommand::handle] finished. {\"normalizedPlaylists\":[],\"deletedPlaylists\":[]} {\"correlation_id\":\"9e29cfb5-b7fc-41bc-a9fd-a160d2253806\",\"trace_id\":\"3e180d83-299d-4c6c-bdda-d5a8ac156efc\"}\n[2026-05-07 13:01:23] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"jiminny:playlists:normalize-sort\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"9e29cfb5-b7fc-41bc-a9fd-a160d2253806\",\"trace_id\":\"3e180d83-299d-4c6c-bdda-d5a8ac156efc\"}\n[2026-05-07 13:01:41] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:41] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:41] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:41] local.WARNING: [HubSpot Journal Polling] Maximum empty results reached, stopping {\"empty_results\":5,\"max_empty_results\":5} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:41] local.WARNING: [HubSpot Journal Polling] Maximum empty results reached, stopping {\"empty_results\":5,\"max_empty_results\":5} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:41] local.INFO: [HubSpot Journal Polling] Service ending {\"runtime_seconds\":56,\"total_cycles\":5,\"files_downloaded\":0,\"empty_files\":0,\"other_portal_skipped\":0,\"total_events\":0,\"events_per_file\":0,\"avg_api_ms\":181.3,\"avg_download_ms\":0.0,\"avg_transform_ms\":0.0,\"avg_process_ms\":0.0,\"peak_memory_mb\":99.73} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:41] local.INFO: [HubSpot Journal Polling] Released polling lock {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:02:05] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"fe3480ce-754b-4304-b661-e4ac7234a778\",\"trace_id\":\"619e9c15-f95f-47ce-af85-6d78a6698327\"}\n[2026-05-07 13:02:05] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"fe3480ce-754b-4304-b661-e4ac7234a778\",\"trace_id\":\"619e9c15-f95f-47ce-af85-6d78a6698327\"}\n[2026-05-07 13:02:05] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"fe3480ce-754b-4304-b661-e4ac7234a778\",\"trace_id\":\"619e9c15-f95f-47ce-af85-6d78a6698327\"}\n[2026-05-07 13:02:07] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"aa98bf14-5737-4097-9f53-ac6833fb7983\",\"trace_id\":\"2f858b11-1073-43d4-996a-57e259ec2795\"}\n[2026-05-07 13:02:07] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"aa98bf14-5737-4097-9f53-ac6833fb7983\",\"trace_id\":\"2f858b11-1073-43d4-996a-57e259ec2795\"}\n[2026-05-07 13:02:08] local.NOTICE: Monitoring start {\"correlation_id\":\"25c588be-ddd6-41f1-8db8-ae28f3dd5bf5\",\"trace_id\":\"58b4c110-21ab-4c22-be4f-5be3534cd17d\"}\n[2026-05-07 13:02:08] local.NOTICE: Monitoring end {\"correlation_id\":\"25c588be-ddd6-41f1-8db8-ae28f3dd5bf5\",\"trace_id\":\"58b4c110-21ab-4c22-be4f-5be3534cd17d\"}\n[2026-05-07 13:02:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"5e453d7a-4daf-4001-b100-6aa9485d0353\",\"trace_id\":\"d97e1107-3696-4acf-95db-9cc7f37412e1\"}\n[2026-05-07 13:02:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"5e453d7a-4daf-4001-b100-6aa9485d0353\",\"trace_id\":\"d97e1107-3696-4acf-95db-9cc7f37412e1\"}\n[2026-05-07 13:02:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"3fab4dfb-f0ae-4c2c-a882-e09a1ad3ee9b\",\"trace_id\":\"3a66f9c4-3f01-40e2-aee2-e77fdabe793f\"}\n[2026-05-07 13:02:12] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"3fab4dfb-f0ae-4c2c-a882-e09a1ad3ee9b\",\"trace_id\":\"3a66f9c4-3f01-40e2-aee2-e77fdabe793f\"}\n[2026-05-07 13:02:12] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"3fab4dfb-f0ae-4c2c-a882-e09a1ad3ee9b\",\"trace_id\":\"3a66f9c4-3f01-40e2-aee2-e77fdabe793f\"}\n[2026-05-07 13:02:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"3fab4dfb-f0ae-4c2c-a882-e09a1ad3ee9b\",\"trace_id\":\"3a66f9c4-3f01-40e2-aee2-e77fdabe793f\"}\n[2026-05-07 13:02:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"63252e6d-894f-4cb9-818a-0034bf3545cb\",\"trace_id\":\"7ddf2e72-9174-4623-a622-1a5c9ee952c5\"}\n[2026-05-07 13:02:15] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 13:00:00, 2026-05-07 13:02:00] {\"correlation_id\":\"63252e6d-894f-4cb9-818a-0034bf3545cb\",\"trace_id\":\"7ddf2e72-9174-4623-a622-1a5c9ee952c5\"}\n[2026-05-07 13:02:15] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 13:00:00, 2026-05-07 13:02:00] {\"correlation_id\":\"63252e6d-894f-4cb9-818a-0034bf3545cb\",\"trace_id\":\"7ddf2e72-9174-4623-a622-1a5c9ee952c5\"}\n[2026-05-07 13:02:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"63252e6d-894f-4cb9-818a-0034bf3545cb\",\"trace_id\":\"7ddf2e72-9174-4623-a622-1a5c9ee952c5\"}\n[2026-05-07 13:02:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:create\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"cf65b2c4-c602-432d-8087-d0c0fb7f8e80\",\"trace_id\":\"b7b39317-045c-4475-879e-3d399e23fc3e\"}\n[2026-05-07 13:02:17] local.INFO: [EmailSchedule] STARTING batch create {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"cf65b2c4-c602-432d-8087-d0c0fb7f8e80\",\"trace_id\":\"b7b39317-045c-4475-879e-3d399e23fc3e\"}\n[2026-05-07 13:02:17] local.INFO: [EmailSchedule] FINISHED batch create {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"cf65b2c4-c602-432d-8087-d0c0fb7f8e80\",\"trace_id\":\"b7b39317-045c-4475-879e-3d399e23fc3e\"}\n[2026-05-07 13:02:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:create\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"cf65b2c4-c602-432d-8087-d0c0fb7f8e80\",\"trace_id\":\"b7b39317-045c-4475-879e-3d399e23fc3e\"}\n[2026-05-07 13:02:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"c481124d-04ae-43fb-b1d3-a4282f7af7ff\",\"trace_id\":\"d2d083d1-7cee-4d21-b80e-4485361d9969\"}\n[2026-05-07 13:02:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"c481124d-04ae-43fb-b1d3-a4282f7af7ff\",\"trace_id\":\"d2d083d1-7cee-4d21-b80e-4485361d9969\"}\n[2026-05-07 13:02:20] local.INFO: [Jiminny\\Jobs\\Mailbox\\CreateBatches] processed 2 inboxes and created 0 batches {\"userId\":null,\"batchSize\":30,\"maxBatches\":1000} {\"correlation_id\":\"3e2ef780-0c9d-4c30-9dc9-92315055c632\",\"trace_id\":\"b7b39317-045c-4475-879e-3d399e23fc3e\"}\n[2026-05-07 13:03:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"8cb6c7bf-4a2d-4960-bf8f-0368643fec27\",\"trace_id\":\"68c67cd4-9b92-4e41-bc1e-ebb282ea5211\"}\n[2026-05-07 13:03:06] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"8cb6c7bf-4a2d-4960-bf8f-0368643fec27\",\"trace_id\":\"68c67cd4-9b92-4e41-bc1e-ebb282ea5211\"}\n[2026-05-07 13:03:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"8cb6c7bf-4a2d-4960-bf8f-0368643fec27\",\"trace_id\":\"68c67cd4-9b92-4e41-bc1e-ebb282ea5211\"}\n[2026-05-07 13:03:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"b18dc815-6c91-43df-b083-125316724586\",\"trace_id\":\"62a636e8-4128-49eb-b99b-15efcfb37267\"}\n[2026-05-07 13:03:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"b18dc815-6c91-43df-b083-125316724586\",\"trace_id\":\"62a636e8-4128-49eb-b99b-15efcfb37267\"}\n[2026-05-07 13:03:10] local.NOTICE: Monitoring start {\"correlation_id\":\"d74c3e14-fd1a-4cab-9892-e9e924af1144\",\"trace_id\":\"29547049-25f5-4b62-a603-276e1de3dde8\"}\n[2026-05-07 13:03:10] local.NOTICE: Monitoring end {\"correlation_id\":\"d74c3e14-fd1a-4cab-9892-e9e924af1144\",\"trace_id\":\"29547049-25f5-4b62-a603-276e1de3dde8\"}\n[2026-05-07 13:03:13] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"bd7a8c2f-3f0b-48e9-86c2-0f01f2cfd9e8\",\"trace_id\":\"a3d1ecb5-4122-43c1-98ca-5d74c3dc989c\"}\n[2026-05-07 13:03:13] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"bd7a8c2f-3f0b-48e9-86c2-0f01f2cfd9e8\",\"trace_id\":\"a3d1ecb5-4122-43c1-98ca-5d74c3dc989c\"}\n[2026-05-07 13:03:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"4b20eb61-2970-4a63-8ee0-b392f7406a78\",\"trace_id\":\"892c9d93-c280-4b3f-a97a-bf1266f5c090\"}\n[2026-05-07 13:03:14] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"4b20eb61-2970-4a63-8ee0-b392f7406a78\",\"trace_id\":\"892c9d93-c280-4b3f-a97a-bf1266f5c090\"}\n[2026-05-07 13:03:14] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"4b20eb61-2970-4a63-8ee0-b392f7406a78\",\"trace_id\":\"892c9d93-c280-4b3f-a97a-bf1266f5c090\"}\n[2026-05-07 13:03:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"4b20eb61-2970-4a63-8ee0-b392f7406a78\",\"trace_id\":\"892c9d93-c280-4b3f-a97a-bf1266f5c090\"}\n[2026-05-07 13:03:18] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"6a165ea3-f101-4ac9-bfcc-e7ad618ac645\",\"trace_id\":\"383367e5-a337-4793-be1c-a88a2a6fa2e5\"}\n[2026-05-07 13:03:18] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"6a165ea3-f101-4ac9-bfcc-e7ad618ac645\",\"trace_id\":\"383367e5-a337-4793-be1c-a88a2a6fa2e5\"}","depth":4,"on_screen":true,"value":"[2026-05-07 12:52:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"fa8a3008-d298-4682-bbbc-fdc77520e0d7\",\"trace_id\":\"7cfb2afb-9fc4-4a77-81be-65dce93c7d80\"}\n[2026-05-07 12:52:08] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"fa8a3008-d298-4682-bbbc-fdc77520e0d7\",\"trace_id\":\"7cfb2afb-9fc4-4a77-81be-65dce93c7d80\"}\n[2026-05-07 12:52:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"fa8a3008-d298-4682-bbbc-fdc77520e0d7\",\"trace_id\":\"7cfb2afb-9fc4-4a77-81be-65dce93c7d80\"}\n[2026-05-07 12:52:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"932ced9d-9804-48ed-976a-1f8bf5e75707\",\"trace_id\":\"21bf320c-58f3-4082-831d-9f07f6c6a669\"}\n[2026-05-07 12:52:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"932ced9d-9804-48ed-976a-1f8bf5e75707\",\"trace_id\":\"21bf320c-58f3-4082-831d-9f07f6c6a669\"}\n[2026-05-07 12:52:17] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:17] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:17] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:17] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":148,\"team_id\":2} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:17] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.55,\"average_seconds_per_request\":0.55} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:18] local.NOTICE: Monitoring start {\"correlation_id\":\"ae3ec78f-432c-4e22-b73b-0413af73d9f3\",\"trace_id\":\"c2feb517-0f2b-4ad9-bce5-4d57476a164b\"}\n[2026-05-07 12:52:18] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.51,\"average_seconds_per_request\":0.51} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:18] local.NOTICE: Monitoring end {\"correlation_id\":\"ae3ec78f-432c-4e22-b73b-0413af73d9f3\",\"trace_id\":\"c2feb517-0f2b-4ad9-bce5-4d57476a164b\"}\n[2026-05-07 12:52:18] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.48,\"average_seconds_per_request\":0.48} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:19] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.49,\"average_seconds_per_request\":0.49} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:19] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.49,\"average_seconds_per_request\":0.49} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"2bf2f73f-007c-4909-925e-f1749fbf87b3\",\"trace_id\":\"8429123c-d92c-48d9-a154-29bc0aa0e2a1\"}\n[2026-05-07 12:52:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"2bf2f73f-007c-4909-925e-f1749fbf87b3\",\"trace_id\":\"8429123c-d92c-48d9-a154-29bc0aa0e2a1\"}\n[2026-05-07 12:52:20] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.48,\"average_seconds_per_request\":0.48} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:20] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.62,\"average_seconds_per_request\":0.62} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:21] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.78,\"average_seconds_per_request\":0.78} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:22] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":1.21,\"average_seconds_per_request\":1.21} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:23] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.53,\"average_seconds_per_request\":0.53} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8\",\"trace_id\":\"64ccac6b-34f7-45ed-a8ac-b63adbb19107\"}\n[2026-05-07 12:52:25] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8\",\"trace_id\":\"64ccac6b-34f7-45ed-a8ac-b63adbb19107\"}\n[2026-05-07 12:52:26] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8\",\"trace_id\":\"64ccac6b-34f7-45ed-a8ac-b63adbb19107\"}\n[2026-05-07 12:52:26] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8\",\"trace_id\":\"64ccac6b-34f7-45ed-a8ac-b63adbb19107\"}\n[2026-05-07 12:52:28] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"6e1a36d0-a87a-455f-88b9-04f16718ea33\",\"trace_id\":\"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c\"}\n[2026-05-07 12:52:28] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:50:00, 2026-05-07 12:52:00] {\"correlation_id\":\"6e1a36d0-a87a-455f-88b9-04f16718ea33\",\"trace_id\":\"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c\"}\n[2026-05-07 12:52:28] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:50:00, 2026-05-07 12:52:00] {\"correlation_id\":\"6e1a36d0-a87a-455f-88b9-04f16718ea33\",\"trace_id\":\"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c\"}\n[2026-05-07 12:52:28] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"6e1a36d0-a87a-455f-88b9-04f16718ea33\",\"trace_id\":\"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c\"}\n[2026-05-07 12:52:31] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:create\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"80549428-beea-4a6c-97d3-818ca0f059f3\",\"trace_id\":\"55ddd59b-073b-4331-8cdb-baa869dcff70\"}\n[2026-05-07 12:52:31] local.INFO: [EmailSchedule] STARTING batch create {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"80549428-beea-4a6c-97d3-818ca0f059f3\",\"trace_id\":\"55ddd59b-073b-4331-8cdb-baa869dcff70\"}\n[2026-05-07 12:52:31] local.INFO: [EmailSchedule] FINISHED batch create {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"80549428-beea-4a6c-97d3-818ca0f059f3\",\"trace_id\":\"55ddd59b-073b-4331-8cdb-baa869dcff70\"}\n[2026-05-07 12:52:31] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:create\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"80549428-beea-4a6c-97d3-818ca0f059f3\",\"trace_id\":\"55ddd59b-073b-4331-8cdb-baa869dcff70\"}\n[2026-05-07 12:52:32] local.INFO: [Jiminny\\Jobs\\Mailbox\\CreateBatches] processed 2 inboxes and created 0 batches {\"userId\":null,\"batchSize\":30,\"maxBatches\":1000} {\"correlation_id\":\"92242bd6-7014-4487-a50b-1570e1a88e7a\",\"trace_id\":\"55ddd59b-073b-4331-8cdb-baa869dcff70\"}\n[2026-05-07 12:52:39] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"d467eace-3254-4ecc-8d8e-a94688d6d3ad\",\"trace_id\":\"5105ca8f-3c0d-4798-b748-5a7d6fbd7531\"}\n[2026-05-07 12:52:39] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"d467eace-3254-4ecc-8d8e-a94688d6d3ad\",\"trace_id\":\"5105ca8f-3c0d-4798-b748-5a7d6fbd7531\"}\n[2026-05-07 12:53:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"04363b29-2f82-470a-89d0-c5ce4f4779d7\",\"trace_id\":\"3c76a1f1-3348-4e2b-897c-4a216ca95147\"}\n[2026-05-07 12:53:08] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"04363b29-2f82-470a-89d0-c5ce4f4779d7\",\"trace_id\":\"3c76a1f1-3348-4e2b-897c-4a216ca95147\"}\n[2026-05-07 12:53:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"04363b29-2f82-470a-89d0-c5ce4f4779d7\",\"trace_id\":\"3c76a1f1-3348-4e2b-897c-4a216ca95147\"}\n[2026-05-07 12:53:11] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"5ebbecd0-866c-443f-965f-b6ac03735379\",\"trace_id\":\"e0a724a5-bb4b-4fe6-9fe9-36ea1c3f0326\"}\n[2026-05-07 12:53:11] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"5ebbecd0-866c-443f-965f-b6ac03735379\",\"trace_id\":\"e0a724a5-bb4b-4fe6-9fe9-36ea1c3f0326\"}\n[2026-05-07 12:53:18] local.NOTICE: Monitoring start {\"correlation_id\":\"f39f0d3c-a292-41cb-8834-45dae1f8cf47\",\"trace_id\":\"b6e7e2a7-85af-401d-afc6-bec2bdab34d7\"}\n[2026-05-07 12:53:18] local.NOTICE: Monitoring end {\"correlation_id\":\"f39f0d3c-a292-41cb-8834-45dae1f8cf47\",\"trace_id\":\"b6e7e2a7-85af-401d-afc6-bec2bdab34d7\"}\n[2026-05-07 12:53:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"419bb747-2669-496f-944b-1073496cc271\",\"trace_id\":\"4cb913a4-ef75-422b-80eb-fbfb988521ed\"}\n[2026-05-07 12:53:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"419bb747-2669-496f-944b-1073496cc271\",\"trace_id\":\"4cb913a4-ef75-422b-80eb-fbfb988521ed\"}\n[2026-05-07 12:53:22] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"f4805c97-9344-4111-8be2-2b1efeae07bb\",\"trace_id\":\"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22\"}\n[2026-05-07 12:53:22] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"f4805c97-9344-4111-8be2-2b1efeae07bb\",\"trace_id\":\"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22\"}\n[2026-05-07 12:53:22] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"f4805c97-9344-4111-8be2-2b1efeae07bb\",\"trace_id\":\"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22\"}\n[2026-05-07 12:53:22] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"f4805c97-9344-4111-8be2-2b1efeae07bb\",\"trace_id\":\"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22\"}\n[2026-05-07 12:53:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"2eadb06b-2c2e-4a7f-8920-77bd30d6cd7f\",\"trace_id\":\"75f27a23-2021-41a5-9e5f-4b1cb4f143a6\"}\n[2026-05-07 12:53:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"2eadb06b-2c2e-4a7f-8920-77bd30d6cd7f\",\"trace_id\":\"75f27a23-2021-41a5-9e5f-4b1cb4f143a6\"}\n[2026-05-07 12:54:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"ad151521-f676-4351-a70b-f44dc0b94990\",\"trace_id\":\"17e39c4c-85cb-49a4-815e-b7315a8c2249\"}\n[2026-05-07 12:54:06] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"ad151521-f676-4351-a70b-f44dc0b94990\",\"trace_id\":\"17e39c4c-85cb-49a4-815e-b7315a8c2249\"}\n[2026-05-07 12:54:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"ad151521-f676-4351-a70b-f44dc0b94990\",\"trace_id\":\"17e39c4c-85cb-49a4-815e-b7315a8c2249\"}\n[2026-05-07 12:54:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"ed0583cf-03c6-4696-b859-876c8efa4473\",\"trace_id\":\"3f9e0a3c-2178-4885-95eb-8618b8cfc042\"}\n[2026-05-07 12:54:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"ed0583cf-03c6-4696-b859-876c8efa4473\",\"trace_id\":\"3f9e0a3c-2178-4885-95eb-8618b8cfc042\"}\n[2026-05-07 12:54:10] local.NOTICE: Monitoring start {\"correlation_id\":\"7142250a-b897-4620-8ff7-fd9b3a1f3802\",\"trace_id\":\"597def1e-ca38-4cc4-8890-fdcd5baff948\"}\n[2026-05-07 12:54:10] local.NOTICE: Monitoring end {\"correlation_id\":\"7142250a-b897-4620-8ff7-fd9b3a1f3802\",\"trace_id\":\"597def1e-ca38-4cc4-8890-fdcd5baff948\"}\n[2026-05-07 12:54:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"cb2ada48-0200-4eb3-a8c5-6cb8ea43ec0d\",\"trace_id\":\"73937bdc-10b9-4508-9ef2-86420fe774fc\"}\n[2026-05-07 12:54:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"cb2ada48-0200-4eb3-a8c5-6cb8ea43ec0d\",\"trace_id\":\"73937bdc-10b9-4508-9ef2-86420fe774fc\"}\n[2026-05-07 12:54:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"8f1d8932-2839-4256-99ab-1fd13e8381c6\",\"trace_id\":\"cc090767-edc2-4a89-90c2-116f1737de7f\"}\n[2026-05-07 12:54:14] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"8f1d8932-2839-4256-99ab-1fd13e8381c6\",\"trace_id\":\"cc090767-edc2-4a89-90c2-116f1737de7f\"}\n[2026-05-07 12:54:14] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"8f1d8932-2839-4256-99ab-1fd13e8381c6\",\"trace_id\":\"cc090767-edc2-4a89-90c2-116f1737de7f\"}\n[2026-05-07 12:54:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"8f1d8932-2839-4256-99ab-1fd13e8381c6\",\"trace_id\":\"cc090767-edc2-4a89-90c2-116f1737de7f\"}\n[2026-05-07 12:54:16] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"9d324c6d-5b36-46ee-89c6-f95f86bf3f39\",\"trace_id\":\"860cdff0-9356-4e94-84cc-e011a74ba56c\"}\n[2026-05-07 12:54:16] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:52:00, 2026-05-07 12:54:00] {\"correlation_id\":\"9d324c6d-5b36-46ee-89c6-f95f86bf3f39\",\"trace_id\":\"860cdff0-9356-4e94-84cc-e011a74ba56c\"}\n[2026-05-07 12:54:16] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:52:00, 2026-05-07 12:54:00] {\"correlation_id\":\"9d324c6d-5b36-46ee-89c6-f95f86bf3f39\",\"trace_id\":\"860cdff0-9356-4e94-84cc-e011a74ba56c\"}\n[2026-05-07 12:54:16] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"9d324c6d-5b36-46ee-89c6-f95f86bf3f39\",\"trace_id\":\"860cdff0-9356-4e94-84cc-e011a74ba56c\"}\n[2026-05-07 12:54:18] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:aircall:check-and-renew\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"c2009a88-eea6-4954-8642-ef5d9cb56b42\",\"trace_id\":\"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab\"}\n[2026-05-07 12:54:18] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1496,\"provider\":\"aircall\"} {\"correlation_id\":\"c2009a88-eea6-4954-8642-ef5d9cb56b42\",\"trace_id\":\"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab\"}\n[2026-05-07 12:54:18] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1496,\"provider\":\"aircall\"} {\"correlation_id\":\"c2009a88-eea6-4954-8642-ef5d9cb56b42\",\"trace_id\":\"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab\"}\n[2026-05-07 12:54:18] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"c2009a88-eea6-4954-8642-ef5d9cb56b42\",\"trace_id\":\"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab\"}\n[2026-05-07 12:54:19] local.ERROR: [Aircall] Re-activating webhooks failed {\"team_id\":1,\"reason\":\"{\\\"message\\\":\\\"Forbidden\\\"}\"} {\"correlation_id\":\"c2009a88-eea6-4954-8642-ef5d9cb56b42\",\"trace_id\":\"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab\"}\n[2026-05-07 12:54:19] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:aircall:check-and-renew\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"c2009a88-eea6-4954-8642-ef5d9cb56b42\",\"trace_id\":\"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab\"}\n[2026-05-07 12:54:21] local.INFO: [RetryFailedDownloads] Starting {\"options\":{\"from\":null,\"to\":null,\"help\":false,\"silent\":false,\"quiet\":false,\"verbose\":false,\"version\":false,\"ansi\":null,\"no-interaction\":false,\"env\":null}} {\"correlation_id\":\"825ef2d7-b5f8-45cd-b19d-20a179b06934\",\"trace_id\":\"5825a6c8-14c9-4bec-b688-d4895cfc41cc\"}\n[2026-05-07 12:55:05] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"c0dc8e25-7a51-4023-be61-d0abd6d72e37\",\"trace_id\":\"16b8fa3e-92b1-465e-82d4-642a2d14c7c5\"}\n[2026-05-07 12:55:05] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"c0dc8e25-7a51-4023-be61-d0abd6d72e37\",\"trace_id\":\"16b8fa3e-92b1-465e-82d4-642a2d14c7c5\"}\n[2026-05-07 12:55:05] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"c0dc8e25-7a51-4023-be61-d0abd6d72e37\",\"trace_id\":\"16b8fa3e-92b1-465e-82d4-642a2d14c7c5\"}\n[2026-05-07 12:55:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"1c65fdd1-1f79-435d-b469-add46ddafd63\",\"trace_id\":\"62f2a3bb-3be7-4c76-a9dd-222bfb895fab\"}\n[2026-05-07 12:55:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"1c65fdd1-1f79-435d-b469-add46ddafd63\",\"trace_id\":\"62f2a3bb-3be7-4c76-a9dd-222bfb895fab\"}\n[2026-05-07 12:55:11] local.NOTICE: Monitoring start {\"correlation_id\":\"f115f9bc-bb59-4fc9-8c9f-8b69baba1a55\",\"trace_id\":\"e75cb5c6-6dd8-4000-8d26-4418020c7cfe\"}\n[2026-05-07 12:55:11] local.NOTICE: Monitoring end {\"correlation_id\":\"f115f9bc-bb59-4fc9-8c9f-8b69baba1a55\",\"trace_id\":\"e75cb5c6-6dd8-4000-8d26-4418020c7cfe\"}\n[2026-05-07 12:55:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"dba5c474-4d40-44da-baf2-f8b30db9a2f5\",\"trace_id\":\"adb45622-1fb0-457c-bf20-8dcceab2d62a\"}\n[2026-05-07 12:55:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"dba5c474-4d40-44da-baf2-f8b30db9a2f5\",\"trace_id\":\"adb45622-1fb0-457c-bf20-8dcceab2d62a\"}\n[2026-05-07 12:55:16] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"22c96a8e-4424-4a1f-b349-206276eefe4c\",\"trace_id\":\"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c\"}\n[2026-05-07 12:55:16] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"22c96a8e-4424-4a1f-b349-206276eefe4c\",\"trace_id\":\"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c\"}\n[2026-05-07 12:55:16] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"22c96a8e-4424-4a1f-b349-206276eefe4c\",\"trace_id\":\"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c\"}\n[2026-05-07 12:55:16] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"22c96a8e-4424-4a1f-b349-206276eefe4c\",\"trace_id\":\"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c\"}\n[2026-05-07 12:55:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:purge-stale\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"5f958e8d-1d01-4144-abd6-2513e5524ad3\",\"trace_id\":\"828bc5b7-e2aa-4443-901f-38dd94bb7cc5\"}\n[2026-05-07 12:55:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:purge-stale\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"5f958e8d-1d01-4144-abd6-2513e5524ad3\",\"trace_id\":\"828bc5b7-e2aa-4443-901f-38dd94bb7cc5\"}\n[2026-05-07 12:55:22] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:text-relay:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"6bd1c9cb-cd9a-42a9-87fe-45cb7bac687a\",\"trace_id\":\"0f2f5d66-c4c9-46a5-a31b-6937663ce1ad\"}\n[2026-05-07 12:55:22] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:text-relay:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"6bd1c9cb-cd9a-42a9-87fe-45cb7bac687a\",\"trace_id\":\"0f2f5d66-c4c9-46a5-a31b-6937663ce1ad\"}\n[2026-05-07 12:55:24] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:pre-meeting-notification\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"c5dd8132-d7e1-4caa-84d1-0a50d02df8da\",\"trace_id\":\"bc7341c5-b8e2-48ea-9670-7ec375363180\"}\n[2026-05-07 12:55:24] local.INFO: Running pre-meeting notification command {\"correlation_id\":\"c5dd8132-d7e1-4caa-84d1-0a50d02df8da\",\"trace_id\":\"bc7341c5-b8e2-48ea-9670-7ec375363180\"}\n[2026-05-07 12:55:24] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:pre-meeting-notification\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"c5dd8132-d7e1-4caa-84d1-0a50d02df8da\",\"trace_id\":\"bc7341c5-b8e2-48ea-9670-7ec375363180\"}\n[2026-05-07 12:55:26] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:start\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0\",\"trace_id\":\"efb1619f-4185-4319-9bfb-305cee0b6bfc\"}\n[2026-05-07 12:55:26] local.INFO: Running conference:monitor:start command for activities in (2026-05-07 12:45:00, 2026-05-07 12:50:00] {\"correlation_id\":\"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0\",\"trace_id\":\"efb1619f-4185-4319-9bfb-305cee0b6bfc\"}\n[2026-05-07 12:55:26] local.INFO: [conference:monitor:start] No activities found in (2026-05-07 12:45:00, 2026-05-07 12:50:00] {\"correlation_id\":\"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0\",\"trace_id\":\"efb1619f-4185-4319-9bfb-305cee0b6bfc\"}\n[2026-05-07 12:55:26] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:start\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0\",\"trace_id\":\"efb1619f-4185-4319-9bfb-305cee0b6bfc\"}\n[2026-05-07 12:55:28] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:end\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"3792b31a-080a-4fe4-9823-5602361325ba\",\"trace_id\":\"41a2fde1-48f6-4667-84b7-a2f93e9ad2da\"}\n[2026-05-07 12:55:28] local.INFO: conference:monitor:end:Jiminny\\Console\\Commands\\Activities\\MonitorMeetingEndCommand::logActivitiesEnded {\"from\":\"12:50\",\"to\":\"12:55\"} {\"correlation_id\":\"3792b31a-080a-4fe4-9823-5602361325ba\",\"trace_id\":\"41a2fde1-48f6-4667-84b7-a2f93e9ad2da\"}\n[2026-05-07 12:55:28] local.INFO: conference:monitor:end:Jiminny\\Console\\Commands\\Activities\\MonitorMeetingEndCommand::logActivitiesWithUnfinishedSession {\"from\":\"02:45\",\"to\":\"02:50\"} {\"correlation_id\":\"3792b31a-080a-4fe4-9823-5602361325ba\",\"trace_id\":\"41a2fde1-48f6-4667-84b7-a2f93e9ad2da\"}\n[2026-05-07 12:55:28] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:end\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"3792b31a-080a-4fe4-9823-5602361325ba\",\"trace_id\":\"41a2fde1-48f6-4667-84b7-a2f93e9ad2da\"}\n[2026-05-07 12:55:30] local.NOTICE: Repairing HubSpot tokens start {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:30] local.INFO: Trying to refresh HubSpot token {\"account_id\":59,\"updated_at\":\"2025-10-03 09:32:05\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:30] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:30] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":59,\"provider\":\"hubspot\",\"refreshToken\":\"97b78f6e2cc49965c00c2492b602b02708b1392551e6b3f113fbaa48992af90b\",\"state\":\"full-refresh\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.ERROR: Failed to refresh HubSpot token {\"account_id\":59,\"updated_at\":\"2025-10-03 09:32:05\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.INFO: Trying to refresh HubSpot token {\"account_id\":306,\"updated_at\":\"2023-11-27 09:30:03\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":306,\"provider\":\"hubspot\",\"refreshToken\":\"6fa6aa8cc641d131231acc3470f5c03cb3b07b2e580fb18f8acb3b1dbb72549b\",\"state\":\"full-refresh\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.ERROR: Failed to refresh HubSpot token {\"account_id\":306,\"updated_at\":\"2023-11-27 09:30:03\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.INFO: Trying to refresh HubSpot token {\"account_id\":1372,\"updated_at\":\"2025-10-02 14:47:06\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1372,\"provider\":\"hubspot\",\"refreshToken\":\"9aa73948c761da29dce46c177cf9aee1fde483a44169ca38723f9f0597d7a8c4\",\"state\":\"full-refresh\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:32] local.ERROR: Failed to refresh HubSpot token {\"account_id\":1372,\"updated_at\":\"2025-10-02 14:47:06\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:32] local.NOTICE: Repairing HubSpot tokens end {\"total\":3,\"fixed\":0,\"failed\":3} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:40] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"crm:bullhorn:ping\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"5e676ae4-5d63-49d4-9001-559088adf06b\",\"trace_id\":\"2fcce073-dd68-4c99-b7c4-b9e03c20b8e4\"}\n[2026-05-07 12:55:40] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:pre-meeting-reminder\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"1f830896-8142-41d1-bfc9-4cbb9179ffda\",\"trace_id\":\"e348a096-7f37-4308-a6d8-66131e8be901\"}\n[2026-05-07 12:55:40] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"crm:bullhorn:ping\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"5e676ae4-5d63-49d4-9001-559088adf06b\",\"trace_id\":\"2fcce073-dd68-4c99-b7c4-b9e03c20b8e4\"}\n[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Command] Starting polling service {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Service starting {\"memory_limit\":\"256M\",\"max_execution_time\":\"0\",\"initial_memory_mb\":62.0} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Acquired polling lock {\"expires_at\":\"2026-05-07T12:57:40.609671Z\"} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:40] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:40] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:pre-meeting-reminder\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"1f830896-8142-41d1-bfc9-4cbb9179ffda\",\"trace_id\":\"e348a096-7f37-4308-a6d8-66131e8be901\"}\n[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:45] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:45] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:46] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:51] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:51] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:51] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:06] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:06] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:06] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"2d8b30b4-87aa-480f-9b9e-5a9c709b742a\",\"trace_id\":\"25b7be6c-1faf-430b-a724-a4ff28773a31\"}\n[2026-05-07 12:56:08] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"2d8b30b4-87aa-480f-9b9e-5a9c709b742a\",\"trace_id\":\"25b7be6c-1faf-430b-a724-a4ff28773a31\"}\n[2026-05-07 12:56:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"2d8b30b4-87aa-480f-9b9e-5a9c709b742a\",\"trace_id\":\"25b7be6c-1faf-430b-a724-a4ff28773a31\"}\n[2026-05-07 12:56:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"efd336d7-db4d-459e-b6e7-bf73454e955e\",\"trace_id\":\"0a82c3d5-0417-48c8-b88f-70ec33e2326a\"}\n[2026-05-07 12:56:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"efd336d7-db4d-459e-b6e7-bf73454e955e\",\"trace_id\":\"0a82c3d5-0417-48c8-b88f-70ec33e2326a\"}\n[2026-05-07 12:56:12] local.NOTICE: Monitoring start {\"correlation_id\":\"68481576-8ca6-4ee5-821b-07374702971d\",\"trace_id\":\"c73eac09-5d20-425f-9c22-bd6c65fc60c9\"}\n[2026-05-07 12:56:12] local.NOTICE: Monitoring end {\"correlation_id\":\"68481576-8ca6-4ee5-821b-07374702971d\",\"trace_id\":\"c73eac09-5d20-425f-9c22-bd6c65fc60c9\"}\n[2026-05-07 12:56:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"bd0cdc75-b5c2-4dbb-bc44-e36c96813d24\",\"trace_id\":\"f688cd98-c171-4e30-8c72-afc14f040861\"}\n[2026-05-07 12:56:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"bd0cdc75-b5c2-4dbb-bc44-e36c96813d24\",\"trace_id\":\"f688cd98-c171-4e30-8c72-afc14f040861\"}\n[2026-05-07 12:56:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"f01636a9-4059-4ab0-9ad2-b078d42cedbd\",\"trace_id\":\"fea938d8-aedc-40ec-b8c2-2f487e1ac808\"}\n[2026-05-07 12:56:20] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"f01636a9-4059-4ab0-9ad2-b078d42cedbd\",\"trace_id\":\"fea938d8-aedc-40ec-b8c2-2f487e1ac808\"}\n[2026-05-07 12:56:20] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"f01636a9-4059-4ab0-9ad2-b078d42cedbd\",\"trace_id\":\"fea938d8-aedc-40ec-b8c2-2f487e1ac808\"}\n[2026-05-07 12:56:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"f01636a9-4059-4ab0-9ad2-b078d42cedbd\",\"trace_id\":\"fea938d8-aedc-40ec-b8c2-2f487e1ac808\"}\n[2026-05-07 12:56:23] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"d4558901-264d-4238-8589-62a137bac1fd\",\"trace_id\":\"38e6b5dc-ebd6-46a7-8224-7374d4e58630\"}\n[2026-05-07 12:56:23] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:54:00, 2026-05-07 12:56:00] {\"correlation_id\":\"d4558901-264d-4238-8589-62a137bac1fd\",\"trace_id\":\"38e6b5dc-ebd6-46a7-8224-7374d4e58630\"}\n[2026-05-07 12:56:23] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:54:00, 2026-05-07 12:56:00] {\"correlation_id\":\"d4558901-264d-4238-8589-62a137bac1fd\",\"trace_id\":\"38e6b5dc-ebd6-46a7-8224-7374d4e58630\"}\n[2026-05-07 12:56:23] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"d4558901-264d-4238-8589-62a137bac1fd\",\"trace_id\":\"38e6b5dc-ebd6-46a7-8224-7374d4e58630\"}\n[2026-05-07 12:56:24] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"crm:sync-hubspot-objects\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"7bfaf9be-0ca1-4170-a0c9-83e0ed61881c\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:24] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"crm:sync-hubspot-objects\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"7bfaf9be-0ca1-4170-a0c9-83e0ed61881c\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:26] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:notify-not-logged\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"2541e0fa-1117-4863-9523-d723b5821a24\",\"trace_id\":\"d9600320-5133-4938-bdd1-2256dfdf8db4\"}\n[2026-05-07 12:56:26] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:notify-not-logged\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"2541e0fa-1117-4863-9523-d723b5821a24\",\"trace_id\":\"d9600320-5133-4938-bdd1-2256dfdf8db4\"}\n[2026-05-07 12:56:35] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"e444f776-37db-4c6d-b30e-20b01a089de7\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:36] local.INFO: [EmailSchedule] STARTING Inbox Sync {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"e444f776-37db-4c6d-b30e-20b01a089de7\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:36] local.INFO: [EmailSchedule] FINISHED Inbox Sync {\"host\":\"docker_lamp_1\",\"events\":2} {\"correlation_id\":\"e444f776-37db-4c6d-b30e-20b01a089de7\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:36] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"e444f776-37db-4c6d-b30e-20b01a089de7\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:36] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:36] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:36] local.INFO: [HubSpot Journal Auth] Requesting new client credentials token {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:37] local.INFO: [HubSpot Journal Auth] Successfully obtained new access token {\"expires_in\":1800,\"cached_for\":1500} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:37] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:37] local.WARNING: [HubSpot Journal Polling] Maximum empty results reached, stopping {\"empty_results\":5,\"max_empty_results\":5} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:37] local.WARNING: [HubSpot Journal Polling] Maximum empty results reached, stopping {\"empty_results\":5,\"max_empty_results\":5} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:37] local.INFO: [HubSpot Journal Polling] Service ending {\"runtime_seconds\":57,\"total_cycles\":5,\"files_downloaded\":0,\"empty_files\":0,\"other_portal_skipped\":0,\"total_events\":0,\"events_per_file\":0,\"avg_api_ms\":238.3,\"avg_download_ms\":0.0,\"avg_transform_ms\":0.0,\"avg_process_ms\":0.0,\"peak_memory_mb\":99.73} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:37] local.INFO: [HubSpot Journal Polling] Released polling lock {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:50] local.INFO: [Commands/AsyncUpdateEsEntities] Starting ES update worker {\"pid\":37119,\"workerId\":\"\",\"target\":\"activities\"} {\"correlation_id\":\"902cef33-4733-4b2a-9693-affb8645cecc\",\"trace_id\":\"4ffe2bb8-67c6-422a-a846-319973cc0259\"}\n[2026-05-07 12:56:50] local.INFO: [SyncHubspotObjects] Starting sync {\"team\":\"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4\",\"usage\":23195976,\"real_usage\":65011712,\"pid\":37113} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:50] local.INFO: [Sync Mailbox] Sync start {\"inbox_id\":59} {\"correlation_id\":\"20256b2c-2b69-48f6-bdd3-61d047eb0b0d\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:50] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:50] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:50] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:50] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1499,\"provider\":\"hubspot\",\"refreshToken\":\"96f94c623a404e02ebdbf07f1b75707bb6cdbf848cbf45d418baf608c41a8d86\",\"state\":\"connected\"} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:50] local.INFO: [Inbox service] Skipping METADATA SYNC for inbox 59 due to unauthorized access to the mailbox {\"correlation_id\":\"20256b2c-2b69-48f6-bdd3-61d047eb0b0d\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:50] local.INFO: [Sync Mailbox] Sync complete {\"inbox_id\":59} {\"correlation_id\":\"20256b2c-2b69-48f6-bdd3-61d047eb0b0d\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:50] local.INFO: [Sync Mailbox] Sync start {\"inbox_id\":212} {\"correlation_id\":\"b6c31853-3729-4780-a52b-ebcce17d41b9\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:50] local.INFO: [Inbox service] Skipping METADATA SYNC for inbox 212 due to unauthorized access to the mailbox {\"correlation_id\":\"b6c31853-3729-4780-a52b-ebcce17d41b9\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:50] local.INFO: [Sync Mailbox] Sync complete {\"inbox_id\":212} {\"correlation_id\":\"b6c31853-3729-4780-a52b-ebcce17d41b9\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:51] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:51] local.INFO: [SocialAccountObserver] Access token was modified, encrypting {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:51] local.INFO: [SocialAccountService] Token refreshed {\"socialAccountId\":1499,\"provider\":\"hubspot\",\"state\":\"connected\"} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:51] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":148,\"team_id\":2} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:51] local.INFO: [HubSpot] Syncing opportunities using strategy: lastModified {\"team\":2} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/deals/search\",\"total_requests\":0,\"total_records_fetched\":0,\"total_elapsed_seconds\":0.3,\"average_seconds_per_request\":0} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.INFO: [SyncHubspotObjects] Sync finished {\"team\":\"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4\",\"provider\":\"hubspot\",\"status\":\"completed\",\"duration_ms\":1854.64,\"usage\":24199288,\"real_usage\":65011712,\"pid\":37113} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.ERROR: Jiminny\\Services\\Crm\\Hubspot\\Pagination\\HubspotPaginationService::getPaginatedDataGenerator(): Return value must be of type Generator, none returned {\"exception\":\"[object] (TypeError(code: 0): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService::getPaginatedDataGenerator(): Return value must be of type Generator, none returned at /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php:82)\n[stacktrace]\n#0 /home/jiminny/app/Services/Crm/Hubspot/Client.php(194): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->getPaginatedDataGenerator(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), Array, 'deals', 0, 0, NULL)\n#1 /home/jiminny/app/Services/Crm/Hubspot/OpportunitySyncStrategy/HubspotSyncStrategyBase.php(55): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client->getPaginatedDataGenerator(Array, 'deals', 0, 0, NULL)\n#2 /home/jiminny/app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php(73): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\OpportunitySyncStrategy\\\\HubspotSyncStrategyBase->fetchOpportunities(Array, 0, NULL)\n#3 /home/jiminny/app/Jobs/Crm/SyncHubspotObjects.php(118): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service->syncOpportunities(Array)\n#4 /home/jiminny/app/Jobs/Crm/SyncHubspotObjects.php(86): Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects->syncHubspotCrmObjects(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service), Object(Illuminate\\\\Support\\\\Carbon))\n#5 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects->handle(Object(Jiminny\\\\Services\\\\ResolveTeamCrmConnection), Object(Illuminate\\\\Log\\\\LogManager), Object(Jiminny\\\\Repositories\\\\TeamRepository))\n#6 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#7 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#8 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#9 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#10 /home/jiminny/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(129): Illuminate\\\\Container\\\\Container->call(Array)\n#11 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\\\Bus\\\\Dispatcher->Illuminate\\\\Bus\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#12 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\\\\Pipeline\\\\Pipeline->Illuminate\\\\Pipeline\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#13 /home/jiminny/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(133): Illuminate\\\\Pipeline\\\\Pipeline->then(Object(Closure))\n#14 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(136): Illuminate\\\\Bus\\\\Dispatcher->dispatchNow(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects), false)\n#15 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\\\Queue\\\\CallQueuedHandler->Illuminate\\\\Queue\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#16 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\\\\Pipeline\\\\Pipeline->Illuminate\\\\Pipeline\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#17 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(129): Illuminate\\\\Pipeline\\\\Pipeline->then(Object(Closure))\n#18 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(70): Illuminate\\\\Queue\\\\CallQueuedHandler->dispatchThroughMiddleware(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#19 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Jobs/Job.php(102): Illuminate\\\\Queue\\\\CallQueuedHandler->call(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Array)\n#20 /home/jiminny/app/Queue/Worker/Worker.php(71): Illuminate\\\\Queue\\\\Jobs\\\\Job->fire()\n#21 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(435): Jiminny\\\\Queue\\\\Worker\\\\Worker->process('redis', Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#22 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(201): Illuminate\\\\Queue\\\\Worker->runJob(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), 'redis', Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#23 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(148): Illuminate\\\\Queue\\\\Worker->daemon('redis', 'crm-sync,crm-up...', Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#24 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(131): Illuminate\\\\Queue\\\\Console\\\\WorkCommand->runWorker('redis', 'crm-sync,crm-up...')\n#25 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Illuminate\\\\Queue\\\\Console\\\\WorkCommand->handle()\n#26 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#27 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#28 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#29 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#30 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(211): Illuminate\\\\Container\\\\Container->call(Array)\n#31 /home/jiminny/vendor/symfony/console/Command/Command.php(341): Illuminate\\\\Console\\\\Command->execute(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#32 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(180): Symfony\\\\Component\\\\Console\\\\Command\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#33 /home/jiminny/vendor/symfony/console/Application.php(1117): Illuminate\\\\Console\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#34 /home/jiminny/vendor/symfony/console/Application.php(356): Symfony\\\\Component\\\\Console\\\\Application->doRunCommand(Object(Illuminate\\\\Queue\\\\Console\\\\WorkCommand), Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#35 /home/jiminny/vendor/symfony/console/Application.php(195): Symfony\\\\Component\\\\Console\\\\Application->doRun(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#36 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(198): Symfony\\\\Component\\\\Console\\\\Application->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#37 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1235): Illuminate\\\\Foundation\\\\Console\\\\Kernel->handle(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#38 /home/jiminny/artisan(13): Illuminate\\\\Foundation\\\\Application->handleCommand(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput))\n#39 {main}\n\"} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.INFO: [SyncHubspotObjects] Starting sync {\"team\":\"b2d49a54-b645-4637-a7ae-a86cfce6e8e4\",\"usage\":25235152,\"real_usage\":65011712,\"pid\":37113} {\"correlation_id\":\"0d3cf2b0-a245-4a83-9bd5-1c5788b85738\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.WARNING: [HubSpot] Account not connected for user {\"userId\":\"2ac0447f-3c8c-4ce0-baeb-b63ddb76fa9b\",\"account\":null} {\"correlation_id\":\"0d3cf2b0-a245-4a83-9bd5-1c5788b85738\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {\"crm_provider\":\"hubspot\",\"crm_owner\":130,\"team_id\":42} {\"correlation_id\":\"0d3cf2b0-a245-4a83-9bd5-1c5788b85738\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":42} {\"correlation_id\":\"0d3cf2b0-a245-4a83-9bd5-1c5788b85738\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":42} {\"correlation_id\":\"0d3cf2b0-a245-4a83-9bd5-1c5788b85738\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.INFO: [SyncHubspotObjects] Sync finished {\"team\":\"b2d49a54-b645-4637-a7ae-a86cfce6e8e4\",\"provider\":\"hubspot\",\"status\":\"disconnected\",\"duration_ms\":70.53,\"usage\":25225384,\"real_usage\":65011712,\"pid\":37113,\"reason\":\"Social account for HubSpot cannot be found. Please login to Jiminny to connect.\"} {\"correlation_id\":\"0d3cf2b0-a245-4a83-9bd5-1c5788b85738\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Starting sync {\"team\":\"b2b115eb-93ce-4d1b-929c-173757df8fba\",\"usage\":25263936,\"real_usage\":65011712,\"pid\":37113} {\"correlation_id\":\"1e46be79-1db4-4829-b19c-1548141a94e0\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.WARNING: [HubSpot] Account not connected for user {\"userId\":\"33e34a7a-1c02-4f04-87ac-22c3a385e6e3\",\"account\":{\"Jiminny\\\\Models\\\\SocialAccount\":{\"id\":306,\"sociable_id\":109,\"provider_user_id\":\"11348452\",\"expires\":1701077403,\"refresh_token_expires\":null,\"provider\":\"hubspot\",\"state\":\"full-refresh\",\"auth_scope\":null,\"retry_after\":null,\"created_at\":\"2020-09-01 16:59:04\",\"updated_at\":\"2023-11-27 09:30:03\"}}} {\"correlation_id\":\"1e46be79-1db4-4829-b19c-1548141a94e0\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {\"crm_provider\":\"hubspot\",\"crm_owner\":109,\"team_id\":29} {\"correlation_id\":\"1e46be79-1db4-4829-b19c-1548141a94e0\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":29} {\"correlation_id\":\"1e46be79-1db4-4829-b19c-1548141a94e0\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":29} {\"correlation_id\":\"1e46be79-1db4-4829-b19c-1548141a94e0\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Sync finished {\"team\":\"b2b115eb-93ce-4d1b-929c-173757df8fba\",\"provider\":\"hubspot\",\"status\":\"disconnected\",\"duration_ms\":47.7,\"usage\":25451952,\"real_usage\":65011712,\"pid\":37113,\"reason\":\"Your HubSpot account has become disconnected. Please login to Jiminny to reconnect.\"} {\"correlation_id\":\"1e46be79-1db4-4829-b19c-1548141a94e0\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Starting sync {\"team\":\"c6b9d6b0-b48d-4832-a68c-a57d60651888\",\"usage\":25490320,\"real_usage\":65011712,\"pid\":37113} {\"correlation_id\":\"0da4e096-9534-4a72-bc1f-8e61561d8e37\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.WARNING: [HubSpot] Account not connected for user {\"userId\":\"71e3aac5-fb66-47c5-a236-2d051ae3e319\",\"account\":null} {\"correlation_id\":\"0da4e096-9534-4a72-bc1f-8e61561d8e37\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {\"crm_provider\":\"hubspot\",\"crm_owner\":256,\"team_id\":49} {\"correlation_id\":\"0da4e096-9534-4a72-bc1f-8e61561d8e37\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":49} {\"correlation_id\":\"0da4e096-9534-4a72-bc1f-8e61561d8e37\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":49} {\"correlation_id\":\"0da4e096-9534-4a72-bc1f-8e61561d8e37\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Sync finished {\"team\":\"c6b9d6b0-b48d-4832-a68c-a57d60651888\",\"provider\":\"hubspot\",\"status\":\"disconnected\",\"duration_ms\":44.12,\"usage\":25547952,\"real_usage\":65011712,\"pid\":37113,\"reason\":\"Social account for HubSpot cannot be found. Please login to Jiminny to connect.\"} {\"correlation_id\":\"0da4e096-9534-4a72-bc1f-8e61561d8e37\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Starting sync {\"team\":\"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4\",\"usage\":25587032,\"real_usage\":65011712,\"pid\":37113} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":148,\"team_id\":2} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [HubSpot] Syncing opportunities using strategy: lastModified {\"team\":2} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/deals/search\",\"total_requests\":0,\"total_records_fetched\":0,\"total_elapsed_seconds\":0.28,\"average_seconds_per_request\":0} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Sync finished {\"team\":\"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4\",\"provider\":\"hubspot\",\"status\":\"completed\",\"duration_ms\":412.19,\"usage\":25739960,\"real_usage\":65011712,\"pid\":37113} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.ERROR: Jiminny\\Services\\Crm\\Hubspot\\Pagination\\HubspotPaginationService::getPaginatedDataGenerator(): Return value must be of type Generator, none returned {\"exception\":\"[object] (TypeError(code: 0): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService::getPaginatedDataGenerator(): Return value must be of type Generator, none returned at /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php:82)\n[stacktrace]\n#0 /home/jiminny/app/Services/Crm/Hubspot/Client.php(194): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->getPaginatedDataGenerator(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), Array, 'deals', 0, 0, NULL)\n#1 /home/jiminny/app/Services/Crm/Hubspot/OpportunitySyncStrategy/HubspotSyncStrategyBase.php(55): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client->getPaginatedDataGenerator(Array, 'deals', 0, 0, NULL)\n#2 /home/jiminny/app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php(73): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\OpportunitySyncStrategy\\\\HubspotSyncStrategyBase->fetchOpportunities(Array, 0, NULL)\n#3 /home/jiminny/app/Jobs/Crm/SyncHubspotObjects.php(118): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service->syncOpportunities(Array)\n#4 /home/jiminny/app/Jobs/Crm/SyncHubspotObjects.php(86): Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects->syncHubspotCrmObjects(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service), Object(Illuminate\\\\Support\\\\Carbon))\n#5 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects->handle(Object(Jiminny\\\\Services\\\\ResolveTeamCrmConnection), Object(Illuminate\\\\Log\\\\LogManager), Object(Jiminny\\\\Repositories\\\\TeamRepository))\n#6 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#7 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#8 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#9 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#10 /home/jiminny/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(129): Illuminate\\\\Container\\\\Container->call(Array)\n#11 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\\\Bus\\\\Dispatcher->Illuminate\\\\Bus\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#12 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\\\\Pipeline\\\\Pipeline->Illuminate\\\\Pipeline\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#13 /home/jiminny/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(133): Illuminate\\\\Pipeline\\\\Pipeline->then(Object(Closure))\n#14 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(136): Illuminate\\\\Bus\\\\Dispatcher->dispatchNow(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects), false)\n#15 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\\\Queue\\\\CallQueuedHandler->Illuminate\\\\Queue\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#16 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\\\\Pipeline\\\\Pipeline->Illuminate\\\\Pipeline\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#17 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(129): Illuminate\\\\Pipeline\\\\Pipeline->then(Object(Closure))\n#18 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(70): Illuminate\\\\Queue\\\\CallQueuedHandler->dispatchThroughMiddleware(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#19 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Jobs/Job.php(102): Illuminate\\\\Queue\\\\CallQueuedHandler->call(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Array)\n#20 /home/jiminny/app/Queue/Worker/Worker.php(71): Illuminate\\\\Queue\\\\Jobs\\\\Job->fire()\n#21 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(435): Jiminny\\\\Queue\\\\Worker\\\\Worker->process('redis', Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#22 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(201): Illuminate\\\\Queue\\\\Worker->runJob(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), 'redis', Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#23 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(148): Illuminate\\\\Queue\\\\Worker->daemon('redis', 'crm-sync,crm-up...', Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#24 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(131): Illuminate\\\\Queue\\\\Console\\\\WorkCommand->runWorker('redis', 'crm-sync,crm-up...')\n#25 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Illuminate\\\\Queue\\\\Console\\\\WorkCommand->handle()\n#26 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#27 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#28 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#29 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#30 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(211): Illuminate\\\\Container\\\\Container->call(Array)\n#31 /home/jiminny/vendor/symfony/console/Command/Command.php(341): Illuminate\\\\Console\\\\Command->execute(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#32 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(180): Symfony\\\\Component\\\\Console\\\\Command\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#33 /home/jiminny/vendor/symfony/console/Application.php(1117): Illuminate\\\\Console\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#34 /home/jiminny/vendor/symfony/console/Application.php(356): Symfony\\\\Component\\\\Console\\\\Application->doRunCommand(Object(Illuminate\\\\Queue\\\\Console\\\\WorkCommand), Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#35 /home/jiminny/vendor/symfony/console/Application.php(195): Symfony\\\\Component\\\\Console\\\\Application->doRun(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#36 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(198): Symfony\\\\Component\\\\Console\\\\Application->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#37 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1235): Illuminate\\\\Foundation\\\\Console\\\\Kernel->handle(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#38 /home/jiminny/artisan(13): Illuminate\\\\Foundation\\\\Application->handleCommand(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput))\n#39 {main}\n\"} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Starting sync {\"team\":\"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4\",\"usage\":25172624,\"real_usage\":65011712,\"pid\":37113} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":148,\"team_id\":2} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [HubSpot] Syncing opportunities using strategy: lastModified {\"team\":2} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/deals/search\",\"total_requests\":0,\"total_records_fetched\":0,\"total_elapsed_seconds\":0.23,\"average_seconds_per_request\":0} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Sync finished {\"team\":\"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4\",\"provider\":\"hubspot\",\"status\":\"completed\",\"duration_ms\":291.83,\"usage\":25225088,\"real_usage\":65011712,\"pid\":37113} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:54] local.ERROR: Jiminny\\Services\\Crm\\Hubspot\\Pagination\\HubspotPaginationService::getPaginatedDataGenerator(): Return value must be of type Generator, none returned {\"exception\":\"[object] (TypeError(code: 0): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService::getPaginatedDataGenerator(): Return value must be of type Generator, none returned at /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php:82)\n[stacktrace]\n#0 /home/jiminny/app/Services/Crm/Hubspot/Client.php(194): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->getPaginatedDataGenerator(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), Array, 'deals', 0, 0, NULL)\n#1 /home/jiminny/app/Services/Crm/Hubspot/OpportunitySyncStrategy/HubspotSyncStrategyBase.php(55): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client->getPaginatedDataGenerator(Array, 'deals', 0, 0, NULL)\n#2 /home/jiminny/app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php(73): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\OpportunitySyncStrategy\\\\HubspotSyncStrategyBase->fetchOpportunities(Array, 0, NULL)\n#3 /home/jiminny/app/Jobs/Crm/SyncHubspotObjects.php(118): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service->syncOpportunities(Array)\n#4 /home/jiminny/app/Jobs/Crm/SyncHubspotObjects.php(86): Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects->syncHubspotCrmObjects(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service), Object(Illuminate\\\\Support\\\\Carbon))\n#5 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects->handle(Object(Jiminny\\\\Services\\\\ResolveTeamCrmConnection), Object(Illuminate\\\\Log\\\\LogManager), Object(Jiminny\\\\Repositories\\\\TeamRepository))\n#6 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#7 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#8 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#9 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#10 /home/jiminny/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(129): Illuminate\\\\Container\\\\Container->call(Array)\n#11 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\\\Bus\\\\Dispatcher->Illuminate\\\\Bus\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#12 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\\\\Pipeline\\\\Pipeline->Illuminate\\\\Pipeline\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#13 /home/jiminny/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(133): Illuminate\\\\Pipeline\\\\Pipeline->then(Object(Closure))\n#14 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(136): Illuminate\\\\Bus\\\\Dispatcher->dispatchNow(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects), false)\n#15 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\\\Queue\\\\CallQueuedHandler->Illuminate\\\\Queue\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#16 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\\\\Pipeline\\\\Pipeline->Illuminate\\\\Pipeline\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#17 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(129): Illuminate\\\\Pipeline\\\\Pipeline->then(Object(Closure))\n#18 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(70): Illuminate\\\\Queue\\\\CallQueuedHandler->dispatchThroughMiddleware(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#19 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Jobs/Job.php(102): Illuminate\\\\Queue\\\\CallQueuedHandler->call(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Array)\n#20 /home/jiminny/app/Queue/Worker/Worker.php(71): Illuminate\\\\Queue\\\\Jobs\\\\Job->fire()\n#21 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(435): Jiminny\\\\Queue\\\\Worker\\\\Worker->process('redis', Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#22 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(201): Illuminate\\\\Queue\\\\Worker->runJob(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), 'redis', Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#23 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(148): Illuminate\\\\Queue\\\\Worker->daemon('redis', 'crm-sync,crm-up...', Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#24 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(131): Illuminate\\\\Queue\\\\Console\\\\WorkCommand->runWorker('redis', 'crm-sync,crm-up...')\n#25 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Illuminate\\\\Queue\\\\Console\\\\WorkCommand->handle()\n#26 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#27 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#28 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#29 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#30 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(211): Illuminate\\\\Container\\\\Container->call(Array)\n#31 /home/jiminny/vendor/symfony/console/Command/Command.php(341): Illuminate\\\\Console\\\\Command->execute(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#32 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(180): Symfony\\\\Component\\\\Console\\\\Command\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#33 /home/jiminny/vendor/symfony/console/Application.php(1117): Illuminate\\\\Console\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#34 /home/jiminny/vendor/symfony/console/Application.php(356): Symfony\\\\Component\\\\Console\\\\Application->doRunCommand(Object(Illuminate\\\\Queue\\\\Console\\\\WorkCommand), Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#35 /home/jiminny/vendor/symfony/console/Application.php(195): Symfony\\\\Component\\\\Console\\\\Application->doRun(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#36 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(198): Symfony\\\\Component\\\\Console\\\\Application->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#37 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1235): Illuminate\\\\Foundation\\\\Console\\\\Kernel->handle(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#38 /home/jiminny/artisan(13): Illuminate\\\\Foundation\\\\Application->handleCommand(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput))\n#39 {main}\n\"} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:57:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"854299be-d77a-48bc-870c-b78333916d69\",\"trace_id\":\"89c1eb6c-bc78-419c-9304-b770093d5692\"}\n[2026-05-07 12:57:06] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"854299be-d77a-48bc-870c-b78333916d69\",\"trace_id\":\"89c1eb6c-bc78-419c-9304-b770093d5692\"}\n[2026-05-07 12:57:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"854299be-d77a-48bc-870c-b78333916d69\",\"trace_id\":\"89c1eb6c-bc78-419c-9304-b770093d5692\"}\n[2026-05-07 12:57:16] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"c4e512a3-a227-4569-bcd2-3258a9142d46\",\"trace_id\":\"016bf668-6712-4c0f-8c8c-c2e411a37889\"}\n[2026-05-07 12:57:16] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"c4e512a3-a227-4569-bcd2-3258a9142d46\",\"trace_id\":\"016bf668-6712-4c0f-8c8c-c2e411a37889\"}\n[2026-05-07 12:57:19] local.NOTICE: Monitoring start {\"correlation_id\":\"4c2d4775-716d-4ca6-b94d-cb17dace29a7\",\"trace_id\":\"e969e10d-e5f0-44c6-9767-97a70e05cfe5\"}\n[2026-05-07 12:57:19] local.NOTICE: Monitoring end {\"correlation_id\":\"4c2d4775-716d-4ca6-b94d-cb17dace29a7\",\"trace_id\":\"e969e10d-e5f0-44c6-9767-97a70e05cfe5\"}\n[2026-05-07 12:57:22] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"d03e9546-bfd0-44c6-84ee-299b1e6c14a2\",\"trace_id\":\"acbab6e5-17fc-4b11-907d-ff87322285d7\"}\n[2026-05-07 12:57:22] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"d03e9546-bfd0-44c6-84ee-299b1e6c14a2\",\"trace_id\":\"acbab6e5-17fc-4b11-907d-ff87322285d7\"}\n[2026-05-07 12:57:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"a2c0095a-18b2-427e-825b-c68c9dbf63a1\",\"trace_id\":\"9b170d6a-ed10-4a41-af79-684c99021967\"}\n[2026-05-07 12:57:25] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"a2c0095a-18b2-427e-825b-c68c9dbf63a1\",\"trace_id\":\"9b170d6a-ed10-4a41-af79-684c99021967\"}\n[2026-05-07 12:57:25] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"a2c0095a-18b2-427e-825b-c68c9dbf63a1\",\"trace_id\":\"9b170d6a-ed10-4a41-af79-684c99021967\"}\n[2026-05-07 12:57:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"a2c0095a-18b2-427e-825b-c68c9dbf63a1\",\"trace_id\":\"9b170d6a-ed10-4a41-af79-684c99021967\"}\n[2026-05-07 12:57:27] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:create\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"c4e70056-ceab-4c44-874a-8042963ce3ea\",\"trace_id\":\"011a70aa-ebb2-4ca8-aef6-4b4cca233da7\"}\n[2026-05-07 12:57:27] local.INFO: [EmailSchedule] STARTING batch create {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"c4e70056-ceab-4c44-874a-8042963ce3ea\",\"trace_id\":\"011a70aa-ebb2-4ca8-aef6-4b4cca233da7\"}\n[2026-05-07 12:57:27] local.INFO: [EmailSchedule] FINISHED batch create {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"c4e70056-ceab-4c44-874a-8042963ce3ea\",\"trace_id\":\"011a70aa-ebb2-4ca8-aef6-4b4cca233da7\"}\n[2026-05-07 12:57:27] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:create\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"c4e70056-ceab-4c44-874a-8042963ce3ea\",\"trace_id\":\"011a70aa-ebb2-4ca8-aef6-4b4cca233da7\"}\n[2026-05-07 12:57:28] local.INFO: [Jiminny\\Jobs\\Mailbox\\CreateBatches] processed 2 inboxes and created 0 batches {\"userId\":null,\"batchSize\":30,\"maxBatches\":1000} {\"correlation_id\":\"c296bf83-9f7c-4228-b6f5-99db6040fa01\",\"trace_id\":\"011a70aa-ebb2-4ca8-aef6-4b4cca233da7\"}\n[2026-05-07 12:58:06] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"a9e2de8b-b538-437e-bbe7-82636da81995\",\"trace_id\":\"e517ae80-e149-490c-b719-309e898b3c93\"}\n[2026-05-07 12:58:06] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"a9e2de8b-b538-437e-bbe7-82636da81995\",\"trace_id\":\"e517ae80-e149-490c-b719-309e898b3c93\"}\n[2026-05-07 12:58:06] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"a9e2de8b-b538-437e-bbe7-82636da81995\",\"trace_id\":\"e517ae80-e149-490c-b719-309e898b3c93\"}\n[2026-05-07 12:58:06] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":148,\"team_id\":2} {\"correlation_id\":\"a9e2de8b-b538-437e-bbe7-82636da81995\",\"trace_id\":\"e517ae80-e149-490c-b719-309e898b3c93\"}\n[2026-05-07 12:58:06] local.ERROR: Client error: `POST https://api.hubapi.com/crm/v3/objects/contact/search` resulted in a `429 Too Many Requests` response:\n{\"status\":\"error\",\"message\":\"You have reached your secondly limit.\",\"errorType\":\"RATE_LIMIT\",\"correlationId\":\"019e0284-5 (truncated...)\n {\"exception\":\"[object] (SevenShores\\\\Hubspot\\\\Exceptions\\\\BadRequest(code: 429): Client error: `POST https://api.hubapi.com/crm/v3/objects/contact/search` resulted in a `429 Too Many Requests` response:\n{\\\"status\\\":\\\"error\\\",\\\"message\\\":\\\"You have reached your secondly limit.\\\",\\\"errorType\\\":\\\"RATE_LIMIT\\\",\\\"correlationId\\\":\\\"019e0284-5 (truncated...)\n at /home/jiminny/vendor/hubspot/hubspot-php/src/Exceptions/HubspotException.php:24)\n[stacktrace]\n#0 /home/jiminny/vendor/hubspot/hubspot-php/src/Http/Client.php(125): SevenShores\\\\Hubspot\\\\Exceptions\\\\HubspotException::create(Object(GuzzleHttp\\\\Exception\\\\ClientException))\n#1 /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php(163): SevenShores\\\\Hubspot\\\\Http\\\\Client->request('POST', 'https://api.hub...', Array)\n#2 /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php(51): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->executeSearchRequest(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), 'https://api.hub...', Array, Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\PaginationState))\n#3 /home/jiminny/app/Services/Crm/Hubspot/Client.php(194): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->getPaginatedDataGenerator(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), Array, 'contact', 0, 0, NULL)\n#4 /home/jiminny/app/Services/Crm/Hubspot/Client.php(175): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client->getPaginatedDataGenerator(Array, 'contact', 0, 0, NULL)\n#5 /home/jiminny/app/Services/Crm/Hubspot/Service.php(1203): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client->getPaginatedData(Array, 'contact')\n#6 /home/jiminny/app/Console/Commands/JiminnyDebugCommand.php(353): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service->matchByName('Robot')\n#7 /home/jiminny/app/Console/Commands/JiminnyDebugCommand.php(44): Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand->rateLimit()\n#8 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand->handle(Object(Jiminny\\\\Jobs\\\\JobDispatcher), Object(Jiminny\\\\Services\\\\Kiosk\\\\AutomatedReports\\\\AutomatedReportsService), Object(Jiminny\\\\Repositories\\\\AutomatedReportsRepository), Object(Jiminny\\\\Services\\\\UserPilot\\\\UserPilotClient))\n#9 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#10 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#11 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#12 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#13 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(211): Illuminate\\\\Container\\\\Container->call(Array)\n#14 /home/jiminny/vendor/symfony/console/Command/Command.php(341): Illuminate\\\\Console\\\\Command->execute(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#15 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(180): Symfony\\\\Component\\\\Console\\\\Command\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#16 /home/jiminny/vendor/symfony/console/Application.php(1117): Illuminate\\\\Console\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#17 /home/jiminny/vendor/symfony/console/Application.php(356): Symfony\\\\Component\\\\Console\\\\Application->doRunCommand(Object(Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand), Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#18 /home/jiminny/vendor/symfony/console/Application.php(195): Symfony\\\\Component\\\\Console\\\\Application->doRun(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#19 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(198): Symfony\\\\Component\\\\Console\\\\Application->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#20 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1235): Illuminate\\\\Foundation\\\\Console\\\\Kernel->handle(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#21 /home/jiminny/artisan(13): Illuminate\\\\Foundation\\\\Application->handleCommand(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput))\n#22 {main}\n\n[previous exception] [object] (GuzzleHttp\\\\Exception\\\\ClientException(code: 429): Client error: `POST https://api.hubapi.com/crm/v3/objects/contact/search` resulted in a `429 Too Many Requests` response:\n{\\\"status\\\":\\\"error\\\",\\\"message\\\":\\\"You have reached your secondly limit.\\\",\\\"errorType\\\":\\\"RATE_LIMIT\\\",\\\"correlationId\\\":\\\"019e0284-5 (truncated...)\n at /home/jiminny/vendor/guzzlehttp/guzzle/src/Exception/RequestException.php:111)\n[stacktrace]\n#0 /home/jiminny/vendor/guzzlehttp/guzzle/src/Middleware.php(72): GuzzleHttp\\\\Exception\\\\RequestException::create(Object(GuzzleHttp\\\\Psr7\\\\Request), Object(GuzzleHttp\\\\Psr7\\\\Response), NULL, Array, NULL)\n#1 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(209): GuzzleHttp\\\\Middleware::GuzzleHttp\\\\{closure}(Object(GuzzleHttp\\\\Psr7\\\\Response))\n#2 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(158): GuzzleHttp\\\\Promise\\\\Promise::callHandler(1, Object(GuzzleHttp\\\\Psr7\\\\Response), NULL)\n#3 /home/jiminny/vendor/guzzlehttp/promises/src/TaskQueue.php(52): GuzzleHttp\\\\Promise\\\\Promise::GuzzleHttp\\\\Promise\\\\{closure}()\n#4 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(251): GuzzleHttp\\\\Promise\\\\TaskQueue->run(true)\n#5 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(227): GuzzleHttp\\\\Promise\\\\Promise->invokeWaitFn()\n#6 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(272): GuzzleHttp\\\\Promise\\\\Promise->waitIfPending()\n#7 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(229): GuzzleHttp\\\\Promise\\\\Promise->invokeWaitList()\n#8 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(69): GuzzleHttp\\\\Promise\\\\Promise->waitIfPending()\n#9 /home/jiminny/vendor/guzzlehttp/guzzle/src/Client.php(189): GuzzleHttp\\\\Promise\\\\Promise->wait()\n#10 /home/jiminny/vendor/hubspot/hubspot-php/src/Http/Client.php(113): GuzzleHttp\\\\Client->request('POST', 'https://api.hub...', Array)\n#11 /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php(163): SevenShores\\\\Hubspot\\\\Http\\\\Client->request('POST', 'https://api.hub...', Array)\n#12 /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php(51): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->executeSearchRequest(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), 'https://api.hub...', Array, Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\PaginationState))\n#13 /home/jiminny/app/Services/Crm/Hubspot/Client.php(194): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->getPaginatedDataGenerator(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), Array, 'contact', 0, 0, NULL)\n#14 /home/jiminny/app/Services/Crm/Hubspot/Client.php(175): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client->getPaginatedDataGenerator(Array, 'contact', 0, 0, NULL)\n#15 /home/jiminny/app/Services/Crm/Hubspot/Service.php(1203): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client->getPaginatedData(Array, 'contact')\n#16 /home/jiminny/app/Console/Commands/JiminnyDebugCommand.php(353): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service->matchByName('Robot')\n#17 /home/jiminny/app/Console/Commands/JiminnyDebugCommand.php(44): Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand->rateLimit()\n#18 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand->handle(Object(Jiminny\\\\Jobs\\\\JobDispatcher), Object(Jiminny\\\\Services\\\\Kiosk\\\\AutomatedReports\\\\AutomatedReportsService), Object(Jiminny\\\\Repositories\\\\AutomatedReportsRepository), Object(Jiminny\\\\Services\\\\UserPilot\\\\UserPilotClient))\n#19 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#20 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#21 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#22 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#23 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(211): Illuminate\\\\Container\\\\Container->call(Array)\n#24 /home/jiminny/vendor/symfony/console/Command/Command.php(341): Illuminate\\\\Console\\\\Command->execute(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#25 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(180): Symfony\\\\Component\\\\Console\\\\Command\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#26 /home/jiminny/vendor/symfony/console/Application.php(1117): Illuminate\\\\Console\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#27 /home/jiminny/vendor/symfony/console/Application.php(356): Symfony\\\\Component\\\\Console\\\\Application->doRunCommand(Object(Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand), Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#28 /home/jiminny/vendor/symfony/console/Application.php(195): Symfony\\\\Component\\\\Console\\\\Application->doRun(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#29 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(198): Symfony\\\\Component\\\\Console\\\\Application->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#30 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1235): Illuminate\\\\Foundation\\\\Console\\\\Kernel->handle(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#31 /home/jiminny/artisan(13): Illuminate\\\\Foundation\\\\Application->handleCommand(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput))\n#32 {main}\n\"} {\"correlation_id\":\"a9e2de8b-b538-437e-bbe7-82636da81995\",\"trace_id\":\"e517ae80-e149-490c-b719-309e898b3c93\"}\n[2026-05-07 12:58:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"fb59e309-d2cc-4fe0-9db2-544112c25477\",\"trace_id\":\"28ccdd4f-bf3a-4545-bc8a-d94188f8204f\"}\n[2026-05-07 12:58:10] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"fb59e309-d2cc-4fe0-9db2-544112c25477\",\"trace_id\":\"28ccdd4f-bf3a-4545-bc8a-d94188f8204f\"}\n[2026-05-07 12:58:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"fb59e309-d2cc-4fe0-9db2-544112c25477\",\"trace_id\":\"28ccdd4f-bf3a-4545-bc8a-d94188f8204f\"}\n[2026-05-07 12:58:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"bff14f9f-db1d-4b6c-bd92-ca810b31790a\",\"trace_id\":\"ed08145b-94b8-4585-8e81-0ad478d038dc\"}\n[2026-05-07 12:58:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"bff14f9f-db1d-4b6c-bd92-ca810b31790a\",\"trace_id\":\"ed08145b-94b8-4585-8e81-0ad478d038dc\"}\n[2026-05-07 12:58:16] local.NOTICE: Monitoring start {\"correlation_id\":\"54ed6493-c74e-4491-b2ff-9404528f1525\",\"trace_id\":\"9a1f78c0-6e74-482c-a091-8367df3d0f70\"}\n[2026-05-07 12:58:16] local.NOTICE: Monitoring end {\"correlation_id\":\"54ed6493-c74e-4491-b2ff-9404528f1525\",\"trace_id\":\"9a1f78c0-6e74-482c-a091-8367df3d0f70\"}\n[2026-05-07 12:58:24] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"7f141a32-060d-4123-bf20-8a8d7abc1482\",\"trace_id\":\"f7fdcb6b-932a-4f6b-ad95-f111628d6cf7\"}\n[2026-05-07 12:58:24] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"7f141a32-060d-4123-bf20-8a8d7abc1482\",\"trace_id\":\"f7fdcb6b-932a-4f6b-ad95-f111628d6cf7\"}\n[2026-05-07 12:58:36] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"f586fc15-711b-4199-8fdf-dcd2df95af0c\",\"trace_id\":\"828fb459-3b7f-4196-a690-12fc9ce99b1d\"}\n[2026-05-07 12:58:36] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"f586fc15-711b-4199-8fdf-dcd2df95af0c\",\"trace_id\":\"828fb459-3b7f-4196-a690-12fc9ce99b1d\"}\n[2026-05-07 12:58:37] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"f586fc15-711b-4199-8fdf-dcd2df95af0c\",\"trace_id\":\"828fb459-3b7f-4196-a690-12fc9ce99b1d\"}\n[2026-05-07 12:58:37] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"f586fc15-711b-4199-8fdf-dcd2df95af0c\",\"trace_id\":\"828fb459-3b7f-4196-a690-12fc9ce99b1d\"}\n[2026-05-07 12:58:40] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"01d4e25d-56d5-4c89-bc29-d873e21cc16f\",\"trace_id\":\"ee1fe1ac-362b-47c1-9db2-7915a30cf0f2\"}\n[2026-05-07 12:58:40] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:56:00, 2026-05-07 12:58:00] {\"correlation_id\":\"01d4e25d-56d5-4c89-bc29-d873e21cc16f\",\"trace_id\":\"ee1fe1ac-362b-47c1-9db2-7915a30cf0f2\"}\n[2026-05-07 12:58:40] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:56:00, 2026-05-07 12:58:00] {\"correlation_id\":\"01d4e25d-56d5-4c89-bc29-d873e21cc16f\",\"trace_id\":\"ee1fe1ac-362b-47c1-9db2-7915a30cf0f2\"}\n[2026-05-07 12:58:40] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"01d4e25d-56d5-4c89-bc29-d873e21cc16f\",\"trace_id\":\"ee1fe1ac-362b-47c1-9db2-7915a30cf0f2\"}\n[2026-05-07 12:58:48] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"924e149e-3462-4043-87da-00838220b970\",\"trace_id\":\"7d0922db-8131-4a52-a0c5-2a7a78df42e8\"}\n[2026-05-07 12:58:48] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"calendar:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:48] local.NOTICE: Calendar sync start {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:48] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"924e149e-3462-4043-87da-00838220b970\",\"trace_id\":\"7d0922db-8131-4a52-a0c5-2a7a78df42e8\"}\n[2026-05-07 12:58:49] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1393,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:49] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1393,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:49] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:49] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1393,\"provider\":\"google\",\"refreshToken\":\"5aa7e2d96b53201cd16fca5d2e4ef3ad03320971fc064781d18aee3ae7b99fbf\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1393,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Account has been deleted\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1393,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1387,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1387,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1387,\"provider\":\"google\",\"refreshToken\":\"8157ac6de94842937194009e9c50e459253600f799dacf6a40755ffdbeb5bba6\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1387,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Account has been deleted\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1387,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1348,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1348,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1348,\"provider\":\"google\",\"refreshToken\":\"9e7d13d3032d0cb1b79d8e95aef01383e8e91eb52ff8ee960c8a0b6b95cd8c73\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1348,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Bad Request\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1348,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1361,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1361,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1361,\"provider\":\"google\",\"refreshToken\":\"6c843da199c2b9907445329304fcc4ec5057a4ee748d8299641764395c08e1fd\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1361,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Account has been deleted\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1361,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1310,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1310,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1310,\"provider\":\"google\",\"refreshToken\":\"e34818922c2830a660813a63f6169a4a9a992ae2cccd7dc8dd7796cfdb470ef1\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1310,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Bad Request\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1310,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1333,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1333,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1333,\"provider\":\"google\",\"refreshToken\":\"6c902986546d8e8da1dc539b046cdc1d458f519acc972e5b5f1d6a1a295165e0\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1333,\"provider\":\"google\",\"responseBody\":{\"error\":\"unauthorized_client\",\"error_description\":\"Unauthorized\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1333,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1368,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1368,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1368,\"provider\":\"google\",\"refreshToken\":\"d2f128898ff8543bd16b69cfae37896ab85119b0f5ed2b431d739593bb600333\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1368,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Bad Request\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1368,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1365,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1365,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1365,\"provider\":\"google\",\"refreshToken\":\"7676e4a9afcd082b413248ab5ec6e487021fec6a9bdf315860a59cefad9caad8\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1365,\"provider\":\"google\",\"responseBody\":{\"error\":\"unauthorized_client\",\"error_description\":\"Unauthorized\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1365,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1364,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1364,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1364,\"provider\":\"google\",\"refreshToken\":\"dd5882ebce76e645292ce33ae74238abbb77c0a4ecc6a2bfe723cad82e72ba8e\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1364,\"provider\":\"google\",\"responseBody\":{\"error\":\"unauthorized_client\",\"error_description\":\"Unauthorized\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1364,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1370,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1370,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1370,\"provider\":\"office\",\"refreshToken\":\"b7ee8035306d0043cea6e00e7c4fe14f745e44074a1194db62a31cdf8b70af3e\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1370,\"provider\":\"office\",\"responseBody\":\"{\\\"error\\\":\\\"invalid_client\\\",\\\"error_description\\\":\\\"AADSTS7000215: Invalid client secret provided. Ensure the secret being sent in the request is the client secret value, not the client secret ID, for a secret added to app 'bbcbb2ef-6200-4fae-82bd-d81f5dd738da'. Trace ID: ef9bb388-453e-4744-a2e1-95e49ced1700 Correlation ID: 3b889c73-f943-4048-ba3b-63ac50581245 Timestamp: 2026-05-07 12:58:53Z\\\",\\\"error_codes\\\":[7000215],\\\"timestamp\\\":\\\"2026-05-07 12:58:53Z\\\",\\\"trace_id\\\":\\\"ef9bb388-453e-4744-a2e1-95e49ced1700\\\",\\\"correlation_id\\\":\\\"3b889c73-f943-4048-ba3b-63ac50581245\\\",\\\"error_uri\\\":\\\"https://login.microsoftonline.com/error?code=7000215\\\"}\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1370,\"provider\":\"office\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1202,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1202,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1202,\"provider\":\"office\",\"refreshToken\":\"b458799ccc29b21a6e2eb5260fdb63e49ccba21bf942a3973fb63799bd7f0afe\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1202,\"provider\":\"office\",\"responseBody\":\"{\\\"error\\\":\\\"invalid_client\\\",\\\"error_description\\\":\\\"AADSTS7000215: Invalid client secret provided. Ensure the secret being sent in the request is the client secret value, not the client secret ID, for a secret added to app 'bbcbb2ef-6200-4fae-82bd-d81f5dd738da'. Trace ID: 0b8181c0-c858-4d17-af69-c23b7f5a0a00 Correlation ID: 2ce9e931-f423-4048-b1d7-ae1910cd4834 Timestamp: 2026-05-07 12:58:54Z\\\",\\\"error_codes\\\":[7000215],\\\"timestamp\\\":\\\"2026-05-07 12:58:54Z\\\",\\\"trace_id\\\":\\\"0b8181c0-c858-4d17-af69-c23b7f5a0a00\\\",\\\"correlation_id\\\":\\\"2ce9e931-f423-4048-b1d7-ae1910cd4834\\\",\\\"error_uri\\\":\\\"https://login.microsoftonline.com/error?code=7000215\\\"}\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1202,\"provider\":\"office\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1502,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1502,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: Calendar sync job dispatched {\"calendar_id\":501} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1300,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1300,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1300,\"provider\":\"google\",\"refreshToken\":\"4b811db0725fd9602a95943519a7da935e2a5065da7d9ebfcb170752e3e1ddb8\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1300,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Account has been deleted\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1300,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1409,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1409,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1409,\"provider\":\"google\",\"refreshToken\":\"e2a3f2d06894894eed1ee87d9db1ace77d4d42ee6e1288a8940ad2c10333b0c4\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1409,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Bad Request\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1409,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1352,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1352,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1352,\"provider\":\"google\",\"refreshToken\":\"dd4b16b00fdc1216da6b717c02338c073636e29162826b2de6db3f064fc029eb\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1352,\"provider\":\"google\",\"responseBody\":{\"error\":\"unauthorized_client\",\"error_description\":\"Unauthorized\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1352,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1296,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1296,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1296,\"provider\":\"office\",\"refreshToken\":\"011ae723c9d800c674e0b4be76f49fc046dac7d501b66c59ef0d9549cfa56ae5\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1296,\"provider\":\"office\",\"responseBody\":\"{\\\"error\\\":\\\"invalid_client\\\",\\\"error_description\\\":\\\"AADSTS7000215: Invalid client secret provided. Ensure the secret being sent in the request is the client secret value, not the client secret ID, for a secret added to app 'bbcbb2ef-6200-4fae-82bd-d81f5dd738da'. Trace ID: 4f38b1ca-479e-445c-8db5-29366d0a0c00 Correlation ID: d0a4d623-1a23-4fcc-aebf-ccafeed44a92 Timestamp: 2026-05-07 12:58:56Z\\\",\\\"error_codes\\\":[7000215],\\\"timestamp\\\":\\\"2026-05-07 12:58:56Z\\\",\\\"trace_id\\\":\\\"4f38b1ca-479e-445c-8db5-29366d0a0c00\\\",\\\"correlation_id\\\":\\\"d0a4d623-1a23-4fcc-aebf-ccafeed44a92\\\",\\\"error_uri\\\":\\\"https://login.microsoftonline.com/error?code=7000215\\\"}\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1296,\"provider\":\"office\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":391,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":391,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":391,\"provider\":\"office\",\"refreshToken\":\"00045eebae0f39b34887c6d53f92ae78064f7145e1f4b67754aebd03cfb2d881\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1502,\"provider\":\"google\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1502,\"provider\":\"google\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [Calendar] Processing sync {\"calendarId\":\"a33076c1-8d97-431a-99f0-85c9524e118b\",\"from\":null,\"to\":null,\"delta\":\"CIiFh8TP44kDEIiFh8TP44kDGAUgkZvkzgIokZvkzgI=\",\"last_sync\":\"2024-12-09 07:12:53\",\"dateMode\":\"daily\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"integration-app\",\"crm_owner\":1695,\"team_id\":3143} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1502,\"provider\":\"google\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1502,\"provider\":\"google\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":391,\"provider\":\"office\",\"responseBody\":\"{\\\"error\\\":\\\"invalid_client\\\",\\\"error_description\\\":\\\"AADSTS7000215: Invalid client secret provided. Ensure the secret being sent in the request is the client secret value, not the client secret ID, for a secret added to app 'bbcbb2ef-6200-4fae-82bd-d81f5dd738da'. Trace ID: 1791a948-a974-424b-9246-7fedfa913b00 Correlation ID: b0e7bf62-d69e-49dd-b7c9-9550f0bd2aec Timestamp: 2026-05-07 12:58:56Z\\\",\\\"error_codes\\\":[7000215],\\\"timestamp\\\":\\\"2026-05-07 12:58:56Z\\\",\\\"trace_id\\\":\\\"1791a948-a974-424b-9246-7fedfa913b00\\\",\\\"correlation_id\\\":\\\"b0e7bf62-d69e-49dd-b7c9-9550f0bd2aec\\\",\\\"error_uri\\\":\\\"https://login.microsoftonline.com/error?code=7000215\\\"}\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":391,\"provider\":\"office\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1271,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1271,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1271,\"provider\":\"office\",\"refreshToken\":\"118cde2c06993147b07ccaec4cbcd5026a819dea6c71081166a492933e392afb\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [Google Calendar] Failed to watch channel for calendar {\"calendarId\":\"a33076c1-8d97-431a-99f0-85c9524e118b\",\"code\":400,\"reason\":\"{\n \\\"error\\\": {\n \\\"errors\\\": [\n {\n \\\"domain\\\": \\\"global\\\",\n \\\"reason\\\": \\\"push.webhookUrlNotHttps\\\",\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n ],\n \\\"code\\\": 400,\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n}\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.WARNING: [Calendar] Sync failed {\"calendarId\":\"a33076c1-8d97-431a-99f0-85c9524e118b\",\"code\":400,\"reason\":\"{\n \\\"error\\\": {\n \\\"errors\\\": [\n {\n \\\"domain\\\": \\\"global\\\",\n \\\"reason\\\": \\\"push.webhookUrlNotHttps\\\",\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n ],\n \\\"code\\\": 400,\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n}\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1271,\"provider\":\"office\",\"responseBody\":\"{\\\"error\\\":\\\"invalid_client\\\",\\\"error_description\\\":\\\"AADSTS7000215: Invalid client secret provided. Ensure the secret being sent in the request is the client secret value, not the client secret ID, for a secret added to app 'bbcbb2ef-6200-4fae-82bd-d81f5dd738da'. Trace ID: 2be27598-8820-475c-b6ca-a30513720c00 Correlation ID: d3ed2a98-4aa9-4a63-819b-d36fd20b8d62 Timestamp: 2026-05-07 12:58:57Z\\\",\\\"error_codes\\\":[7000215],\\\"timestamp\\\":\\\"2026-05-07 12:58:57Z\\\",\\\"trace_id\\\":\\\"2be27598-8820-475c-b6ca-a30513720c00\\\",\\\"correlation_id\\\":\\\"d3ed2a98-4aa9-4a63-819b-d36fd20b8d62\\\",\\\"error_uri\\\":\\\"https://login.microsoftonline.com/error?code=7000215\\\"}\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1271,\"provider\":\"office\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1351,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1351,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1351,\"provider\":\"google\",\"refreshToken\":\"4271d15b9e60a606439caddc68337f783e472c85b03dacff14d1b6dfded9051c\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1351,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Bad Request\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1351,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1366,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1366,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1366,\"provider\":\"google\",\"refreshToken\":\"ae21385059b2eebfd43f68aecd56eccd702a1aabb6598f1f7ab594ed8af491b4\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1366,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Bad Request\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1366,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1115,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1115,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: Calendar sync job dispatched {\"calendar_id\":378} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:58] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1421,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:58] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1421,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:58] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:58] local.INFO: Calendar sync job dispatched {\"calendar_id\":504} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:58] local.NOTICE: Calendar sync end {\"retrieved_calendars\":31,\"processed_calendars\":3} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:58] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"calendar:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1115,\"provider\":\"google\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1115,\"provider\":\"google\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [Calendar] Processing sync {\"calendarId\":\"2676cb6d-f86c-427e-bf78-591e388e3c1e\",\"from\":null,\"to\":null,\"delta\":\"CJ_x49O3jpIDEJ_x49O3jpIDGAUgw67KlwMow67KlwM=\",\"last_sync\":\"2026-01-19 07:48:40\",\"dateMode\":\"daily\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.WARNING: [Pipedrive] Account not connected for user {\"userId\":\"e6538737-e7b4-455f-a37a-3e79b665a220\",\"account\":{\"Jiminny\\\\Models\\\\SocialAccount\":{\"id\":1116,\"sociable_id\":241,\"provider_user_id\":\"19555731\",\"expires\":1775683749,\"refresh_token_expires\":null,\"provider\":\"pipedrive\",\"state\":\"full-refresh\",\"auth_scope\":\"base,deals:full,activities:full,contacts:full,search:read\",\"retry_after\":null,\"created_at\":\"2023-09-08 09:44:29\",\"updated_at\":\"2026-04-08 22:58:34\"}}} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {\"crm_provider\":\"pipedrive\",\"crm_owner\":241,\"team_id\":19} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {\"crm_provider\":\"pipedrive\",\"team_id\":19} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {\"crm_provider\":\"pipedrive\",\"team_id\":19} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.WARNING: [Calendar] CRM disconnected for user so events will not be matched {\"provider\":\"pipedrive\",\"user_id\":241,\"message\":\"Your Pipedrive account has become disconnected. Please login to Jiminny to reconnect.\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1115,\"provider\":\"google\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1115,\"provider\":\"google\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [Google Calendar] Failed to watch channel for calendar {\"calendarId\":\"2676cb6d-f86c-427e-bf78-591e388e3c1e\",\"code\":400,\"reason\":\"{\n \\\"error\\\": {\n \\\"errors\\\": [\n {\n \\\"domain\\\": \\\"global\\\",\n \\\"reason\\\": \\\"push.webhookUrlNotHttps\\\",\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n ],\n \\\"code\\\": 400,\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n}\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.WARNING: [Calendar] Sync failed {\"calendarId\":\"2676cb6d-f86c-427e-bf78-591e388e3c1e\",\"code\":400,\"reason\":\"{\n \\\"error\\\": {\n \\\"errors\\\": [\n {\n \\\"domain\\\": \\\"global\\\",\n \\\"reason\\\": \\\"push.webhookUrlNotHttps\\\",\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n ],\n \\\"code\\\": 400,\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n}\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1421,\"provider\":\"office\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1421,\"provider\":\"office\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [Calendar] Processing sync {\"calendarId\":\"9e8b1a2c-1a8f-42bd-b161-810fc0baf540\",\"from\":null,\"to\":null,\"delta\":\"R0usmcdvmMuZCBYV0hguCHhwR3crxfEuMI8zGlf-bMYpCFtdxXvSJWTlnqQvu_jjoOrOYL2VG9rZwFHCERHxGfGEK3CmQX6x8MJG3ZbBXGuVIS6C7u-doY5maMRdsfnrHIAEMJd4Bs_WMfMH4tDJ8j9aul7DHDEJaP7w0PoPPpcoxu4nEk4vk-MolJBEgkSrayEewuBs5JVItUX9lUY2tA.yO2roNQ4Vdm6hBgoutuphGchuzbvsk7aqt5wHfcyeFQ\",\"last_sync\":\"2026-05-06 15:58:35\",\"dateMode\":\"daily\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":89,\"team_id\":2} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [MS Office Calendar] Skipping delta sync for daily mode {\"calendarId\":\"9e8b1a2c-1a8f-42bd-b161-810fc0baf540\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:59:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"cb5f9d32-02db-4883-a5c9-a5b86c1a2fbb\",\"trace_id\":\"4fb8a9a0-53b1-414a-813d-a259b89f3203\"}\n[2026-05-07 12:59:06] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"cb5f9d32-02db-4883-a5c9-a5b86c1a2fbb\",\"trace_id\":\"4fb8a9a0-53b1-414a-813d-a259b89f3203\"}\n[2026-05-07 12:59:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"cb5f9d32-02db-4883-a5c9-a5b86c1a2fbb\",\"trace_id\":\"4fb8a9a0-53b1-414a-813d-a259b89f3203\"}\n[2026-05-07 12:59:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"64313a2b-3a92-4419-ae59-caabfc9e9731\",\"trace_id\":\"16443bac-2196-4257-88bc-59445729f276\"}\n[2026-05-07 12:59:09] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"64313a2b-3a92-4419-ae59-caabfc9e9731\",\"trace_id\":\"16443bac-2196-4257-88bc-59445729f276\"}\n[2026-05-07 12:59:11] local.NOTICE: Monitoring start {\"correlation_id\":\"7678c2ca-049f-44e4-acce-2e711f8d7d40\",\"trace_id\":\"54ef3d3c-f1ea-4a01-aed2-db19a6739a06\"}\n[2026-05-07 12:59:11] local.NOTICE: Monitoring end {\"correlation_id\":\"7678c2ca-049f-44e4-acce-2e711f8d7d40\",\"trace_id\":\"54ef3d3c-f1ea-4a01-aed2-db19a6739a06\"}\n[2026-05-07 12:59:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"44d7c1a1-dfc9-4401-9f63-ad8b5bff9942\",\"trace_id\":\"9f6f5f38-60f5-4869-bfd2-f366d52eaa00\"}\n[2026-05-07 12:59:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"44d7c1a1-dfc9-4401-9f63-ad8b5bff9942\",\"trace_id\":\"9f6f5f38-60f5-4869-bfd2-f366d52eaa00\"}\n[2026-05-07 12:59:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"f90f3b8c-5161-4963-a963-a40284567af1\",\"trace_id\":\"94731c50-8ce2-44ec-ace6-2d46fb00fdb1\"}\n[2026-05-07 12:59:15] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"f90f3b8c-5161-4963-a963-a40284567af1\",\"trace_id\":\"94731c50-8ce2-44ec-ace6-2d46fb00fdb1\"}\n[2026-05-07 12:59:15] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"f90f3b8c-5161-4963-a963-a40284567af1\",\"trace_id\":\"94731c50-8ce2-44ec-ace6-2d46fb00fdb1\"}\n[2026-05-07 12:59:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"f90f3b8c-5161-4963-a963-a40284567af1\",\"trace_id\":\"94731c50-8ce2-44ec-ace6-2d46fb00fdb1\"}\n[2026-05-07 13:00:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"6f98d5e3-0aa8-496e-853a-a77b7a8b74ec\",\"trace_id\":\"b63e8546-4347-49f0-ad1a-92f4e4504843\"}\n[2026-05-07 13:00:10] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"6f98d5e3-0aa8-496e-853a-a77b7a8b74ec\",\"trace_id\":\"b63e8546-4347-49f0-ad1a-92f4e4504843\"}\n[2026-05-07 13:00:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"6f98d5e3-0aa8-496e-853a-a77b7a8b74ec\",\"trace_id\":\"b63e8546-4347-49f0-ad1a-92f4e4504843\"}\n[2026-05-07 13:00:13] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"50260ccd-f119-47b0-baee-514de27801f2\",\"trace_id\":\"40e651df-62f6-4c3a-83ab-842112ec3ece\"}\n[2026-05-07 13:00:13] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"50260ccd-f119-47b0-baee-514de27801f2\",\"trace_id\":\"40e651df-62f6-4c3a-83ab-842112ec3ece\"}\n[2026-05-07 13:00:17] local.NOTICE: Monitoring start {\"correlation_id\":\"f6104856-aca3-4e7b-964e-bba66d730eb3\",\"trace_id\":\"98f34b7b-f715-49cb-8d3a-4e74c1118445\"}\n[2026-05-07 13:00:17] local.NOTICE: Monitoring end {\"correlation_id\":\"f6104856-aca3-4e7b-964e-bba66d730eb3\",\"trace_id\":\"98f34b7b-f715-49cb-8d3a-4e74c1118445\"}\n[2026-05-07 13:00:19] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"b4a9e9a2-968c-429b-8fa8-67dd59bb297f\",\"trace_id\":\"ed6a83d0-8edb-4392-8717-26d91ffde80b\"}\n[2026-05-07 13:00:19] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"b4a9e9a2-968c-429b-8fa8-67dd59bb297f\",\"trace_id\":\"ed6a83d0-8edb-4392-8717-26d91ffde80b\"}\n[2026-05-07 13:00:21] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"b11474b2-8b19-4a2f-89c3-621fde9d3b1f\",\"trace_id\":\"8018d825-0809-411b-9b2a-078e2da6bacb\"}\n[2026-05-07 13:00:21] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"b11474b2-8b19-4a2f-89c3-621fde9d3b1f\",\"trace_id\":\"8018d825-0809-411b-9b2a-078e2da6bacb\"}\n[2026-05-07 13:00:21] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"b11474b2-8b19-4a2f-89c3-621fde9d3b1f\",\"trace_id\":\"8018d825-0809-411b-9b2a-078e2da6bacb\"}\n[2026-05-07 13:00:21] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"b11474b2-8b19-4a2f-89c3-621fde9d3b1f\",\"trace_id\":\"8018d825-0809-411b-9b2a-078e2da6bacb\"}\n[2026-05-07 13:00:23] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"d3b79f58-f9c8-4063-ac7e-7a0445cd1111\",\"trace_id\":\"802cf505-95fb-4f92-8c1b-79aa3ac53084\"}\n[2026-05-07 13:00:23] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:58:00, 2026-05-07 13:00:00] {\"correlation_id\":\"d3b79f58-f9c8-4063-ac7e-7a0445cd1111\",\"trace_id\":\"802cf505-95fb-4f92-8c1b-79aa3ac53084\"}\n[2026-05-07 13:00:23] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:58:00, 2026-05-07 13:00:00] {\"correlation_id\":\"d3b79f58-f9c8-4063-ac7e-7a0445cd1111\",\"trace_id\":\"802cf505-95fb-4f92-8c1b-79aa3ac53084\"}\n[2026-05-07 13:00:23] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"d3b79f58-f9c8-4063-ac7e-7a0445cd1111\",\"trace_id\":\"802cf505-95fb-4f92-8c1b-79aa3ac53084\"}\n[2026-05-07 13:00:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:purge-stale\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"32bad9c1-861c-4a46-bece-585cc1170bfd\",\"trace_id\":\"0c20e20f-6a91-4346-9455-5cd1451c32a1\"}\n[2026-05-07 13:00:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:purge-stale\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"32bad9c1-861c-4a46-bece-585cc1170bfd\",\"trace_id\":\"0c20e20f-6a91-4346-9455-5cd1451c32a1\"}\n[2026-05-07 13:00:29] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:text-relay:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"c9d4f687-1643-431e-9377-2573a2e593fd\",\"trace_id\":\"02fab433-9c9a-49f7-b836-2b8a42551912\"}\n[2026-05-07 13:00:30] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:text-relay:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"c9d4f687-1643-431e-9377-2573a2e593fd\",\"trace_id\":\"02fab433-9c9a-49f7-b836-2b8a42551912\"}\n[2026-05-07 13:00:33] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:pre-meeting-notification\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"57870bb4-45e8-47d8-b192-21d3297d2208\",\"trace_id\":\"ba8e9eac-2dc9-4ed8-bbf1-4a35aedb9efb\"}\n[2026-05-07 13:00:33] local.INFO: Running pre-meeting notification command {\"correlation_id\":\"57870bb4-45e8-47d8-b192-21d3297d2208\",\"trace_id\":\"ba8e9eac-2dc9-4ed8-bbf1-4a35aedb9efb\"}\n[2026-05-07 13:00:33] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:pre-meeting-notification\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"57870bb4-45e8-47d8-b192-21d3297d2208\",\"trace_id\":\"ba8e9eac-2dc9-4ed8-bbf1-4a35aedb9efb\"}\n[2026-05-07 13:00:35] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:start\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"6aeb181b-8314-4d45-aff7-e378793b04d9\",\"trace_id\":\"8ffc66f1-af64-4a58-8ce8-481b3a299dbb\"}\n[2026-05-07 13:00:35] local.INFO: Running conference:monitor:start command for activities in (2026-05-07 12:50:00, 2026-05-07 12:55:00] {\"correlation_id\":\"6aeb181b-8314-4d45-aff7-e378793b04d9\",\"trace_id\":\"8ffc66f1-af64-4a58-8ce8-481b3a299dbb\"}\n[2026-05-07 13:00:35] local.INFO: [conference:monitor:start] No activities found in (2026-05-07 12:50:00, 2026-05-07 12:55:00] {\"correlation_id\":\"6aeb181b-8314-4d45-aff7-e378793b04d9\",\"trace_id\":\"8ffc66f1-af64-4a58-8ce8-481b3a299dbb\"}\n[2026-05-07 13:00:35] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:start\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"6aeb181b-8314-4d45-aff7-e378793b04d9\",\"trace_id\":\"8ffc66f1-af64-4a58-8ce8-481b3a299dbb\"}\n[2026-05-07 13:00:37] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:end\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"888d4f67-ad14-4457-b51d-2cf8b2d315f9\",\"trace_id\":\"eaf4b0b3-0414-4563-b227-ce9c6a2e5b7e\"}\n[2026-05-07 13:00:37] local.INFO: conference:monitor:end:Jiminny\\Console\\Commands\\Activities\\MonitorMeetingEndCommand::logActivitiesEnded {\"from\":\"12:55\",\"to\":\"13:00\"} {\"correlation_id\":\"888d4f67-ad14-4457-b51d-2cf8b2d315f9\",\"trace_id\":\"eaf4b0b3-0414-4563-b227-ce9c6a2e5b7e\"}\n[2026-05-07 13:00:37] local.INFO: conference:monitor:end:Jiminny\\Console\\Commands\\Activities\\MonitorMeetingEndCommand::logActivitiesWithUnfinishedSession {\"from\":\"02:50\",\"to\":\"02:55\"} {\"correlation_id\":\"888d4f67-ad14-4457-b51d-2cf8b2d315f9\",\"trace_id\":\"eaf4b0b3-0414-4563-b227-ce9c6a2e5b7e\"}\n[2026-05-07 13:00:37] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:end\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"888d4f67-ad14-4457-b51d-2cf8b2d315f9\",\"trace_id\":\"eaf4b0b3-0414-4563-b227-ce9c6a2e5b7e\"}\n[2026-05-07 13:00:39] local.NOTICE: Repairing HubSpot tokens start {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:39] local.INFO: Trying to refresh HubSpot token {\"account_id\":59,\"updated_at\":\"2025-10-03 09:32:05\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:39] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:39] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":59,\"provider\":\"hubspot\",\"refreshToken\":\"97b78f6e2cc49965c00c2492b602b02708b1392551e6b3f113fbaa48992af90b\",\"state\":\"full-refresh\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:39] local.ERROR: Failed to refresh HubSpot token {\"account_id\":59,\"updated_at\":\"2025-10-03 09:32:05\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:39] local.INFO: Trying to refresh HubSpot token {\"account_id\":306,\"updated_at\":\"2023-11-27 09:30:03\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:39] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:39] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":306,\"provider\":\"hubspot\",\"refreshToken\":\"6fa6aa8cc641d131231acc3470f5c03cb3b07b2e580fb18f8acb3b1dbb72549b\",\"state\":\"full-refresh\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:40] local.ERROR: Failed to refresh HubSpot token {\"account_id\":306,\"updated_at\":\"2023-11-27 09:30:03\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:40] local.INFO: Trying to refresh HubSpot token {\"account_id\":1372,\"updated_at\":\"2025-10-02 14:47:06\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:40] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:40] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1372,\"provider\":\"hubspot\",\"refreshToken\":\"9aa73948c761da29dce46c177cf9aee1fde483a44169ca38723f9f0597d7a8c4\",\"state\":\"full-refresh\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:40] local.ERROR: Failed to refresh HubSpot token {\"account_id\":1372,\"updated_at\":\"2025-10-02 14:47:06\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:40] local.NOTICE: Repairing HubSpot tokens end {\"total\":3,\"fixed\":0,\"failed\":3} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:45] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"jiminny:transcription:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"b619cc55-b4ef-4913-ab44-6bce51933f7e\",\"trace_id\":\"7cacb418-6e9c-410b-bf3a-15bdf1837908\"}\n[2026-05-07 13:00:45] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:pre-meeting-reminder\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"a765990f-ffe2-44e0-967f-816f5452ce69\",\"trace_id\":\"9aee0f3f-7668-455f-b207-181b58848478\"}\n[2026-05-07 13:00:45] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"jiminny:transcription:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"b619cc55-b4ef-4913-ab44-6bce51933f7e\",\"trace_id\":\"7cacb418-6e9c-410b-bf3a-15bdf1837908\"}\n[2026-05-07 13:00:45] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:45] local.INFO: [HubSpot Journal Command] Starting polling service {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:45] local.INFO: [HubSpot Journal Polling] Service starting {\"memory_limit\":\"256M\",\"max_execution_time\":\"0\",\"initial_memory_mb\":62.0} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:45] local.INFO: [HubSpot Journal Polling] Acquired polling lock {\"expires_at\":\"2026-05-07T13:02:45.724437Z\"} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:45] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:45] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:45] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:pre-meeting-reminder\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"a765990f-ffe2-44e0-967f-816f5452ce69\",\"trace_id\":\"9aee0f3f-7668-455f-b207-181b58848478\"}\n[2026-05-07 13:00:45] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:49] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"crm:reset-governor\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"055b4798-a759-4621-9e0b-652f8ee69ea1\",\"trace_id\":\"10911ef4-48d1-404a-9345-ecf0f5cb9977\"}\n[2026-05-07 13:00:49] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"crm:reset-governor\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"055b4798-a759-4621-9e0b-652f8ee69ea1\",\"trace_id\":\"10911ef4-48d1-404a-9345-ecf0f5cb9977\"}\n[2026-05-07 13:00:51] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:51] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:51] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:53] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:53] local.INFO: Dispatching activity sync job {\"import_id\":812331,\"provider\":\"twilio-flex\",\"team\":\"jiminny\"} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:53] local.INFO: Dispatching activity sync job {\"import_id\":812332,\"provider\":\"xant\",\"team\":\"jiminny\"} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:53] local.INFO: Dispatching activity sync job {\"import_id\":812333,\"provider\":\"apollo\",\"team\":\"jiminny\"} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:53] local.INFO: Dispatching activity sync job {\"import_id\":812334,\"provider\":\"groove\",\"team\":\"jiminny\"} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:53] local.INFO: Dispatching activity sync job {\"import_id\":812335,\"provider\":\"twilio-video\",\"team\":\"jiminny\"} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:53] local.INFO: Dispatching activity sync job {\"import_id\":812336,\"provider\":\"hubspot\",\"team\":\"hubspot\"} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:53] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.WARNING: [Salesforce] Account not connected for user {\"userId\":\"cdf8b554-d951-4758-bc2b-c1b85d1cd0b9\",\"account\":null} {\"correlation_id\":\"fb068e24-e135-4914-9973-94f1a0f5dae2\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {\"crm_provider\":\"salesforce\",\"crm_owner\":3,\"team_id\":1} {\"correlation_id\":\"fb068e24-e135-4914-9973-94f1a0f5dae2\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {\"crm_provider\":\"salesforce\",\"team_id\":1} {\"correlation_id\":\"fb068e24-e135-4914-9973-94f1a0f5dae2\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {\"crm_provider\":\"salesforce\",\"team_id\":1} {\"correlation_id\":\"fb068e24-e135-4914-9973-94f1a0f5dae2\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.ALERT: [SyncActivity] Failed {\"import_id\":812331,\"provider\":\"twilio-flex\",\"provider_id\":317,\"team\":\"jiminny\",\"team_id\":1,\"reason\":\"Social account for Salesforce cannot be found. Please login to Jiminny to connect.\",\"file\":\"/home/jiminny/app/Services/Crm/BaseService.php\",\"line\":646} {\"correlation_id\":\"fb068e24-e135-4914-9973-94f1a0f5dae2\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"fe9470d4-bc5a-4195-919d-e4908e439f7c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"fe9470d4-bc5a-4195-919d-e4908e439f7c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"fe9470d4-bc5a-4195-919d-e4908e439f7c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:56] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:56] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:56] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:56] local.ALERT: [SyncActivity] Failed {\"import_id\":812332,\"provider\":\"xant\",\"provider_id\":161,\"team\":\"jiminny\",\"team_id\":1,\"reason\":\"Activity Provider account not connected.\",\"file\":\"/home/jiminny/app/Services/Activity/ActivityProviderService.php\",\"line\":174} {\"correlation_id\":\"fe9470d4-bc5a-4195-919d-e4908e439f7c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:56] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"e3a8ef92-20c7-4698-a07d-1aa2c21ac82c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:56] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"e3a8ef92-20c7-4698-a07d-1aa2c21ac82c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:56] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"e3a8ef92-20c7-4698-a07d-1aa2c21ac82c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:56] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:fail-stalled\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"441dabbc-0c1f-4d49-871c-08f96adbed01\",\"trace_id\":\"13597461-50ff-4a40-a329-255430126395\"}\n[2026-05-07 13:00:56] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:fail-stalled\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"441dabbc-0c1f-4d49-871c-08f96adbed01\",\"trace_id\":\"13597461-50ff-4a40-a329-255430126395\"}\n[2026-05-07 13:00:57] local.ALERT: [SyncActivity] Failed {\"import_id\":812333,\"provider\":\"apollo\",\"provider_id\":441,\"team\":\"jiminny\",\"team_id\":1,\"reason\":\"Activity Provider account not connected.\",\"file\":\"/home/jiminny/app/Services/Activity/ActivityProviderService.php\",\"line\":174} {\"correlation_id\":\"e3a8ef92-20c7-4698-a07d-1aa2c21ac82c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:57] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"1a0b64ee-3927-48e6-8ae3-fda14f35babb\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:57] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"1a0b64ee-3927-48e6-8ae3-fda14f35babb\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:57] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"1a0b64ee-3927-48e6-8ae3-fda14f35babb\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:57] local.ALERT: [SyncActivity] Failed {\"import_id\":812334,\"provider\":\"groove\",\"provider_id\":228,\"team\":\"jiminny\",\"team_id\":1,\"reason\":\"Activity Provider account not connected.\",\"file\":\"/home/jiminny/app/Services/Activity/ActivityProviderService.php\",\"line\":174} {\"correlation_id\":\"1a0b64ee-3927-48e6-8ae3-fda14f35babb\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:57] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"5e6fecb1-9905-4ab2-a494-e6d8215430c0\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:57] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"5e6fecb1-9905-4ab2-a494-e6d8215430c0\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:57] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"5e6fecb1-9905-4ab2-a494-e6d8215430c0\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.ALERT: [SyncActivity] Failed {\"import_id\":812335,\"provider\":\"twilio-video\",\"provider_id\":243,\"team\":\"jiminny\",\"team_id\":1,\"reason\":\"Activity Provider account not connected.\",\"file\":\"/home/jiminny/app/Services/Activity/ActivityProviderService.php\",\"line\":174} {\"correlation_id\":\"5e6fecb1-9905-4ab2-a494-e6d8215430c0\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":89,\"team_id\":2} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":408,\"provider\":\"hubspot\"} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":408,\"provider\":\"hubspot\"} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [SyncActivity] Start {\"import_id\":812336,\"provider\":\"hubspot\",\"provider_id\":31,\"team\":\"hubspot\",\"team_id\":2} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [HubSpot] Search calls for period {\"from\":\"2026-05-07 12:44:00\",\"to\":\"2026-05-07 13:00:00\"} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [SyncActivity] End {\"import_id\":812336,\"provider\":\"hubspot\",\"provider_id\":31,\"team\":\"hubspot\",\"team_id\":2} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [SyncActivity] Memory usage {\"import_id\":812336,\"provider\":\"hubspot\",\"provider_id\":31,\"team\":\"hubspot\",\"team_id\":2,\"memory_usage\":27230632,\"memory_real_usage\":67108864,\"pid\":37116} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:59] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"jiminny:transcription:retry-stuck\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"1db560c5-5d8c-419a-bfb0-e761473ecf44\",\"trace_id\":\"79eb494e-fd21-4171-b59d-d7d47358f1fb\"}\n[2026-05-07 13:00:59] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"jiminny:transcription:retry-stuck\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"1db560c5-5d8c-419a-bfb0-e761473ecf44\",\"trace_id\":\"79eb494e-fd21-4171-b59d-d7d47358f1fb\"}\n[2026-05-07 13:01:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"73c0e9d6-7ef5-4040-8e35-0a9bb4028abf\",\"trace_id\":\"55b51c26-06b9-4b59-b444-53017b805b30\"}\n[2026-05-07 13:01:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"73c0e9d6-7ef5-4040-8e35-0a9bb4028abf\",\"trace_id\":\"55b51c26-06b9-4b59-b444-53017b805b30\"}\n[2026-05-07 13:01:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"5a7e717c-f314-4601-b1b8-fd550703f463\",\"trace_id\":\"a64281e5-027f-4856-a3e3-4f176c58eb6e\"}\n[2026-05-07 13:01:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"5a7e717c-f314-4601-b1b8-fd550703f463\",\"trace_id\":\"a64281e5-027f-4856-a3e3-4f176c58eb6e\"}\n[2026-05-07 13:01:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"0c425954-2696-4890-97b7-219ccc38cf46\",\"trace_id\":\"d609b364-f3b6-4b85-babb-67caf96efdb1\"}\n[2026-05-07 13:01:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"0c425954-2696-4890-97b7-219ccc38cf46\",\"trace_id\":\"d609b364-f3b6-4b85-babb-67caf96efdb1\"}\n[2026-05-07 13:01:11] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:11] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:11] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"a6bad97b-3db2-4dd6-839f-fcd485f06e65\",\"trace_id\":\"dcdde4a9-962c-46d1-9386-42adb54efbbf\"}\n[2026-05-07 13:01:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"a6bad97b-3db2-4dd6-839f-fcd485f06e65\",\"trace_id\":\"dcdde4a9-962c-46d1-9386-42adb54efbbf\"}\n[2026-05-07 13:01:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"2893478e-8c43-4719-a2e8-7c9c0e0783e9\",\"trace_id\":\"3fc8f1f0-0727-42f1-8ee6-f2b32bd8834b\"}\n[2026-05-07 13:01:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"2893478e-8c43-4719-a2e8-7c9c0e0783e9\",\"trace_id\":\"3fc8f1f0-0727-42f1-8ee6-f2b32bd8834b\"}\n[2026-05-07 13:01:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"64f52ca1-b54e-46da-a760-73dbdf407eaf\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:17] local.INFO: Dispatching activity sync job {\"import_id\":812337,\"provider\":\"hubspot\",\"team\":\"hubspot\"} {\"correlation_id\":\"64f52ca1-b54e-46da-a760-73dbdf407eaf\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"64f52ca1-b54e-46da-a760-73dbdf407eaf\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"crm:bullhorn:ping\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"3c44e0a7-ec5d-4206-a925-69f6e0783c2a\",\"trace_id\":\"60cf7a36-37ca-4ac4-a632-f317578d908f\"}\n[2026-05-07 13:01:19] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"crm:bullhorn:ping\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"3c44e0a7-ec5d-4206-a925-69f6e0783c2a\",\"trace_id\":\"60cf7a36-37ca-4ac4-a632-f317578d908f\"}\n[2026-05-07 13:01:19] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":89,\"team_id\":2} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":408,\"provider\":\"hubspot\"} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":408,\"provider\":\"hubspot\"} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [SyncActivity] Start {\"import_id\":812337,\"provider\":\"hubspot\",\"provider_id\":31,\"team\":\"hubspot\",\"team_id\":2} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [HubSpot] Search calls for period {\"from\":\"2026-05-07 12:00:00\",\"to\":\"2026-05-07 13:00:00\"} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:20] local.INFO: [SyncActivity] End {\"import_id\":812337,\"provider\":\"hubspot\",\"provider_id\":31,\"team\":\"hubspot\",\"team_id\":2} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:20] local.INFO: [SyncActivity] Memory usage {\"import_id\":812337,\"provider\":\"hubspot\",\"provider_id\":31,\"team\":\"hubspot\",\"team_id\":2,\"memory_usage\":27392888,\"memory_real_usage\":67108864,\"pid\":37116} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:21] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"nudges:send\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"55ebbc10-80bf-4724-ac64-678f6ef891cc\",\"trace_id\":\"f5392dc4-b352-4cae-b82a-004f77bbaf26\"}\n[2026-05-07 13:01:21] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"nudges:send\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"55ebbc10-80bf-4724-ac64-678f6ef891cc\",\"trace_id\":\"f5392dc4-b352-4cae-b82a-004f77bbaf26\"}\n[2026-05-07 13:01:23] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"jiminny:playlists:normalize-sort\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"9e29cfb5-b7fc-41bc-a9fd-a160d2253806\",\"trace_id\":\"3e180d83-299d-4c6c-bdda-d5a8ac156efc\"}\n[2026-05-07 13:01:23] local.INFO: [Jiminny\\Component\\Playlist\\Command\\NormalizeSortCommand::handle] starting. {\"playlists\":[]} {\"correlation_id\":\"9e29cfb5-b7fc-41bc-a9fd-a160d2253806\",\"trace_id\":\"3e180d83-299d-4c6c-bdda-d5a8ac156efc\"}\n[2026-05-07 13:01:23] local.INFO: [Jiminny\\Component\\Playlist\\Command\\NormalizeSortCommand::handle] finished. {\"normalizedPlaylists\":[],\"deletedPlaylists\":[]} {\"correlation_id\":\"9e29cfb5-b7fc-41bc-a9fd-a160d2253806\",\"trace_id\":\"3e180d83-299d-4c6c-bdda-d5a8ac156efc\"}\n[2026-05-07 13:01:23] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"jiminny:playlists:normalize-sort\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"9e29cfb5-b7fc-41bc-a9fd-a160d2253806\",\"trace_id\":\"3e180d83-299d-4c6c-bdda-d5a8ac156efc\"}\n[2026-05-07 13:01:41] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:41] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:41] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:41] local.WARNING: [HubSpot Journal Polling] Maximum empty results reached, stopping {\"empty_results\":5,\"max_empty_results\":5} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:41] local.WARNING: [HubSpot Journal Polling] Maximum empty results reached, stopping {\"empty_results\":5,\"max_empty_results\":5} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:41] local.INFO: [HubSpot Journal Polling] Service ending {\"runtime_seconds\":56,\"total_cycles\":5,\"files_downloaded\":0,\"empty_files\":0,\"other_portal_skipped\":0,\"total_events\":0,\"events_per_file\":0,\"avg_api_ms\":181.3,\"avg_download_ms\":0.0,\"avg_transform_ms\":0.0,\"avg_process_ms\":0.0,\"peak_memory_mb\":99.73} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:41] local.INFO: [HubSpot Journal Polling] Released polling lock {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:02:05] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"fe3480ce-754b-4304-b661-e4ac7234a778\",\"trace_id\":\"619e9c15-f95f-47ce-af85-6d78a6698327\"}\n[2026-05-07 13:02:05] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"fe3480ce-754b-4304-b661-e4ac7234a778\",\"trace_id\":\"619e9c15-f95f-47ce-af85-6d78a6698327\"}\n[2026-05-07 13:02:05] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"fe3480ce-754b-4304-b661-e4ac7234a778\",\"trace_id\":\"619e9c15-f95f-47ce-af85-6d78a6698327\"}\n[2026-05-07 13:02:07] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"aa98bf14-5737-4097-9f53-ac6833fb7983\",\"trace_id\":\"2f858b11-1073-43d4-996a-57e259ec2795\"}\n[2026-05-07 13:02:07] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"aa98bf14-5737-4097-9f53-ac6833fb7983\",\"trace_id\":\"2f858b11-1073-43d4-996a-57e259ec2795\"}\n[2026-05-07 13:02:08] local.NOTICE: Monitoring start {\"correlation_id\":\"25c588be-ddd6-41f1-8db8-ae28f3dd5bf5\",\"trace_id\":\"58b4c110-21ab-4c22-be4f-5be3534cd17d\"}\n[2026-05-07 13:02:08] local.NOTICE: Monitoring end {\"correlation_id\":\"25c588be-ddd6-41f1-8db8-ae28f3dd5bf5\",\"trace_id\":\"58b4c110-21ab-4c22-be4f-5be3534cd17d\"}\n[2026-05-07 13:02:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"5e453d7a-4daf-4001-b100-6aa9485d0353\",\"trace_id\":\"d97e1107-3696-4acf-95db-9cc7f37412e1\"}\n[2026-05-07 13:02:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"5e453d7a-4daf-4001-b100-6aa9485d0353\",\"trace_id\":\"d97e1107-3696-4acf-95db-9cc7f37412e1\"}\n[2026-05-07 13:02:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"3fab4dfb-f0ae-4c2c-a882-e09a1ad3ee9b\",\"trace_id\":\"3a66f9c4-3f01-40e2-aee2-e77fdabe793f\"}\n[2026-05-07 13:02:12] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"3fab4dfb-f0ae-4c2c-a882-e09a1ad3ee9b\",\"trace_id\":\"3a66f9c4-3f01-40e2-aee2-e77fdabe793f\"}\n[2026-05-07 13:02:12] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"3fab4dfb-f0ae-4c2c-a882-e09a1ad3ee9b\",\"trace_id\":\"3a66f9c4-3f01-40e2-aee2-e77fdabe793f\"}\n[2026-05-07 13:02:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"3fab4dfb-f0ae-4c2c-a882-e09a1ad3ee9b\",\"trace_id\":\"3a66f9c4-3f01-40e2-aee2-e77fdabe793f\"}\n[2026-05-07 13:02:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"63252e6d-894f-4cb9-818a-0034bf3545cb\",\"trace_id\":\"7ddf2e72-9174-4623-a622-1a5c9ee952c5\"}\n[2026-05-07 13:02:15] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 13:00:00, 2026-05-07 13:02:00] {\"correlation_id\":\"63252e6d-894f-4cb9-818a-0034bf3545cb\",\"trace_id\":\"7ddf2e72-9174-4623-a622-1a5c9ee952c5\"}\n[2026-05-07 13:02:15] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 13:00:00, 2026-05-07 13:02:00] {\"correlation_id\":\"63252e6d-894f-4cb9-818a-0034bf3545cb\",\"trace_id\":\"7ddf2e72-9174-4623-a622-1a5c9ee952c5\"}\n[2026-05-07 13:02:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"63252e6d-894f-4cb9-818a-0034bf3545cb\",\"trace_id\":\"7ddf2e72-9174-4623-a622-1a5c9ee952c5\"}\n[2026-05-07 13:02:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:create\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"cf65b2c4-c602-432d-8087-d0c0fb7f8e80\",\"trace_id\":\"b7b39317-045c-4475-879e-3d399e23fc3e\"}\n[2026-05-07 13:02:17] local.INFO: [EmailSchedule] STARTING batch create {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"cf65b2c4-c602-432d-8087-d0c0fb7f8e80\",\"trace_id\":\"b7b39317-045c-4475-879e-3d399e23fc3e\"}\n[2026-05-07 13:02:17] local.INFO: [EmailSchedule] FINISHED batch create {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"cf65b2c4-c602-432d-8087-d0c0fb7f8e80\",\"trace_id\":\"b7b39317-045c-4475-879e-3d399e23fc3e\"}\n[2026-05-07 13:02:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:create\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"cf65b2c4-c602-432d-8087-d0c0fb7f8e80\",\"trace_id\":\"b7b39317-045c-4475-879e-3d399e23fc3e\"}\n[2026-05-07 13:02:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"c481124d-04ae-43fb-b1d3-a4282f7af7ff\",\"trace_id\":\"d2d083d1-7cee-4d21-b80e-4485361d9969\"}\n[2026-05-07 13:02:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"c481124d-04ae-43fb-b1d3-a4282f7af7ff\",\"trace_id\":\"d2d083d1-7cee-4d21-b80e-4485361d9969\"}\n[2026-05-07 13:02:20] local.INFO: [Jiminny\\Jobs\\Mailbox\\CreateBatches] processed 2 inboxes and created 0 batches {\"userId\":null,\"batchSize\":30,\"maxBatches\":1000} {\"correlation_id\":\"3e2ef780-0c9d-4c30-9dc9-92315055c632\",\"trace_id\":\"b7b39317-045c-4475-879e-3d399e23fc3e\"}\n[2026-05-07 13:03:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"8cb6c7bf-4a2d-4960-bf8f-0368643fec27\",\"trace_id\":\"68c67cd4-9b92-4e41-bc1e-ebb282ea5211\"}\n[2026-05-07 13:03:06] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"8cb6c7bf-4a2d-4960-bf8f-0368643fec27\",\"trace_id\":\"68c67cd4-9b92-4e41-bc1e-ebb282ea5211\"}\n[2026-05-07 13:03:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"8cb6c7bf-4a2d-4960-bf8f-0368643fec27\",\"trace_id\":\"68c67cd4-9b92-4e41-bc1e-ebb282ea5211\"}\n[2026-05-07 13:03:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"b18dc815-6c91-43df-b083-125316724586\",\"trace_id\":\"62a636e8-4128-49eb-b99b-15efcfb37267\"}\n[2026-05-07 13:03:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"b18dc815-6c91-43df-b083-125316724586\",\"trace_id\":\"62a636e8-4128-49eb-b99b-15efcfb37267\"}\n[2026-05-07 13:03:10] local.NOTICE: Monitoring start {\"correlation_id\":\"d74c3e14-fd1a-4cab-9892-e9e924af1144\",\"trace_id\":\"29547049-25f5-4b62-a603-276e1de3dde8\"}\n[2026-05-07 13:03:10] local.NOTICE: Monitoring end {\"correlation_id\":\"d74c3e14-fd1a-4cab-9892-e9e924af1144\",\"trace_id\":\"29547049-25f5-4b62-a603-276e1de3dde8\"}\n[2026-05-07 13:03:13] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"bd7a8c2f-3f0b-48e9-86c2-0f01f2cfd9e8\",\"trace_id\":\"a3d1ecb5-4122-43c1-98ca-5d74c3dc989c\"}\n[2026-05-07 13:03:13] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"bd7a8c2f-3f0b-48e9-86c2-0f01f2cfd9e8\",\"trace_id\":\"a3d1ecb5-4122-43c1-98ca-5d74c3dc989c\"}\n[2026-05-07 13:03:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"4b20eb61-2970-4a63-8ee0-b392f7406a78\",\"trace_id\":\"892c9d93-c280-4b3f-a97a-bf1266f5c090\"}\n[2026-05-07 13:03:14] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"4b20eb61-2970-4a63-8ee0-b392f7406a78\",\"trace_id\":\"892c9d93-c280-4b3f-a97a-bf1266f5c090\"}\n[2026-05-07 13:03:14] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"4b20eb61-2970-4a63-8ee0-b392f7406a78\",\"trace_id\":\"892c9d93-c280-4b3f-a97a-bf1266f5c090\"}\n[2026-05-07 13:03:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"4b20eb61-2970-4a63-8ee0-b392f7406a78\",\"trace_id\":\"892c9d93-c280-4b3f-a97a-bf1266f5c090\"}\n[2026-05-07 13:03:18] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"6a165ea3-f101-4ac9-bfcc-e7ad618ac645\",\"trace_id\":\"383367e5-a337-4793-be1c-a88a2a6fa2e5\"}\n[2026-05-07 13:03:18] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"6a165ea3-f101-4ac9-bfcc-e7ad618ac645\",\"trace_id\":\"383367e5-a337-4793-be1c-a88a2a6fa2e5\"}","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.042220745,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2","depth":4,"bounds":{"left":0.35006648,"top":0.2490024,"width":0.007978723,"height":0.015163607},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":4,"bounds":{"left":0.3600399,"top":0.2490024,"width":0.00731383,"height":0.015163607},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"18","depth":4,"bounds":{"left":0.3693484,"top":0.2490024,"width":0.009640957,"height":0.015163607},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"bounds":{"left":0.3806516,"top":0.24740623,"width":0.00731383,"height":0.018355945},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Highlighted Error","depth":4,"bounds":{"left":0.3879654,"top":0.24740623,"width":0.006981383,"height":0.018355945},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Services\\Crm\\Hubspot\\Pagination;\n\nuse Jiminny\\Services\\Crm\\Hubspot\\Client;\nuse Jiminny\\Services\\Crm\\Hubspot\\PayloadBuilder;\nuse Psr\\Log\\LoggerInterface;\nuse SevenShores\\Hubspot\\Exceptions\\BadRequest;\nuse SevenShores\\Hubspot\\Exceptions\\HubspotException;\nuse Jiminny\\Exceptions\\SocialAccountTokenInvalidException;\n\nclass HubspotPaginationService\n{\n public function __construct(\n private LoggerInterface $logger\n ) {\n }\n\n /**\n * @throws HubspotException\n * @throws SocialAccountTokenInvalidException\n * @throws BadRequest\n */\n public function getPaginatedDataGenerator(\n Client $client,\n array $payload,\n string $type,\n int $offset = 0,\n int &$total = 0,\n ?string &$lastRecordId = null\n ): \\Generator {\n $state = new PaginationState(offset: $offset);\n $endpoint = Client::BASE_URL . \"/crm/v3/objects/{$type}/search\";\n $defaultFilter = $payload['filters'] ?? [];\n $resultsPerPage = PayloadBuilder::MAX_SEARCH_REQUEST_LIMIT;\n $teamId = $client->getConfig()->getTeam()->getId();\n $delay = $this->calculateDelayInMicroseconds();\n\n do {\n// if ($this->shouldStopPagination($state, $teamId)) {\n// break;\n// }\n\n $payload = $this->handlePaginationStrategy($payload, $defaultFilter, $state, $resultsPerPage, $teamId);\n\n// $this->validateTokenIfNeeded($client, $state);\n// usleep($delay);\n\n $page = $this->executeSearchRequest($client, $endpoint, $payload, $state);\n\n// $state->setTotal($page['total'] ?? 0);\n// $this->updateLastRecordId($page, $state);\n//\n// // Safely iterate over results with null check\n// $results = $page['results'] ?? [];\n// foreach ($results as $row) {\n// $state->incrementTotalRecords();\n// yield $row;\n// }\n//\n// $state->setOffset($this->getNextOffset($page));\n// $state->incrementRequestCount();\n//\n// $this->logPaginationProgress($state, $teamId, $endpoint);\n } while ($state->offset && ! empty($page['results']));\n\n // Log final pagination completion stats\n $this->logger->info('[Hubspot] Pagination completed', [\n 'team_id' => $teamId,\n 'endpoint' => $endpoint,\n 'total_requests' => $state->requestCount,\n 'total_records_fetched' => $state->totalRecords,\n 'total_elapsed_seconds' => round($state->getElapsedSeconds(), 2),\n 'average_seconds_per_request' => $state->requestCount > 0 ? round($state->getElapsedSeconds() / $state->requestCount, 2) : 0,\n ]);\n\n // Update reference parameters\n $total = $state->total;\n $lastRecordId = $state->lastRecordId;\n }\n\n private function shouldStopPagination(PaginationState $state, int $teamId): bool\n {\n if ($state->hasReachedSafetyLimit()) {\n $this->logger->warning('[Hubspot] Reached maximum request limit during pagination', [\n 'team_id' => $teamId,\n 'safety_limit' => PaginationConfig::LOOP_SAFETY_LIMIT,\n 'total_fetched' => $state->totalRecords,\n ]);\n\n return true;\n }\n\n return false;\n }\n\n private function handlePaginationStrategy(\n array $payload,\n array $defaultFilter,\n PaginationState $state,\n int $resultsPerPage,\n int $teamId\n ): array {\n if ($this->shouldSwitchToKeysetPagination($state, $resultsPerPage)) {\n $payload['filters'] = $defaultFilter;\n $payload['filters'][] = [\n 'propertyName' => 'hs_object_id',\n 'operator' => 'LT',\n 'value' => $state->lastRecordId,\n ];\n\n $this->logger->info('[Hubspot] Search keyset pagination request', [\n 'team_id' => $teamId,\n 'sequence' => $state->requestCount,\n 'itemsPerPage' => $resultsPerPage,\n 'payload' => $payload,\n 'total' => $state->total,\n ]);\n\n unset($payload['after']);\n $state->setOffset(0);\n }\n\n if ($state->offset) {\n $payload['after'] = $state->offset;\n }\n\n return $payload;\n }\n\n private function shouldSwitchToKeysetPagination(PaginationState $state, int $resultsPerPage): bool\n {\n // Check if we've hit the offset limit\n $shouldSwitch = $state->requestCount > 0 && ($state->offset + $resultsPerPage) > PaginationConfig::TOTAL_QUERY_LIMIT;\n\n if ($shouldSwitch && $state->lastRecordId === null) {\n $this->logger->warning('[Hubspot] Cannot switch to keyset pagination: lastRecordId is null', [\n 'request_count' => $state->requestCount,\n 'current_offset' => $state->offset,\n 'results_per_page' => $resultsPerPage,\n 'total_query_limit' => PaginationConfig::TOTAL_QUERY_LIMIT,\n ]);\n\n return false; // Continue with offset pagination\n }\n\n return $shouldSwitch;\n }\n\n private function validateTokenIfNeeded(Client $client, PaginationState $state): void\n {\n if ($state->shouldValidateToken()) {\n $client->ensureValidToken();\n $state->updateLastTokenCheck();\n }\n }\n\n private function executeSearchRequest(Client $client, string $endpoint, array $payload, PaginationState $state): array\n {\n try {\n $response = $client->getInstance()->getClient()->request('POST', $endpoint, ['json' => $payload]);\n\n return $response->toArray();\n } catch (\\Exception $e) {\n if ($client->isUnauthorizedException($e)) {\n $this->logger->warning('[Hubspot] Got 401 during pagination, attempting token refresh', [\n 'team_id' => $client->getConfig()->getTeam()->getId(),\n 'error' => $e->getMessage(),\n ]);\n\n $client->ensureValidToken();\n $state->updateLastTokenCheck();\n\n try {\n $response = $client->getInstance()->getClient()->request('POST', $endpoint, ['json' => $payload]);\n\n $this->logger->info('[Hubspot] Token refresh and retry successful', [\n 'team_id' => $client->getConfig()->getTeam()->getId(),\n ]);\n\n return $response->toArray();\n } catch (\\Exception $retryException) {\n $this->logger->error('[Hubspot] Retry request failed after token refresh', [\n 'team_id' => $client->getConfig()->getTeam()->getId(),\n 'original_error' => $e->getMessage(),\n 'retry_error' => $retryException->getMessage(),\n ]);\n\n throw $retryException;\n }\n } else if ($client->isUnauthorizedException($e)) {\n } else {\n throw $e;\n }\n }\n }\n\n private function updateLastRecordId(array $page, PaginationState $state): void\n {\n $lastRecord = ! empty($page['results']) ? end($page['results']) : null;\n $lastRecordId = $lastRecord['id'] ?? null;\n $state->updateLastRecordId($lastRecordId);\n }\n\n private function getNextOffset(array $page): int\n {\n return isset($page['paging']['next']['after']) ? (int) $page['paging']['next']['after'] : 0;\n }\n\n private function logPaginationProgress(PaginationState $state, int $teamId, string $endpoint): void\n {\n if ($state->shouldLogProgress()) {\n $this->logger->info('[Hubspot] Pagination progress log', [\n 'team_id' => $teamId,\n 'endpoint' => $endpoint,\n 'requests_made' => $state->requestCount,\n 'records_fetched' => $state->totalRecords,\n 'elapsed_seconds' => $state->getElapsedSeconds(),\n ]);\n }\n }\n\n private function calculateDelayInMicroseconds(): int\n {\n return (int) (1 / PaginationConfig::SEARCH_RPS_LIMIT * 1000000);\n }\n}","depth":4,"on_screen":true,"value":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Services\\Crm\\Hubspot\\Pagination;\n\nuse Jiminny\\Services\\Crm\\Hubspot\\Client;\nuse Jiminny\\Services\\Crm\\Hubspot\\PayloadBuilder;\nuse Psr\\Log\\LoggerInterface;\nuse SevenShores\\Hubspot\\Exceptions\\BadRequest;\nuse SevenShores\\Hubspot\\Exceptions\\HubspotException;\nuse Jiminny\\Exceptions\\SocialAccountTokenInvalidException;\n\nclass HubspotPaginationService\n{\n public function __construct(\n private LoggerInterface $logger\n ) {\n }\n\n /**\n * @throws HubspotException\n * @throws SocialAccountTokenInvalidException\n * @throws BadRequest\n */\n public function getPaginatedDataGenerator(\n Client $client,\n array $payload,\n string $type,\n int $offset = 0,\n int &$total = 0,\n ?string &$lastRecordId = null\n ): \\Generator {\n $state = new PaginationState(offset: $offset);\n $endpoint = Client::BASE_URL . \"/crm/v3/objects/{$type}/search\";\n $defaultFilter = $payload['filters'] ?? [];\n $resultsPerPage = PayloadBuilder::MAX_SEARCH_REQUEST_LIMIT;\n $teamId = $client->getConfig()->getTeam()->getId();\n $delay = $this->calculateDelayInMicroseconds();\n\n do {\n// if ($this->shouldStopPagination($state, $teamId)) {\n// break;\n// }\n\n $payload = $this->handlePaginationStrategy($payload, $defaultFilter, $state, $resultsPerPage, $teamId);\n\n// $this->validateTokenIfNeeded($client, $state);\n// usleep($delay);\n\n $page = $this->executeSearchRequest($client, $endpoint, $payload, $state);\n\n// $state->setTotal($page['total'] ?? 0);\n// $this->updateLastRecordId($page, $state);\n//\n// // Safely iterate over results with null check\n// $results = $page['results'] ?? [];\n// foreach ($results as $row) {\n// $state->incrementTotalRecords();\n// yield $row;\n// }\n//\n// $state->setOffset($this->getNextOffset($page));\n// $state->incrementRequestCount();\n//\n// $this->logPaginationProgress($state, $teamId, $endpoint);\n } while ($state->offset && ! empty($page['results']));\n\n // Log final pagination completion stats\n $this->logger->info('[Hubspot] Pagination completed', [\n 'team_id' => $teamId,\n 'endpoint' => $endpoint,\n 'total_requests' => $state->requestCount,\n 'total_records_fetched' => $state->totalRecords,\n 'total_elapsed_seconds' => round($state->getElapsedSeconds(), 2),\n 'average_seconds_per_request' => $state->requestCount > 0 ? round($state->getElapsedSeconds() / $state->requestCount, 2) : 0,\n ]);\n\n // Update reference parameters\n $total = $state->total;\n $lastRecordId = $state->lastRecordId;\n }\n\n private function shouldStopPagination(PaginationState $state, int $teamId): bool\n {\n if ($state->hasReachedSafetyLimit()) {\n $this->logger->warning('[Hubspot] Reached maximum request limit during pagination', [\n 'team_id' => $teamId,\n 'safety_limit' => PaginationConfig::LOOP_SAFETY_LIMIT,\n 'total_fetched' => $state->totalRecords,\n ]);\n\n return true;\n }\n\n return false;\n }\n\n private function handlePaginationStrategy(\n array $payload,\n array $defaultFilter,\n PaginationState $state,\n int $resultsPerPage,\n int $teamId\n ): array {\n if ($this->shouldSwitchToKeysetPagination($state, $resultsPerPage)) {\n $payload['filters'] = $defaultFilter;\n $payload['filters'][] = [\n 'propertyName' => 'hs_object_id',\n 'operator' => 'LT',\n 'value' => $state->lastRecordId,\n ];\n\n $this->logger->info('[Hubspot] Search keyset pagination request', [\n 'team_id' => $teamId,\n 'sequence' => $state->requestCount,\n 'itemsPerPage' => $resultsPerPage,\n 'payload' => $payload,\n 'total' => $state->total,\n ]);\n\n unset($payload['after']);\n $state->setOffset(0);\n }\n\n if ($state->offset) {\n $payload['after'] = $state->offset;\n }\n\n return $payload;\n }\n\n private function shouldSwitchToKeysetPagination(PaginationState $state, int $resultsPerPage): bool\n {\n // Check if we've hit the offset limit\n $shouldSwitch = $state->requestCount > 0 && ($state->offset + $resultsPerPage) > PaginationConfig::TOTAL_QUERY_LIMIT;\n\n if ($shouldSwitch && $state->lastRecordId === null) {\n $this->logger->warning('[Hubspot] Cannot switch to keyset pagination: lastRecordId is null', [\n 'request_count' => $state->requestCount,\n 'current_offset' => $state->offset,\n 'results_per_page' => $resultsPerPage,\n 'total_query_limit' => PaginationConfig::TOTAL_QUERY_LIMIT,\n ]);\n\n return false; // Continue with offset pagination\n }\n\n return $shouldSwitch;\n }\n\n private function validateTokenIfNeeded(Client $client, PaginationState $state): void\n {\n if ($state->shouldValidateToken()) {\n $client->ensureValidToken();\n $state->updateLastTokenCheck();\n }\n }\n\n private function executeSearchRequest(Client $client, string $endpoint, array $payload, PaginationState $state): array\n {\n try {\n $response = $client->getInstance()->getClient()->request('POST', $endpoint, ['json' => $payload]);\n\n return $response->toArray();\n } catch (\\Exception $e) {\n if ($client->isUnauthorizedException($e)) {\n $this->logger->warning('[Hubspot] Got 401 during pagination, attempting token refresh', [\n 'team_id' => $client->getConfig()->getTeam()->getId(),\n 'error' => $e->getMessage(),\n ]);\n\n $client->ensureValidToken();\n $state->updateLastTokenCheck();\n\n try {\n $response = $client->getInstance()->getClient()->request('POST', $endpoint, ['json' => $payload]);\n\n $this->logger->info('[Hubspot] Token refresh and retry successful', [\n 'team_id' => $client->getConfig()->getTeam()->getId(),\n ]);\n\n return $response->toArray();\n } catch (\\Exception $retryException) {\n $this->logger->error('[Hubspot] Retry request failed after token refresh', [\n 'team_id' => $client->getConfig()->getTeam()->getId(),\n 'original_error' => $e->getMessage(),\n 'retry_error' => $retryException->getMessage(),\n ]);\n\n throw $retryException;\n }\n } else if ($client->isUnauthorizedException($e)) {\n } else {\n throw $e;\n }\n }\n }\n\n private function updateLastRecordId(array $page, PaginationState $state): void\n {\n $lastRecord = ! empty($page['results']) ? end($page['results']) : null;\n $lastRecordId = $lastRecord['id'] ?? null;\n $state->updateLastRecordId($lastRecordId);\n }\n\n private function getNextOffset(array $page): int\n {\n return isset($page['paging']['next']['after']) ? (int) $page['paging']['next']['after'] : 0;\n }\n\n private function logPaginationProgress(PaginationState $state, int $teamId, string $endpoint): void\n {\n if ($state->shouldLogProgress()) {\n $this->logger->info('[Hubspot] Pagination progress log', [\n 'team_id' => $teamId,\n 'endpoint' => $endpoint,\n 'requests_made' => $state->requestCount,\n 'records_fetched' => $state->totalRecords,\n 'elapsed_seconds' => $state->getElapsedSeconds(),\n ]);\n }\n }\n\n private function calculateDelayInMicroseconds(): int\n {\n return (int) (1 / PaginationConfig::SEARCH_RPS_LIMIT * 1000000);\n }\n}","role_description":"text entry area","is_enabled":true,"is_focused":true,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Project","depth":3,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Project","depth":3,"bounds":{"left":0.011968086,"top":0.047885075,"width":0.024268618,"height":0.024740623},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"New File or Directory…","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Expand Selected","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Collapse All","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Options","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
9219886827759137044
|
6701901348398533693
|
click
|
accessibility
|
NULL
|
Project: faVsco.js, menu
master, menu
Start Listen Project: faVsco.js, menu
master, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Show Replace Field
Search History
retry_error
New Line
Match Case
Words
Regex
Replace History
Replace
New Line
Preserve case
0 results
Previous Occurrence
Next Occurrence
Filter Search Results
Open in Window, Multiple Cursors
Click to highlight
Close
Sync Changes
Hide This Notification
Code changed:
Hide
934
Previous Highlighted Error
Next Highlighted Error
[2026-05-07 12:52:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"fa8a3008-d298-4682-bbbc-fdc77520e0d7","trace_id":"7cfb2afb-9fc4-4a77-81be-65dce93c7d80"}
[2026-05-07 12:52:08] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"fa8a3008-d298-4682-bbbc-fdc77520e0d7","trace_id":"7cfb2afb-9fc4-4a77-81be-65dce93c7d80"}
[2026-05-07 12:52:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"fa8a3008-d298-4682-bbbc-fdc77520e0d7","trace_id":"7cfb2afb-9fc4-4a77-81be-65dce93c7d80"}
[2026-05-07 12:52:12] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"932ced9d-9804-48ed-976a-1f8bf5e75707","trace_id":"21bf320c-58f3-4082-831d-9f07f6c6a669"}
[2026-05-07 12:52:12] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"932ced9d-9804-48ed-976a-1f8bf5e75707","trace_id":"21bf320c-58f3-4082-831d-9f07f6c6a669"}
[2026-05-07 12:52:17] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1499,"provider":"hubspot"} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:17] local.INFO: [SocialAccountService] Token retrieved {"socialAccountId":1499,"provider":"hubspot"} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:17] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:17] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {"crm_provider":"hubspot","crm_owner":148,"team_id":2} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:17] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.55,"average_seconds_per_request":0.55} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:18] local.NOTICE: Monitoring start {"correlation_id":"ae3ec78f-432c-4e22-b73b-0413af73d9f3","trace_id":"c2feb517-0f2b-4ad9-bce5-4d57476a164b"}
[2026-05-07 12:52:18] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.51,"average_seconds_per_request":0.51} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:18] local.NOTICE: Monitoring end {"correlation_id":"ae3ec78f-432c-4e22-b73b-0413af73d9f3","trace_id":"c2feb517-0f2b-4ad9-bce5-4d57476a164b"}
[2026-05-07 12:52:18] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.48,"average_seconds_per_request":0.48} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:19] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.49,"average_seconds_per_request":0.49} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:19] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.49,"average_seconds_per_request":0.49} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"2bf2f73f-007c-4909-925e-f1749fbf87b3","trace_id":"8429123c-d92c-48d9-a154-29bc0aa0e2a1"}
[2026-05-07 12:52:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"2bf2f73f-007c-4909-925e-f1749fbf87b3","trace_id":"8429123c-d92c-48d9-a154-29bc0aa0e2a1"}
[2026-05-07 12:52:20] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.48,"average_seconds_per_request":0.48} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:20] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.62,"average_seconds_per_request":0.62} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:21] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.78,"average_seconds_per_request":0.78} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:22] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":1.21,"average_seconds_per_request":1.21} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:23] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.53,"average_seconds_per_request":0.53} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:25] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8","trace_id":"64ccac6b-34f7-45ed-a8ac-b63adbb19107"}
[2026-05-07 12:52:25] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8","trace_id":"64ccac6b-34f7-45ed-a8ac-b63adbb19107"}
[2026-05-07 12:52:26] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8","trace_id":"64ccac6b-34f7-45ed-a8ac-b63adbb19107"}
[2026-05-07 12:52:26] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8","trace_id":"64ccac6b-34f7-45ed-a8ac-b63adbb19107"}
[2026-05-07 12:52:28] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:count","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"6e1a36d0-a87a-455f-88b9-04f16718ea33","trace_id":"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c"}
[2026-05-07 12:52:28] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:50:00, 2026-05-07 12:52:00] {"correlation_id":"6e1a36d0-a87a-455f-88b9-04f16718ea33","trace_id":"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c"}
[2026-05-07 12:52:28] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:50:00, 2026-05-07 12:52:00] {"correlation_id":"6e1a36d0-a87a-455f-88b9-04f16718ea33","trace_id":"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c"}
[2026-05-07 12:52:28] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:count","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"6e1a36d0-a87a-455f-88b9-04f16718ea33","trace_id":"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c"}
[2026-05-07 12:52:31] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:create","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"80549428-beea-4a6c-97d3-818ca0f059f3","trace_id":"55ddd59b-073b-4331-8cdb-baa869dcff70"}
[2026-05-07 12:52:31] local.INFO: [EmailSchedule] STARTING batch create {"host":"docker_lamp_1"} {"correlation_id":"80549428-beea-4a6c-97d3-818ca0f059f3","trace_id":"55ddd59b-073b-4331-8cdb-baa869dcff70"}
[2026-05-07 12:52:31] local.INFO: [EmailSchedule] FINISHED batch create {"host":"docker_lamp_1"} {"correlation_id":"80549428-beea-4a6c-97d3-818ca0f059f3","trace_id":"55ddd59b-073b-4331-8cdb-baa869dcff70"}
[2026-05-07 12:52:31] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:create","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"80549428-beea-4a6c-97d3-818ca0f059f3","trace_id":"55ddd59b-073b-4331-8cdb-baa869dcff70"}
[2026-05-07 12:52:32] local.INFO: [Jiminny\Jobs\Mailbox\CreateBatches] processed 2 inboxes and created 0 batches {"userId":null,"batchSize":30,"maxBatches":1000} {"correlation_id":"92242bd6-7014-4487-a50b-1570e1a88e7a","trace_id":"55ddd59b-073b-4331-8cdb-baa869dcff70"}
[2026-05-07 12:52:39] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"activity:sync","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"d467eace-3254-4ecc-8d8e-a94688d6d3ad","trace_id":"5105ca8f-3c0d-4798-b748-5a7d6fbd7531"}
[2026-05-07 12:52:39] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"activity:sync","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"d467eace-3254-4ecc-8d8e-a94688d6d3ad","trace_id":"5105ca8f-3c0d-4798-b748-5a7d6fbd7531"}
[2026-05-07 12:53:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"04363b29-2f82-470a-89d0-c5ce4f4779d7","trace_id":"3c76a1f1-3348-4e2b-897c-4a216ca95147"}
[2026-05-07 12:53:08] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"04363b29-2f82-470a-89d0-c5ce4f4779d7","trace_id":"3c76a1f1-3348-4e2b-897c-4a216ca95147"}
[2026-05-07 12:53:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"04363b29-2f82-470a-89d0-c5ce4f4779d7","trace_id":"3c76a1f1-3348-4e2b-897c-4a216ca95147"}
[2026-05-07 12:53:11] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"5ebbecd0-866c-443f-965f-b6ac03735379","trace_id":"e0a724a5-bb4b-4fe6-9fe9-36ea1c3f0326"}
[2026-05-07 12:53:11] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"5ebbecd0-866c-443f-965f-b6ac03735379","trace_id":"e0a724a5-bb4b-4fe6-9fe9-36ea1c3f0326"}
[2026-05-07 12:53:18] local.NOTICE: Monitoring start {"correlation_id":"f39f0d3c-a292-41cb-8834-45dae1f8cf47","trace_id":"b6e7e2a7-85af-401d-afc6-bec2bdab34d7"}
[2026-05-07 12:53:18] local.NOTICE: Monitoring end {"correlation_id":"f39f0d3c-a292-41cb-8834-45dae1f8cf47","trace_id":"b6e7e2a7-85af-401d-afc6-bec2bdab34d7"}
[2026-05-07 12:53:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"419bb747-2669-496f-944b-1073496cc271","trace_id":"4cb913a4-ef75-422b-80eb-fbfb988521ed"}
[2026-05-07 12:53:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"419bb747-2669-496f-944b-1073496cc271","trace_id":"4cb913a4-ef75-422b-80eb-fbfb988521ed"}
[2026-05-07 12:53:22] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"f4805c97-9344-4111-8be2-2b1efeae07bb","trace_id":"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22"}
[2026-05-07 12:53:22] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"f4805c97-9344-4111-8be2-2b1efeae07bb","trace_id":"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22"}
[2026-05-07 12:53:22] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"f4805c97-9344-4111-8be2-2b1efeae07bb","trace_id":"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22"}
[2026-05-07 12:53:22] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"f4805c97-9344-4111-8be2-2b1efeae07bb","trace_id":"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22"}
[2026-05-07 12:53:25] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:retry-failed","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"2eadb06b-2c2e-4a7f-8920-77bd30d6cd7f","trace_id":"75f27a23-2021-41a5-9e5f-4b1cb4f143a6"}
[2026-05-07 12:53:25] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:retry-failed","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"2eadb06b-2c2e-4a7f-8920-77bd30d6cd7f","trace_id":"75f27a23-2021-41a5-9e5f-4b1cb4f143a6"}
[2026-05-07 12:54:06] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"ad151521-f676-4351-a70b-f44dc0b94990","trace_id":"17e39c4c-85cb-49a4-815e-b7315a8c2249"}
[2026-05-07 12:54:06] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"ad151521-f676-4351-a70b-f44dc0b94990","trace_id":"17e39c4c-85cb-49a4-815e-b7315a8c2249"}
[2026-05-07 12:54:06] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"ad151521-f676-4351-a70b-f44dc0b94990","trace_id":"17e39c4c-85cb-49a4-815e-b7315a8c2249"}
[2026-05-07 12:54:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"ed0583cf-03c6-4696-b859-876c8efa4473","trace_id":"3f9e0a3c-2178-4885-95eb-8618b8cfc042"}
[2026-05-07 12:54:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"ed0583cf-03c6-4696-b859-876c8efa4473","trace_id":"3f9e0a3c-2178-4885-95eb-8618b8cfc042"}
[2026-05-07 12:54:10] local.NOTICE: Monitoring start {"correlation_id":"7142250a-b897-4620-8ff7-fd9b3a1f3802","trace_id":"597def1e-ca38-4cc4-8890-fdcd5baff948"}
[2026-05-07 12:54:10] local.NOTICE: Monitoring end {"correlation_id":"7142250a-b897-4620-8ff7-fd9b3a1f3802","trace_id":"597def1e-ca38-4cc4-8890-fdcd5baff948"}
[2026-05-07 12:54:12] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"cb2ada48-0200-4eb3-a8c5-6cb8ea43ec0d","trace_id":"73937bdc-10b9-4508-9ef2-86420fe774fc"}
[2026-05-07 12:54:12] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"cb2ada48-0200-4eb3-a8c5-6cb8ea43ec0d","trace_id":"73937bdc-10b9-4508-9ef2-86420fe774fc"}
[2026-05-07 12:54:14] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"8f1d8932-2839-4256-99ab-1fd13e8381c6","trace_id":"cc090767-edc2-4a89-90c2-116f1737de7f"}
[2026-05-07 12:54:14] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"8f1d8932-2839-4256-99ab-1fd13e8381c6","trace_id":"cc090767-edc2-4a89-90c2-116f1737de7f"}
[2026-05-07 12:54:14] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"8f1d8932-2839-4256-99ab-1fd13e8381c6","trace_id":"cc090767-edc2-4a89-90c2-116f1737de7f"}
[2026-05-07 12:54:14] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"8f1d8932-2839-4256-99ab-1fd13e8381c6","trace_id":"cc090767-edc2-4a89-90c2-116f1737de7f"}
[2026-05-07 12:54:16] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:count","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"9d324c6d-5b36-46ee-89c6-f95f86bf3f39","trace_id":"860cdff0-9356-4e94-84cc-e011a74ba56c"}
[2026-05-07 12:54:16] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:52:00, 2026-05-07 12:54:00] {"correlation_id":"9d324c6d-5b36-46ee-89c6-f95f86bf3f39","trace_id":"860cdff0-9356-4e94-84cc-e011a74ba56c"}
[2026-05-07 12:54:16] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:52:00, 2026-05-07 12:54:00] {"correlation_id":"9d324c6d-5b36-46ee-89c6-f95f86bf3f39","trace_id":"860cdff0-9356-4e94-84cc-e011a74ba56c"}
[2026-05-07 12:54:16] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:count","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"9d324c6d-5b36-46ee-89c6-f95f86bf3f39","trace_id":"860cdff0-9356-4e94-84cc-e011a74ba56c"}
[2026-05-07 12:54:18] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"activity:aircall:check-and-renew","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"c2009a88-eea6-4954-8642-ef5d9cb56b42","trace_id":"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab"}
[2026-05-07 12:54:18] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1496,"provider":"aircall"} {"correlation_id":"c2009a88-eea6-4954-8642-ef5d9cb56b42","trace_id":"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab"}
[2026-05-07 12:54:18] local.INFO: [SocialAccountService] Token retrieved {"socialAccountId":1496,"provider":"aircall"} {"correlation_id":"c2009a88-eea6-4954-8642-ef5d9cb56b42","trace_id":"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab"}
[2026-05-07 12:54:18] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"c2009a88-eea6-4954-8642-ef5d9cb56b42","trace_id":"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab"}
[2026-05-07 12:54:19] local.ERROR: [Aircall] Re-activating webhooks failed {"team_id":1,"reason":"{\"message\":\"Forbidden\"}"} {"correlation_id":"c2009a88-eea6-4954-8642-ef5d9cb56b42","trace_id":"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab"}
[2026-05-07 12:54:19] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"activity:aircall:check-and-renew","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"c2009a88-eea6-4954-8642-ef5d9cb56b42","trace_id":"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab"}
[2026-05-07 12:54:21] local.INFO: [RetryFailedDownloads] Starting {"options":{"from":null,"to":null,"help":false,"silent":false,"quiet":false,"verbose":false,"version":false,"ansi":null,"no-interaction":false,"env":null}} {"correlation_id":"825ef2d7-b5f8-45cd-b19d-20a179b06934","trace_id":"5825a6c8-14c9-4bec-b688-d4895cfc41cc"}
[2026-05-07 12:55:05] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"c0dc8e25-7a51-4023-be61-d0abd6d72e37","trace_id":"16b8fa3e-92b1-465e-82d4-642a2d14c7c5"}
[2026-05-07 12:55:05] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"c0dc8e25-7a51-4023-be61-d0abd6d72e37","trace_id":"16b8fa3e-92b1-465e-82d4-642a2d14c7c5"}
[2026-05-07 12:55:05] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"c0dc8e25-7a51-4023-be61-d0abd6d72e37","trace_id":"16b8fa3e-92b1-465e-82d4-642a2d14c7c5"}
[2026-05-07 12:55:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"1c65fdd1-1f79-435d-b469-add46ddafd63","trace_id":"62f2a3bb-3be7-4c76-a9dd-222bfb895fab"}
[2026-05-07 12:55:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"1c65fdd1-1f79-435d-b469-add46ddafd63","trace_id":"62f2a3bb-3be7-4c76-a9dd-222bfb895fab"}
[2026-05-07 12:55:11] local.NOTICE: Monitoring start {"correlation_id":"f115f9bc-bb59-4fc9-8c9f-8b69baba1a55","trace_id":"e75cb5c6-6dd8-4000-8d26-4418020c7cfe"}
[2026-05-07 12:55:11] local.NOTICE: Monitoring end {"correlation_id":"f115f9bc-bb59-4fc9-8c9f-8b69baba1a55","trace_id":"e75cb5c6-6dd8-4000-8d26-4418020c7cfe"}
[2026-05-07 12:55:14] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"dba5c474-4d40-44da-baf2-f8b30db9a2f5","trace_id":"adb45622-1fb0-457c-bf20-8dcceab2d62a"}
[2026-05-07 12:55:14] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"dba5c474-4d40-44da-baf2-f8b30db9a2f5","trace_id":"adb45622-1fb0-457c-bf20-8dcceab2d62a"}
[2026-05-07 12:55:16] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"22c96a8e-4424-4a1f-b349-206276eefe4c","trace_id":"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c"}
[2026-05-07 12:55:16] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"22c96a8e-4424-4a1f-b349-206276eefe4c","trace_id":"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c"}
[2026-05-07 12:55:16] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"22c96a8e-4424-4a1f-b349-206276eefe4c","trace_id":"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c"}
[2026-05-07 12:55:16] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"22c96a8e-4424-4a1f-b349-206276eefe4c","trace_id":"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c"}
[2026-05-07 12:55:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"activity:purge-stale","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"5f958e8d-1d01-4144-abd6-2513e5524ad3","trace_id":"828bc5b7-e2aa-4443-901f-38dd94bb7cc5"}
[2026-05-07 12:55:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"activity:purge-stale","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"5f958e8d-1d01-4144-abd6-2513e5524ad3","trace_id":"828bc5b7-e2aa-4443-901f-38dd94bb7cc5"}
[2026-05-07 12:55:22] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:text-relay:sync","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"6bd1c9cb-cd9a-42a9-87fe-45cb7bac687a","trace_id":"0f2f5d66-c4c9-46a5-a31b-6937663ce1ad"}
[2026-05-07 12:55:22] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:text-relay:sync","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"6bd1c9cb-cd9a-42a9-87fe-45cb7bac687a","trace_id":"0f2f5d66-c4c9-46a5-a31b-6937663ce1ad"}
[2026-05-07 12:55:24] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:pre-meeting-notification","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"c5dd8132-d7e1-4caa-84d1-0a50d02df8da","trace_id":"bc7341c5-b8e2-48ea-9670-7ec375363180"}
[2026-05-07 12:55:24] local.INFO: Running pre-meeting notification command {"correlation_id":"c5dd8132-d7e1-4caa-84d1-0a50d02df8da","trace_id":"bc7341c5-b8e2-48ea-9670-7ec375363180"}
[2026-05-07 12:55:24] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:pre-meeting-notification","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"c5dd8132-d7e1-4caa-84d1-0a50d02df8da","trace_id":"bc7341c5-b8e2-48ea-9670-7ec375363180"}
[2026-05-07 12:55:26] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:start","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0","trace_id":"efb1619f-4185-4319-9bfb-305cee0b6bfc"}
[2026-05-07 12:55:26] local.INFO: Running conference:monitor:start command for activities in (2026-05-07 12:45:00, 2026-05-07 12:50:00] {"correlation_id":"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0","trace_id":"efb1619f-4185-4319-9bfb-305cee0b6bfc"}
[2026-05-07 12:55:26] local.INFO: [conference:monitor:start] No activities found in (2026-05-07 12:45:00, 2026-05-07 12:50:00] {"correlation_id":"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0","trace_id":"efb1619f-4185-4319-9bfb-305cee0b6bfc"}
[2026-05-07 12:55:26] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:start","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0","trace_id":"efb1619f-4185-4319-9bfb-305cee0b6bfc"}
[2026-05-07 12:55:28] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:end","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"3792b31a-080a-4fe4-9823-5602361325ba","trace_id":"41a2fde1-48f6-4667-84b7-a2f93e9ad2da"}
[2026-05-07 12:55:28] local.INFO: conference:monitor:end:Jiminny\Console\Commands\Activities\MonitorMeetingEndCommand::logActivitiesEnded {"from":"12:50","to":"12:55"} {"correlation_id":"3792b31a-080a-4fe4-9823-5602361325ba","trace_id":"41a2fde1-48f6-4667-84b7-a2f93e9ad2da"}
[2026-05-07 12:55:28] local.INFO: conference:monitor:end:Jiminny\Console\Commands\Activities\MonitorMeetingEndCommand::logActivitiesWithUnfinishedSession {"from":"02:45","to":"02:50"} {"correlation_id":"3792b31a-080a-4fe4-9823-5602361325ba","trace_id":"41a2fde1-48f6-4667-84b7-a2f93e9ad2da"}
[2026-05-07 12:55:28] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:end","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"3792b31a-080a-4fe4-9823-5602361325ba","trace_id":"41a2fde1-48f6-4667-84b7-a2f93e9ad2da"}
[2026-05-07 12:55:30] local.NOTICE: Repairing HubSpot tokens start {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:30] local.INFO: Trying to refresh HubSpot token {"account_id":59,"updated_at":"2025-10-03 09:32:05"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:30] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:30] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":59,"provider":"hubspot","refreshToken":"97b78f6e2cc49965c00c2492b602b02708b1392551e6b3f113fbaa48992af90b","state":"full-refresh"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.ERROR: Failed to refresh HubSpot token {"account_id":59,"updated_at":"2025-10-03 09:32:05","reason":"missing or invalid refresh token","previous":""} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.INFO: Trying to refresh HubSpot token {"account_id":306,"updated_at":"2023-11-27 09:30:03"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":306,"provider":"hubspot","refreshToken":"6fa6aa8cc641d131231acc3470f5c03cb3b07b2e580fb18f8acb3b1dbb72549b","state":"full-refresh"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.ERROR: Failed to refresh HubSpot token {"account_id":306,"updated_at":"2023-11-27 09:30:03","reason":"missing or invalid refresh token","previous":""} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.INFO: Trying to refresh HubSpot token {"account_id":1372,"updated_at":"2025-10-02 14:47:06"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1372,"provider":"hubspot","refreshToken":"9aa73948c761da29dce46c177cf9aee1fde483a44169ca38723f9f0597d7a8c4","state":"full-refresh"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:32] local.ERROR: Failed to refresh HubSpot token {"account_id":1372,"updated_at":"2025-10-02 14:47:06","reason":"missing or invalid refresh token","previous":""} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:32] local.NOTICE: Repairing HubSpot tokens end {"total":3,"fixed":0,"failed":3} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:40] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"crm:bullhorn:ping","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"5e676ae4-5d63-49d4-9001-559088adf06b","trace_id":"2fcce073-dd68-4c99-b7c4-b9e03c20b8e4"}
[2026-05-07 12:55:40] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:pre-meeting-reminder","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"1f830896-8142-41d1-bfc9-4cbb9179ffda","trace_id":"e348a096-7f37-4308-a6d8-66131e8be901"}
[2026-05-07 12:55:40] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"crm:bullhorn:ping","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"5e676ae4-5d63-49d4-9001-559088adf06b","trace_id":"2fcce073-dd68-4c99-b7c4-b9e03c20b8e4"}
[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Command] Starting polling service {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Service starting {"memory_limit":"256M","max_execution_time":"0","initial_memory_mb":62.0} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Acquired polling lock {"expires_at":"2026-05-07T12:57:40.609671Z"} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:40] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:40] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:pre-meeting-reminder","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"1f830896-8142-41d1-bfc9-4cbb9179ffda","trace_id":"e348a096-7f37-4308-a6d8-66131e8be901"}
[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:45] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:45] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:46] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:51] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:51] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:51] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:06] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:06] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:06] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"2d8b30b4-87aa-480f-9b9e-5a9c709b742a","trace_id":"25b7be6c-1faf-430b-a724-a4ff28773a31"}
[2026-05-07 12:56:08] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"2d8b30b4-87aa-480f-9b9e-5a9c709b742a","trace_id":"25b7be6c-1faf-430b-a724-a4ff28773a31"}
[2026-05-07 12:56:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"2d8b30b4-87aa-480f-9b9e-5a9c709b742a","trace_id":"25b7be6c-1faf-430b-a724-a4ff28773a31"}
[2026-05-07 12:56:10] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"efd336d7-db4d-459e-b6e7-bf73454e955e","trace_id":"0a82c3d5-0417-48c8-b88f-70ec33e2326a"}
[2026-05-07 12:56:10] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"efd336d7-db4d-459e-b6e7-bf73454e955e","trace_id":"0a82c3d5-0417-48c8-b88f-70ec33e2326a"}
[2026-05-07 12:56:12] local.NOTICE: Monitoring start {"correlation_id":"68481576-8ca6-4ee5-821b-07374702971d","trace_id":"c73eac09-5d20-425f-9c22-bd6c65fc60c9"}
[2026-05-07 12:56:12] local.NOTICE: Monitoring end {"correlation_id":"68481576-8ca6-4ee5-821b-07374702971d","trace_id":"c73eac09-5d20-425f-9c22-bd6c65fc60c9"}
[2026-05-07 12:56:17] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"bd0cdc75-b5c2-4dbb-bc44-e36c96813d24","trace_id":"f688cd98-c171-4e30-8c72-afc14f040861"}
[2026-05-07 12:56:17] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"bd0cdc75-b5c2-4dbb-bc44-e36c96813d24","trace_id":"f688cd98-c171-4e30-8c72-afc14f040861"}
[2026-05-07 12:56:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"f01636a9-4059-4ab0-9ad2-b078d42cedbd","trace_id":"fea938d8-aedc-40ec-b8c2-2f487e1ac808"}
[2026-05-07 12:56:20] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"f01636a9-4059-4ab0-9ad2-b078d42cedbd","trace_id":"fea938d8-aedc-40ec-b8c2-2f487e1ac808"}
[2026-05-07 12:56:20] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"f01636a9-4059-4ab0-9ad2-b078d42cedbd","trace_id":"fea938d8-aedc-40ec-b8c2-2f487e1ac808"}
[2026-05-07 12:56:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"f01636a9-4059-4ab0-9ad2-b078d42cedbd","trace_id":"fea938d8-aedc-40ec-b8c2-2f487e1ac808"}
[2026-05-07 12:56:23] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:count","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"d4558901-264d-4238-8589-62a137bac1fd","trace_id":"38e6b5dc-ebd6-46a7-8224-7374d4e58630"}
[2026-05-07 12:56:23] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:54:00, 2026-05-07 12:56:00] {"correlation_id":"d4558901-264d-4238-8589-62a137bac1fd","trace_id":"38e6b5dc-ebd6-46a7-8224-7374d4e58630"}
[2026-05-07 12:56:23] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:54:00, 2026-05-07 12:56:00] {"correlation_id":"d4558901-264d-4238-8589-62a137bac1fd","trace_id":"38e6b5dc-ebd6-46a7-8224-7374d4e58630"}
[2026-05-07 12:56:23] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:count","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"d4558901-264d-4238-8589-62a137bac1fd","trace_id":"38e6b5dc-ebd6-46a7-8224-7374d4e58630"}
[2026-05-07 12:56:24] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"crm:sync-hubspot-objects","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"7bfaf9be-0ca1-4170-a0c9-83e0ed61881c","trace_id":"ba7f9eee-8dcb-4c94-acb0-18f9363757ad"}
[2026-05-07 12:56:24] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"crm:sync-hubspot-objects","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"7bfaf9be-0ca1-4170-a0c9-83e0ed61881c","trace_id":"ba7f9eee-8dcb-4c94-acb0-18f9363757ad"}
[2026-05-07 12:56:26] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"activity:notify-not-logged","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"2541e0fa-1117-4863-9523-d723b5821a24","trace_id":"d9600320-5133-4938-bdd1-2256dfdf8db4"}
[2026-05-07 12:56:26] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"activity:notify-not-logged","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"2541e0fa-1117-4863-9523-d723b5821a24","trace_id":"d9600320-5133-4938-bdd1-2256dfdf8db4"}
[2026-05-07 12:56:35] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:sync","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"e444f776-37db-4c6d-b30e-20b01a089de7","trace_id":"1168869e-e07c-4702-a046-42fc95a91f6d"}
[2026-05-07 12:56:36] local.INFO: [EmailSchedule] STARTING Inbox Sync {"host":"docker_lamp_1"} {"correlation_id":"e444f776-37db-4c6d-b30e-20b01a089de7","trace_id":"1168869e-e07c-4702-a046-42fc95a91f6d"}
[2026-05-07 12:56:36] local.INFO: [EmailSchedule] FINISHED Inbox Sync {"host":"docker_lamp_1","events":2} {"correlation_id":"e444f776-37db-4c6d-b30e-20b01a089de7","trace_id":"1168869e-e07c-4702-a046-42fc95a91f6d"}
[2026-05-07 12:56:36] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:sync","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"e444f776-37db-4c6d-b30e-20b01a089de7","trace_id":"1168869e-e07c-4702-a046-42fc95a91f6d"}
[2026-05-07 12:56:36] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:36] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:36] local.INFO: [HubSpot Journal Auth] Requesting new client credentials token {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:37] local.INFO: [HubSpot Journal Auth] Successfully obtained new access token {"expires_in":1800,"cached_for":1500} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:37] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:37] local.WARNING: [HubSpot Journal Polling] Maximum empty results reached, stopping {"empty_results":5,"max_empty_results":5} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:37] local.WARNING: [HubSpot Journal Polling] Maximum empty results reached, stopping {"empty_results":5,"max_empty_results":5} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:37] local.INFO: [HubSpot Journal Polling] Service ending {"runtime_seconds":57,"total_cycles":5,"files_downloaded":0,"empty_files":0,"other_portal_skipped":0,"total_events":0,"events_per_file":0,"avg_api_ms":238.3,"avg_download_ms":0.0,"avg_transform_ms":0.0,"avg_process_ms":0.0,"peak_memory_mb":99.73} {"correlation_id"...
|
4150
|
NULL
|
NULL
|
NULL
|
|
4153
|
NULL
|
0
|
2026-05-07T13:11:29.417576+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-07/1778 /Users/lukas/.screenpipe/data/data/2026-05-07/1778159489417_m1.jpg...
|
PhpStorm
|
faVsco.js – HubspotPaginationService.php
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
master, menu
Start Listen Project: faVsco.js, menu
master, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Show Replace Field
Search History
retry_error
New Line
Match Case
Words
Regex
Replace History
Replace
New Line
Preserve case
0 results
Previous Occurrence
Next Occurrence
Filter Search Results
Open in Window, Multiple Cursors
Click to highlight
Close
Sync Changes
Hide This Notification
Code changed:
Hide
934
Previous Highlighted Error
Next Highlighted Error
[2026-05-07 12:52:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"fa8a3008-d298-4682-bbbc-fdc77520e0d7","trace_id":"7cfb2afb-9fc4-4a77-81be-65dce93c7d80"}
[2026-05-07 12:52:08] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"fa8a3008-d298-4682-bbbc-fdc77520e0d7","trace_id":"7cfb2afb-9fc4-4a77-81be-65dce93c7d80"}
[2026-05-07 12:52:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"fa8a3008-d298-4682-bbbc-fdc77520e0d7","trace_id":"7cfb2afb-9fc4-4a77-81be-65dce93c7d80"}
[2026-05-07 12:52:12] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"932ced9d-9804-48ed-976a-1f8bf5e75707","trace_id":"21bf320c-58f3-4082-831d-9f07f6c6a669"}
[2026-05-07 12:52:12] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"932ced9d-9804-48ed-976a-1f8bf5e75707","trace_id":"21bf320c-58f3-4082-831d-9f07f6c6a669"}
[2026-05-07 12:52:17] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1499,"provider":"hubspot"} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:17] local.INFO: [SocialAccountService] Token retrieved {"socialAccountId":1499,"provider":"hubspot"} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:17] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:17] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {"crm_provider":"hubspot","crm_owner":148,"team_id":2} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:17] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.55,"average_seconds_per_request":0.55} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:18] local.NOTICE: Monitoring start {"correlation_id":"ae3ec78f-432c-4e22-b73b-0413af73d9f3","trace_id":"c2feb517-0f2b-4ad9-bce5-4d57476a164b"}
[2026-05-07 12:52:18] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.51,"average_seconds_per_request":0.51} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:18] local.NOTICE: Monitoring end {"correlation_id":"ae3ec78f-432c-4e22-b73b-0413af73d9f3","trace_id":"c2feb517-0f2b-4ad9-bce5-4d57476a164b"}
[2026-05-07 12:52:18] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.48,"average_seconds_per_request":0.48} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:19] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.49,"average_seconds_per_request":0.49} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:19] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.49,"average_seconds_per_request":0.49} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"2bf2f73f-007c-4909-925e-f1749fbf87b3","trace_id":"8429123c-d92c-48d9-a154-29bc0aa0e2a1"}
[2026-05-07 12:52:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"2bf2f73f-007c-4909-925e-f1749fbf87b3","trace_id":"8429123c-d92c-48d9-a154-29bc0aa0e2a1"}
[2026-05-07 12:52:20] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.48,"average_seconds_per_request":0.48} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:20] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.62,"average_seconds_per_request":0.62} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:21] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.78,"average_seconds_per_request":0.78} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:22] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":1.21,"average_seconds_per_request":1.21} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:23] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.53,"average_seconds_per_request":0.53} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:25] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8","trace_id":"64ccac6b-34f7-45ed-a8ac-b63adbb19107"}
[2026-05-07 12:52:25] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8","trace_id":"64ccac6b-34f7-45ed-a8ac-b63adbb19107"}
[2026-05-07 12:52:26] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8","trace_id":"64ccac6b-34f7-45ed-a8ac-b63adbb19107"}
[2026-05-07 12:52:26] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8","trace_id":"64ccac6b-34f7-45ed-a8ac-b63adbb19107"}
[2026-05-07 12:52:28] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:count","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"6e1a36d0-a87a-455f-88b9-04f16718ea33","trace_id":"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c"}
[2026-05-07 12:52:28] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:50:00, 2026-05-07 12:52:00] {"correlation_id":"6e1a36d0-a87a-455f-88b9-04f16718ea33","trace_id":"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c"}
[2026-05-07 12:52:28] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:50:00, 2026-05-07 12:52:00] {"correlation_id":"6e1a36d0-a87a-455f-88b9-04f16718ea33","trace_id":"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c"}
[2026-05-07 12:52:28] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:count","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"6e1a36d0-a87a-455f-88b9-04f16718ea33","trace_id":"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c"}
[2026-05-07 12:52:31] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:create","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"80549428-beea-4a6c-97d3-818ca0f059f3","trace_id":"55ddd59b-073b-4331-8cdb-baa869dcff70"}
[2026-05-07 12:52:31] local.INFO: [EmailSchedule] STARTING batch create {"host":"docker_lamp_1"} {"correlation_id":"80549428-beea-4a6c-97d3-818ca0f059f3","trace_id":"55ddd59b-073b-4331-8cdb-baa869dcff70"}
[2026-05-07 12:52:31] local.INFO: [EmailSchedule] FINISHED batch create {"host":"docker_lamp_1"} {"correlation_id":"80549428-beea-4a6c-97d3-818ca0f059f3","trace_id":"55ddd59b-073b-4331-8cdb-baa869dcff70"}
[2026-05-07 12:52:31] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:create","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"80549428-beea-4a6c-97d3-818ca0f059f3","trace_id":"55ddd59b-073b-4331-8cdb-baa869dcff70"}
[2026-05-07 12:52:32] local.INFO: [Jiminny\Jobs\Mailbox\CreateBatches] processed 2 inboxes and created 0 batches {"userId":null,"batchSize":30,"maxBatches":1000} {"correlation_id":"92242bd6-7014-4487-a50b-1570e1a88e7a","trace_id":"55ddd59b-073b-4331-8cdb-baa869dcff70"}
[2026-05-07 12:52:39] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"activity:sync","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"d467eace-3254-4ecc-8d8e-a94688d6d3ad","trace_id":"5105ca8f-3c0d-4798-b748-5a7d6fbd7531"}
[2026-05-07 12:52:39] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"activity:sync","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"d467eace-3254-4ecc-8d8e-a94688d6d3ad","trace_id":"5105ca8f-3c0d-4798-b748-5a7d6fbd7531"}
[2026-05-07 12:53:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"04363b29-2f82-470a-89d0-c5ce4f4779d7","trace_id":"3c76a1f1-3348-4e2b-897c-4a216ca95147"}
[2026-05-07 12:53:08] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"04363b29-2f82-470a-89d0-c5ce4f4779d7","trace_id":"3c76a1f1-3348-4e2b-897c-4a216ca95147"}
[2026-05-07 12:53:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"04363b29-2f82-470a-89d0-c5ce4f4779d7","trace_id":"3c76a1f1-3348-4e2b-897c-4a216ca95147"}
[2026-05-07 12:53:11] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"5ebbecd0-866c-443f-965f-b6ac03735379","trace_id":"e0a724a5-bb4b-4fe6-9fe9-36ea1c3f0326"}
[2026-05-07 12:53:11] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"5ebbecd0-866c-443f-965f-b6ac03735379","trace_id":"e0a724a5-bb4b-4fe6-9fe9-36ea1c3f0326"}
[2026-05-07 12:53:18] local.NOTICE: Monitoring start {"correlation_id":"f39f0d3c-a292-41cb-8834-45dae1f8cf47","trace_id":"b6e7e2a7-85af-401d-afc6-bec2bdab34d7"}
[2026-05-07 12:53:18] local.NOTICE: Monitoring end {"correlation_id":"f39f0d3c-a292-41cb-8834-45dae1f8cf47","trace_id":"b6e7e2a7-85af-401d-afc6-bec2bdab34d7"}
[2026-05-07 12:53:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"419bb747-2669-496f-944b-1073496cc271","trace_id":"4cb913a4-ef75-422b-80eb-fbfb988521ed"}
[2026-05-07 12:53:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"419bb747-2669-496f-944b-1073496cc271","trace_id":"4cb913a4-ef75-422b-80eb-fbfb988521ed"}
[2026-05-07 12:53:22] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"f4805c97-9344-4111-8be2-2b1efeae07bb","trace_id":"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22"}
[2026-05-07 12:53:22] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"f4805c97-9344-4111-8be2-2b1efeae07bb","trace_id":"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22"}
[2026-05-07 12:53:22] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"f4805c97-9344-4111-8be2-2b1efeae07bb","trace_id":"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22"}
[2026-05-07 12:53:22] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"f4805c97-9344-4111-8be2-2b1efeae07bb","trace_id":"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22"}
[2026-05-07 12:53:25] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:retry-failed","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"2eadb06b-2c2e-4a7f-8920-77bd30d6cd7f","trace_id":"75f27a23-2021-41a5-9e5f-4b1cb4f143a6"}
[2026-05-07 12:53:25] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:retry-failed","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"2eadb06b-2c2e-4a7f-8920-77bd30d6cd7f","trace_id":"75f27a23-2021-41a5-9e5f-4b1cb4f143a6"}
[2026-05-07 12:54:06] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"ad151521-f676-4351-a70b-f44dc0b94990","trace_id":"17e39c4c-85cb-49a4-815e-b7315a8c2249"}
[2026-05-07 12:54:06] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"ad151521-f676-4351-a70b-f44dc0b94990","trace_id":"17e39c4c-85cb-49a4-815e-b7315a8c2249"}
[2026-05-07 12:54:06] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"ad151521-f676-4351-a70b-f44dc0b94990","trace_id":"17e39c4c-85cb-49a4-815e-b7315a8c2249"}
[2026-05-07 12:54:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"ed0583cf-03c6-4696-b859-876c8efa4473","trace_id":"3f9e0a3c-2178-4885-95eb-8618b8cfc042"}
[2026-05-07 12:54:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"ed0583cf-03c6-4696-b859-876c8efa4473","trace_id":"3f9e0a3c-2178-4885-95eb-8618b8cfc042"}
[2026-05-07 12:54:10] local.NOTICE: Monitoring start {"correlation_id":"7142250a-b897-4620-8ff7-fd9b3a1f3802","trace_id":"597def1e-ca38-4cc4-8890-fdcd5baff948"}
[2026-05-07 12:54:10] local.NOTICE: Monitoring end {"correlation_id":"7142250a-b897-4620-8ff7-fd9b3a1f3802","trace_id":"597def1e-ca38-4cc4-8890-fdcd5baff948"}
[2026-05-07 12:54:12] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"cb2ada48-0200-4eb3-a8c5-6cb8ea43ec0d","trace_id":"73937bdc-10b9-4508-9ef2-86420fe774fc"}
[2026-05-07 12:54:12] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"cb2ada48-0200-4eb3-a8c5-6cb8ea43ec0d","trace_id":"73937bdc-10b9-4508-9ef2-86420fe774fc"}
[2026-05-07 12:54:14] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"8f1d8932-2839-4256-99ab-1fd13e8381c6","trace_id":"cc090767-edc2-4a89-90c2-116f1737de7f"}
[2026-05-07 12:54:14] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"8f1d8932-2839-4256-99ab-1fd13e8381c6","trace_id":"cc090767-edc2-4a89-90c2-116f1737de7f"}
[2026-05-07 12:54:14] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"8f1d8932-2839-4256-99ab-1fd13e8381c6","trace_id":"cc090767-edc2-4a89-90c2-116f1737de7f"}
[2026-05-07 12:54:14] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"8f1d8932-2839-4256-99ab-1fd13e8381c6","trace_id":"cc090767-edc2-4a89-90c2-116f1737de7f"}
[2026-05-07 12:54:16] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:count","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"9d324c6d-5b36-46ee-89c6-f95f86bf3f39","trace_id":"860cdff0-9356-4e94-84cc-e011a74ba56c"}
[2026-05-07 12:54:16] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:52:00, 2026-05-07 12:54:00] {"correlation_id":"9d324c6d-5b36-46ee-89c6-f95f86bf3f39","trace_id":"860cdff0-9356-4e94-84cc-e011a74ba56c"}
[2026-05-07 12:54:16] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:52:00, 2026-05-07 12:54:00] {"correlation_id":"9d324c6d-5b36-46ee-89c6-f95f86bf3f39","trace_id":"860cdff0-9356-4e94-84cc-e011a74ba56c"}
[2026-05-07 12:54:16] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:count","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"9d324c6d-5b36-46ee-89c6-f95f86bf3f39","trace_id":"860cdff0-9356-4e94-84cc-e011a74ba56c"}
[2026-05-07 12:54:18] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"activity:aircall:check-and-renew","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"c2009a88-eea6-4954-8642-ef5d9cb56b42","trace_id":"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab"}
[2026-05-07 12:54:18] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1496,"provider":"aircall"} {"correlation_id":"c2009a88-eea6-4954-8642-ef5d9cb56b42","trace_id":"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab"}
[2026-05-07 12:54:18] local.INFO: [SocialAccountService] Token retrieved {"socialAccountId":1496,"provider":"aircall"} {"correlation_id":"c2009a88-eea6-4954-8642-ef5d9cb56b42","trace_id":"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab"}
[2026-05-07 12:54:18] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"c2009a88-eea6-4954-8642-ef5d9cb56b42","trace_id":"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab"}
[2026-05-07 12:54:19] local.ERROR: [Aircall] Re-activating webhooks failed {"team_id":1,"reason":"{\"message\":\"Forbidden\"}"} {"correlation_id":"c2009a88-eea6-4954-8642-ef5d9cb56b42","trace_id":"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab"}
[2026-05-07 12:54:19] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"activity:aircall:check-and-renew","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"c2009a88-eea6-4954-8642-ef5d9cb56b42","trace_id":"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab"}
[2026-05-07 12:54:21] local.INFO: [RetryFailedDownloads] Starting {"options":{"from":null,"to":null,"help":false,"silent":false,"quiet":false,"verbose":false,"version":false,"ansi":null,"no-interaction":false,"env":null}} {"correlation_id":"825ef2d7-b5f8-45cd-b19d-20a179b06934","trace_id":"5825a6c8-14c9-4bec-b688-d4895cfc41cc"}
[2026-05-07 12:55:05] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"c0dc8e25-7a51-4023-be61-d0abd6d72e37","trace_id":"16b8fa3e-92b1-465e-82d4-642a2d14c7c5"}
[2026-05-07 12:55:05] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"c0dc8e25-7a51-4023-be61-d0abd6d72e37","trace_id":"16b8fa3e-92b1-465e-82d4-642a2d14c7c5"}
[2026-05-07 12:55:05] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"c0dc8e25-7a51-4023-be61-d0abd6d72e37","trace_id":"16b8fa3e-92b1-465e-82d4-642a2d14c7c5"}
[2026-05-07 12:55:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"1c65fdd1-1f79-435d-b469-add46ddafd63","trace_id":"62f2a3bb-3be7-4c76-a9dd-222bfb895fab"}
[2026-05-07 12:55:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"1c65fdd1-1f79-435d-b469-add46ddafd63","trace_id":"62f2a3bb-3be7-4c76-a9dd-222bfb895fab"}
[2026-05-07 12:55:11] local.NOTICE: Monitoring start {"correlation_id":"f115f9bc-bb59-4fc9-8c9f-8b69baba1a55","trace_id":"e75cb5c6-6dd8-4000-8d26-4418020c7cfe"}
[2026-05-07 12:55:11] local.NOTICE: Monitoring end {"correlation_id":"f115f9bc-bb59-4fc9-8c9f-8b69baba1a55","trace_id":"e75cb5c6-6dd8-4000-8d26-4418020c7cfe"}
[2026-05-07 12:55:14] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"dba5c474-4d40-44da-baf2-f8b30db9a2f5","trace_id":"adb45622-1fb0-457c-bf20-8dcceab2d62a"}
[2026-05-07 12:55:14] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"dba5c474-4d40-44da-baf2-f8b30db9a2f5","trace_id":"adb45622-1fb0-457c-bf20-8dcceab2d62a"}
[2026-05-07 12:55:16] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"22c96a8e-4424-4a1f-b349-206276eefe4c","trace_id":"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c"}
[2026-05-07 12:55:16] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"22c96a8e-4424-4a1f-b349-206276eefe4c","trace_id":"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c"}
[2026-05-07 12:55:16] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"22c96a8e-4424-4a1f-b349-206276eefe4c","trace_id":"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c"}
[2026-05-07 12:55:16] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"22c96a8e-4424-4a1f-b349-206276eefe4c","trace_id":"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c"}
[2026-05-07 12:55:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"activity:purge-stale","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"5f958e8d-1d01-4144-abd6-2513e5524ad3","trace_id":"828bc5b7-e2aa-4443-901f-38dd94bb7cc5"}
[2026-05-07 12:55:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"activity:purge-stale","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"5f958e8d-1d01-4144-abd6-2513e5524ad3","trace_id":"828bc5b7-e2aa-4443-901f-38dd94bb7cc5"}
[2026-05-07 12:55:22] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:text-relay:sync","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"6bd1c9cb-cd9a-42a9-87fe-45cb7bac687a","trace_id":"0f2f5d66-c4c9-46a5-a31b-6937663ce1ad"}
[2026-05-07 12:55:22] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:text-relay:sync","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"6bd1c9cb-cd9a-42a9-87fe-45cb7bac687a","trace_id":"0f2f5d66-c4c9-46a5-a31b-6937663ce1ad"}
[2026-05-07 12:55:24] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:pre-meeting-notification","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"c5dd8132-d7e1-4caa-84d1-0a50d02df8da","trace_id":"bc7341c5-b8e2-48ea-9670-7ec375363180"}
[2026-05-07 12:55:24] local.INFO: Running pre-meeting notification command {"correlation_id":"c5dd8132-d7e1-4caa-84d1-0a50d02df8da","trace_id":"bc7341c5-b8e2-48ea-9670-7ec375363180"}
[2026-05-07 12:55:24] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:pre-meeting-notification","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"c5dd8132-d7e1-4caa-84d1-0a50d02df8da","trace_id":"bc7341c5-b8e2-48ea-9670-7ec375363180"}
[2026-05-07 12:55:26] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:start","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0","trace_id":"efb1619f-4185-4319-9bfb-305cee0b6bfc"}
[2026-05-07 12:55:26] local.INFO: Running conference:monitor:start command for activities in (2026-05-07 12:45:00, 2026-05-07 12:50:00] {"correlation_id":"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0","trace_id":"efb1619f-4185-4319-9bfb-305cee0b6bfc"}
[2026-05-07 12:55:26] local.INFO: [conference:monitor:start] No activities found in (2026-05-07 12:45:00, 2026-05-07 12:50:00] {"correlation_id":"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0","trace_id":"efb1619f-4185-4319-9bfb-305cee0b6bfc"}
[2026-05-07 12:55:26] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:start","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0","trace_id":"efb1619f-4185-4319-9bfb-305cee0b6bfc"}
[2026-05-07 12:55:28] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:end","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"3792b31a-080a-4fe4-9823-5602361325ba","trace_id":"41a2fde1-48f6-4667-84b7-a2f93e9ad2da"}
[2026-05-07 12:55:28] local.INFO: conference:monitor:end:Jiminny\Console\Commands\Activities\MonitorMeetingEndCommand::logActivitiesEnded {"from":"12:50","to":"12:55"} {"correlation_id":"3792b31a-080a-4fe4-9823-5602361325ba","trace_id":"41a2fde1-48f6-4667-84b7-a2f93e9ad2da"}
[2026-05-07 12:55:28] local.INFO: conference:monitor:end:Jiminny\Console\Commands\Activities\MonitorMeetingEndCommand::logActivitiesWithUnfinishedSession {"from":"02:45","to":"02:50"} {"correlation_id":"3792b31a-080a-4fe4-9823-5602361325ba","trace_id":"41a2fde1-48f6-4667-84b7-a2f93e9ad2da"}
[2026-05-07 12:55:28] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:end","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"3792b31a-080a-4fe4-9823-5602361325ba","trace_id":"41a2fde1-48f6-4667-84b7-a2f93e9ad2da"}
[2026-05-07 12:55:30] local.NOTICE: Repairing HubSpot tokens start {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:30] local.INFO: Trying to refresh HubSpot token {"account_id":59,"updated_at":"2025-10-03 09:32:05"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:30] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:30] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":59,"provider":"hubspot","refreshToken":"97b78f6e2cc49965c00c2492b602b02708b1392551e6b3f113fbaa48992af90b","state":"full-refresh"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.ERROR: Failed to refresh HubSpot token {"account_id":59,"updated_at":"2025-10-03 09:32:05","reason":"missing or invalid refresh token","previous":""} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.INFO: Trying to refresh HubSpot token {"account_id":306,"updated_at":"2023-11-27 09:30:03"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":306,"provider":"hubspot","refreshToken":"6fa6aa8cc641d131231acc3470f5c03cb3b07b2e580fb18f8acb3b1dbb72549b","state":"full-refresh"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.ERROR: Failed to refresh HubSpot token {"account_id":306,"updated_at":"2023-11-27 09:30:03","reason":"missing or invalid refresh token","previous":""} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.INFO: Trying to refresh HubSpot token {"account_id":1372,"updated_at":"2025-10-02 14:47:06"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1372,"provider":"hubspot","refreshToken":"9aa73948c761da29dce46c177cf9aee1fde483a44169ca38723f9f0597d7a8c4","state":"full-refresh"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:32] local.ERROR: Failed to refresh HubSpot token {"account_id":1372,"updated_at":"2025-10-02 14:47:06","reason":"missing or invalid refresh token","previous":""} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:32] local.NOTICE: Repairing HubSpot tokens end {"total":3,"fixed":0,"failed":3} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:40] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"crm:bullhorn:ping","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"5e676ae4-5d63-49d4-9001-559088adf06b","trace_id":"2fcce073-dd68-4c99-b7c4-b9e03c20b8e4"}
[2026-05-07 12:55:40] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:pre-meeting-reminder","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"1f830896-8142-41d1-bfc9-4cbb9179ffda","trace_id":"e348a096-7f37-4308-a6d8-66131e8be901"}
[2026-05-07 12:55:40] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"crm:bullhorn:ping","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"5e676ae4-5d63-49d4-9001-559088adf06b","trace_id":"2fcce073-dd68-4c99-b7c4-b9e03c20b8e4"}
[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Command] Starting polling service {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Service starting {"memory_limit":"256M","max_execution_time":"0","initial_memory_mb":62.0} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Acquired polling lock {"expires_at":"2026-05-07T12:57:40.609671Z"} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:40] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:40] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:pre-meeting-reminder","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"1f830896-8142-41d1-bfc9-4cbb9179ffda","trace_id":"e348a096-7f37-4308-a6d8-66131e8be901"}
[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:45] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:45] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:46] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:51] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:51] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:51] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:06] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:06] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:06] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"2d8b30b4-87aa-480f-9b9e-5a9c709b742a","trace_id":"25b7be6c-1faf-430b-a724-a4ff28773a31"}
[2026-05-07 12:56:08] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"2d8b30b4-87aa-480f-9b9e-5a9c709b742a","trace_id":"25b7be6c-1faf-430b-a724-a4ff28773a31"}
[2026-05-07 12:56:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"2d8b30b4-87aa-480f-9b9e-5a9c709b742a","trace_id":"25b7be6c-1faf-430b-a724-a4ff28773a31"}
[2026-05-07 12:56:10] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"efd336d7-db4d-459e-b6e7-bf73454e955e","trace_id":"0a82c3d5-0417-48c8-b88f-70ec33e2326a"}
[2026-05-07 12:56:10] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"efd336d7-db4d-459e-b6e7-bf73454e955e","trace_id":"0a82c3d5-0417-48c8-b88f-70ec33e2326a"}
[2026-05-07 12:56:12] local.NOTICE: Monitoring start {"correlation_id":"68481576-8ca6-4ee5-821b-07374702971d","trace_id":"c73eac09-5d20-425f-9c22-bd6c65fc60c9"}
[2026-05-07 12:56:12] local.NOTICE: Monitoring end {"correlation_id":"68481576-8ca6-4ee5-821b-07374702971d","trace_id":"c73eac09-5d20-425f-9c22-bd6c65fc60c9"}
[2026-05-07 12:56:17] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"bd0cdc75-b5c2-4dbb-bc44-e36c96813d24","trace_id":"f688cd98-c171-4e30-8c72-afc14f040861"}
[2026-05-07 12:56:17] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"bd0cdc75-b5c2-4dbb-bc44-e36c96813d24","trace_id":"f688cd98-c171-4e30-8c72-afc14f040861"}
[2026-05-07 12:56:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"f01636a9-4059-4ab0-9ad2-b078d42cedbd","trace_id":"fea938d8-aedc-40ec-b8c2-2f487e1ac808"}
[2026-05-07 12:56:20] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"f01636a9-4059-4ab0-9ad2-b078d42cedbd","trace_id":"fea938d8-aedc-40ec-b8c2-2f487e1ac808"}
[2026-05-07 12:56:20] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"f01636a9-4059-4ab0-9ad2-b078d42cedbd","trace_id":"fea938d8-aedc-40ec-b8c2-2f487e1ac808"}
[2026-05-07 12:56:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"f01636a9-4059-4ab0-9ad2-b078d42cedbd","trace_id":"fea938d8-aedc-40ec-b8c2-2f487e1ac808"}
[2026-05-07 12:56:23] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:count","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"d4558901-264d-4238-8589-62a137bac1fd","trace_id":"38e6b5dc-ebd6-46a7-8224-7374d4e58630"}
[2026-05-07 12:56:23] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:54:00, 2026-05-07 12:56:00] {"correlation_id":"d4558901-264d-4238-8589-62a137bac1fd","trace_id":"38e6b5dc-ebd6-46a7-8224-7374d4e58630"}
[2026-05-07 12:56:23] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:54:00, 2026-05-07 12:56:00] {"correlation_id":"d4558901-264d-4238-8589-62a137bac1fd","trace_id":"38e6b5dc-ebd6-46a7-8224-7374d4e58630"}
[2026-05-07 12:56:23] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:count","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"d4558901-264d-4238-8589-62a137bac1fd","trace_id":"38e6b5dc-ebd6-46a7-8224-7374d4e58630"}
[2026-05-07 12:56:24] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"crm:sync-hubspot-objects","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"7bfaf9be-0ca1-4170-a0c9-83e0ed61881c","trace_id":"ba7f9eee-8dcb-4c94-acb0-18f9363757ad"}
[2026-05-07 12:56:24] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"crm:sync-hubspot-objects","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"7bfaf9be-0ca1-4170-a0c9-83e0ed61881c","trace_id":"ba7f9eee-8dcb-4c94-acb0-18f9363757ad"}
[2026-05-07 12:56:26] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"activity:notify-not-logged","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"2541e0fa-1117-4863-9523-d723b5821a24","trace_id":"d9600320-5133-4938-bdd1-2256dfdf8db4"}
[2026-05-07 12:56:26] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"activity:notify-not-logged","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"2541e0fa-1117-4863-9523-d723b5821a24","trace_id":"d9600320-5133-4938-bdd1-2256dfdf8db4"}
[2026-05-07 12:56:35] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:sync","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"e444f776-37db-4c6d-b30e-20b01a089de7","trace_id":"1168869e-e07c-4702-a046-42fc95a91f6d"}
[2026-05-07 12:56:36] local.INFO: [EmailSchedule] STARTING Inbox Sync {"host":"docker_lamp_1"} {"correlation_id":"e444f776-37db-4c6d-b30e-20b01a089de7","trace_id":"1168869e-e07c-4702-a046-42fc95a91f6d"}
[2026-05-07 12:56:36] local.INFO: [EmailSchedule] FINISHED Inbox Sync {"host":"docker_lamp_1","events":2} {"correlation_id":"e444f776-37db-4c6d-b30e-20b01a089de7","trace_id":"1168869e-e07c-4702-a046-42fc95a91f6d"}
[2026-05-07 12:56:36] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:sync","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"e444f776-37db-4c6d-b30e-20b01a089de7","trace_id":"1168869e-e07c-4702-a046-42fc95a91f6d"}
[2026-05-07 12:56:36] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:36] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:36] local.INFO: [HubSpot Journal Auth] Requesting new client credentials token {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:37] local.INFO: [HubSpot Journal Auth] Successfully obtained new access token {"expires_in":1800,"cached_for":1500} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:37] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:37] local.WARNING: [HubSpot Journal Polling] Maximum empty results reached, stopping {"empty_results":5,"max_empty_results":5} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:37] local.WARNING: [HubSpot Journal Polling] Maximum empty results reached, stopping {"empty_results":5,"max_empty_results":5} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:37] local.INFO: [HubSpot Journal Polling] Service ending {"runtime_seconds":57,"total_cycles":5,"files_downloaded":0,"empty_files":0,"other_portal_skipped":0,"total_events":0,"events_per_file":0,"avg_api_ms":238.3,"avg_download_ms":0.0,"avg_transform_ms":0.0,"avg_process_ms":0.0,"peak_memory_mb":99.73} {"correlation_id"...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"on_screen":true,"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"master, menu","depth":5,"on_screen":true,"help_text":"Git Branch: master<br/>Some incoming commits are not fetched<br/>","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Start Listening for PHP Debug Connections","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"AskJiminnyReportActivityServiceTest","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'AskJiminnyReportActivityServiceTest'","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'AskJiminnyReportActivityServiceTest'","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More Actions","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JetBrains AI","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Search Everywhere","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"IDE and Project Settings","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Show Replace Field","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Search History","depth":3,"on_screen":true,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"retry_error","depth":4,"on_screen":true,"value":"retry_error","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"New Line","depth":3,"on_screen":true,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Match Case","depth":3,"on_screen":true,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Words","depth":3,"on_screen":true,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Regex","depth":3,"on_screen":true,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Replace History","depth":3,"bounds":{"left":0.0,"top":0.0,"width":0.015277778,"height":0.024444444},"on_screen":false,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"Replace","depth":4,"on_screen":false,"role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"New Line","depth":3,"bounds":{"left":0.0,"top":0.0,"width":0.015277778,"height":0.024444444},"on_screen":false,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Preserve case","depth":3,"bounds":{"left":0.0,"top":0.0,"width":0.015277778,"height":0.024444444},"on_screen":false,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"0 results","depth":4,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Previous Occurrence","depth":4,"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Occurrence","depth":4,"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Filter Search Results","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Open in Window, Multiple Cursors","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Click to highlight","depth":4,"on_screen":false,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.088194445,"height":0.027777778},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"934","depth":4,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Highlighted Error","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"[2026-05-07 12:52:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"fa8a3008-d298-4682-bbbc-fdc77520e0d7\",\"trace_id\":\"7cfb2afb-9fc4-4a77-81be-65dce93c7d80\"}\n[2026-05-07 12:52:08] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"fa8a3008-d298-4682-bbbc-fdc77520e0d7\",\"trace_id\":\"7cfb2afb-9fc4-4a77-81be-65dce93c7d80\"}\n[2026-05-07 12:52:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"fa8a3008-d298-4682-bbbc-fdc77520e0d7\",\"trace_id\":\"7cfb2afb-9fc4-4a77-81be-65dce93c7d80\"}\n[2026-05-07 12:52:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"932ced9d-9804-48ed-976a-1f8bf5e75707\",\"trace_id\":\"21bf320c-58f3-4082-831d-9f07f6c6a669\"}\n[2026-05-07 12:52:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"932ced9d-9804-48ed-976a-1f8bf5e75707\",\"trace_id\":\"21bf320c-58f3-4082-831d-9f07f6c6a669\"}\n[2026-05-07 12:52:17] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:17] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:17] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:17] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":148,\"team_id\":2} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:17] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.55,\"average_seconds_per_request\":0.55} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:18] local.NOTICE: Monitoring start {\"correlation_id\":\"ae3ec78f-432c-4e22-b73b-0413af73d9f3\",\"trace_id\":\"c2feb517-0f2b-4ad9-bce5-4d57476a164b\"}\n[2026-05-07 12:52:18] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.51,\"average_seconds_per_request\":0.51} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:18] local.NOTICE: Monitoring end {\"correlation_id\":\"ae3ec78f-432c-4e22-b73b-0413af73d9f3\",\"trace_id\":\"c2feb517-0f2b-4ad9-bce5-4d57476a164b\"}\n[2026-05-07 12:52:18] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.48,\"average_seconds_per_request\":0.48} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:19] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.49,\"average_seconds_per_request\":0.49} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:19] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.49,\"average_seconds_per_request\":0.49} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"2bf2f73f-007c-4909-925e-f1749fbf87b3\",\"trace_id\":\"8429123c-d92c-48d9-a154-29bc0aa0e2a1\"}\n[2026-05-07 12:52:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"2bf2f73f-007c-4909-925e-f1749fbf87b3\",\"trace_id\":\"8429123c-d92c-48d9-a154-29bc0aa0e2a1\"}\n[2026-05-07 12:52:20] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.48,\"average_seconds_per_request\":0.48} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:20] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.62,\"average_seconds_per_request\":0.62} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:21] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.78,\"average_seconds_per_request\":0.78} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:22] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":1.21,\"average_seconds_per_request\":1.21} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:23] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.53,\"average_seconds_per_request\":0.53} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8\",\"trace_id\":\"64ccac6b-34f7-45ed-a8ac-b63adbb19107\"}\n[2026-05-07 12:52:25] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8\",\"trace_id\":\"64ccac6b-34f7-45ed-a8ac-b63adbb19107\"}\n[2026-05-07 12:52:26] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8\",\"trace_id\":\"64ccac6b-34f7-45ed-a8ac-b63adbb19107\"}\n[2026-05-07 12:52:26] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8\",\"trace_id\":\"64ccac6b-34f7-45ed-a8ac-b63adbb19107\"}\n[2026-05-07 12:52:28] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"6e1a36d0-a87a-455f-88b9-04f16718ea33\",\"trace_id\":\"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c\"}\n[2026-05-07 12:52:28] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:50:00, 2026-05-07 12:52:00] {\"correlation_id\":\"6e1a36d0-a87a-455f-88b9-04f16718ea33\",\"trace_id\":\"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c\"}\n[2026-05-07 12:52:28] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:50:00, 2026-05-07 12:52:00] {\"correlation_id\":\"6e1a36d0-a87a-455f-88b9-04f16718ea33\",\"trace_id\":\"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c\"}\n[2026-05-07 12:52:28] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"6e1a36d0-a87a-455f-88b9-04f16718ea33\",\"trace_id\":\"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c\"}\n[2026-05-07 12:52:31] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:create\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"80549428-beea-4a6c-97d3-818ca0f059f3\",\"trace_id\":\"55ddd59b-073b-4331-8cdb-baa869dcff70\"}\n[2026-05-07 12:52:31] local.INFO: [EmailSchedule] STARTING batch create {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"80549428-beea-4a6c-97d3-818ca0f059f3\",\"trace_id\":\"55ddd59b-073b-4331-8cdb-baa869dcff70\"}\n[2026-05-07 12:52:31] local.INFO: [EmailSchedule] FINISHED batch create {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"80549428-beea-4a6c-97d3-818ca0f059f3\",\"trace_id\":\"55ddd59b-073b-4331-8cdb-baa869dcff70\"}\n[2026-05-07 12:52:31] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:create\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"80549428-beea-4a6c-97d3-818ca0f059f3\",\"trace_id\":\"55ddd59b-073b-4331-8cdb-baa869dcff70\"}\n[2026-05-07 12:52:32] local.INFO: [Jiminny\\Jobs\\Mailbox\\CreateBatches] processed 2 inboxes and created 0 batches {\"userId\":null,\"batchSize\":30,\"maxBatches\":1000} {\"correlation_id\":\"92242bd6-7014-4487-a50b-1570e1a88e7a\",\"trace_id\":\"55ddd59b-073b-4331-8cdb-baa869dcff70\"}\n[2026-05-07 12:52:39] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"d467eace-3254-4ecc-8d8e-a94688d6d3ad\",\"trace_id\":\"5105ca8f-3c0d-4798-b748-5a7d6fbd7531\"}\n[2026-05-07 12:52:39] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"d467eace-3254-4ecc-8d8e-a94688d6d3ad\",\"trace_id\":\"5105ca8f-3c0d-4798-b748-5a7d6fbd7531\"}\n[2026-05-07 12:53:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"04363b29-2f82-470a-89d0-c5ce4f4779d7\",\"trace_id\":\"3c76a1f1-3348-4e2b-897c-4a216ca95147\"}\n[2026-05-07 12:53:08] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"04363b29-2f82-470a-89d0-c5ce4f4779d7\",\"trace_id\":\"3c76a1f1-3348-4e2b-897c-4a216ca95147\"}\n[2026-05-07 12:53:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"04363b29-2f82-470a-89d0-c5ce4f4779d7\",\"trace_id\":\"3c76a1f1-3348-4e2b-897c-4a216ca95147\"}\n[2026-05-07 12:53:11] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"5ebbecd0-866c-443f-965f-b6ac03735379\",\"trace_id\":\"e0a724a5-bb4b-4fe6-9fe9-36ea1c3f0326\"}\n[2026-05-07 12:53:11] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"5ebbecd0-866c-443f-965f-b6ac03735379\",\"trace_id\":\"e0a724a5-bb4b-4fe6-9fe9-36ea1c3f0326\"}\n[2026-05-07 12:53:18] local.NOTICE: Monitoring start {\"correlation_id\":\"f39f0d3c-a292-41cb-8834-45dae1f8cf47\",\"trace_id\":\"b6e7e2a7-85af-401d-afc6-bec2bdab34d7\"}\n[2026-05-07 12:53:18] local.NOTICE: Monitoring end {\"correlation_id\":\"f39f0d3c-a292-41cb-8834-45dae1f8cf47\",\"trace_id\":\"b6e7e2a7-85af-401d-afc6-bec2bdab34d7\"}\n[2026-05-07 12:53:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"419bb747-2669-496f-944b-1073496cc271\",\"trace_id\":\"4cb913a4-ef75-422b-80eb-fbfb988521ed\"}\n[2026-05-07 12:53:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"419bb747-2669-496f-944b-1073496cc271\",\"trace_id\":\"4cb913a4-ef75-422b-80eb-fbfb988521ed\"}\n[2026-05-07 12:53:22] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"f4805c97-9344-4111-8be2-2b1efeae07bb\",\"trace_id\":\"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22\"}\n[2026-05-07 12:53:22] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"f4805c97-9344-4111-8be2-2b1efeae07bb\",\"trace_id\":\"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22\"}\n[2026-05-07 12:53:22] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"f4805c97-9344-4111-8be2-2b1efeae07bb\",\"trace_id\":\"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22\"}\n[2026-05-07 12:53:22] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"f4805c97-9344-4111-8be2-2b1efeae07bb\",\"trace_id\":\"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22\"}\n[2026-05-07 12:53:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"2eadb06b-2c2e-4a7f-8920-77bd30d6cd7f\",\"trace_id\":\"75f27a23-2021-41a5-9e5f-4b1cb4f143a6\"}\n[2026-05-07 12:53:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"2eadb06b-2c2e-4a7f-8920-77bd30d6cd7f\",\"trace_id\":\"75f27a23-2021-41a5-9e5f-4b1cb4f143a6\"}\n[2026-05-07 12:54:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"ad151521-f676-4351-a70b-f44dc0b94990\",\"trace_id\":\"17e39c4c-85cb-49a4-815e-b7315a8c2249\"}\n[2026-05-07 12:54:06] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"ad151521-f676-4351-a70b-f44dc0b94990\",\"trace_id\":\"17e39c4c-85cb-49a4-815e-b7315a8c2249\"}\n[2026-05-07 12:54:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"ad151521-f676-4351-a70b-f44dc0b94990\",\"trace_id\":\"17e39c4c-85cb-49a4-815e-b7315a8c2249\"}\n[2026-05-07 12:54:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"ed0583cf-03c6-4696-b859-876c8efa4473\",\"trace_id\":\"3f9e0a3c-2178-4885-95eb-8618b8cfc042\"}\n[2026-05-07 12:54:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"ed0583cf-03c6-4696-b859-876c8efa4473\",\"trace_id\":\"3f9e0a3c-2178-4885-95eb-8618b8cfc042\"}\n[2026-05-07 12:54:10] local.NOTICE: Monitoring start {\"correlation_id\":\"7142250a-b897-4620-8ff7-fd9b3a1f3802\",\"trace_id\":\"597def1e-ca38-4cc4-8890-fdcd5baff948\"}\n[2026-05-07 12:54:10] local.NOTICE: Monitoring end {\"correlation_id\":\"7142250a-b897-4620-8ff7-fd9b3a1f3802\",\"trace_id\":\"597def1e-ca38-4cc4-8890-fdcd5baff948\"}\n[2026-05-07 12:54:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"cb2ada48-0200-4eb3-a8c5-6cb8ea43ec0d\",\"trace_id\":\"73937bdc-10b9-4508-9ef2-86420fe774fc\"}\n[2026-05-07 12:54:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"cb2ada48-0200-4eb3-a8c5-6cb8ea43ec0d\",\"trace_id\":\"73937bdc-10b9-4508-9ef2-86420fe774fc\"}\n[2026-05-07 12:54:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"8f1d8932-2839-4256-99ab-1fd13e8381c6\",\"trace_id\":\"cc090767-edc2-4a89-90c2-116f1737de7f\"}\n[2026-05-07 12:54:14] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"8f1d8932-2839-4256-99ab-1fd13e8381c6\",\"trace_id\":\"cc090767-edc2-4a89-90c2-116f1737de7f\"}\n[2026-05-07 12:54:14] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"8f1d8932-2839-4256-99ab-1fd13e8381c6\",\"trace_id\":\"cc090767-edc2-4a89-90c2-116f1737de7f\"}\n[2026-05-07 12:54:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"8f1d8932-2839-4256-99ab-1fd13e8381c6\",\"trace_id\":\"cc090767-edc2-4a89-90c2-116f1737de7f\"}\n[2026-05-07 12:54:16] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"9d324c6d-5b36-46ee-89c6-f95f86bf3f39\",\"trace_id\":\"860cdff0-9356-4e94-84cc-e011a74ba56c\"}\n[2026-05-07 12:54:16] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:52:00, 2026-05-07 12:54:00] {\"correlation_id\":\"9d324c6d-5b36-46ee-89c6-f95f86bf3f39\",\"trace_id\":\"860cdff0-9356-4e94-84cc-e011a74ba56c\"}\n[2026-05-07 12:54:16] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:52:00, 2026-05-07 12:54:00] {\"correlation_id\":\"9d324c6d-5b36-46ee-89c6-f95f86bf3f39\",\"trace_id\":\"860cdff0-9356-4e94-84cc-e011a74ba56c\"}\n[2026-05-07 12:54:16] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"9d324c6d-5b36-46ee-89c6-f95f86bf3f39\",\"trace_id\":\"860cdff0-9356-4e94-84cc-e011a74ba56c\"}\n[2026-05-07 12:54:18] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:aircall:check-and-renew\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"c2009a88-eea6-4954-8642-ef5d9cb56b42\",\"trace_id\":\"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab\"}\n[2026-05-07 12:54:18] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1496,\"provider\":\"aircall\"} {\"correlation_id\":\"c2009a88-eea6-4954-8642-ef5d9cb56b42\",\"trace_id\":\"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab\"}\n[2026-05-07 12:54:18] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1496,\"provider\":\"aircall\"} {\"correlation_id\":\"c2009a88-eea6-4954-8642-ef5d9cb56b42\",\"trace_id\":\"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab\"}\n[2026-05-07 12:54:18] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"c2009a88-eea6-4954-8642-ef5d9cb56b42\",\"trace_id\":\"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab\"}\n[2026-05-07 12:54:19] local.ERROR: [Aircall] Re-activating webhooks failed {\"team_id\":1,\"reason\":\"{\\\"message\\\":\\\"Forbidden\\\"}\"} {\"correlation_id\":\"c2009a88-eea6-4954-8642-ef5d9cb56b42\",\"trace_id\":\"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab\"}\n[2026-05-07 12:54:19] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:aircall:check-and-renew\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"c2009a88-eea6-4954-8642-ef5d9cb56b42\",\"trace_id\":\"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab\"}\n[2026-05-07 12:54:21] local.INFO: [RetryFailedDownloads] Starting {\"options\":{\"from\":null,\"to\":null,\"help\":false,\"silent\":false,\"quiet\":false,\"verbose\":false,\"version\":false,\"ansi\":null,\"no-interaction\":false,\"env\":null}} {\"correlation_id\":\"825ef2d7-b5f8-45cd-b19d-20a179b06934\",\"trace_id\":\"5825a6c8-14c9-4bec-b688-d4895cfc41cc\"}\n[2026-05-07 12:55:05] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"c0dc8e25-7a51-4023-be61-d0abd6d72e37\",\"trace_id\":\"16b8fa3e-92b1-465e-82d4-642a2d14c7c5\"}\n[2026-05-07 12:55:05] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"c0dc8e25-7a51-4023-be61-d0abd6d72e37\",\"trace_id\":\"16b8fa3e-92b1-465e-82d4-642a2d14c7c5\"}\n[2026-05-07 12:55:05] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"c0dc8e25-7a51-4023-be61-d0abd6d72e37\",\"trace_id\":\"16b8fa3e-92b1-465e-82d4-642a2d14c7c5\"}\n[2026-05-07 12:55:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"1c65fdd1-1f79-435d-b469-add46ddafd63\",\"trace_id\":\"62f2a3bb-3be7-4c76-a9dd-222bfb895fab\"}\n[2026-05-07 12:55:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"1c65fdd1-1f79-435d-b469-add46ddafd63\",\"trace_id\":\"62f2a3bb-3be7-4c76-a9dd-222bfb895fab\"}\n[2026-05-07 12:55:11] local.NOTICE: Monitoring start {\"correlation_id\":\"f115f9bc-bb59-4fc9-8c9f-8b69baba1a55\",\"trace_id\":\"e75cb5c6-6dd8-4000-8d26-4418020c7cfe\"}\n[2026-05-07 12:55:11] local.NOTICE: Monitoring end {\"correlation_id\":\"f115f9bc-bb59-4fc9-8c9f-8b69baba1a55\",\"trace_id\":\"e75cb5c6-6dd8-4000-8d26-4418020c7cfe\"}\n[2026-05-07 12:55:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"dba5c474-4d40-44da-baf2-f8b30db9a2f5\",\"trace_id\":\"adb45622-1fb0-457c-bf20-8dcceab2d62a\"}\n[2026-05-07 12:55:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"dba5c474-4d40-44da-baf2-f8b30db9a2f5\",\"trace_id\":\"adb45622-1fb0-457c-bf20-8dcceab2d62a\"}\n[2026-05-07 12:55:16] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"22c96a8e-4424-4a1f-b349-206276eefe4c\",\"trace_id\":\"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c\"}\n[2026-05-07 12:55:16] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"22c96a8e-4424-4a1f-b349-206276eefe4c\",\"trace_id\":\"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c\"}\n[2026-05-07 12:55:16] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"22c96a8e-4424-4a1f-b349-206276eefe4c\",\"trace_id\":\"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c\"}\n[2026-05-07 12:55:16] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"22c96a8e-4424-4a1f-b349-206276eefe4c\",\"trace_id\":\"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c\"}\n[2026-05-07 12:55:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:purge-stale\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"5f958e8d-1d01-4144-abd6-2513e5524ad3\",\"trace_id\":\"828bc5b7-e2aa-4443-901f-38dd94bb7cc5\"}\n[2026-05-07 12:55:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:purge-stale\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"5f958e8d-1d01-4144-abd6-2513e5524ad3\",\"trace_id\":\"828bc5b7-e2aa-4443-901f-38dd94bb7cc5\"}\n[2026-05-07 12:55:22] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:text-relay:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"6bd1c9cb-cd9a-42a9-87fe-45cb7bac687a\",\"trace_id\":\"0f2f5d66-c4c9-46a5-a31b-6937663ce1ad\"}\n[2026-05-07 12:55:22] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:text-relay:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"6bd1c9cb-cd9a-42a9-87fe-45cb7bac687a\",\"trace_id\":\"0f2f5d66-c4c9-46a5-a31b-6937663ce1ad\"}\n[2026-05-07 12:55:24] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:pre-meeting-notification\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"c5dd8132-d7e1-4caa-84d1-0a50d02df8da\",\"trace_id\":\"bc7341c5-b8e2-48ea-9670-7ec375363180\"}\n[2026-05-07 12:55:24] local.INFO: Running pre-meeting notification command {\"correlation_id\":\"c5dd8132-d7e1-4caa-84d1-0a50d02df8da\",\"trace_id\":\"bc7341c5-b8e2-48ea-9670-7ec375363180\"}\n[2026-05-07 12:55:24] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:pre-meeting-notification\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"c5dd8132-d7e1-4caa-84d1-0a50d02df8da\",\"trace_id\":\"bc7341c5-b8e2-48ea-9670-7ec375363180\"}\n[2026-05-07 12:55:26] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:start\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0\",\"trace_id\":\"efb1619f-4185-4319-9bfb-305cee0b6bfc\"}\n[2026-05-07 12:55:26] local.INFO: Running conference:monitor:start command for activities in (2026-05-07 12:45:00, 2026-05-07 12:50:00] {\"correlation_id\":\"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0\",\"trace_id\":\"efb1619f-4185-4319-9bfb-305cee0b6bfc\"}\n[2026-05-07 12:55:26] local.INFO: [conference:monitor:start] No activities found in (2026-05-07 12:45:00, 2026-05-07 12:50:00] {\"correlation_id\":\"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0\",\"trace_id\":\"efb1619f-4185-4319-9bfb-305cee0b6bfc\"}\n[2026-05-07 12:55:26] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:start\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0\",\"trace_id\":\"efb1619f-4185-4319-9bfb-305cee0b6bfc\"}\n[2026-05-07 12:55:28] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:end\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"3792b31a-080a-4fe4-9823-5602361325ba\",\"trace_id\":\"41a2fde1-48f6-4667-84b7-a2f93e9ad2da\"}\n[2026-05-07 12:55:28] local.INFO: conference:monitor:end:Jiminny\\Console\\Commands\\Activities\\MonitorMeetingEndCommand::logActivitiesEnded {\"from\":\"12:50\",\"to\":\"12:55\"} {\"correlation_id\":\"3792b31a-080a-4fe4-9823-5602361325ba\",\"trace_id\":\"41a2fde1-48f6-4667-84b7-a2f93e9ad2da\"}\n[2026-05-07 12:55:28] local.INFO: conference:monitor:end:Jiminny\\Console\\Commands\\Activities\\MonitorMeetingEndCommand::logActivitiesWithUnfinishedSession {\"from\":\"02:45\",\"to\":\"02:50\"} {\"correlation_id\":\"3792b31a-080a-4fe4-9823-5602361325ba\",\"trace_id\":\"41a2fde1-48f6-4667-84b7-a2f93e9ad2da\"}\n[2026-05-07 12:55:28] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:end\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"3792b31a-080a-4fe4-9823-5602361325ba\",\"trace_id\":\"41a2fde1-48f6-4667-84b7-a2f93e9ad2da\"}\n[2026-05-07 12:55:30] local.NOTICE: Repairing HubSpot tokens start {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:30] local.INFO: Trying to refresh HubSpot token {\"account_id\":59,\"updated_at\":\"2025-10-03 09:32:05\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:30] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:30] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":59,\"provider\":\"hubspot\",\"refreshToken\":\"97b78f6e2cc49965c00c2492b602b02708b1392551e6b3f113fbaa48992af90b\",\"state\":\"full-refresh\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.ERROR: Failed to refresh HubSpot token {\"account_id\":59,\"updated_at\":\"2025-10-03 09:32:05\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.INFO: Trying to refresh HubSpot token {\"account_id\":306,\"updated_at\":\"2023-11-27 09:30:03\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":306,\"provider\":\"hubspot\",\"refreshToken\":\"6fa6aa8cc641d131231acc3470f5c03cb3b07b2e580fb18f8acb3b1dbb72549b\",\"state\":\"full-refresh\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.ERROR: Failed to refresh HubSpot token {\"account_id\":306,\"updated_at\":\"2023-11-27 09:30:03\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.INFO: Trying to refresh HubSpot token {\"account_id\":1372,\"updated_at\":\"2025-10-02 14:47:06\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1372,\"provider\":\"hubspot\",\"refreshToken\":\"9aa73948c761da29dce46c177cf9aee1fde483a44169ca38723f9f0597d7a8c4\",\"state\":\"full-refresh\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:32] local.ERROR: Failed to refresh HubSpot token {\"account_id\":1372,\"updated_at\":\"2025-10-02 14:47:06\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:32] local.NOTICE: Repairing HubSpot tokens end {\"total\":3,\"fixed\":0,\"failed\":3} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:40] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"crm:bullhorn:ping\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"5e676ae4-5d63-49d4-9001-559088adf06b\",\"trace_id\":\"2fcce073-dd68-4c99-b7c4-b9e03c20b8e4\"}\n[2026-05-07 12:55:40] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:pre-meeting-reminder\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"1f830896-8142-41d1-bfc9-4cbb9179ffda\",\"trace_id\":\"e348a096-7f37-4308-a6d8-66131e8be901\"}\n[2026-05-07 12:55:40] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"crm:bullhorn:ping\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"5e676ae4-5d63-49d4-9001-559088adf06b\",\"trace_id\":\"2fcce073-dd68-4c99-b7c4-b9e03c20b8e4\"}\n[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Command] Starting polling service {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Service starting {\"memory_limit\":\"256M\",\"max_execution_time\":\"0\",\"initial_memory_mb\":62.0} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Acquired polling lock {\"expires_at\":\"2026-05-07T12:57:40.609671Z\"} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:40] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:40] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:pre-meeting-reminder\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"1f830896-8142-41d1-bfc9-4cbb9179ffda\",\"trace_id\":\"e348a096-7f37-4308-a6d8-66131e8be901\"}\n[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:45] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:45] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:46] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:51] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:51] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:51] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:06] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:06] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:06] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"2d8b30b4-87aa-480f-9b9e-5a9c709b742a\",\"trace_id\":\"25b7be6c-1faf-430b-a724-a4ff28773a31\"}\n[2026-05-07 12:56:08] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"2d8b30b4-87aa-480f-9b9e-5a9c709b742a\",\"trace_id\":\"25b7be6c-1faf-430b-a724-a4ff28773a31\"}\n[2026-05-07 12:56:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"2d8b30b4-87aa-480f-9b9e-5a9c709b742a\",\"trace_id\":\"25b7be6c-1faf-430b-a724-a4ff28773a31\"}\n[2026-05-07 12:56:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"efd336d7-db4d-459e-b6e7-bf73454e955e\",\"trace_id\":\"0a82c3d5-0417-48c8-b88f-70ec33e2326a\"}\n[2026-05-07 12:56:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"efd336d7-db4d-459e-b6e7-bf73454e955e\",\"trace_id\":\"0a82c3d5-0417-48c8-b88f-70ec33e2326a\"}\n[2026-05-07 12:56:12] local.NOTICE: Monitoring start {\"correlation_id\":\"68481576-8ca6-4ee5-821b-07374702971d\",\"trace_id\":\"c73eac09-5d20-425f-9c22-bd6c65fc60c9\"}\n[2026-05-07 12:56:12] local.NOTICE: Monitoring end {\"correlation_id\":\"68481576-8ca6-4ee5-821b-07374702971d\",\"trace_id\":\"c73eac09-5d20-425f-9c22-bd6c65fc60c9\"}\n[2026-05-07 12:56:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"bd0cdc75-b5c2-4dbb-bc44-e36c96813d24\",\"trace_id\":\"f688cd98-c171-4e30-8c72-afc14f040861\"}\n[2026-05-07 12:56:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"bd0cdc75-b5c2-4dbb-bc44-e36c96813d24\",\"trace_id\":\"f688cd98-c171-4e30-8c72-afc14f040861\"}\n[2026-05-07 12:56:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"f01636a9-4059-4ab0-9ad2-b078d42cedbd\",\"trace_id\":\"fea938d8-aedc-40ec-b8c2-2f487e1ac808\"}\n[2026-05-07 12:56:20] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"f01636a9-4059-4ab0-9ad2-b078d42cedbd\",\"trace_id\":\"fea938d8-aedc-40ec-b8c2-2f487e1ac808\"}\n[2026-05-07 12:56:20] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"f01636a9-4059-4ab0-9ad2-b078d42cedbd\",\"trace_id\":\"fea938d8-aedc-40ec-b8c2-2f487e1ac808\"}\n[2026-05-07 12:56:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"f01636a9-4059-4ab0-9ad2-b078d42cedbd\",\"trace_id\":\"fea938d8-aedc-40ec-b8c2-2f487e1ac808\"}\n[2026-05-07 12:56:23] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"d4558901-264d-4238-8589-62a137bac1fd\",\"trace_id\":\"38e6b5dc-ebd6-46a7-8224-7374d4e58630\"}\n[2026-05-07 12:56:23] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:54:00, 2026-05-07 12:56:00] {\"correlation_id\":\"d4558901-264d-4238-8589-62a137bac1fd\",\"trace_id\":\"38e6b5dc-ebd6-46a7-8224-7374d4e58630\"}\n[2026-05-07 12:56:23] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:54:00, 2026-05-07 12:56:00] {\"correlation_id\":\"d4558901-264d-4238-8589-62a137bac1fd\",\"trace_id\":\"38e6b5dc-ebd6-46a7-8224-7374d4e58630\"}\n[2026-05-07 12:56:23] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"d4558901-264d-4238-8589-62a137bac1fd\",\"trace_id\":\"38e6b5dc-ebd6-46a7-8224-7374d4e58630\"}\n[2026-05-07 12:56:24] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"crm:sync-hubspot-objects\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"7bfaf9be-0ca1-4170-a0c9-83e0ed61881c\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:24] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"crm:sync-hubspot-objects\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"7bfaf9be-0ca1-4170-a0c9-83e0ed61881c\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:26] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:notify-not-logged\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"2541e0fa-1117-4863-9523-d723b5821a24\",\"trace_id\":\"d9600320-5133-4938-bdd1-2256dfdf8db4\"}\n[2026-05-07 12:56:26] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:notify-not-logged\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"2541e0fa-1117-4863-9523-d723b5821a24\",\"trace_id\":\"d9600320-5133-4938-bdd1-2256dfdf8db4\"}\n[2026-05-07 12:56:35] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"e444f776-37db-4c6d-b30e-20b01a089de7\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:36] local.INFO: [EmailSchedule] STARTING Inbox Sync {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"e444f776-37db-4c6d-b30e-20b01a089de7\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:36] local.INFO: [EmailSchedule] FINISHED Inbox Sync {\"host\":\"docker_lamp_1\",\"events\":2} {\"correlation_id\":\"e444f776-37db-4c6d-b30e-20b01a089de7\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:36] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"e444f776-37db-4c6d-b30e-20b01a089de7\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:36] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:36] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:36] local.INFO: [HubSpot Journal Auth] Requesting new client credentials token {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:37] local.INFO: [HubSpot Journal Auth] Successfully obtained new access token {\"expires_in\":1800,\"cached_for\":1500} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:37] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:37] local.WARNING: [HubSpot Journal Polling] Maximum empty results reached, stopping {\"empty_results\":5,\"max_empty_results\":5} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:37] local.WARNING: [HubSpot Journal Polling] Maximum empty results reached, stopping {\"empty_results\":5,\"max_empty_results\":5} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:37] local.INFO: [HubSpot Journal Polling] Service ending {\"runtime_seconds\":57,\"total_cycles\":5,\"files_downloaded\":0,\"empty_files\":0,\"other_portal_skipped\":0,\"total_events\":0,\"events_per_file\":0,\"avg_api_ms\":238.3,\"avg_download_ms\":0.0,\"avg_transform_ms\":0.0,\"avg_process_ms\":0.0,\"peak_memory_mb\":99.73} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:37] local.INFO: [HubSpot Journal Polling] Released polling lock {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:50] local.INFO: [Commands/AsyncUpdateEsEntities] Starting ES update worker {\"pid\":37119,\"workerId\":\"\",\"target\":\"activities\"} {\"correlation_id\":\"902cef33-4733-4b2a-9693-affb8645cecc\",\"trace_id\":\"4ffe2bb8-67c6-422a-a846-319973cc0259\"}\n[2026-05-07 12:56:50] local.INFO: [SyncHubspotObjects] Starting sync {\"team\":\"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4\",\"usage\":23195976,\"real_usage\":65011712,\"pid\":37113} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:50] local.INFO: [Sync Mailbox] Sync start {\"inbox_id\":59} {\"correlation_id\":\"20256b2c-2b69-48f6-bdd3-61d047eb0b0d\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:50] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:50] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:50] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:50] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1499,\"provider\":\"hubspot\",\"refreshToken\":\"96f94c623a404e02ebdbf07f1b75707bb6cdbf848cbf45d418baf608c41a8d86\",\"state\":\"connected\"} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:50] local.INFO: [Inbox service] Skipping METADATA SYNC for inbox 59 due to unauthorized access to the mailbox {\"correlation_id\":\"20256b2c-2b69-48f6-bdd3-61d047eb0b0d\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:50] local.INFO: [Sync Mailbox] Sync complete {\"inbox_id\":59} {\"correlation_id\":\"20256b2c-2b69-48f6-bdd3-61d047eb0b0d\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:50] local.INFO: [Sync Mailbox] Sync start {\"inbox_id\":212} {\"correlation_id\":\"b6c31853-3729-4780-a52b-ebcce17d41b9\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:50] local.INFO: [Inbox service] Skipping METADATA SYNC for inbox 212 due to unauthorized access to the mailbox {\"correlation_id\":\"b6c31853-3729-4780-a52b-ebcce17d41b9\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:50] local.INFO: [Sync Mailbox] Sync complete {\"inbox_id\":212} {\"correlation_id\":\"b6c31853-3729-4780-a52b-ebcce17d41b9\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:51] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:51] local.INFO: [SocialAccountObserver] Access token was modified, encrypting {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:51] local.INFO: [SocialAccountService] Token refreshed {\"socialAccountId\":1499,\"provider\":\"hubspot\",\"state\":\"connected\"} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:51] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":148,\"team_id\":2} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:51] local.INFO: [HubSpot] Syncing opportunities using strategy: lastModified {\"team\":2} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/deals/search\",\"total_requests\":0,\"total_records_fetched\":0,\"total_elapsed_seconds\":0.3,\"average_seconds_per_request\":0} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.INFO: [SyncHubspotObjects] Sync finished {\"team\":\"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4\",\"provider\":\"hubspot\",\"status\":\"completed\",\"duration_ms\":1854.64,\"usage\":24199288,\"real_usage\":65011712,\"pid\":37113} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.ERROR: Jiminny\\Services\\Crm\\Hubspot\\Pagination\\HubspotPaginationService::getPaginatedDataGenerator(): Return value must be of type Generator, none returned {\"exception\":\"[object] (TypeError(code: 0): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService::getPaginatedDataGenerator(): Return value must be of type Generator, none returned at /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php:82)\n[stacktrace]\n#0 /home/jiminny/app/Services/Crm/Hubspot/Client.php(194): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->getPaginatedDataGenerator(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), Array, 'deals', 0, 0, NULL)\n#1 /home/jiminny/app/Services/Crm/Hubspot/OpportunitySyncStrategy/HubspotSyncStrategyBase.php(55): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client->getPaginatedDataGenerator(Array, 'deals', 0, 0, NULL)\n#2 /home/jiminny/app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php(73): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\OpportunitySyncStrategy\\\\HubspotSyncStrategyBase->fetchOpportunities(Array, 0, NULL)\n#3 /home/jiminny/app/Jobs/Crm/SyncHubspotObjects.php(118): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service->syncOpportunities(Array)\n#4 /home/jiminny/app/Jobs/Crm/SyncHubspotObjects.php(86): Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects->syncHubspotCrmObjects(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service), Object(Illuminate\\\\Support\\\\Carbon))\n#5 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects->handle(Object(Jiminny\\\\Services\\\\ResolveTeamCrmConnection), Object(Illuminate\\\\Log\\\\LogManager), Object(Jiminny\\\\Repositories\\\\TeamRepository))\n#6 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#7 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#8 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#9 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#10 /home/jiminny/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(129): Illuminate\\\\Container\\\\Container->call(Array)\n#11 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\\\Bus\\\\Dispatcher->Illuminate\\\\Bus\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#12 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\\\\Pipeline\\\\Pipeline->Illuminate\\\\Pipeline\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#13 /home/jiminny/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(133): Illuminate\\\\Pipeline\\\\Pipeline->then(Object(Closure))\n#14 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(136): Illuminate\\\\Bus\\\\Dispatcher->dispatchNow(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects), false)\n#15 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\\\Queue\\\\CallQueuedHandler->Illuminate\\\\Queue\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#16 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\\\\Pipeline\\\\Pipeline->Illuminate\\\\Pipeline\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#17 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(129): Illuminate\\\\Pipeline\\\\Pipeline->then(Object(Closure))\n#18 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(70): Illuminate\\\\Queue\\\\CallQueuedHandler->dispatchThroughMiddleware(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#19 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Jobs/Job.php(102): Illuminate\\\\Queue\\\\CallQueuedHandler->call(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Array)\n#20 /home/jiminny/app/Queue/Worker/Worker.php(71): Illuminate\\\\Queue\\\\Jobs\\\\Job->fire()\n#21 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(435): Jiminny\\\\Queue\\\\Worker\\\\Worker->process('redis', Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#22 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(201): Illuminate\\\\Queue\\\\Worker->runJob(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), 'redis', Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#23 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(148): Illuminate\\\\Queue\\\\Worker->daemon('redis', 'crm-sync,crm-up...', Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#24 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(131): Illuminate\\\\Queue\\\\Console\\\\WorkCommand->runWorker('redis', 'crm-sync,crm-up...')\n#25 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Illuminate\\\\Queue\\\\Console\\\\WorkCommand->handle()\n#26 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#27 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#28 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#29 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#30 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(211): Illuminate\\\\Container\\\\Container->call(Array)\n#31 /home/jiminny/vendor/symfony/console/Command/Command.php(341): Illuminate\\\\Console\\\\Command->execute(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#32 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(180): Symfony\\\\Component\\\\Console\\\\Command\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#33 /home/jiminny/vendor/symfony/console/Application.php(1117): Illuminate\\\\Console\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#34 /home/jiminny/vendor/symfony/console/Application.php(356): Symfony\\\\Component\\\\Console\\\\Application->doRunCommand(Object(Illuminate\\\\Queue\\\\Console\\\\WorkCommand), Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#35 /home/jiminny/vendor/symfony/console/Application.php(195): Symfony\\\\Component\\\\Console\\\\Application->doRun(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#36 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(198): Symfony\\\\Component\\\\Console\\\\Application->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#37 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1235): Illuminate\\\\Foundation\\\\Console\\\\Kernel->handle(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#38 /home/jiminny/artisan(13): Illuminate\\\\Foundation\\\\Application->handleCommand(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput))\n#39 {main}\n\"} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.INFO: [SyncHubspotObjects] Starting sync {\"team\":\"b2d49a54-b645-4637-a7ae-a86cfce6e8e4\",\"usage\":25235152,\"real_usage\":65011712,\"pid\":37113} {\"correlation_id\":\"0d3cf2b0-a245-4a83-9bd5-1c5788b85738\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.WARNING: [HubSpot] Account not connected for user {\"userId\":\"2ac0447f-3c8c-4ce0-baeb-b63ddb76fa9b\",\"account\":null} {\"correlation_id\":\"0d3cf2b0-a245-4a83-9bd5-1c5788b85738\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {\"crm_provider\":\"hubspot\",\"crm_owner\":130,\"team_id\":42} {\"correlation_id\":\"0d3cf2b0-a245-4a83-9bd5-1c5788b85738\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":42} {\"correlation_id\":\"0d3cf2b0-a245-4a83-9bd5-1c5788b85738\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":42} {\"correlation_id\":\"0d3cf2b0-a245-4a83-9bd5-1c5788b85738\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.INFO: [SyncHubspotObjects] Sync finished {\"team\":\"b2d49a54-b645-4637-a7ae-a86cfce6e8e4\",\"provider\":\"hubspot\",\"status\":\"disconnected\",\"duration_ms\":70.53,\"usage\":25225384,\"real_usage\":65011712,\"pid\":37113,\"reason\":\"Social account for HubSpot cannot be found. Please login to Jiminny to connect.\"} {\"correlation_id\":\"0d3cf2b0-a245-4a83-9bd5-1c5788b85738\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Starting sync {\"team\":\"b2b115eb-93ce-4d1b-929c-173757df8fba\",\"usage\":25263936,\"real_usage\":65011712,\"pid\":37113} {\"correlation_id\":\"1e46be79-1db4-4829-b19c-1548141a94e0\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.WARNING: [HubSpot] Account not connected for user {\"userId\":\"33e34a7a-1c02-4f04-87ac-22c3a385e6e3\",\"account\":{\"Jiminny\\\\Models\\\\SocialAccount\":{\"id\":306,\"sociable_id\":109,\"provider_user_id\":\"11348452\",\"expires\":1701077403,\"refresh_token_expires\":null,\"provider\":\"hubspot\",\"state\":\"full-refresh\",\"auth_scope\":null,\"retry_after\":null,\"created_at\":\"2020-09-01 16:59:04\",\"updated_at\":\"2023-11-27 09:30:03\"}}} {\"correlation_id\":\"1e46be79-1db4-4829-b19c-1548141a94e0\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {\"crm_provider\":\"hubspot\",\"crm_owner\":109,\"team_id\":29} {\"correlation_id\":\"1e46be79-1db4-4829-b19c-1548141a94e0\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":29} {\"correlation_id\":\"1e46be79-1db4-4829-b19c-1548141a94e0\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":29} {\"correlation_id\":\"1e46be79-1db4-4829-b19c-1548141a94e0\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Sync finished {\"team\":\"b2b115eb-93ce-4d1b-929c-173757df8fba\",\"provider\":\"hubspot\",\"status\":\"disconnected\",\"duration_ms\":47.7,\"usage\":25451952,\"real_usage\":65011712,\"pid\":37113,\"reason\":\"Your HubSpot account has become disconnected. Please login to Jiminny to reconnect.\"} {\"correlation_id\":\"1e46be79-1db4-4829-b19c-1548141a94e0\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Starting sync {\"team\":\"c6b9d6b0-b48d-4832-a68c-a57d60651888\",\"usage\":25490320,\"real_usage\":65011712,\"pid\":37113} {\"correlation_id\":\"0da4e096-9534-4a72-bc1f-8e61561d8e37\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.WARNING: [HubSpot] Account not connected for user {\"userId\":\"71e3aac5-fb66-47c5-a236-2d051ae3e319\",\"account\":null} {\"correlation_id\":\"0da4e096-9534-4a72-bc1f-8e61561d8e37\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {\"crm_provider\":\"hubspot\",\"crm_owner\":256,\"team_id\":49} {\"correlation_id\":\"0da4e096-9534-4a72-bc1f-8e61561d8e37\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":49} {\"correlation_id\":\"0da4e096-9534-4a72-bc1f-8e61561d8e37\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":49} {\"correlation_id\":\"0da4e096-9534-4a72-bc1f-8e61561d8e37\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Sync finished {\"team\":\"c6b9d6b0-b48d-4832-a68c-a57d60651888\",\"provider\":\"hubspot\",\"status\":\"disconnected\",\"duration_ms\":44.12,\"usage\":25547952,\"real_usage\":65011712,\"pid\":37113,\"reason\":\"Social account for HubSpot cannot be found. Please login to Jiminny to connect.\"} {\"correlation_id\":\"0da4e096-9534-4a72-bc1f-8e61561d8e37\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Starting sync {\"team\":\"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4\",\"usage\":25587032,\"real_usage\":65011712,\"pid\":37113} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":148,\"team_id\":2} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [HubSpot] Syncing opportunities using strategy: lastModified {\"team\":2} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/deals/search\",\"total_requests\":0,\"total_records_fetched\":0,\"total_elapsed_seconds\":0.28,\"average_seconds_per_request\":0} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Sync finished {\"team\":\"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4\",\"provider\":\"hubspot\",\"status\":\"completed\",\"duration_ms\":412.19,\"usage\":25739960,\"real_usage\":65011712,\"pid\":37113} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.ERROR: Jiminny\\Services\\Crm\\Hubspot\\Pagination\\HubspotPaginationService::getPaginatedDataGenerator(): Return value must be of type Generator, none returned {\"exception\":\"[object] (TypeError(code: 0): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService::getPaginatedDataGenerator(): Return value must be of type Generator, none returned at /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php:82)\n[stacktrace]\n#0 /home/jiminny/app/Services/Crm/Hubspot/Client.php(194): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->getPaginatedDataGenerator(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), Array, 'deals', 0, 0, NULL)\n#1 /home/jiminny/app/Services/Crm/Hubspot/OpportunitySyncStrategy/HubspotSyncStrategyBase.php(55): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client->getPaginatedDataGenerator(Array, 'deals', 0, 0, NULL)\n#2 /home/jiminny/app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php(73): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\OpportunitySyncStrategy\\\\HubspotSyncStrategyBase->fetchOpportunities(Array, 0, NULL)\n#3 /home/jiminny/app/Jobs/Crm/SyncHubspotObjects.php(118): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service->syncOpportunities(Array)\n#4 /home/jiminny/app/Jobs/Crm/SyncHubspotObjects.php(86): Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects->syncHubspotCrmObjects(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service), Object(Illuminate\\\\Support\\\\Carbon))\n#5 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects->handle(Object(Jiminny\\\\Services\\\\ResolveTeamCrmConnection), Object(Illuminate\\\\Log\\\\LogManager), Object(Jiminny\\\\Repositories\\\\TeamRepository))\n#6 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#7 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#8 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#9 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#10 /home/jiminny/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(129): Illuminate\\\\Container\\\\Container->call(Array)\n#11 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\\\Bus\\\\Dispatcher->Illuminate\\\\Bus\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#12 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\\\\Pipeline\\\\Pipeline->Illuminate\\\\Pipeline\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#13 /home/jiminny/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(133): Illuminate\\\\Pipeline\\\\Pipeline->then(Object(Closure))\n#14 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(136): Illuminate\\\\Bus\\\\Dispatcher->dispatchNow(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects), false)\n#15 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\\\Queue\\\\CallQueuedHandler->Illuminate\\\\Queue\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#16 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\\\\Pipeline\\\\Pipeline->Illuminate\\\\Pipeline\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#17 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(129): Illuminate\\\\Pipeline\\\\Pipeline->then(Object(Closure))\n#18 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(70): Illuminate\\\\Queue\\\\CallQueuedHandler->dispatchThroughMiddleware(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#19 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Jobs/Job.php(102): Illuminate\\\\Queue\\\\CallQueuedHandler->call(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Array)\n#20 /home/jiminny/app/Queue/Worker/Worker.php(71): Illuminate\\\\Queue\\\\Jobs\\\\Job->fire()\n#21 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(435): Jiminny\\\\Queue\\\\Worker\\\\Worker->process('redis', Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#22 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(201): Illuminate\\\\Queue\\\\Worker->runJob(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), 'redis', Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#23 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(148): Illuminate\\\\Queue\\\\Worker->daemon('redis', 'crm-sync,crm-up...', Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#24 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(131): Illuminate\\\\Queue\\\\Console\\\\WorkCommand->runWorker('redis', 'crm-sync,crm-up...')\n#25 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Illuminate\\\\Queue\\\\Console\\\\WorkCommand->handle()\n#26 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#27 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#28 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#29 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#30 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(211): Illuminate\\\\Container\\\\Container->call(Array)\n#31 /home/jiminny/vendor/symfony/console/Command/Command.php(341): Illuminate\\\\Console\\\\Command->execute(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#32 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(180): Symfony\\\\Component\\\\Console\\\\Command\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#33 /home/jiminny/vendor/symfony/console/Application.php(1117): Illuminate\\\\Console\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#34 /home/jiminny/vendor/symfony/console/Application.php(356): Symfony\\\\Component\\\\Console\\\\Application->doRunCommand(Object(Illuminate\\\\Queue\\\\Console\\\\WorkCommand), Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#35 /home/jiminny/vendor/symfony/console/Application.php(195): Symfony\\\\Component\\\\Console\\\\Application->doRun(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#36 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(198): Symfony\\\\Component\\\\Console\\\\Application->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#37 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1235): Illuminate\\\\Foundation\\\\Console\\\\Kernel->handle(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#38 /home/jiminny/artisan(13): Illuminate\\\\Foundation\\\\Application->handleCommand(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput))\n#39 {main}\n\"} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Starting sync {\"team\":\"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4\",\"usage\":25172624,\"real_usage\":65011712,\"pid\":37113} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":148,\"team_id\":2} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [HubSpot] Syncing opportunities using strategy: lastModified {\"team\":2} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/deals/search\",\"total_requests\":0,\"total_records_fetched\":0,\"total_elapsed_seconds\":0.23,\"average_seconds_per_request\":0} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Sync finished {\"team\":\"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4\",\"provider\":\"hubspot\",\"status\":\"completed\",\"duration_ms\":291.83,\"usage\":25225088,\"real_usage\":65011712,\"pid\":37113} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:54] local.ERROR: Jiminny\\Services\\Crm\\Hubspot\\Pagination\\HubspotPaginationService::getPaginatedDataGenerator(): Return value must be of type Generator, none returned {\"exception\":\"[object] (TypeError(code: 0): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService::getPaginatedDataGenerator(): Return value must be of type Generator, none returned at /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php:82)\n[stacktrace]\n#0 /home/jiminny/app/Services/Crm/Hubspot/Client.php(194): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->getPaginatedDataGenerator(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), Array, 'deals', 0, 0, NULL)\n#1 /home/jiminny/app/Services/Crm/Hubspot/OpportunitySyncStrategy/HubspotSyncStrategyBase.php(55): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client->getPaginatedDataGenerator(Array, 'deals', 0, 0, NULL)\n#2 /home/jiminny/app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php(73): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\OpportunitySyncStrategy\\\\HubspotSyncStrategyBase->fetchOpportunities(Array, 0, NULL)\n#3 /home/jiminny/app/Jobs/Crm/SyncHubspotObjects.php(118): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service->syncOpportunities(Array)\n#4 /home/jiminny/app/Jobs/Crm/SyncHubspotObjects.php(86): Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects->syncHubspotCrmObjects(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service), Object(Illuminate\\\\Support\\\\Carbon))\n#5 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects->handle(Object(Jiminny\\\\Services\\\\ResolveTeamCrmConnection), Object(Illuminate\\\\Log\\\\LogManager), Object(Jiminny\\\\Repositories\\\\TeamRepository))\n#6 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#7 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#8 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#9 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#10 /home/jiminny/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(129): Illuminate\\\\Container\\\\Container->call(Array)\n#11 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\\\Bus\\\\Dispatcher->Illuminate\\\\Bus\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#12 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\\\\Pipeline\\\\Pipeline->Illuminate\\\\Pipeline\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#13 /home/jiminny/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(133): Illuminate\\\\Pipeline\\\\Pipeline->then(Object(Closure))\n#14 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(136): Illuminate\\\\Bus\\\\Dispatcher->dispatchNow(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects), false)\n#15 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\\\Queue\\\\CallQueuedHandler->Illuminate\\\\Queue\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#16 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\\\\Pipeline\\\\Pipeline->Illuminate\\\\Pipeline\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#17 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(129): Illuminate\\\\Pipeline\\\\Pipeline->then(Object(Closure))\n#18 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(70): Illuminate\\\\Queue\\\\CallQueuedHandler->dispatchThroughMiddleware(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#19 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Jobs/Job.php(102): Illuminate\\\\Queue\\\\CallQueuedHandler->call(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Array)\n#20 /home/jiminny/app/Queue/Worker/Worker.php(71): Illuminate\\\\Queue\\\\Jobs\\\\Job->fire()\n#21 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(435): Jiminny\\\\Queue\\\\Worker\\\\Worker->process('redis', Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#22 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(201): Illuminate\\\\Queue\\\\Worker->runJob(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), 'redis', Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#23 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(148): Illuminate\\\\Queue\\\\Worker->daemon('redis', 'crm-sync,crm-up...', Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#24 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(131): Illuminate\\\\Queue\\\\Console\\\\WorkCommand->runWorker('redis', 'crm-sync,crm-up...')\n#25 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Illuminate\\\\Queue\\\\Console\\\\WorkCommand->handle()\n#26 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#27 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#28 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#29 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#30 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(211): Illuminate\\\\Container\\\\Container->call(Array)\n#31 /home/jiminny/vendor/symfony/console/Command/Command.php(341): Illuminate\\\\Console\\\\Command->execute(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#32 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(180): Symfony\\\\Component\\\\Console\\\\Command\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#33 /home/jiminny/vendor/symfony/console/Application.php(1117): Illuminate\\\\Console\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#34 /home/jiminny/vendor/symfony/console/Application.php(356): Symfony\\\\Component\\\\Console\\\\Application->doRunCommand(Object(Illuminate\\\\Queue\\\\Console\\\\WorkCommand), Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#35 /home/jiminny/vendor/symfony/console/Application.php(195): Symfony\\\\Component\\\\Console\\\\Application->doRun(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#36 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(198): Symfony\\\\Component\\\\Console\\\\Application->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#37 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1235): Illuminate\\\\Foundation\\\\Console\\\\Kernel->handle(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#38 /home/jiminny/artisan(13): Illuminate\\\\Foundation\\\\Application->handleCommand(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput))\n#39 {main}\n\"} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:57:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"854299be-d77a-48bc-870c-b78333916d69\",\"trace_id\":\"89c1eb6c-bc78-419c-9304-b770093d5692\"}\n[2026-05-07 12:57:06] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"854299be-d77a-48bc-870c-b78333916d69\",\"trace_id\":\"89c1eb6c-bc78-419c-9304-b770093d5692\"}\n[2026-05-07 12:57:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"854299be-d77a-48bc-870c-b78333916d69\",\"trace_id\":\"89c1eb6c-bc78-419c-9304-b770093d5692\"}\n[2026-05-07 12:57:16] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"c4e512a3-a227-4569-bcd2-3258a9142d46\",\"trace_id\":\"016bf668-6712-4c0f-8c8c-c2e411a37889\"}\n[2026-05-07 12:57:16] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"c4e512a3-a227-4569-bcd2-3258a9142d46\",\"trace_id\":\"016bf668-6712-4c0f-8c8c-c2e411a37889\"}\n[2026-05-07 12:57:19] local.NOTICE: Monitoring start {\"correlation_id\":\"4c2d4775-716d-4ca6-b94d-cb17dace29a7\",\"trace_id\":\"e969e10d-e5f0-44c6-9767-97a70e05cfe5\"}\n[2026-05-07 12:57:19] local.NOTICE: Monitoring end {\"correlation_id\":\"4c2d4775-716d-4ca6-b94d-cb17dace29a7\",\"trace_id\":\"e969e10d-e5f0-44c6-9767-97a70e05cfe5\"}\n[2026-05-07 12:57:22] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"d03e9546-bfd0-44c6-84ee-299b1e6c14a2\",\"trace_id\":\"acbab6e5-17fc-4b11-907d-ff87322285d7\"}\n[2026-05-07 12:57:22] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"d03e9546-bfd0-44c6-84ee-299b1e6c14a2\",\"trace_id\":\"acbab6e5-17fc-4b11-907d-ff87322285d7\"}\n[2026-05-07 12:57:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"a2c0095a-18b2-427e-825b-c68c9dbf63a1\",\"trace_id\":\"9b170d6a-ed10-4a41-af79-684c99021967\"}\n[2026-05-07 12:57:25] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"a2c0095a-18b2-427e-825b-c68c9dbf63a1\",\"trace_id\":\"9b170d6a-ed10-4a41-af79-684c99021967\"}\n[2026-05-07 12:57:25] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"a2c0095a-18b2-427e-825b-c68c9dbf63a1\",\"trace_id\":\"9b170d6a-ed10-4a41-af79-684c99021967\"}\n[2026-05-07 12:57:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"a2c0095a-18b2-427e-825b-c68c9dbf63a1\",\"trace_id\":\"9b170d6a-ed10-4a41-af79-684c99021967\"}\n[2026-05-07 12:57:27] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:create\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"c4e70056-ceab-4c44-874a-8042963ce3ea\",\"trace_id\":\"011a70aa-ebb2-4ca8-aef6-4b4cca233da7\"}\n[2026-05-07 12:57:27] local.INFO: [EmailSchedule] STARTING batch create {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"c4e70056-ceab-4c44-874a-8042963ce3ea\",\"trace_id\":\"011a70aa-ebb2-4ca8-aef6-4b4cca233da7\"}\n[2026-05-07 12:57:27] local.INFO: [EmailSchedule] FINISHED batch create {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"c4e70056-ceab-4c44-874a-8042963ce3ea\",\"trace_id\":\"011a70aa-ebb2-4ca8-aef6-4b4cca233da7\"}\n[2026-05-07 12:57:27] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:create\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"c4e70056-ceab-4c44-874a-8042963ce3ea\",\"trace_id\":\"011a70aa-ebb2-4ca8-aef6-4b4cca233da7\"}\n[2026-05-07 12:57:28] local.INFO: [Jiminny\\Jobs\\Mailbox\\CreateBatches] processed 2 inboxes and created 0 batches {\"userId\":null,\"batchSize\":30,\"maxBatches\":1000} {\"correlation_id\":\"c296bf83-9f7c-4228-b6f5-99db6040fa01\",\"trace_id\":\"011a70aa-ebb2-4ca8-aef6-4b4cca233da7\"}\n[2026-05-07 12:58:06] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"a9e2de8b-b538-437e-bbe7-82636da81995\",\"trace_id\":\"e517ae80-e149-490c-b719-309e898b3c93\"}\n[2026-05-07 12:58:06] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"a9e2de8b-b538-437e-bbe7-82636da81995\",\"trace_id\":\"e517ae80-e149-490c-b719-309e898b3c93\"}\n[2026-05-07 12:58:06] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"a9e2de8b-b538-437e-bbe7-82636da81995\",\"trace_id\":\"e517ae80-e149-490c-b719-309e898b3c93\"}\n[2026-05-07 12:58:06] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":148,\"team_id\":2} {\"correlation_id\":\"a9e2de8b-b538-437e-bbe7-82636da81995\",\"trace_id\":\"e517ae80-e149-490c-b719-309e898b3c93\"}\n[2026-05-07 12:58:06] local.ERROR: Client error: `POST https://api.hubapi.com/crm/v3/objects/contact/search` resulted in a `429 Too Many Requests` response:\n{\"status\":\"error\",\"message\":\"You have reached your secondly limit.\",\"errorType\":\"RATE_LIMIT\",\"correlationId\":\"019e0284-5 (truncated...)\n {\"exception\":\"[object] (SevenShores\\\\Hubspot\\\\Exceptions\\\\BadRequest(code: 429): Client error: `POST https://api.hubapi.com/crm/v3/objects/contact/search` resulted in a `429 Too Many Requests` response:\n{\\\"status\\\":\\\"error\\\",\\\"message\\\":\\\"You have reached your secondly limit.\\\",\\\"errorType\\\":\\\"RATE_LIMIT\\\",\\\"correlationId\\\":\\\"019e0284-5 (truncated...)\n at /home/jiminny/vendor/hubspot/hubspot-php/src/Exceptions/HubspotException.php:24)\n[stacktrace]\n#0 /home/jiminny/vendor/hubspot/hubspot-php/src/Http/Client.php(125): SevenShores\\\\Hubspot\\\\Exceptions\\\\HubspotException::create(Object(GuzzleHttp\\\\Exception\\\\ClientException))\n#1 /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php(163): SevenShores\\\\Hubspot\\\\Http\\\\Client->request('POST', 'https://api.hub...', Array)\n#2 /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php(51): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->executeSearchRequest(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), 'https://api.hub...', Array, Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\PaginationState))\n#3 /home/jiminny/app/Services/Crm/Hubspot/Client.php(194): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->getPaginatedDataGenerator(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), Array, 'contact', 0, 0, NULL)\n#4 /home/jiminny/app/Services/Crm/Hubspot/Client.php(175): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client->getPaginatedDataGenerator(Array, 'contact', 0, 0, NULL)\n#5 /home/jiminny/app/Services/Crm/Hubspot/Service.php(1203): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client->getPaginatedData(Array, 'contact')\n#6 /home/jiminny/app/Console/Commands/JiminnyDebugCommand.php(353): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service->matchByName('Robot')\n#7 /home/jiminny/app/Console/Commands/JiminnyDebugCommand.php(44): Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand->rateLimit()\n#8 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand->handle(Object(Jiminny\\\\Jobs\\\\JobDispatcher), Object(Jiminny\\\\Services\\\\Kiosk\\\\AutomatedReports\\\\AutomatedReportsService), Object(Jiminny\\\\Repositories\\\\AutomatedReportsRepository), Object(Jiminny\\\\Services\\\\UserPilot\\\\UserPilotClient))\n#9 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#10 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#11 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#12 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#13 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(211): Illuminate\\\\Container\\\\Container->call(Array)\n#14 /home/jiminny/vendor/symfony/console/Command/Command.php(341): Illuminate\\\\Console\\\\Command->execute(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#15 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(180): Symfony\\\\Component\\\\Console\\\\Command\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#16 /home/jiminny/vendor/symfony/console/Application.php(1117): Illuminate\\\\Console\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#17 /home/jiminny/vendor/symfony/console/Application.php(356): Symfony\\\\Component\\\\Console\\\\Application->doRunCommand(Object(Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand), Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#18 /home/jiminny/vendor/symfony/console/Application.php(195): Symfony\\\\Component\\\\Console\\\\Application->doRun(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#19 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(198): Symfony\\\\Component\\\\Console\\\\Application->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#20 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1235): Illuminate\\\\Foundation\\\\Console\\\\Kernel->handle(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#21 /home/jiminny/artisan(13): Illuminate\\\\Foundation\\\\Application->handleCommand(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput))\n#22 {main}\n\n[previous exception] [object] (GuzzleHttp\\\\Exception\\\\ClientException(code: 429): Client error: `POST https://api.hubapi.com/crm/v3/objects/contact/search` resulted in a `429 Too Many Requests` response:\n{\\\"status\\\":\\\"error\\\",\\\"message\\\":\\\"You have reached your secondly limit.\\\",\\\"errorType\\\":\\\"RATE_LIMIT\\\",\\\"correlationId\\\":\\\"019e0284-5 (truncated...)\n at /home/jiminny/vendor/guzzlehttp/guzzle/src/Exception/RequestException.php:111)\n[stacktrace]\n#0 /home/jiminny/vendor/guzzlehttp/guzzle/src/Middleware.php(72): GuzzleHttp\\\\Exception\\\\RequestException::create(Object(GuzzleHttp\\\\Psr7\\\\Request), Object(GuzzleHttp\\\\Psr7\\\\Response), NULL, Array, NULL)\n#1 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(209): GuzzleHttp\\\\Middleware::GuzzleHttp\\\\{closure}(Object(GuzzleHttp\\\\Psr7\\\\Response))\n#2 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(158): GuzzleHttp\\\\Promise\\\\Promise::callHandler(1, Object(GuzzleHttp\\\\Psr7\\\\Response), NULL)\n#3 /home/jiminny/vendor/guzzlehttp/promises/src/TaskQueue.php(52): GuzzleHttp\\\\Promise\\\\Promise::GuzzleHttp\\\\Promise\\\\{closure}()\n#4 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(251): GuzzleHttp\\\\Promise\\\\TaskQueue->run(true)\n#5 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(227): GuzzleHttp\\\\Promise\\\\Promise->invokeWaitFn()\n#6 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(272): GuzzleHttp\\\\Promise\\\\Promise->waitIfPending()\n#7 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(229): GuzzleHttp\\\\Promise\\\\Promise->invokeWaitList()\n#8 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(69): GuzzleHttp\\\\Promise\\\\Promise->waitIfPending()\n#9 /home/jiminny/vendor/guzzlehttp/guzzle/src/Client.php(189): GuzzleHttp\\\\Promise\\\\Promise->wait()\n#10 /home/jiminny/vendor/hubspot/hubspot-php/src/Http/Client.php(113): GuzzleHttp\\\\Client->request('POST', 'https://api.hub...', Array)\n#11 /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php(163): SevenShores\\\\Hubspot\\\\Http\\\\Client->request('POST', 'https://api.hub...', Array)\n#12 /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php(51): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->executeSearchRequest(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), 'https://api.hub...', Array, Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\PaginationState))\n#13 /home/jiminny/app/Services/Crm/Hubspot/Client.php(194): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->getPaginatedDataGenerator(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), Array, 'contact', 0, 0, NULL)\n#14 /home/jiminny/app/Services/Crm/Hubspot/Client.php(175): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client->getPaginatedDataGenerator(Array, 'contact', 0, 0, NULL)\n#15 /home/jiminny/app/Services/Crm/Hubspot/Service.php(1203): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client->getPaginatedData(Array, 'contact')\n#16 /home/jiminny/app/Console/Commands/JiminnyDebugCommand.php(353): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service->matchByName('Robot')\n#17 /home/jiminny/app/Console/Commands/JiminnyDebugCommand.php(44): Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand->rateLimit()\n#18 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand->handle(Object(Jiminny\\\\Jobs\\\\JobDispatcher), Object(Jiminny\\\\Services\\\\Kiosk\\\\AutomatedReports\\\\AutomatedReportsService), Object(Jiminny\\\\Repositories\\\\AutomatedReportsRepository), Object(Jiminny\\\\Services\\\\UserPilot\\\\UserPilotClient))\n#19 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#20 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#21 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#22 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#23 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(211): Illuminate\\\\Container\\\\Container->call(Array)\n#24 /home/jiminny/vendor/symfony/console/Command/Command.php(341): Illuminate\\\\Console\\\\Command->execute(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#25 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(180): Symfony\\\\Component\\\\Console\\\\Command\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#26 /home/jiminny/vendor/symfony/console/Application.php(1117): Illuminate\\\\Console\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#27 /home/jiminny/vendor/symfony/console/Application.php(356): Symfony\\\\Component\\\\Console\\\\Application->doRunCommand(Object(Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand), Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#28 /home/jiminny/vendor/symfony/console/Application.php(195): Symfony\\\\Component\\\\Console\\\\Application->doRun(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#29 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(198): Symfony\\\\Component\\\\Console\\\\Application->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#30 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1235): Illuminate\\\\Foundation\\\\Console\\\\Kernel->handle(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#31 /home/jiminny/artisan(13): Illuminate\\\\Foundation\\\\Application->handleCommand(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput))\n#32 {main}\n\"} {\"correlation_id\":\"a9e2de8b-b538-437e-bbe7-82636da81995\",\"trace_id\":\"e517ae80-e149-490c-b719-309e898b3c93\"}\n[2026-05-07 12:58:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"fb59e309-d2cc-4fe0-9db2-544112c25477\",\"trace_id\":\"28ccdd4f-bf3a-4545-bc8a-d94188f8204f\"}\n[2026-05-07 12:58:10] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"fb59e309-d2cc-4fe0-9db2-544112c25477\",\"trace_id\":\"28ccdd4f-bf3a-4545-bc8a-d94188f8204f\"}\n[2026-05-07 12:58:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"fb59e309-d2cc-4fe0-9db2-544112c25477\",\"trace_id\":\"28ccdd4f-bf3a-4545-bc8a-d94188f8204f\"}\n[2026-05-07 12:58:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"bff14f9f-db1d-4b6c-bd92-ca810b31790a\",\"trace_id\":\"ed08145b-94b8-4585-8e81-0ad478d038dc\"}\n[2026-05-07 12:58:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"bff14f9f-db1d-4b6c-bd92-ca810b31790a\",\"trace_id\":\"ed08145b-94b8-4585-8e81-0ad478d038dc\"}\n[2026-05-07 12:58:16] local.NOTICE: Monitoring start {\"correlation_id\":\"54ed6493-c74e-4491-b2ff-9404528f1525\",\"trace_id\":\"9a1f78c0-6e74-482c-a091-8367df3d0f70\"}\n[2026-05-07 12:58:16] local.NOTICE: Monitoring end {\"correlation_id\":\"54ed6493-c74e-4491-b2ff-9404528f1525\",\"trace_id\":\"9a1f78c0-6e74-482c-a091-8367df3d0f70\"}\n[2026-05-07 12:58:24] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"7f141a32-060d-4123-bf20-8a8d7abc1482\",\"trace_id\":\"f7fdcb6b-932a-4f6b-ad95-f111628d6cf7\"}\n[2026-05-07 12:58:24] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"7f141a32-060d-4123-bf20-8a8d7abc1482\",\"trace_id\":\"f7fdcb6b-932a-4f6b-ad95-f111628d6cf7\"}\n[2026-05-07 12:58:36] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"f586fc15-711b-4199-8fdf-dcd2df95af0c\",\"trace_id\":\"828fb459-3b7f-4196-a690-12fc9ce99b1d\"}\n[2026-05-07 12:58:36] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"f586fc15-711b-4199-8fdf-dcd2df95af0c\",\"trace_id\":\"828fb459-3b7f-4196-a690-12fc9ce99b1d\"}\n[2026-05-07 12:58:37] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"f586fc15-711b-4199-8fdf-dcd2df95af0c\",\"trace_id\":\"828fb459-3b7f-4196-a690-12fc9ce99b1d\"}\n[2026-05-07 12:58:37] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"f586fc15-711b-4199-8fdf-dcd2df95af0c\",\"trace_id\":\"828fb459-3b7f-4196-a690-12fc9ce99b1d\"}\n[2026-05-07 12:58:40] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"01d4e25d-56d5-4c89-bc29-d873e21cc16f\",\"trace_id\":\"ee1fe1ac-362b-47c1-9db2-7915a30cf0f2\"}\n[2026-05-07 12:58:40] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:56:00, 2026-05-07 12:58:00] {\"correlation_id\":\"01d4e25d-56d5-4c89-bc29-d873e21cc16f\",\"trace_id\":\"ee1fe1ac-362b-47c1-9db2-7915a30cf0f2\"}\n[2026-05-07 12:58:40] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:56:00, 2026-05-07 12:58:00] {\"correlation_id\":\"01d4e25d-56d5-4c89-bc29-d873e21cc16f\",\"trace_id\":\"ee1fe1ac-362b-47c1-9db2-7915a30cf0f2\"}\n[2026-05-07 12:58:40] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"01d4e25d-56d5-4c89-bc29-d873e21cc16f\",\"trace_id\":\"ee1fe1ac-362b-47c1-9db2-7915a30cf0f2\"}\n[2026-05-07 12:58:48] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"924e149e-3462-4043-87da-00838220b970\",\"trace_id\":\"7d0922db-8131-4a52-a0c5-2a7a78df42e8\"}\n[2026-05-07 12:58:48] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"calendar:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:48] local.NOTICE: Calendar sync start {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:48] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"924e149e-3462-4043-87da-00838220b970\",\"trace_id\":\"7d0922db-8131-4a52-a0c5-2a7a78df42e8\"}\n[2026-05-07 12:58:49] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1393,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:49] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1393,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:49] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:49] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1393,\"provider\":\"google\",\"refreshToken\":\"5aa7e2d96b53201cd16fca5d2e4ef3ad03320971fc064781d18aee3ae7b99fbf\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1393,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Account has been deleted\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1393,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1387,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1387,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1387,\"provider\":\"google\",\"refreshToken\":\"8157ac6de94842937194009e9c50e459253600f799dacf6a40755ffdbeb5bba6\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1387,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Account has been deleted\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1387,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1348,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1348,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1348,\"provider\":\"google\",\"refreshToken\":\"9e7d13d3032d0cb1b79d8e95aef01383e8e91eb52ff8ee960c8a0b6b95cd8c73\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1348,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Bad Request\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1348,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1361,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1361,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1361,\"provider\":\"google\",\"refreshToken\":\"6c843da199c2b9907445329304fcc4ec5057a4ee748d8299641764395c08e1fd\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1361,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Account has been deleted\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1361,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1310,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1310,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1310,\"provider\":\"google\",\"refreshToken\":\"e34818922c2830a660813a63f6169a4a9a992ae2cccd7dc8dd7796cfdb470ef1\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1310,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Bad Request\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1310,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1333,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1333,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1333,\"provider\":\"google\",\"refreshToken\":\"6c902986546d8e8da1dc539b046cdc1d458f519acc972e5b5f1d6a1a295165e0\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1333,\"provider\":\"google\",\"responseBody\":{\"error\":\"unauthorized_client\",\"error_description\":\"Unauthorized\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1333,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1368,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1368,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1368,\"provider\":\"google\",\"refreshToken\":\"d2f128898ff8543bd16b69cfae37896ab85119b0f5ed2b431d739593bb600333\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1368,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Bad Request\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1368,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1365,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1365,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1365,\"provider\":\"google\",\"refreshToken\":\"7676e4a9afcd082b413248ab5ec6e487021fec6a9bdf315860a59cefad9caad8\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1365,\"provider\":\"google\",\"responseBody\":{\"error\":\"unauthorized_client\",\"error_description\":\"Unauthorized\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1365,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1364,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1364,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1364,\"provider\":\"google\",\"refreshToken\":\"dd5882ebce76e645292ce33ae74238abbb77c0a4ecc6a2bfe723cad82e72ba8e\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1364,\"provider\":\"google\",\"responseBody\":{\"error\":\"unauthorized_client\",\"error_description\":\"Unauthorized\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1364,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1370,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1370,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1370,\"provider\":\"office\",\"refreshToken\":\"b7ee8035306d0043cea6e00e7c4fe14f745e44074a1194db62a31cdf8b70af3e\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1370,\"provider\":\"office\",\"responseBody\":\"{\\\"error\\\":\\\"invalid_client\\\",\\\"error_description\\\":\\\"AADSTS7000215: Invalid client secret provided. Ensure the secret being sent in the request is the client secret value, not the client secret ID, for a secret added to app 'bbcbb2ef-6200-4fae-82bd-d81f5dd738da'. Trace ID: ef9bb388-453e-4744-a2e1-95e49ced1700 Correlation ID: 3b889c73-f943-4048-ba3b-63ac50581245 Timestamp: 2026-05-07 12:58:53Z\\\",\\\"error_codes\\\":[7000215],\\\"timestamp\\\":\\\"2026-05-07 12:58:53Z\\\",\\\"trace_id\\\":\\\"ef9bb388-453e-4744-a2e1-95e49ced1700\\\",\\\"correlation_id\\\":\\\"3b889c73-f943-4048-ba3b-63ac50581245\\\",\\\"error_uri\\\":\\\"https://login.microsoftonline.com/error?code=7000215\\\"}\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1370,\"provider\":\"office\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1202,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1202,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1202,\"provider\":\"office\",\"refreshToken\":\"b458799ccc29b21a6e2eb5260fdb63e49ccba21bf942a3973fb63799bd7f0afe\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1202,\"provider\":\"office\",\"responseBody\":\"{\\\"error\\\":\\\"invalid_client\\\",\\\"error_description\\\":\\\"AADSTS7000215: Invalid client secret provided. Ensure the secret being sent in the request is the client secret value, not the client secret ID, for a secret added to app 'bbcbb2ef-6200-4fae-82bd-d81f5dd738da'. Trace ID: 0b8181c0-c858-4d17-af69-c23b7f5a0a00 Correlation ID: 2ce9e931-f423-4048-b1d7-ae1910cd4834 Timestamp: 2026-05-07 12:58:54Z\\\",\\\"error_codes\\\":[7000215],\\\"timestamp\\\":\\\"2026-05-07 12:58:54Z\\\",\\\"trace_id\\\":\\\"0b8181c0-c858-4d17-af69-c23b7f5a0a00\\\",\\\"correlation_id\\\":\\\"2ce9e931-f423-4048-b1d7-ae1910cd4834\\\",\\\"error_uri\\\":\\\"https://login.microsoftonline.com/error?code=7000215\\\"}\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1202,\"provider\":\"office\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1502,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1502,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: Calendar sync job dispatched {\"calendar_id\":501} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1300,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1300,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1300,\"provider\":\"google\",\"refreshToken\":\"4b811db0725fd9602a95943519a7da935e2a5065da7d9ebfcb170752e3e1ddb8\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1300,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Account has been deleted\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1300,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1409,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1409,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1409,\"provider\":\"google\",\"refreshToken\":\"e2a3f2d06894894eed1ee87d9db1ace77d4d42ee6e1288a8940ad2c10333b0c4\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1409,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Bad Request\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1409,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1352,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1352,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1352,\"provider\":\"google\",\"refreshToken\":\"dd4b16b00fdc1216da6b717c02338c073636e29162826b2de6db3f064fc029eb\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1352,\"provider\":\"google\",\"responseBody\":{\"error\":\"unauthorized_client\",\"error_description\":\"Unauthorized\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1352,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1296,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1296,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1296,\"provider\":\"office\",\"refreshToken\":\"011ae723c9d800c674e0b4be76f49fc046dac7d501b66c59ef0d9549cfa56ae5\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1296,\"provider\":\"office\",\"responseBody\":\"{\\\"error\\\":\\\"invalid_client\\\",\\\"error_description\\\":\\\"AADSTS7000215: Invalid client secret provided. Ensure the secret being sent in the request is the client secret value, not the client secret ID, for a secret added to app 'bbcbb2ef-6200-4fae-82bd-d81f5dd738da'. Trace ID: 4f38b1ca-479e-445c-8db5-29366d0a0c00 Correlation ID: d0a4d623-1a23-4fcc-aebf-ccafeed44a92 Timestamp: 2026-05-07 12:58:56Z\\\",\\\"error_codes\\\":[7000215],\\\"timestamp\\\":\\\"2026-05-07 12:58:56Z\\\",\\\"trace_id\\\":\\\"4f38b1ca-479e-445c-8db5-29366d0a0c00\\\",\\\"correlation_id\\\":\\\"d0a4d623-1a23-4fcc-aebf-ccafeed44a92\\\",\\\"error_uri\\\":\\\"https://login.microsoftonline.com/error?code=7000215\\\"}\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1296,\"provider\":\"office\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":391,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":391,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":391,\"provider\":\"office\",\"refreshToken\":\"00045eebae0f39b34887c6d53f92ae78064f7145e1f4b67754aebd03cfb2d881\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1502,\"provider\":\"google\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1502,\"provider\":\"google\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [Calendar] Processing sync {\"calendarId\":\"a33076c1-8d97-431a-99f0-85c9524e118b\",\"from\":null,\"to\":null,\"delta\":\"CIiFh8TP44kDEIiFh8TP44kDGAUgkZvkzgIokZvkzgI=\",\"last_sync\":\"2024-12-09 07:12:53\",\"dateMode\":\"daily\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"integration-app\",\"crm_owner\":1695,\"team_id\":3143} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1502,\"provider\":\"google\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1502,\"provider\":\"google\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":391,\"provider\":\"office\",\"responseBody\":\"{\\\"error\\\":\\\"invalid_client\\\",\\\"error_description\\\":\\\"AADSTS7000215: Invalid client secret provided. Ensure the secret being sent in the request is the client secret value, not the client secret ID, for a secret added to app 'bbcbb2ef-6200-4fae-82bd-d81f5dd738da'. Trace ID: 1791a948-a974-424b-9246-7fedfa913b00 Correlation ID: b0e7bf62-d69e-49dd-b7c9-9550f0bd2aec Timestamp: 2026-05-07 12:58:56Z\\\",\\\"error_codes\\\":[7000215],\\\"timestamp\\\":\\\"2026-05-07 12:58:56Z\\\",\\\"trace_id\\\":\\\"1791a948-a974-424b-9246-7fedfa913b00\\\",\\\"correlation_id\\\":\\\"b0e7bf62-d69e-49dd-b7c9-9550f0bd2aec\\\",\\\"error_uri\\\":\\\"https://login.microsoftonline.com/error?code=7000215\\\"}\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":391,\"provider\":\"office\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1271,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1271,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1271,\"provider\":\"office\",\"refreshToken\":\"118cde2c06993147b07ccaec4cbcd5026a819dea6c71081166a492933e392afb\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [Google Calendar] Failed to watch channel for calendar {\"calendarId\":\"a33076c1-8d97-431a-99f0-85c9524e118b\",\"code\":400,\"reason\":\"{\n \\\"error\\\": {\n \\\"errors\\\": [\n {\n \\\"domain\\\": \\\"global\\\",\n \\\"reason\\\": \\\"push.webhookUrlNotHttps\\\",\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n ],\n \\\"code\\\": 400,\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n}\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.WARNING: [Calendar] Sync failed {\"calendarId\":\"a33076c1-8d97-431a-99f0-85c9524e118b\",\"code\":400,\"reason\":\"{\n \\\"error\\\": {\n \\\"errors\\\": [\n {\n \\\"domain\\\": \\\"global\\\",\n \\\"reason\\\": \\\"push.webhookUrlNotHttps\\\",\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n ],\n \\\"code\\\": 400,\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n}\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1271,\"provider\":\"office\",\"responseBody\":\"{\\\"error\\\":\\\"invalid_client\\\",\\\"error_description\\\":\\\"AADSTS7000215: Invalid client secret provided. Ensure the secret being sent in the request is the client secret value, not the client secret ID, for a secret added to app 'bbcbb2ef-6200-4fae-82bd-d81f5dd738da'. Trace ID: 2be27598-8820-475c-b6ca-a30513720c00 Correlation ID: d3ed2a98-4aa9-4a63-819b-d36fd20b8d62 Timestamp: 2026-05-07 12:58:57Z\\\",\\\"error_codes\\\":[7000215],\\\"timestamp\\\":\\\"2026-05-07 12:58:57Z\\\",\\\"trace_id\\\":\\\"2be27598-8820-475c-b6ca-a30513720c00\\\",\\\"correlation_id\\\":\\\"d3ed2a98-4aa9-4a63-819b-d36fd20b8d62\\\",\\\"error_uri\\\":\\\"https://login.microsoftonline.com/error?code=7000215\\\"}\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1271,\"provider\":\"office\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1351,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1351,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1351,\"provider\":\"google\",\"refreshToken\":\"4271d15b9e60a606439caddc68337f783e472c85b03dacff14d1b6dfded9051c\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1351,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Bad Request\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1351,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1366,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1366,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1366,\"provider\":\"google\",\"refreshToken\":\"ae21385059b2eebfd43f68aecd56eccd702a1aabb6598f1f7ab594ed8af491b4\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1366,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Bad Request\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1366,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1115,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1115,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: Calendar sync job dispatched {\"calendar_id\":378} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:58] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1421,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:58] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1421,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:58] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:58] local.INFO: Calendar sync job dispatched {\"calendar_id\":504} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:58] local.NOTICE: Calendar sync end {\"retrieved_calendars\":31,\"processed_calendars\":3} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:58] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"calendar:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1115,\"provider\":\"google\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1115,\"provider\":\"google\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [Calendar] Processing sync {\"calendarId\":\"2676cb6d-f86c-427e-bf78-591e388e3c1e\",\"from\":null,\"to\":null,\"delta\":\"CJ_x49O3jpIDEJ_x49O3jpIDGAUgw67KlwMow67KlwM=\",\"last_sync\":\"2026-01-19 07:48:40\",\"dateMode\":\"daily\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.WARNING: [Pipedrive] Account not connected for user {\"userId\":\"e6538737-e7b4-455f-a37a-3e79b665a220\",\"account\":{\"Jiminny\\\\Models\\\\SocialAccount\":{\"id\":1116,\"sociable_id\":241,\"provider_user_id\":\"19555731\",\"expires\":1775683749,\"refresh_token_expires\":null,\"provider\":\"pipedrive\",\"state\":\"full-refresh\",\"auth_scope\":\"base,deals:full,activities:full,contacts:full,search:read\",\"retry_after\":null,\"created_at\":\"2023-09-08 09:44:29\",\"updated_at\":\"2026-04-08 22:58:34\"}}} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {\"crm_provider\":\"pipedrive\",\"crm_owner\":241,\"team_id\":19} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {\"crm_provider\":\"pipedrive\",\"team_id\":19} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {\"crm_provider\":\"pipedrive\",\"team_id\":19} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.WARNING: [Calendar] CRM disconnected for user so events will not be matched {\"provider\":\"pipedrive\",\"user_id\":241,\"message\":\"Your Pipedrive account has become disconnected. Please login to Jiminny to reconnect.\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1115,\"provider\":\"google\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1115,\"provider\":\"google\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [Google Calendar] Failed to watch channel for calendar {\"calendarId\":\"2676cb6d-f86c-427e-bf78-591e388e3c1e\",\"code\":400,\"reason\":\"{\n \\\"error\\\": {\n \\\"errors\\\": [\n {\n \\\"domain\\\": \\\"global\\\",\n \\\"reason\\\": \\\"push.webhookUrlNotHttps\\\",\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n ],\n \\\"code\\\": 400,\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n}\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.WARNING: [Calendar] Sync failed {\"calendarId\":\"2676cb6d-f86c-427e-bf78-591e388e3c1e\",\"code\":400,\"reason\":\"{\n \\\"error\\\": {\n \\\"errors\\\": [\n {\n \\\"domain\\\": \\\"global\\\",\n \\\"reason\\\": \\\"push.webhookUrlNotHttps\\\",\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n ],\n \\\"code\\\": 400,\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n}\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1421,\"provider\":\"office\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1421,\"provider\":\"office\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [Calendar] Processing sync {\"calendarId\":\"9e8b1a2c-1a8f-42bd-b161-810fc0baf540\",\"from\":null,\"to\":null,\"delta\":\"R0usmcdvmMuZCBYV0hguCHhwR3crxfEuMI8zGlf-bMYpCFtdxXvSJWTlnqQvu_jjoOrOYL2VG9rZwFHCERHxGfGEK3CmQX6x8MJG3ZbBXGuVIS6C7u-doY5maMRdsfnrHIAEMJd4Bs_WMfMH4tDJ8j9aul7DHDEJaP7w0PoPPpcoxu4nEk4vk-MolJBEgkSrayEewuBs5JVItUX9lUY2tA.yO2roNQ4Vdm6hBgoutuphGchuzbvsk7aqt5wHfcyeFQ\",\"last_sync\":\"2026-05-06 15:58:35\",\"dateMode\":\"daily\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":89,\"team_id\":2} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [MS Office Calendar] Skipping delta sync for daily mode {\"calendarId\":\"9e8b1a2c-1a8f-42bd-b161-810fc0baf540\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:59:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"cb5f9d32-02db-4883-a5c9-a5b86c1a2fbb\",\"trace_id\":\"4fb8a9a0-53b1-414a-813d-a259b89f3203\"}\n[2026-05-07 12:59:06] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"cb5f9d32-02db-4883-a5c9-a5b86c1a2fbb\",\"trace_id\":\"4fb8a9a0-53b1-414a-813d-a259b89f3203\"}\n[2026-05-07 12:59:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"cb5f9d32-02db-4883-a5c9-a5b86c1a2fbb\",\"trace_id\":\"4fb8a9a0-53b1-414a-813d-a259b89f3203\"}\n[2026-05-07 12:59:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"64313a2b-3a92-4419-ae59-caabfc9e9731\",\"trace_id\":\"16443bac-2196-4257-88bc-59445729f276\"}\n[2026-05-07 12:59:09] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"64313a2b-3a92-4419-ae59-caabfc9e9731\",\"trace_id\":\"16443bac-2196-4257-88bc-59445729f276\"}\n[2026-05-07 12:59:11] local.NOTICE: Monitoring start {\"correlation_id\":\"7678c2ca-049f-44e4-acce-2e711f8d7d40\",\"trace_id\":\"54ef3d3c-f1ea-4a01-aed2-db19a6739a06\"}\n[2026-05-07 12:59:11] local.NOTICE: Monitoring end {\"correlation_id\":\"7678c2ca-049f-44e4-acce-2e711f8d7d40\",\"trace_id\":\"54ef3d3c-f1ea-4a01-aed2-db19a6739a06\"}\n[2026-05-07 12:59:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"44d7c1a1-dfc9-4401-9f63-ad8b5bff9942\",\"trace_id\":\"9f6f5f38-60f5-4869-bfd2-f366d52eaa00\"}\n[2026-05-07 12:59:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"44d7c1a1-dfc9-4401-9f63-ad8b5bff9942\",\"trace_id\":\"9f6f5f38-60f5-4869-bfd2-f366d52eaa00\"}\n[2026-05-07 12:59:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"f90f3b8c-5161-4963-a963-a40284567af1\",\"trace_id\":\"94731c50-8ce2-44ec-ace6-2d46fb00fdb1\"}\n[2026-05-07 12:59:15] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"f90f3b8c-5161-4963-a963-a40284567af1\",\"trace_id\":\"94731c50-8ce2-44ec-ace6-2d46fb00fdb1\"}\n[2026-05-07 12:59:15] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"f90f3b8c-5161-4963-a963-a40284567af1\",\"trace_id\":\"94731c50-8ce2-44ec-ace6-2d46fb00fdb1\"}\n[2026-05-07 12:59:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"f90f3b8c-5161-4963-a963-a40284567af1\",\"trace_id\":\"94731c50-8ce2-44ec-ace6-2d46fb00fdb1\"}\n[2026-05-07 13:00:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"6f98d5e3-0aa8-496e-853a-a77b7a8b74ec\",\"trace_id\":\"b63e8546-4347-49f0-ad1a-92f4e4504843\"}\n[2026-05-07 13:00:10] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"6f98d5e3-0aa8-496e-853a-a77b7a8b74ec\",\"trace_id\":\"b63e8546-4347-49f0-ad1a-92f4e4504843\"}\n[2026-05-07 13:00:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"6f98d5e3-0aa8-496e-853a-a77b7a8b74ec\",\"trace_id\":\"b63e8546-4347-49f0-ad1a-92f4e4504843\"}\n[2026-05-07 13:00:13] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"50260ccd-f119-47b0-baee-514de27801f2\",\"trace_id\":\"40e651df-62f6-4c3a-83ab-842112ec3ece\"}\n[2026-05-07 13:00:13] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"50260ccd-f119-47b0-baee-514de27801f2\",\"trace_id\":\"40e651df-62f6-4c3a-83ab-842112ec3ece\"}\n[2026-05-07 13:00:17] local.NOTICE: Monitoring start {\"correlation_id\":\"f6104856-aca3-4e7b-964e-bba66d730eb3\",\"trace_id\":\"98f34b7b-f715-49cb-8d3a-4e74c1118445\"}\n[2026-05-07 13:00:17] local.NOTICE: Monitoring end {\"correlation_id\":\"f6104856-aca3-4e7b-964e-bba66d730eb3\",\"trace_id\":\"98f34b7b-f715-49cb-8d3a-4e74c1118445\"}\n[2026-05-07 13:00:19] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"b4a9e9a2-968c-429b-8fa8-67dd59bb297f\",\"trace_id\":\"ed6a83d0-8edb-4392-8717-26d91ffde80b\"}\n[2026-05-07 13:00:19] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"b4a9e9a2-968c-429b-8fa8-67dd59bb297f\",\"trace_id\":\"ed6a83d0-8edb-4392-8717-26d91ffde80b\"}\n[2026-05-07 13:00:21] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"b11474b2-8b19-4a2f-89c3-621fde9d3b1f\",\"trace_id\":\"8018d825-0809-411b-9b2a-078e2da6bacb\"}\n[2026-05-07 13:00:21] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"b11474b2-8b19-4a2f-89c3-621fde9d3b1f\",\"trace_id\":\"8018d825-0809-411b-9b2a-078e2da6bacb\"}\n[2026-05-07 13:00:21] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"b11474b2-8b19-4a2f-89c3-621fde9d3b1f\",\"trace_id\":\"8018d825-0809-411b-9b2a-078e2da6bacb\"}\n[2026-05-07 13:00:21] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"b11474b2-8b19-4a2f-89c3-621fde9d3b1f\",\"trace_id\":\"8018d825-0809-411b-9b2a-078e2da6bacb\"}\n[2026-05-07 13:00:23] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"d3b79f58-f9c8-4063-ac7e-7a0445cd1111\",\"trace_id\":\"802cf505-95fb-4f92-8c1b-79aa3ac53084\"}\n[2026-05-07 13:00:23] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:58:00, 2026-05-07 13:00:00] {\"correlation_id\":\"d3b79f58-f9c8-4063-ac7e-7a0445cd1111\",\"trace_id\":\"802cf505-95fb-4f92-8c1b-79aa3ac53084\"}\n[2026-05-07 13:00:23] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:58:00, 2026-05-07 13:00:00] {\"correlation_id\":\"d3b79f58-f9c8-4063-ac7e-7a0445cd1111\",\"trace_id\":\"802cf505-95fb-4f92-8c1b-79aa3ac53084\"}\n[2026-05-07 13:00:23] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"d3b79f58-f9c8-4063-ac7e-7a0445cd1111\",\"trace_id\":\"802cf505-95fb-4f92-8c1b-79aa3ac53084\"}\n[2026-05-07 13:00:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:purge-stale\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"32bad9c1-861c-4a46-bece-585cc1170bfd\",\"trace_id\":\"0c20e20f-6a91-4346-9455-5cd1451c32a1\"}\n[2026-05-07 13:00:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:purge-stale\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"32bad9c1-861c-4a46-bece-585cc1170bfd\",\"trace_id\":\"0c20e20f-6a91-4346-9455-5cd1451c32a1\"}\n[2026-05-07 13:00:29] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:text-relay:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"c9d4f687-1643-431e-9377-2573a2e593fd\",\"trace_id\":\"02fab433-9c9a-49f7-b836-2b8a42551912\"}\n[2026-05-07 13:00:30] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:text-relay:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"c9d4f687-1643-431e-9377-2573a2e593fd\",\"trace_id\":\"02fab433-9c9a-49f7-b836-2b8a42551912\"}\n[2026-05-07 13:00:33] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:pre-meeting-notification\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"57870bb4-45e8-47d8-b192-21d3297d2208\",\"trace_id\":\"ba8e9eac-2dc9-4ed8-bbf1-4a35aedb9efb\"}\n[2026-05-07 13:00:33] local.INFO: Running pre-meeting notification command {\"correlation_id\":\"57870bb4-45e8-47d8-b192-21d3297d2208\",\"trace_id\":\"ba8e9eac-2dc9-4ed8-bbf1-4a35aedb9efb\"}\n[2026-05-07 13:00:33] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:pre-meeting-notification\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"57870bb4-45e8-47d8-b192-21d3297d2208\",\"trace_id\":\"ba8e9eac-2dc9-4ed8-bbf1-4a35aedb9efb\"}\n[2026-05-07 13:00:35] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:start\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"6aeb181b-8314-4d45-aff7-e378793b04d9\",\"trace_id\":\"8ffc66f1-af64-4a58-8ce8-481b3a299dbb\"}\n[2026-05-07 13:00:35] local.INFO: Running conference:monitor:start command for activities in (2026-05-07 12:50:00, 2026-05-07 12:55:00] {\"correlation_id\":\"6aeb181b-8314-4d45-aff7-e378793b04d9\",\"trace_id\":\"8ffc66f1-af64-4a58-8ce8-481b3a299dbb\"}\n[2026-05-07 13:00:35] local.INFO: [conference:monitor:start] No activities found in (2026-05-07 12:50:00, 2026-05-07 12:55:00] {\"correlation_id\":\"6aeb181b-8314-4d45-aff7-e378793b04d9\",\"trace_id\":\"8ffc66f1-af64-4a58-8ce8-481b3a299dbb\"}\n[2026-05-07 13:00:35] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:start\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"6aeb181b-8314-4d45-aff7-e378793b04d9\",\"trace_id\":\"8ffc66f1-af64-4a58-8ce8-481b3a299dbb\"}\n[2026-05-07 13:00:37] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:end\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"888d4f67-ad14-4457-b51d-2cf8b2d315f9\",\"trace_id\":\"eaf4b0b3-0414-4563-b227-ce9c6a2e5b7e\"}\n[2026-05-07 13:00:37] local.INFO: conference:monitor:end:Jiminny\\Console\\Commands\\Activities\\MonitorMeetingEndCommand::logActivitiesEnded {\"from\":\"12:55\",\"to\":\"13:00\"} {\"correlation_id\":\"888d4f67-ad14-4457-b51d-2cf8b2d315f9\",\"trace_id\":\"eaf4b0b3-0414-4563-b227-ce9c6a2e5b7e\"}\n[2026-05-07 13:00:37] local.INFO: conference:monitor:end:Jiminny\\Console\\Commands\\Activities\\MonitorMeetingEndCommand::logActivitiesWithUnfinishedSession {\"from\":\"02:50\",\"to\":\"02:55\"} {\"correlation_id\":\"888d4f67-ad14-4457-b51d-2cf8b2d315f9\",\"trace_id\":\"eaf4b0b3-0414-4563-b227-ce9c6a2e5b7e\"}\n[2026-05-07 13:00:37] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:end\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"888d4f67-ad14-4457-b51d-2cf8b2d315f9\",\"trace_id\":\"eaf4b0b3-0414-4563-b227-ce9c6a2e5b7e\"}\n[2026-05-07 13:00:39] local.NOTICE: Repairing HubSpot tokens start {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:39] local.INFO: Trying to refresh HubSpot token {\"account_id\":59,\"updated_at\":\"2025-10-03 09:32:05\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:39] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:39] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":59,\"provider\":\"hubspot\",\"refreshToken\":\"97b78f6e2cc49965c00c2492b602b02708b1392551e6b3f113fbaa48992af90b\",\"state\":\"full-refresh\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:39] local.ERROR: Failed to refresh HubSpot token {\"account_id\":59,\"updated_at\":\"2025-10-03 09:32:05\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:39] local.INFO: Trying to refresh HubSpot token {\"account_id\":306,\"updated_at\":\"2023-11-27 09:30:03\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:39] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:39] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":306,\"provider\":\"hubspot\",\"refreshToken\":\"6fa6aa8cc641d131231acc3470f5c03cb3b07b2e580fb18f8acb3b1dbb72549b\",\"state\":\"full-refresh\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:40] local.ERROR: Failed to refresh HubSpot token {\"account_id\":306,\"updated_at\":\"2023-11-27 09:30:03\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:40] local.INFO: Trying to refresh HubSpot token {\"account_id\":1372,\"updated_at\":\"2025-10-02 14:47:06\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:40] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:40] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1372,\"provider\":\"hubspot\",\"refreshToken\":\"9aa73948c761da29dce46c177cf9aee1fde483a44169ca38723f9f0597d7a8c4\",\"state\":\"full-refresh\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:40] local.ERROR: Failed to refresh HubSpot token {\"account_id\":1372,\"updated_at\":\"2025-10-02 14:47:06\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:40] local.NOTICE: Repairing HubSpot tokens end {\"total\":3,\"fixed\":0,\"failed\":3} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:45] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"jiminny:transcription:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"b619cc55-b4ef-4913-ab44-6bce51933f7e\",\"trace_id\":\"7cacb418-6e9c-410b-bf3a-15bdf1837908\"}\n[2026-05-07 13:00:45] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:pre-meeting-reminder\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"a765990f-ffe2-44e0-967f-816f5452ce69\",\"trace_id\":\"9aee0f3f-7668-455f-b207-181b58848478\"}\n[2026-05-07 13:00:45] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"jiminny:transcription:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"b619cc55-b4ef-4913-ab44-6bce51933f7e\",\"trace_id\":\"7cacb418-6e9c-410b-bf3a-15bdf1837908\"}\n[2026-05-07 13:00:45] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:45] local.INFO: [HubSpot Journal Command] Starting polling service {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:45] local.INFO: [HubSpot Journal Polling] Service starting {\"memory_limit\":\"256M\",\"max_execution_time\":\"0\",\"initial_memory_mb\":62.0} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:45] local.INFO: [HubSpot Journal Polling] Acquired polling lock {\"expires_at\":\"2026-05-07T13:02:45.724437Z\"} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:45] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:45] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:45] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:pre-meeting-reminder\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"a765990f-ffe2-44e0-967f-816f5452ce69\",\"trace_id\":\"9aee0f3f-7668-455f-b207-181b58848478\"}\n[2026-05-07 13:00:45] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:49] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"crm:reset-governor\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"055b4798-a759-4621-9e0b-652f8ee69ea1\",\"trace_id\":\"10911ef4-48d1-404a-9345-ecf0f5cb9977\"}\n[2026-05-07 13:00:49] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"crm:reset-governor\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"055b4798-a759-4621-9e0b-652f8ee69ea1\",\"trace_id\":\"10911ef4-48d1-404a-9345-ecf0f5cb9977\"}\n[2026-05-07 13:00:51] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:51] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:51] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:53] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:53] local.INFO: Dispatching activity sync job {\"import_id\":812331,\"provider\":\"twilio-flex\",\"team\":\"jiminny\"} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:53] local.INFO: Dispatching activity sync job {\"import_id\":812332,\"provider\":\"xant\",\"team\":\"jiminny\"} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:53] local.INFO: Dispatching activity sync job {\"import_id\":812333,\"provider\":\"apollo\",\"team\":\"jiminny\"} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:53] local.INFO: Dispatching activity sync job {\"import_id\":812334,\"provider\":\"groove\",\"team\":\"jiminny\"} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:53] local.INFO: Dispatching activity sync job {\"import_id\":812335,\"provider\":\"twilio-video\",\"team\":\"jiminny\"} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:53] local.INFO: Dispatching activity sync job {\"import_id\":812336,\"provider\":\"hubspot\",\"team\":\"hubspot\"} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:53] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.WARNING: [Salesforce] Account not connected for user {\"userId\":\"cdf8b554-d951-4758-bc2b-c1b85d1cd0b9\",\"account\":null} {\"correlation_id\":\"fb068e24-e135-4914-9973-94f1a0f5dae2\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {\"crm_provider\":\"salesforce\",\"crm_owner\":3,\"team_id\":1} {\"correlation_id\":\"fb068e24-e135-4914-9973-94f1a0f5dae2\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {\"crm_provider\":\"salesforce\",\"team_id\":1} {\"correlation_id\":\"fb068e24-e135-4914-9973-94f1a0f5dae2\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {\"crm_provider\":\"salesforce\",\"team_id\":1} {\"correlation_id\":\"fb068e24-e135-4914-9973-94f1a0f5dae2\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.ALERT: [SyncActivity] Failed {\"import_id\":812331,\"provider\":\"twilio-flex\",\"provider_id\":317,\"team\":\"jiminny\",\"team_id\":1,\"reason\":\"Social account for Salesforce cannot be found. Please login to Jiminny to connect.\",\"file\":\"/home/jiminny/app/Services/Crm/BaseService.php\",\"line\":646} {\"correlation_id\":\"fb068e24-e135-4914-9973-94f1a0f5dae2\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"fe9470d4-bc5a-4195-919d-e4908e439f7c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"fe9470d4-bc5a-4195-919d-e4908e439f7c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"fe9470d4-bc5a-4195-919d-e4908e439f7c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:56] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:56] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:56] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:56] local.ALERT: [SyncActivity] Failed {\"import_id\":812332,\"provider\":\"xant\",\"provider_id\":161,\"team\":\"jiminny\",\"team_id\":1,\"reason\":\"Activity Provider account not connected.\",\"file\":\"/home/jiminny/app/Services/Activity/ActivityProviderService.php\",\"line\":174} {\"correlation_id\":\"fe9470d4-bc5a-4195-919d-e4908e439f7c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:56] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"e3a8ef92-20c7-4698-a07d-1aa2c21ac82c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:56] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"e3a8ef92-20c7-4698-a07d-1aa2c21ac82c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:56] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"e3a8ef92-20c7-4698-a07d-1aa2c21ac82c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:56] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:fail-stalled\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"441dabbc-0c1f-4d49-871c-08f96adbed01\",\"trace_id\":\"13597461-50ff-4a40-a329-255430126395\"}\n[2026-05-07 13:00:56] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:fail-stalled\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"441dabbc-0c1f-4d49-871c-08f96adbed01\",\"trace_id\":\"13597461-50ff-4a40-a329-255430126395\"}\n[2026-05-07 13:00:57] local.ALERT: [SyncActivity] Failed {\"import_id\":812333,\"provider\":\"apollo\",\"provider_id\":441,\"team\":\"jiminny\",\"team_id\":1,\"reason\":\"Activity Provider account not connected.\",\"file\":\"/home/jiminny/app/Services/Activity/ActivityProviderService.php\",\"line\":174} {\"correlation_id\":\"e3a8ef92-20c7-4698-a07d-1aa2c21ac82c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:57] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"1a0b64ee-3927-48e6-8ae3-fda14f35babb\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:57] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"1a0b64ee-3927-48e6-8ae3-fda14f35babb\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:57] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"1a0b64ee-3927-48e6-8ae3-fda14f35babb\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:57] local.ALERT: [SyncActivity] Failed {\"import_id\":812334,\"provider\":\"groove\",\"provider_id\":228,\"team\":\"jiminny\",\"team_id\":1,\"reason\":\"Activity Provider account not connected.\",\"file\":\"/home/jiminny/app/Services/Activity/ActivityProviderService.php\",\"line\":174} {\"correlation_id\":\"1a0b64ee-3927-48e6-8ae3-fda14f35babb\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:57] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"5e6fecb1-9905-4ab2-a494-e6d8215430c0\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:57] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"5e6fecb1-9905-4ab2-a494-e6d8215430c0\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:57] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"5e6fecb1-9905-4ab2-a494-e6d8215430c0\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.ALERT: [SyncActivity] Failed {\"import_id\":812335,\"provider\":\"twilio-video\",\"provider_id\":243,\"team\":\"jiminny\",\"team_id\":1,\"reason\":\"Activity Provider account not connected.\",\"file\":\"/home/jiminny/app/Services/Activity/ActivityProviderService.php\",\"line\":174} {\"correlation_id\":\"5e6fecb1-9905-4ab2-a494-e6d8215430c0\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":89,\"team_id\":2} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":408,\"provider\":\"hubspot\"} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":408,\"provider\":\"hubspot\"} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [SyncActivity] Start {\"import_id\":812336,\"provider\":\"hubspot\",\"provider_id\":31,\"team\":\"hubspot\",\"team_id\":2} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [HubSpot] Search calls for period {\"from\":\"2026-05-07 12:44:00\",\"to\":\"2026-05-07 13:00:00\"} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [SyncActivity] End {\"import_id\":812336,\"provider\":\"hubspot\",\"provider_id\":31,\"team\":\"hubspot\",\"team_id\":2} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [SyncActivity] Memory usage {\"import_id\":812336,\"provider\":\"hubspot\",\"provider_id\":31,\"team\":\"hubspot\",\"team_id\":2,\"memory_usage\":27230632,\"memory_real_usage\":67108864,\"pid\":37116} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:59] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"jiminny:transcription:retry-stuck\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"1db560c5-5d8c-419a-bfb0-e761473ecf44\",\"trace_id\":\"79eb494e-fd21-4171-b59d-d7d47358f1fb\"}\n[2026-05-07 13:00:59] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"jiminny:transcription:retry-stuck\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"1db560c5-5d8c-419a-bfb0-e761473ecf44\",\"trace_id\":\"79eb494e-fd21-4171-b59d-d7d47358f1fb\"}\n[2026-05-07 13:01:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"73c0e9d6-7ef5-4040-8e35-0a9bb4028abf\",\"trace_id\":\"55b51c26-06b9-4b59-b444-53017b805b30\"}\n[2026-05-07 13:01:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"73c0e9d6-7ef5-4040-8e35-0a9bb4028abf\",\"trace_id\":\"55b51c26-06b9-4b59-b444-53017b805b30\"}\n[2026-05-07 13:01:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"5a7e717c-f314-4601-b1b8-fd550703f463\",\"trace_id\":\"a64281e5-027f-4856-a3e3-4f176c58eb6e\"}\n[2026-05-07 13:01:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"5a7e717c-f314-4601-b1b8-fd550703f463\",\"trace_id\":\"a64281e5-027f-4856-a3e3-4f176c58eb6e\"}\n[2026-05-07 13:01:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"0c425954-2696-4890-97b7-219ccc38cf46\",\"trace_id\":\"d609b364-f3b6-4b85-babb-67caf96efdb1\"}\n[2026-05-07 13:01:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"0c425954-2696-4890-97b7-219ccc38cf46\",\"trace_id\":\"d609b364-f3b6-4b85-babb-67caf96efdb1\"}\n[2026-05-07 13:01:11] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:11] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:11] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"a6bad97b-3db2-4dd6-839f-fcd485f06e65\",\"trace_id\":\"dcdde4a9-962c-46d1-9386-42adb54efbbf\"}\n[2026-05-07 13:01:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"a6bad97b-3db2-4dd6-839f-fcd485f06e65\",\"trace_id\":\"dcdde4a9-962c-46d1-9386-42adb54efbbf\"}\n[2026-05-07 13:01:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"2893478e-8c43-4719-a2e8-7c9c0e0783e9\",\"trace_id\":\"3fc8f1f0-0727-42f1-8ee6-f2b32bd8834b\"}\n[2026-05-07 13:01:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"2893478e-8c43-4719-a2e8-7c9c0e0783e9\",\"trace_id\":\"3fc8f1f0-0727-42f1-8ee6-f2b32bd8834b\"}\n[2026-05-07 13:01:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"64f52ca1-b54e-46da-a760-73dbdf407eaf\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:17] local.INFO: Dispatching activity sync job {\"import_id\":812337,\"provider\":\"hubspot\",\"team\":\"hubspot\"} {\"correlation_id\":\"64f52ca1-b54e-46da-a760-73dbdf407eaf\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"64f52ca1-b54e-46da-a760-73dbdf407eaf\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"crm:bullhorn:ping\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"3c44e0a7-ec5d-4206-a925-69f6e0783c2a\",\"trace_id\":\"60cf7a36-37ca-4ac4-a632-f317578d908f\"}\n[2026-05-07 13:01:19] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"crm:bullhorn:ping\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"3c44e0a7-ec5d-4206-a925-69f6e0783c2a\",\"trace_id\":\"60cf7a36-37ca-4ac4-a632-f317578d908f\"}\n[2026-05-07 13:01:19] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":89,\"team_id\":2} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":408,\"provider\":\"hubspot\"} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":408,\"provider\":\"hubspot\"} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [SyncActivity] Start {\"import_id\":812337,\"provider\":\"hubspot\",\"provider_id\":31,\"team\":\"hubspot\",\"team_id\":2} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [HubSpot] Search calls for period {\"from\":\"2026-05-07 12:00:00\",\"to\":\"2026-05-07 13:00:00\"} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:20] local.INFO: [SyncActivity] End {\"import_id\":812337,\"provider\":\"hubspot\",\"provider_id\":31,\"team\":\"hubspot\",\"team_id\":2} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:20] local.INFO: [SyncActivity] Memory usage {\"import_id\":812337,\"provider\":\"hubspot\",\"provider_id\":31,\"team\":\"hubspot\",\"team_id\":2,\"memory_usage\":27392888,\"memory_real_usage\":67108864,\"pid\":37116} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:21] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"nudges:send\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"55ebbc10-80bf-4724-ac64-678f6ef891cc\",\"trace_id\":\"f5392dc4-b352-4cae-b82a-004f77bbaf26\"}\n[2026-05-07 13:01:21] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"nudges:send\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"55ebbc10-80bf-4724-ac64-678f6ef891cc\",\"trace_id\":\"f5392dc4-b352-4cae-b82a-004f77bbaf26\"}\n[2026-05-07 13:01:23] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"jiminny:playlists:normalize-sort\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"9e29cfb5-b7fc-41bc-a9fd-a160d2253806\",\"trace_id\":\"3e180d83-299d-4c6c-bdda-d5a8ac156efc\"}\n[2026-05-07 13:01:23] local.INFO: [Jiminny\\Component\\Playlist\\Command\\NormalizeSortCommand::handle] starting. {\"playlists\":[]} {\"correlation_id\":\"9e29cfb5-b7fc-41bc-a9fd-a160d2253806\",\"trace_id\":\"3e180d83-299d-4c6c-bdda-d5a8ac156efc\"}\n[2026-05-07 13:01:23] local.INFO: [Jiminny\\Component\\Playlist\\Command\\NormalizeSortCommand::handle] finished. {\"normalizedPlaylists\":[],\"deletedPlaylists\":[]} {\"correlation_id\":\"9e29cfb5-b7fc-41bc-a9fd-a160d2253806\",\"trace_id\":\"3e180d83-299d-4c6c-bdda-d5a8ac156efc\"}\n[2026-05-07 13:01:23] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"jiminny:playlists:normalize-sort\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"9e29cfb5-b7fc-41bc-a9fd-a160d2253806\",\"trace_id\":\"3e180d83-299d-4c6c-bdda-d5a8ac156efc\"}\n[2026-05-07 13:01:41] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:41] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:41] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:41] local.WARNING: [HubSpot Journal Polling] Maximum empty results reached, stopping {\"empty_results\":5,\"max_empty_results\":5} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:41] local.WARNING: [HubSpot Journal Polling] Maximum empty results reached, stopping {\"empty_results\":5,\"max_empty_results\":5} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:41] local.INFO: [HubSpot Journal Polling] Service ending {\"runtime_seconds\":56,\"total_cycles\":5,\"files_downloaded\":0,\"empty_files\":0,\"other_portal_skipped\":0,\"total_events\":0,\"events_per_file\":0,\"avg_api_ms\":181.3,\"avg_download_ms\":0.0,\"avg_transform_ms\":0.0,\"avg_process_ms\":0.0,\"peak_memory_mb\":99.73} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:41] local.INFO: [HubSpot Journal Polling] Released polling lock {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:02:05] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"fe3480ce-754b-4304-b661-e4ac7234a778\",\"trace_id\":\"619e9c15-f95f-47ce-af85-6d78a6698327\"}\n[2026-05-07 13:02:05] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"fe3480ce-754b-4304-b661-e4ac7234a778\",\"trace_id\":\"619e9c15-f95f-47ce-af85-6d78a6698327\"}\n[2026-05-07 13:02:05] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"fe3480ce-754b-4304-b661-e4ac7234a778\",\"trace_id\":\"619e9c15-f95f-47ce-af85-6d78a6698327\"}\n[2026-05-07 13:02:07] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"aa98bf14-5737-4097-9f53-ac6833fb7983\",\"trace_id\":\"2f858b11-1073-43d4-996a-57e259ec2795\"}\n[2026-05-07 13:02:07] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"aa98bf14-5737-4097-9f53-ac6833fb7983\",\"trace_id\":\"2f858b11-1073-43d4-996a-57e259ec2795\"}\n[2026-05-07 13:02:08] local.NOTICE: Monitoring start {\"correlation_id\":\"25c588be-ddd6-41f1-8db8-ae28f3dd5bf5\",\"trace_id\":\"58b4c110-21ab-4c22-be4f-5be3534cd17d\"}\n[2026-05-07 13:02:08] local.NOTICE: Monitoring end {\"correlation_id\":\"25c588be-ddd6-41f1-8db8-ae28f3dd5bf5\",\"trace_id\":\"58b4c110-21ab-4c22-be4f-5be3534cd17d\"}\n[2026-05-07 13:02:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"5e453d7a-4daf-4001-b100-6aa9485d0353\",\"trace_id\":\"d97e1107-3696-4acf-95db-9cc7f37412e1\"}\n[2026-05-07 13:02:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"5e453d7a-4daf-4001-b100-6aa9485d0353\",\"trace_id\":\"d97e1107-3696-4acf-95db-9cc7f37412e1\"}\n[2026-05-07 13:02:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"3fab4dfb-f0ae-4c2c-a882-e09a1ad3ee9b\",\"trace_id\":\"3a66f9c4-3f01-40e2-aee2-e77fdabe793f\"}\n[2026-05-07 13:02:12] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"3fab4dfb-f0ae-4c2c-a882-e09a1ad3ee9b\",\"trace_id\":\"3a66f9c4-3f01-40e2-aee2-e77fdabe793f\"}\n[2026-05-07 13:02:12] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"3fab4dfb-f0ae-4c2c-a882-e09a1ad3ee9b\",\"trace_id\":\"3a66f9c4-3f01-40e2-aee2-e77fdabe793f\"}\n[2026-05-07 13:02:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"3fab4dfb-f0ae-4c2c-a882-e09a1ad3ee9b\",\"trace_id\":\"3a66f9c4-3f01-40e2-aee2-e77fdabe793f\"}\n[2026-05-07 13:02:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"63252e6d-894f-4cb9-818a-0034bf3545cb\",\"trace_id\":\"7ddf2e72-9174-4623-a622-1a5c9ee952c5\"}\n[2026-05-07 13:02:15] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 13:00:00, 2026-05-07 13:02:00] {\"correlation_id\":\"63252e6d-894f-4cb9-818a-0034bf3545cb\",\"trace_id\":\"7ddf2e72-9174-4623-a622-1a5c9ee952c5\"}\n[2026-05-07 13:02:15] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 13:00:00, 2026-05-07 13:02:00] {\"correlation_id\":\"63252e6d-894f-4cb9-818a-0034bf3545cb\",\"trace_id\":\"7ddf2e72-9174-4623-a622-1a5c9ee952c5\"}\n[2026-05-07 13:02:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"63252e6d-894f-4cb9-818a-0034bf3545cb\",\"trace_id\":\"7ddf2e72-9174-4623-a622-1a5c9ee952c5\"}\n[2026-05-07 13:02:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:create\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"cf65b2c4-c602-432d-8087-d0c0fb7f8e80\",\"trace_id\":\"b7b39317-045c-4475-879e-3d399e23fc3e\"}\n[2026-05-07 13:02:17] local.INFO: [EmailSchedule] STARTING batch create {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"cf65b2c4-c602-432d-8087-d0c0fb7f8e80\",\"trace_id\":\"b7b39317-045c-4475-879e-3d399e23fc3e\"}\n[2026-05-07 13:02:17] local.INFO: [EmailSchedule] FINISHED batch create {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"cf65b2c4-c602-432d-8087-d0c0fb7f8e80\",\"trace_id\":\"b7b39317-045c-4475-879e-3d399e23fc3e\"}\n[2026-05-07 13:02:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:create\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"cf65b2c4-c602-432d-8087-d0c0fb7f8e80\",\"trace_id\":\"b7b39317-045c-4475-879e-3d399e23fc3e\"}\n[2026-05-07 13:02:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"c481124d-04ae-43fb-b1d3-a4282f7af7ff\",\"trace_id\":\"d2d083d1-7cee-4d21-b80e-4485361d9969\"}\n[2026-05-07 13:02:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"c481124d-04ae-43fb-b1d3-a4282f7af7ff\",\"trace_id\":\"d2d083d1-7cee-4d21-b80e-4485361d9969\"}\n[2026-05-07 13:02:20] local.INFO: [Jiminny\\Jobs\\Mailbox\\CreateBatches] processed 2 inboxes and created 0 batches {\"userId\":null,\"batchSize\":30,\"maxBatches\":1000} {\"correlation_id\":\"3e2ef780-0c9d-4c30-9dc9-92315055c632\",\"trace_id\":\"b7b39317-045c-4475-879e-3d399e23fc3e\"}\n[2026-05-07 13:03:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"8cb6c7bf-4a2d-4960-bf8f-0368643fec27\",\"trace_id\":\"68c67cd4-9b92-4e41-bc1e-ebb282ea5211\"}\n[2026-05-07 13:03:06] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"8cb6c7bf-4a2d-4960-bf8f-0368643fec27\",\"trace_id\":\"68c67cd4-9b92-4e41-bc1e-ebb282ea5211\"}\n[2026-05-07 13:03:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"8cb6c7bf-4a2d-4960-bf8f-0368643fec27\",\"trace_id\":\"68c67cd4-9b92-4e41-bc1e-ebb282ea5211\"}\n[2026-05-07 13:03:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"b18dc815-6c91-43df-b083-125316724586\",\"trace_id\":\"62a636e8-4128-49eb-b99b-15efcfb37267\"}\n[2026-05-07 13:03:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"b18dc815-6c91-43df-b083-125316724586\",\"trace_id\":\"62a636e8-4128-49eb-b99b-15efcfb37267\"}\n[2026-05-07 13:03:10] local.NOTICE: Monitoring start {\"correlation_id\":\"d74c3e14-fd1a-4cab-9892-e9e924af1144\",\"trace_id\":\"29547049-25f5-4b62-a603-276e1de3dde8\"}\n[2026-05-07 13:03:10] local.NOTICE: Monitoring end {\"correlation_id\":\"d74c3e14-fd1a-4cab-9892-e9e924af1144\",\"trace_id\":\"29547049-25f5-4b62-a603-276e1de3dde8\"}\n[2026-05-07 13:03:13] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"bd7a8c2f-3f0b-48e9-86c2-0f01f2cfd9e8\",\"trace_id\":\"a3d1ecb5-4122-43c1-98ca-5d74c3dc989c\"}\n[2026-05-07 13:03:13] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"bd7a8c2f-3f0b-48e9-86c2-0f01f2cfd9e8\",\"trace_id\":\"a3d1ecb5-4122-43c1-98ca-5d74c3dc989c\"}\n[2026-05-07 13:03:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"4b20eb61-2970-4a63-8ee0-b392f7406a78\",\"trace_id\":\"892c9d93-c280-4b3f-a97a-bf1266f5c090\"}\n[2026-05-07 13:03:14] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"4b20eb61-2970-4a63-8ee0-b392f7406a78\",\"trace_id\":\"892c9d93-c280-4b3f-a97a-bf1266f5c090\"}\n[2026-05-07 13:03:14] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"4b20eb61-2970-4a63-8ee0-b392f7406a78\",\"trace_id\":\"892c9d93-c280-4b3f-a97a-bf1266f5c090\"}\n[2026-05-07 13:03:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"4b20eb61-2970-4a63-8ee0-b392f7406a78\",\"trace_id\":\"892c9d93-c280-4b3f-a97a-bf1266f5c090\"}\n[2026-05-07 13:03:18] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"6a165ea3-f101-4ac9-bfcc-e7ad618ac645\",\"trace_id\":\"383367e5-a337-4793-be1c-a88a2a6fa2e5\"}\n[2026-05-07 13:03:18] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"6a165ea3-f101-4ac9-bfcc-e7ad618ac645\",\"trace_id\":\"383367e5-a337-4793-be1c-a88a2a6fa2e5\"}","depth":4,"on_screen":true,"value":"[2026-05-07 12:52:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"fa8a3008-d298-4682-bbbc-fdc77520e0d7\",\"trace_id\":\"7cfb2afb-9fc4-4a77-81be-65dce93c7d80\"}\n[2026-05-07 12:52:08] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"fa8a3008-d298-4682-bbbc-fdc77520e0d7\",\"trace_id\":\"7cfb2afb-9fc4-4a77-81be-65dce93c7d80\"}\n[2026-05-07 12:52:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"fa8a3008-d298-4682-bbbc-fdc77520e0d7\",\"trace_id\":\"7cfb2afb-9fc4-4a77-81be-65dce93c7d80\"}\n[2026-05-07 12:52:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"932ced9d-9804-48ed-976a-1f8bf5e75707\",\"trace_id\":\"21bf320c-58f3-4082-831d-9f07f6c6a669\"}\n[2026-05-07 12:52:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"932ced9d-9804-48ed-976a-1f8bf5e75707\",\"trace_id\":\"21bf320c-58f3-4082-831d-9f07f6c6a669\"}\n[2026-05-07 12:52:17] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:17] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:17] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:17] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":148,\"team_id\":2} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:17] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.55,\"average_seconds_per_request\":0.55} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:18] local.NOTICE: Monitoring start {\"correlation_id\":\"ae3ec78f-432c-4e22-b73b-0413af73d9f3\",\"trace_id\":\"c2feb517-0f2b-4ad9-bce5-4d57476a164b\"}\n[2026-05-07 12:52:18] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.51,\"average_seconds_per_request\":0.51} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:18] local.NOTICE: Monitoring end {\"correlation_id\":\"ae3ec78f-432c-4e22-b73b-0413af73d9f3\",\"trace_id\":\"c2feb517-0f2b-4ad9-bce5-4d57476a164b\"}\n[2026-05-07 12:52:18] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.48,\"average_seconds_per_request\":0.48} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:19] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.49,\"average_seconds_per_request\":0.49} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:19] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.49,\"average_seconds_per_request\":0.49} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"2bf2f73f-007c-4909-925e-f1749fbf87b3\",\"trace_id\":\"8429123c-d92c-48d9-a154-29bc0aa0e2a1\"}\n[2026-05-07 12:52:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"2bf2f73f-007c-4909-925e-f1749fbf87b3\",\"trace_id\":\"8429123c-d92c-48d9-a154-29bc0aa0e2a1\"}\n[2026-05-07 12:52:20] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.48,\"average_seconds_per_request\":0.48} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:20] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.62,\"average_seconds_per_request\":0.62} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:21] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.78,\"average_seconds_per_request\":0.78} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:22] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":1.21,\"average_seconds_per_request\":1.21} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:23] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.53,\"average_seconds_per_request\":0.53} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8\",\"trace_id\":\"64ccac6b-34f7-45ed-a8ac-b63adbb19107\"}\n[2026-05-07 12:52:25] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8\",\"trace_id\":\"64ccac6b-34f7-45ed-a8ac-b63adbb19107\"}\n[2026-05-07 12:52:26] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8\",\"trace_id\":\"64ccac6b-34f7-45ed-a8ac-b63adbb19107\"}\n[2026-05-07 12:52:26] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8\",\"trace_id\":\"64ccac6b-34f7-45ed-a8ac-b63adbb19107\"}\n[2026-05-07 12:52:28] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"6e1a36d0-a87a-455f-88b9-04f16718ea33\",\"trace_id\":\"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c\"}\n[2026-05-07 12:52:28] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:50:00, 2026-05-07 12:52:00] {\"correlation_id\":\"6e1a36d0-a87a-455f-88b9-04f16718ea33\",\"trace_id\":\"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c\"}\n[2026-05-07 12:52:28] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:50:00, 2026-05-07 12:52:00] {\"correlation_id\":\"6e1a36d0-a87a-455f-88b9-04f16718ea33\",\"trace_id\":\"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c\"}\n[2026-05-07 12:52:28] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"6e1a36d0-a87a-455f-88b9-04f16718ea33\",\"trace_id\":\"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c\"}\n[2026-05-07 12:52:31] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:create\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"80549428-beea-4a6c-97d3-818ca0f059f3\",\"trace_id\":\"55ddd59b-073b-4331-8cdb-baa869dcff70\"}\n[2026-05-07 12:52:31] local.INFO: [EmailSchedule] STARTING batch create {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"80549428-beea-4a6c-97d3-818ca0f059f3\",\"trace_id\":\"55ddd59b-073b-4331-8cdb-baa869dcff70\"}\n[2026-05-07 12:52:31] local.INFO: [EmailSchedule] FINISHED batch create {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"80549428-beea-4a6c-97d3-818ca0f059f3\",\"trace_id\":\"55ddd59b-073b-4331-8cdb-baa869dcff70\"}\n[2026-05-07 12:52:31] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:create\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"80549428-beea-4a6c-97d3-818ca0f059f3\",\"trace_id\":\"55ddd59b-073b-4331-8cdb-baa869dcff70\"}\n[2026-05-07 12:52:32] local.INFO: [Jiminny\\Jobs\\Mailbox\\CreateBatches] processed 2 inboxes and created 0 batches {\"userId\":null,\"batchSize\":30,\"maxBatches\":1000} {\"correlation_id\":\"92242bd6-7014-4487-a50b-1570e1a88e7a\",\"trace_id\":\"55ddd59b-073b-4331-8cdb-baa869dcff70\"}\n[2026-05-07 12:52:39] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"d467eace-3254-4ecc-8d8e-a94688d6d3ad\",\"trace_id\":\"5105ca8f-3c0d-4798-b748-5a7d6fbd7531\"}\n[2026-05-07 12:52:39] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"d467eace-3254-4ecc-8d8e-a94688d6d3ad\",\"trace_id\":\"5105ca8f-3c0d-4798-b748-5a7d6fbd7531\"}\n[2026-05-07 12:53:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"04363b29-2f82-470a-89d0-c5ce4f4779d7\",\"trace_id\":\"3c76a1f1-3348-4e2b-897c-4a216ca95147\"}\n[2026-05-07 12:53:08] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"04363b29-2f82-470a-89d0-c5ce4f4779d7\",\"trace_id\":\"3c76a1f1-3348-4e2b-897c-4a216ca95147\"}\n[2026-05-07 12:53:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"04363b29-2f82-470a-89d0-c5ce4f4779d7\",\"trace_id\":\"3c76a1f1-3348-4e2b-897c-4a216ca95147\"}\n[2026-05-07 12:53:11] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"5ebbecd0-866c-443f-965f-b6ac03735379\",\"trace_id\":\"e0a724a5-bb4b-4fe6-9fe9-36ea1c3f0326\"}\n[2026-05-07 12:53:11] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"5ebbecd0-866c-443f-965f-b6ac03735379\",\"trace_id\":\"e0a724a5-bb4b-4fe6-9fe9-36ea1c3f0326\"}\n[2026-05-07 12:53:18] local.NOTICE: Monitoring start {\"correlation_id\":\"f39f0d3c-a292-41cb-8834-45dae1f8cf47\",\"trace_id\":\"b6e7e2a7-85af-401d-afc6-bec2bdab34d7\"}\n[2026-05-07 12:53:18] local.NOTICE: Monitoring end {\"correlation_id\":\"f39f0d3c-a292-41cb-8834-45dae1f8cf47\",\"trace_id\":\"b6e7e2a7-85af-401d-afc6-bec2bdab34d7\"}\n[2026-05-07 12:53:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"419bb747-2669-496f-944b-1073496cc271\",\"trace_id\":\"4cb913a4-ef75-422b-80eb-fbfb988521ed\"}\n[2026-05-07 12:53:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"419bb747-2669-496f-944b-1073496cc271\",\"trace_id\":\"4cb913a4-ef75-422b-80eb-fbfb988521ed\"}\n[2026-05-07 12:53:22] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"f4805c97-9344-4111-8be2-2b1efeae07bb\",\"trace_id\":\"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22\"}\n[2026-05-07 12:53:22] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"f4805c97-9344-4111-8be2-2b1efeae07bb\",\"trace_id\":\"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22\"}\n[2026-05-07 12:53:22] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"f4805c97-9344-4111-8be2-2b1efeae07bb\",\"trace_id\":\"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22\"}\n[2026-05-07 12:53:22] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"f4805c97-9344-4111-8be2-2b1efeae07bb\",\"trace_id\":\"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22\"}\n[2026-05-07 12:53:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"2eadb06b-2c2e-4a7f-8920-77bd30d6cd7f\",\"trace_id\":\"75f27a23-2021-41a5-9e5f-4b1cb4f143a6\"}\n[2026-05-07 12:53:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"2eadb06b-2c2e-4a7f-8920-77bd30d6cd7f\",\"trace_id\":\"75f27a23-2021-41a5-9e5f-4b1cb4f143a6\"}\n[2026-05-07 12:54:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"ad151521-f676-4351-a70b-f44dc0b94990\",\"trace_id\":\"17e39c4c-85cb-49a4-815e-b7315a8c2249\"}\n[2026-05-07 12:54:06] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"ad151521-f676-4351-a70b-f44dc0b94990\",\"trace_id\":\"17e39c4c-85cb-49a4-815e-b7315a8c2249\"}\n[2026-05-07 12:54:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"ad151521-f676-4351-a70b-f44dc0b94990\",\"trace_id\":\"17e39c4c-85cb-49a4-815e-b7315a8c2249\"}\n[2026-05-07 12:54:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"ed0583cf-03c6-4696-b859-876c8efa4473\",\"trace_id\":\"3f9e0a3c-2178-4885-95eb-8618b8cfc042\"}\n[2026-05-07 12:54:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"ed0583cf-03c6-4696-b859-876c8efa4473\",\"trace_id\":\"3f9e0a3c-2178-4885-95eb-8618b8cfc042\"}\n[2026-05-07 12:54:10] local.NOTICE: Monitoring start {\"correlation_id\":\"7142250a-b897-4620-8ff7-fd9b3a1f3802\",\"trace_id\":\"597def1e-ca38-4cc4-8890-fdcd5baff948\"}\n[2026-05-07 12:54:10] local.NOTICE: Monitoring end {\"correlation_id\":\"7142250a-b897-4620-8ff7-fd9b3a1f3802\",\"trace_id\":\"597def1e-ca38-4cc4-8890-fdcd5baff948\"}\n[2026-05-07 12:54:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"cb2ada48-0200-4eb3-a8c5-6cb8ea43ec0d\",\"trace_id\":\"73937bdc-10b9-4508-9ef2-86420fe774fc\"}\n[2026-05-07 12:54:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"cb2ada48-0200-4eb3-a8c5-6cb8ea43ec0d\",\"trace_id\":\"73937bdc-10b9-4508-9ef2-86420fe774fc\"}\n[2026-05-07 12:54:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"8f1d8932-2839-4256-99ab-1fd13e8381c6\",\"trace_id\":\"cc090767-edc2-4a89-90c2-116f1737de7f\"}\n[2026-05-07 12:54:14] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"8f1d8932-2839-4256-99ab-1fd13e8381c6\",\"trace_id\":\"cc090767-edc2-4a89-90c2-116f1737de7f\"}\n[2026-05-07 12:54:14] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"8f1d8932-2839-4256-99ab-1fd13e8381c6\",\"trace_id\":\"cc090767-edc2-4a89-90c2-116f1737de7f\"}\n[2026-05-07 12:54:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"8f1d8932-2839-4256-99ab-1fd13e8381c6\",\"trace_id\":\"cc090767-edc2-4a89-90c2-116f1737de7f\"}\n[2026-05-07 12:54:16] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"9d324c6d-5b36-46ee-89c6-f95f86bf3f39\",\"trace_id\":\"860cdff0-9356-4e94-84cc-e011a74ba56c\"}\n[2026-05-07 12:54:16] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:52:00, 2026-05-07 12:54:00] {\"correlation_id\":\"9d324c6d-5b36-46ee-89c6-f95f86bf3f39\",\"trace_id\":\"860cdff0-9356-4e94-84cc-e011a74ba56c\"}\n[2026-05-07 12:54:16] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:52:00, 2026-05-07 12:54:00] {\"correlation_id\":\"9d324c6d-5b36-46ee-89c6-f95f86bf3f39\",\"trace_id\":\"860cdff0-9356-4e94-84cc-e011a74ba56c\"}\n[2026-05-07 12:54:16] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"9d324c6d-5b36-46ee-89c6-f95f86bf3f39\",\"trace_id\":\"860cdff0-9356-4e94-84cc-e011a74ba56c\"}\n[2026-05-07 12:54:18] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:aircall:check-and-renew\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"c2009a88-eea6-4954-8642-ef5d9cb56b42\",\"trace_id\":\"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab\"}\n[2026-05-07 12:54:18] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1496,\"provider\":\"aircall\"} {\"correlation_id\":\"c2009a88-eea6-4954-8642-ef5d9cb56b42\",\"trace_id\":\"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab\"}\n[2026-05-07 12:54:18] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1496,\"provider\":\"aircall\"} {\"correlation_id\":\"c2009a88-eea6-4954-8642-ef5d9cb56b42\",\"trace_id\":\"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab\"}\n[2026-05-07 12:54:18] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"c2009a88-eea6-4954-8642-ef5d9cb56b42\",\"trace_id\":\"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab\"}\n[2026-05-07 12:54:19] local.ERROR: [Aircall] Re-activating webhooks failed {\"team_id\":1,\"reason\":\"{\\\"message\\\":\\\"Forbidden\\\"}\"} {\"correlation_id\":\"c2009a88-eea6-4954-8642-ef5d9cb56b42\",\"trace_id\":\"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab\"}\n[2026-05-07 12:54:19] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:aircall:check-and-renew\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"c2009a88-eea6-4954-8642-ef5d9cb56b42\",\"trace_id\":\"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab\"}\n[2026-05-07 12:54:21] local.INFO: [RetryFailedDownloads] Starting {\"options\":{\"from\":null,\"to\":null,\"help\":false,\"silent\":false,\"quiet\":false,\"verbose\":false,\"version\":false,\"ansi\":null,\"no-interaction\":false,\"env\":null}} {\"correlation_id\":\"825ef2d7-b5f8-45cd-b19d-20a179b06934\",\"trace_id\":\"5825a6c8-14c9-4bec-b688-d4895cfc41cc\"}\n[2026-05-07 12:55:05] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"c0dc8e25-7a51-4023-be61-d0abd6d72e37\",\"trace_id\":\"16b8fa3e-92b1-465e-82d4-642a2d14c7c5\"}\n[2026-05-07 12:55:05] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"c0dc8e25-7a51-4023-be61-d0abd6d72e37\",\"trace_id\":\"16b8fa3e-92b1-465e-82d4-642a2d14c7c5\"}\n[2026-05-07 12:55:05] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"c0dc8e25-7a51-4023-be61-d0abd6d72e37\",\"trace_id\":\"16b8fa3e-92b1-465e-82d4-642a2d14c7c5\"}\n[2026-05-07 12:55:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"1c65fdd1-1f79-435d-b469-add46ddafd63\",\"trace_id\":\"62f2a3bb-3be7-4c76-a9dd-222bfb895fab\"}\n[2026-05-07 12:55:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"1c65fdd1-1f79-435d-b469-add46ddafd63\",\"trace_id\":\"62f2a3bb-3be7-4c76-a9dd-222bfb895fab\"}\n[2026-05-07 12:55:11] local.NOTICE: Monitoring start {\"correlation_id\":\"f115f9bc-bb59-4fc9-8c9f-8b69baba1a55\",\"trace_id\":\"e75cb5c6-6dd8-4000-8d26-4418020c7cfe\"}\n[2026-05-07 12:55:11] local.NOTICE: Monitoring end {\"correlation_id\":\"f115f9bc-bb59-4fc9-8c9f-8b69baba1a55\",\"trace_id\":\"e75cb5c6-6dd8-4000-8d26-4418020c7cfe\"}\n[2026-05-07 12:55:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"dba5c474-4d40-44da-baf2-f8b30db9a2f5\",\"trace_id\":\"adb45622-1fb0-457c-bf20-8dcceab2d62a\"}\n[2026-05-07 12:55:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"dba5c474-4d40-44da-baf2-f8b30db9a2f5\",\"trace_id\":\"adb45622-1fb0-457c-bf20-8dcceab2d62a\"}\n[2026-05-07 12:55:16] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"22c96a8e-4424-4a1f-b349-206276eefe4c\",\"trace_id\":\"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c\"}\n[2026-05-07 12:55:16] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"22c96a8e-4424-4a1f-b349-206276eefe4c\",\"trace_id\":\"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c\"}\n[2026-05-07 12:55:16] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"22c96a8e-4424-4a1f-b349-206276eefe4c\",\"trace_id\":\"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c\"}\n[2026-05-07 12:55:16] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"22c96a8e-4424-4a1f-b349-206276eefe4c\",\"trace_id\":\"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c\"}\n[2026-05-07 12:55:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:purge-stale\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"5f958e8d-1d01-4144-abd6-2513e5524ad3\",\"trace_id\":\"828bc5b7-e2aa-4443-901f-38dd94bb7cc5\"}\n[2026-05-07 12:55:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:purge-stale\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"5f958e8d-1d01-4144-abd6-2513e5524ad3\",\"trace_id\":\"828bc5b7-e2aa-4443-901f-38dd94bb7cc5\"}\n[2026-05-07 12:55:22] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:text-relay:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"6bd1c9cb-cd9a-42a9-87fe-45cb7bac687a\",\"trace_id\":\"0f2f5d66-c4c9-46a5-a31b-6937663ce1ad\"}\n[2026-05-07 12:55:22] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:text-relay:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"6bd1c9cb-cd9a-42a9-87fe-45cb7bac687a\",\"trace_id\":\"0f2f5d66-c4c9-46a5-a31b-6937663ce1ad\"}\n[2026-05-07 12:55:24] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:pre-meeting-notification\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"c5dd8132-d7e1-4caa-84d1-0a50d02df8da\",\"trace_id\":\"bc7341c5-b8e2-48ea-9670-7ec375363180\"}\n[2026-05-07 12:55:24] local.INFO: Running pre-meeting notification command {\"correlation_id\":\"c5dd8132-d7e1-4caa-84d1-0a50d02df8da\",\"trace_id\":\"bc7341c5-b8e2-48ea-9670-7ec375363180\"}\n[2026-05-07 12:55:24] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:pre-meeting-notification\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"c5dd8132-d7e1-4caa-84d1-0a50d02df8da\",\"trace_id\":\"bc7341c5-b8e2-48ea-9670-7ec375363180\"}\n[2026-05-07 12:55:26] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:start\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0\",\"trace_id\":\"efb1619f-4185-4319-9bfb-305cee0b6bfc\"}\n[2026-05-07 12:55:26] local.INFO: Running conference:monitor:start command for activities in (2026-05-07 12:45:00, 2026-05-07 12:50:00] {\"correlation_id\":\"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0\",\"trace_id\":\"efb1619f-4185-4319-9bfb-305cee0b6bfc\"}\n[2026-05-07 12:55:26] local.INFO: [conference:monitor:start] No activities found in (2026-05-07 12:45:00, 2026-05-07 12:50:00] {\"correlation_id\":\"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0\",\"trace_id\":\"efb1619f-4185-4319-9bfb-305cee0b6bfc\"}\n[2026-05-07 12:55:26] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:start\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0\",\"trace_id\":\"efb1619f-4185-4319-9bfb-305cee0b6bfc\"}\n[2026-05-07 12:55:28] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:end\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"3792b31a-080a-4fe4-9823-5602361325ba\",\"trace_id\":\"41a2fde1-48f6-4667-84b7-a2f93e9ad2da\"}\n[2026-05-07 12:55:28] local.INFO: conference:monitor:end:Jiminny\\Console\\Commands\\Activities\\MonitorMeetingEndCommand::logActivitiesEnded {\"from\":\"12:50\",\"to\":\"12:55\"} {\"correlation_id\":\"3792b31a-080a-4fe4-9823-5602361325ba\",\"trace_id\":\"41a2fde1-48f6-4667-84b7-a2f93e9ad2da\"}\n[2026-05-07 12:55:28] local.INFO: conference:monitor:end:Jiminny\\Console\\Commands\\Activities\\MonitorMeetingEndCommand::logActivitiesWithUnfinishedSession {\"from\":\"02:45\",\"to\":\"02:50\"} {\"correlation_id\":\"3792b31a-080a-4fe4-9823-5602361325ba\",\"trace_id\":\"41a2fde1-48f6-4667-84b7-a2f93e9ad2da\"}\n[2026-05-07 12:55:28] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:end\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"3792b31a-080a-4fe4-9823-5602361325ba\",\"trace_id\":\"41a2fde1-48f6-4667-84b7-a2f93e9ad2da\"}\n[2026-05-07 12:55:30] local.NOTICE: Repairing HubSpot tokens start {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:30] local.INFO: Trying to refresh HubSpot token {\"account_id\":59,\"updated_at\":\"2025-10-03 09:32:05\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:30] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:30] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":59,\"provider\":\"hubspot\",\"refreshToken\":\"97b78f6e2cc49965c00c2492b602b02708b1392551e6b3f113fbaa48992af90b\",\"state\":\"full-refresh\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.ERROR: Failed to refresh HubSpot token {\"account_id\":59,\"updated_at\":\"2025-10-03 09:32:05\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.INFO: Trying to refresh HubSpot token {\"account_id\":306,\"updated_at\":\"2023-11-27 09:30:03\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":306,\"provider\":\"hubspot\",\"refreshToken\":\"6fa6aa8cc641d131231acc3470f5c03cb3b07b2e580fb18f8acb3b1dbb72549b\",\"state\":\"full-refresh\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.ERROR: Failed to refresh HubSpot token {\"account_id\":306,\"updated_at\":\"2023-11-27 09:30:03\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.INFO: Trying to refresh HubSpot token {\"account_id\":1372,\"updated_at\":\"2025-10-02 14:47:06\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1372,\"provider\":\"hubspot\",\"refreshToken\":\"9aa73948c761da29dce46c177cf9aee1fde483a44169ca38723f9f0597d7a8c4\",\"state\":\"full-refresh\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:32] local.ERROR: Failed to refresh HubSpot token {\"account_id\":1372,\"updated_at\":\"2025-10-02 14:47:06\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:32] local.NOTICE: Repairing HubSpot tokens end {\"total\":3,\"fixed\":0,\"failed\":3} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:40] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"crm:bullhorn:ping\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"5e676ae4-5d63-49d4-9001-559088adf06b\",\"trace_id\":\"2fcce073-dd68-4c99-b7c4-b9e03c20b8e4\"}\n[2026-05-07 12:55:40] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:pre-meeting-reminder\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"1f830896-8142-41d1-bfc9-4cbb9179ffda\",\"trace_id\":\"e348a096-7f37-4308-a6d8-66131e8be901\"}\n[2026-05-07 12:55:40] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"crm:bullhorn:ping\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"5e676ae4-5d63-49d4-9001-559088adf06b\",\"trace_id\":\"2fcce073-dd68-4c99-b7c4-b9e03c20b8e4\"}\n[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Command] Starting polling service {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Service starting {\"memory_limit\":\"256M\",\"max_execution_time\":\"0\",\"initial_memory_mb\":62.0} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Acquired polling lock {\"expires_at\":\"2026-05-07T12:57:40.609671Z\"} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:40] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:40] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:pre-meeting-reminder\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"1f830896-8142-41d1-bfc9-4cbb9179ffda\",\"trace_id\":\"e348a096-7f37-4308-a6d8-66131e8be901\"}\n[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:45] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:45] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:46] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:51] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:51] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:51] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:06] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:06] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:06] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"2d8b30b4-87aa-480f-9b9e-5a9c709b742a\",\"trace_id\":\"25b7be6c-1faf-430b-a724-a4ff28773a31\"}\n[2026-05-07 12:56:08] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"2d8b30b4-87aa-480f-9b9e-5a9c709b742a\",\"trace_id\":\"25b7be6c-1faf-430b-a724-a4ff28773a31\"}\n[2026-05-07 12:56:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"2d8b30b4-87aa-480f-9b9e-5a9c709b742a\",\"trace_id\":\"25b7be6c-1faf-430b-a724-a4ff28773a31\"}\n[2026-05-07 12:56:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"efd336d7-db4d-459e-b6e7-bf73454e955e\",\"trace_id\":\"0a82c3d5-0417-48c8-b88f-70ec33e2326a\"}\n[2026-05-07 12:56:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"efd336d7-db4d-459e-b6e7-bf73454e955e\",\"trace_id\":\"0a82c3d5-0417-48c8-b88f-70ec33e2326a\"}\n[2026-05-07 12:56:12] local.NOTICE: Monitoring start {\"correlation_id\":\"68481576-8ca6-4ee5-821b-07374702971d\",\"trace_id\":\"c73eac09-5d20-425f-9c22-bd6c65fc60c9\"}\n[2026-05-07 12:56:12] local.NOTICE: Monitoring end {\"correlation_id\":\"68481576-8ca6-4ee5-821b-07374702971d\",\"trace_id\":\"c73eac09-5d20-425f-9c22-bd6c65fc60c9\"}\n[2026-05-07 12:56:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"bd0cdc75-b5c2-4dbb-bc44-e36c96813d24\",\"trace_id\":\"f688cd98-c171-4e30-8c72-afc14f040861\"}\n[2026-05-07 12:56:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"bd0cdc75-b5c2-4dbb-bc44-e36c96813d24\",\"trace_id\":\"f688cd98-c171-4e30-8c72-afc14f040861\"}\n[2026-05-07 12:56:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"f01636a9-4059-4ab0-9ad2-b078d42cedbd\",\"trace_id\":\"fea938d8-aedc-40ec-b8c2-2f487e1ac808\"}\n[2026-05-07 12:56:20] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"f01636a9-4059-4ab0-9ad2-b078d42cedbd\",\"trace_id\":\"fea938d8-aedc-40ec-b8c2-2f487e1ac808\"}\n[2026-05-07 12:56:20] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"f01636a9-4059-4ab0-9ad2-b078d42cedbd\",\"trace_id\":\"fea938d8-aedc-40ec-b8c2-2f487e1ac808\"}\n[2026-05-07 12:56:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"f01636a9-4059-4ab0-9ad2-b078d42cedbd\",\"trace_id\":\"fea938d8-aedc-40ec-b8c2-2f487e1ac808\"}\n[2026-05-07 12:56:23] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"d4558901-264d-4238-8589-62a137bac1fd\",\"trace_id\":\"38e6b5dc-ebd6-46a7-8224-7374d4e58630\"}\n[2026-05-07 12:56:23] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:54:00, 2026-05-07 12:56:00] {\"correlation_id\":\"d4558901-264d-4238-8589-62a137bac1fd\",\"trace_id\":\"38e6b5dc-ebd6-46a7-8224-7374d4e58630\"}\n[2026-05-07 12:56:23] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:54:00, 2026-05-07 12:56:00] {\"correlation_id\":\"d4558901-264d-4238-8589-62a137bac1fd\",\"trace_id\":\"38e6b5dc-ebd6-46a7-8224-7374d4e58630\"}\n[2026-05-07 12:56:23] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"d4558901-264d-4238-8589-62a137bac1fd\",\"trace_id\":\"38e6b5dc-ebd6-46a7-8224-7374d4e58630\"}\n[2026-05-07 12:56:24] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"crm:sync-hubspot-objects\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"7bfaf9be-0ca1-4170-a0c9-83e0ed61881c\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:24] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"crm:sync-hubspot-objects\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"7bfaf9be-0ca1-4170-a0c9-83e0ed61881c\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:26] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:notify-not-logged\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"2541e0fa-1117-4863-9523-d723b5821a24\",\"trace_id\":\"d9600320-5133-4938-bdd1-2256dfdf8db4\"}\n[2026-05-07 12:56:26] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:notify-not-logged\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"2541e0fa-1117-4863-9523-d723b5821a24\",\"trace_id\":\"d9600320-5133-4938-bdd1-2256dfdf8db4\"}\n[2026-05-07 12:56:35] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"e444f776-37db-4c6d-b30e-20b01a089de7\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:36] local.INFO: [EmailSchedule] STARTING Inbox Sync {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"e444f776-37db-4c6d-b30e-20b01a089de7\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:36] local.INFO: [EmailSchedule] FINISHED Inbox Sync {\"host\":\"docker_lamp_1\",\"events\":2} {\"correlation_id\":\"e444f776-37db-4c6d-b30e-20b01a089de7\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:36] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"e444f776-37db-4c6d-b30e-20b01a089de7\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:36] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:36] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:36] local.INFO: [HubSpot Journal Auth] Requesting new client credentials token {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:37] local.INFO: [HubSpot Journal Auth] Successfully obtained new access token {\"expires_in\":1800,\"cached_for\":1500} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:37] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:37] local.WARNING: [HubSpot Journal Polling] Maximum empty results reached, stopping {\"empty_results\":5,\"max_empty_results\":5} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:37] local.WARNING: [HubSpot Journal Polling] Maximum empty results reached, stopping {\"empty_results\":5,\"max_empty_results\":5} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:37] local.INFO: [HubSpot Journal Polling] Service ending {\"runtime_seconds\":57,\"total_cycles\":5,\"files_downloaded\":0,\"empty_files\":0,\"other_portal_skipped\":0,\"total_events\":0,\"events_per_file\":0,\"avg_api_ms\":238.3,\"avg_download_ms\":0.0,\"avg_transform_ms\":0.0,\"avg_process_ms\":0.0,\"peak_memory_mb\":99.73} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:37] local.INFO: [HubSpot Journal Polling] Released polling lock {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:50] local.INFO: [Commands/AsyncUpdateEsEntities] Starting ES update worker {\"pid\":37119,\"workerId\":\"\",\"target\":\"activities\"} {\"correlation_id\":\"902cef33-4733-4b2a-9693-affb8645cecc\",\"trace_id\":\"4ffe2bb8-67c6-422a-a846-319973cc0259\"}\n[2026-05-07 12:56:50] local.INFO: [SyncHubspotObjects] Starting sync {\"team\":\"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4\",\"usage\":23195976,\"real_usage\":65011712,\"pid\":37113} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:50] local.INFO: [Sync Mailbox] Sync start {\"inbox_id\":59} {\"correlation_id\":\"20256b2c-2b69-48f6-bdd3-61d047eb0b0d\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:50] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:50] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:50] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:50] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1499,\"provider\":\"hubspot\",\"refreshToken\":\"96f94c623a404e02ebdbf07f1b75707bb6cdbf848cbf45d418baf608c41a8d86\",\"state\":\"connected\"} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:50] local.INFO: [Inbox service] Skipping METADATA SYNC for inbox 59 due to unauthorized access to the mailbox {\"correlation_id\":\"20256b2c-2b69-48f6-bdd3-61d047eb0b0d\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:50] local.INFO: [Sync Mailbox] Sync complete {\"inbox_id\":59} {\"correlation_id\":\"20256b2c-2b69-48f6-bdd3-61d047eb0b0d\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:50] local.INFO: [Sync Mailbox] Sync start {\"inbox_id\":212} {\"correlation_id\":\"b6c31853-3729-4780-a52b-ebcce17d41b9\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:50] local.INFO: [Inbox service] Skipping METADATA SYNC for inbox 212 due to unauthorized access to the mailbox {\"correlation_id\":\"b6c31853-3729-4780-a52b-ebcce17d41b9\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:50] local.INFO: [Sync Mailbox] Sync complete {\"inbox_id\":212} {\"correlation_id\":\"b6c31853-3729-4780-a52b-ebcce17d41b9\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:51] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:51] local.INFO: [SocialAccountObserver] Access token was modified, encrypting {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:51] local.INFO: [SocialAccountService] Token refreshed {\"socialAccountId\":1499,\"provider\":\"hubspot\",\"state\":\"connected\"} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:51] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":148,\"team_id\":2} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:51] local.INFO: [HubSpot] Syncing opportunities using strategy: lastModified {\"team\":2} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/deals/search\",\"total_requests\":0,\"total_records_fetched\":0,\"total_elapsed_seconds\":0.3,\"average_seconds_per_request\":0} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.INFO: [SyncHubspotObjects] Sync finished {\"team\":\"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4\",\"provider\":\"hubspot\",\"status\":\"completed\",\"duration_ms\":1854.64,\"usage\":24199288,\"real_usage\":65011712,\"pid\":37113} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.ERROR: Jiminny\\Services\\Crm\\Hubspot\\Pagination\\HubspotPaginationService::getPaginatedDataGenerator(): Return value must be of type Generator, none returned {\"exception\":\"[object] (TypeError(code: 0): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService::getPaginatedDataGenerator(): Return value must be of type Generator, none returned at /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php:82)\n[stacktrace]\n#0 /home/jiminny/app/Services/Crm/Hubspot/Client.php(194): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->getPaginatedDataGenerator(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), Array, 'deals', 0, 0, NULL)\n#1 /home/jiminny/app/Services/Crm/Hubspot/OpportunitySyncStrategy/HubspotSyncStrategyBase.php(55): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client->getPaginatedDataGenerator(Array, 'deals', 0, 0, NULL)\n#2 /home/jiminny/app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php(73): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\OpportunitySyncStrategy\\\\HubspotSyncStrategyBase->fetchOpportunities(Array, 0, NULL)\n#3 /home/jiminny/app/Jobs/Crm/SyncHubspotObjects.php(118): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service->syncOpportunities(Array)\n#4 /home/jiminny/app/Jobs/Crm/SyncHubspotObjects.php(86): Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects->syncHubspotCrmObjects(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service), Object(Illuminate\\\\Support\\\\Carbon))\n#5 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects->handle(Object(Jiminny\\\\Services\\\\ResolveTeamCrmConnection), Object(Illuminate\\\\Log\\\\LogManager), Object(Jiminny\\\\Repositories\\\\TeamRepository))\n#6 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#7 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#8 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#9 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#10 /home/jiminny/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(129): Illuminate\\\\Container\\\\Container->call(Array)\n#11 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\\\Bus\\\\Dispatcher->Illuminate\\\\Bus\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#12 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\\\\Pipeline\\\\Pipeline->Illuminate\\\\Pipeline\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#13 /home/jiminny/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(133): Illuminate\\\\Pipeline\\\\Pipeline->then(Object(Closure))\n#14 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(136): Illuminate\\\\Bus\\\\Dispatcher->dispatchNow(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects), false)\n#15 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\\\Queue\\\\CallQueuedHandler->Illuminate\\\\Queue\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#16 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\\\\Pipeline\\\\Pipeline->Illuminate\\\\Pipeline\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#17 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(129): Illuminate\\\\Pipeline\\\\Pipeline->then(Object(Closure))\n#18 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(70): Illuminate\\\\Queue\\\\CallQueuedHandler->dispatchThroughMiddleware(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#19 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Jobs/Job.php(102): Illuminate\\\\Queue\\\\CallQueuedHandler->call(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Array)\n#20 /home/jiminny/app/Queue/Worker/Worker.php(71): Illuminate\\\\Queue\\\\Jobs\\\\Job->fire()\n#21 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(435): Jiminny\\\\Queue\\\\Worker\\\\Worker->process('redis', Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#22 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(201): Illuminate\\\\Queue\\\\Worker->runJob(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), 'redis', Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#23 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(148): Illuminate\\\\Queue\\\\Worker->daemon('redis', 'crm-sync,crm-up...', Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#24 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(131): Illuminate\\\\Queue\\\\Console\\\\WorkCommand->runWorker('redis', 'crm-sync,crm-up...')\n#25 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Illuminate\\\\Queue\\\\Console\\\\WorkCommand->handle()\n#26 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#27 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#28 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#29 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#30 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(211): Illuminate\\\\Container\\\\Container->call(Array)\n#31 /home/jiminny/vendor/symfony/console/Command/Command.php(341): Illuminate\\\\Console\\\\Command->execute(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#32 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(180): Symfony\\\\Component\\\\Console\\\\Command\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#33 /home/jiminny/vendor/symfony/console/Application.php(1117): Illuminate\\\\Console\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#34 /home/jiminny/vendor/symfony/console/Application.php(356): Symfony\\\\Component\\\\Console\\\\Application->doRunCommand(Object(Illuminate\\\\Queue\\\\Console\\\\WorkCommand), Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#35 /home/jiminny/vendor/symfony/console/Application.php(195): Symfony\\\\Component\\\\Console\\\\Application->doRun(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#36 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(198): Symfony\\\\Component\\\\Console\\\\Application->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#37 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1235): Illuminate\\\\Foundation\\\\Console\\\\Kernel->handle(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#38 /home/jiminny/artisan(13): Illuminate\\\\Foundation\\\\Application->handleCommand(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput))\n#39 {main}\n\"} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.INFO: [SyncHubspotObjects] Starting sync {\"team\":\"b2d49a54-b645-4637-a7ae-a86cfce6e8e4\",\"usage\":25235152,\"real_usage\":65011712,\"pid\":37113} {\"correlation_id\":\"0d3cf2b0-a245-4a83-9bd5-1c5788b85738\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.WARNING: [HubSpot] Account not connected for user {\"userId\":\"2ac0447f-3c8c-4ce0-baeb-b63ddb76fa9b\",\"account\":null} {\"correlation_id\":\"0d3cf2b0-a245-4a83-9bd5-1c5788b85738\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {\"crm_provider\":\"hubspot\",\"crm_owner\":130,\"team_id\":42} {\"correlation_id\":\"0d3cf2b0-a245-4a83-9bd5-1c5788b85738\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":42} {\"correlation_id\":\"0d3cf2b0-a245-4a83-9bd5-1c5788b85738\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":42} {\"correlation_id\":\"0d3cf2b0-a245-4a83-9bd5-1c5788b85738\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.INFO: [SyncHubspotObjects] Sync finished {\"team\":\"b2d49a54-b645-4637-a7ae-a86cfce6e8e4\",\"provider\":\"hubspot\",\"status\":\"disconnected\",\"duration_ms\":70.53,\"usage\":25225384,\"real_usage\":65011712,\"pid\":37113,\"reason\":\"Social account for HubSpot cannot be found. Please login to Jiminny to connect.\"} {\"correlation_id\":\"0d3cf2b0-a245-4a83-9bd5-1c5788b85738\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Starting sync {\"team\":\"b2b115eb-93ce-4d1b-929c-173757df8fba\",\"usage\":25263936,\"real_usage\":65011712,\"pid\":37113} {\"correlation_id\":\"1e46be79-1db4-4829-b19c-1548141a94e0\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.WARNING: [HubSpot] Account not connected for user {\"userId\":\"33e34a7a-1c02-4f04-87ac-22c3a385e6e3\",\"account\":{\"Jiminny\\\\Models\\\\SocialAccount\":{\"id\":306,\"sociable_id\":109,\"provider_user_id\":\"11348452\",\"expires\":1701077403,\"refresh_token_expires\":null,\"provider\":\"hubspot\",\"state\":\"full-refresh\",\"auth_scope\":null,\"retry_after\":null,\"created_at\":\"2020-09-01 16:59:04\",\"updated_at\":\"2023-11-27 09:30:03\"}}} {\"correlation_id\":\"1e46be79-1db4-4829-b19c-1548141a94e0\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {\"crm_provider\":\"hubspot\",\"crm_owner\":109,\"team_id\":29} {\"correlation_id\":\"1e46be79-1db4-4829-b19c-1548141a94e0\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":29} {\"correlation_id\":\"1e46be79-1db4-4829-b19c-1548141a94e0\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":29} {\"correlation_id\":\"1e46be79-1db4-4829-b19c-1548141a94e0\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Sync finished {\"team\":\"b2b115eb-93ce-4d1b-929c-173757df8fba\",\"provider\":\"hubspot\",\"status\":\"disconnected\",\"duration_ms\":47.7,\"usage\":25451952,\"real_usage\":65011712,\"pid\":37113,\"reason\":\"Your HubSpot account has become disconnected. Please login to Jiminny to reconnect.\"} {\"correlation_id\":\"1e46be79-1db4-4829-b19c-1548141a94e0\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Starting sync {\"team\":\"c6b9d6b0-b48d-4832-a68c-a57d60651888\",\"usage\":25490320,\"real_usage\":65011712,\"pid\":37113} {\"correlation_id\":\"0da4e096-9534-4a72-bc1f-8e61561d8e37\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.WARNING: [HubSpot] Account not connected for user {\"userId\":\"71e3aac5-fb66-47c5-a236-2d051ae3e319\",\"account\":null} {\"correlation_id\":\"0da4e096-9534-4a72-bc1f-8e61561d8e37\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {\"crm_provider\":\"hubspot\",\"crm_owner\":256,\"team_id\":49} {\"correlation_id\":\"0da4e096-9534-4a72-bc1f-8e61561d8e37\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":49} {\"correlation_id\":\"0da4e096-9534-4a72-bc1f-8e61561d8e37\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":49} {\"correlation_id\":\"0da4e096-9534-4a72-bc1f-8e61561d8e37\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Sync finished {\"team\":\"c6b9d6b0-b48d-4832-a68c-a57d60651888\",\"provider\":\"hubspot\",\"status\":\"disconnected\",\"duration_ms\":44.12,\"usage\":25547952,\"real_usage\":65011712,\"pid\":37113,\"reason\":\"Social account for HubSpot cannot be found. Please login to Jiminny to connect.\"} {\"correlation_id\":\"0da4e096-9534-4a72-bc1f-8e61561d8e37\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Starting sync {\"team\":\"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4\",\"usage\":25587032,\"real_usage\":65011712,\"pid\":37113} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":148,\"team_id\":2} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [HubSpot] Syncing opportunities using strategy: lastModified {\"team\":2} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/deals/search\",\"total_requests\":0,\"total_records_fetched\":0,\"total_elapsed_seconds\":0.28,\"average_seconds_per_request\":0} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Sync finished {\"team\":\"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4\",\"provider\":\"hubspot\",\"status\":\"completed\",\"duration_ms\":412.19,\"usage\":25739960,\"real_usage\":65011712,\"pid\":37113} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.ERROR: Jiminny\\Services\\Crm\\Hubspot\\Pagination\\HubspotPaginationService::getPaginatedDataGenerator(): Return value must be of type Generator, none returned {\"exception\":\"[object] (TypeError(code: 0): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService::getPaginatedDataGenerator(): Return value must be of type Generator, none returned at /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php:82)\n[stacktrace]\n#0 /home/jiminny/app/Services/Crm/Hubspot/Client.php(194): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->getPaginatedDataGenerator(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), Array, 'deals', 0, 0, NULL)\n#1 /home/jiminny/app/Services/Crm/Hubspot/OpportunitySyncStrategy/HubspotSyncStrategyBase.php(55): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client->getPaginatedDataGenerator(Array, 'deals', 0, 0, NULL)\n#2 /home/jiminny/app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php(73): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\OpportunitySyncStrategy\\\\HubspotSyncStrategyBase->fetchOpportunities(Array, 0, NULL)\n#3 /home/jiminny/app/Jobs/Crm/SyncHubspotObjects.php(118): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service->syncOpportunities(Array)\n#4 /home/jiminny/app/Jobs/Crm/SyncHubspotObjects.php(86): Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects->syncHubspotCrmObjects(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service), Object(Illuminate\\\\Support\\\\Carbon))\n#5 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects->handle(Object(Jiminny\\\\Services\\\\ResolveTeamCrmConnection), Object(Illuminate\\\\Log\\\\LogManager), Object(Jiminny\\\\Repositories\\\\TeamRepository))\n#6 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#7 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#8 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#9 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#10 /home/jiminny/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(129): Illuminate\\\\Container\\\\Container->call(Array)\n#11 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\\\Bus\\\\Dispatcher->Illuminate\\\\Bus\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#12 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\\\\Pipeline\\\\Pipeline->Illuminate\\\\Pipeline\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#13 /home/jiminny/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(133): Illuminate\\\\Pipeline\\\\Pipeline->then(Object(Closure))\n#14 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(136): Illuminate\\\\Bus\\\\Dispatcher->dispatchNow(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects), false)\n#15 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\\\Queue\\\\CallQueuedHandler->Illuminate\\\\Queue\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#16 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\\\\Pipeline\\\\Pipeline->Illuminate\\\\Pipeline\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#17 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(129): Illuminate\\\\Pipeline\\\\Pipeline->then(Object(Closure))\n#18 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(70): Illuminate\\\\Queue\\\\CallQueuedHandler->dispatchThroughMiddleware(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#19 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Jobs/Job.php(102): Illuminate\\\\Queue\\\\CallQueuedHandler->call(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Array)\n#20 /home/jiminny/app/Queue/Worker/Worker.php(71): Illuminate\\\\Queue\\\\Jobs\\\\Job->fire()\n#21 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(435): Jiminny\\\\Queue\\\\Worker\\\\Worker->process('redis', Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#22 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(201): Illuminate\\\\Queue\\\\Worker->runJob(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), 'redis', Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#23 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(148): Illuminate\\\\Queue\\\\Worker->daemon('redis', 'crm-sync,crm-up...', Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#24 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(131): Illuminate\\\\Queue\\\\Console\\\\WorkCommand->runWorker('redis', 'crm-sync,crm-up...')\n#25 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Illuminate\\\\Queue\\\\Console\\\\WorkCommand->handle()\n#26 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#27 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#28 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#29 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#30 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(211): Illuminate\\\\Container\\\\Container->call(Array)\n#31 /home/jiminny/vendor/symfony/console/Command/Command.php(341): Illuminate\\\\Console\\\\Command->execute(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#32 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(180): Symfony\\\\Component\\\\Console\\\\Command\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#33 /home/jiminny/vendor/symfony/console/Application.php(1117): Illuminate\\\\Console\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#34 /home/jiminny/vendor/symfony/console/Application.php(356): Symfony\\\\Component\\\\Console\\\\Application->doRunCommand(Object(Illuminate\\\\Queue\\\\Console\\\\WorkCommand), Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#35 /home/jiminny/vendor/symfony/console/Application.php(195): Symfony\\\\Component\\\\Console\\\\Application->doRun(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#36 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(198): Symfony\\\\Component\\\\Console\\\\Application->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#37 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1235): Illuminate\\\\Foundation\\\\Console\\\\Kernel->handle(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#38 /home/jiminny/artisan(13): Illuminate\\\\Foundation\\\\Application->handleCommand(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput))\n#39 {main}\n\"} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Starting sync {\"team\":\"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4\",\"usage\":25172624,\"real_usage\":65011712,\"pid\":37113} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":148,\"team_id\":2} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [HubSpot] Syncing opportunities using strategy: lastModified {\"team\":2} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/deals/search\",\"total_requests\":0,\"total_records_fetched\":0,\"total_elapsed_seconds\":0.23,\"average_seconds_per_request\":0} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Sync finished {\"team\":\"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4\",\"provider\":\"hubspot\",\"status\":\"completed\",\"duration_ms\":291.83,\"usage\":25225088,\"real_usage\":65011712,\"pid\":37113} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:54] local.ERROR: Jiminny\\Services\\Crm\\Hubspot\\Pagination\\HubspotPaginationService::getPaginatedDataGenerator(): Return value must be of type Generator, none returned {\"exception\":\"[object] (TypeError(code: 0): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService::getPaginatedDataGenerator(): Return value must be of type Generator, none returned at /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php:82)\n[stacktrace]\n#0 /home/jiminny/app/Services/Crm/Hubspot/Client.php(194): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->getPaginatedDataGenerator(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), Array, 'deals', 0, 0, NULL)\n#1 /home/jiminny/app/Services/Crm/Hubspot/OpportunitySyncStrategy/HubspotSyncStrategyBase.php(55): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client->getPaginatedDataGenerator(Array, 'deals', 0, 0, NULL)\n#2 /home/jiminny/app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php(73): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\OpportunitySyncStrategy\\\\HubspotSyncStrategyBase->fetchOpportunities(Array, 0, NULL)\n#3 /home/jiminny/app/Jobs/Crm/SyncHubspotObjects.php(118): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service->syncOpportunities(Array)\n#4 /home/jiminny/app/Jobs/Crm/SyncHubspotObjects.php(86): Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects->syncHubspotCrmObjects(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service), Object(Illuminate\\\\Support\\\\Carbon))\n#5 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects->handle(Object(Jiminny\\\\Services\\\\ResolveTeamCrmConnection), Object(Illuminate\\\\Log\\\\LogManager), Object(Jiminny\\\\Repositories\\\\TeamRepository))\n#6 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#7 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#8 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#9 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#10 /home/jiminny/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(129): Illuminate\\\\Container\\\\Container->call(Array)\n#11 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\\\Bus\\\\Dispatcher->Illuminate\\\\Bus\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#12 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\\\\Pipeline\\\\Pipeline->Illuminate\\\\Pipeline\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#13 /home/jiminny/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(133): Illuminate\\\\Pipeline\\\\Pipeline->then(Object(Closure))\n#14 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(136): Illuminate\\\\Bus\\\\Dispatcher->dispatchNow(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects), false)\n#15 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\\\Queue\\\\CallQueuedHandler->Illuminate\\\\Queue\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#16 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\\\\Pipeline\\\\Pipeline->Illuminate\\\\Pipeline\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#17 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(129): Illuminate\\\\Pipeline\\\\Pipeline->then(Object(Closure))\n#18 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(70): Illuminate\\\\Queue\\\\CallQueuedHandler->dispatchThroughMiddleware(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#19 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Jobs/Job.php(102): Illuminate\\\\Queue\\\\CallQueuedHandler->call(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Array)\n#20 /home/jiminny/app/Queue/Worker/Worker.php(71): Illuminate\\\\Queue\\\\Jobs\\\\Job->fire()\n#21 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(435): Jiminny\\\\Queue\\\\Worker\\\\Worker->process('redis', Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#22 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(201): Illuminate\\\\Queue\\\\Worker->runJob(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), 'redis', Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#23 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(148): Illuminate\\\\Queue\\\\Worker->daemon('redis', 'crm-sync,crm-up...', Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#24 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(131): Illuminate\\\\Queue\\\\Console\\\\WorkCommand->runWorker('redis', 'crm-sync,crm-up...')\n#25 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Illuminate\\\\Queue\\\\Console\\\\WorkCommand->handle()\n#26 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#27 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#28 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#29 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#30 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(211): Illuminate\\\\Container\\\\Container->call(Array)\n#31 /home/jiminny/vendor/symfony/console/Command/Command.php(341): Illuminate\\\\Console\\\\Command->execute(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#32 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(180): Symfony\\\\Component\\\\Console\\\\Command\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#33 /home/jiminny/vendor/symfony/console/Application.php(1117): Illuminate\\\\Console\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#34 /home/jiminny/vendor/symfony/console/Application.php(356): Symfony\\\\Component\\\\Console\\\\Application->doRunCommand(Object(Illuminate\\\\Queue\\\\Console\\\\WorkCommand), Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#35 /home/jiminny/vendor/symfony/console/Application.php(195): Symfony\\\\Component\\\\Console\\\\Application->doRun(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#36 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(198): Symfony\\\\Component\\\\Console\\\\Application->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#37 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1235): Illuminate\\\\Foundation\\\\Console\\\\Kernel->handle(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#38 /home/jiminny/artisan(13): Illuminate\\\\Foundation\\\\Application->handleCommand(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput))\n#39 {main}\n\"} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:57:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"854299be-d77a-48bc-870c-b78333916d69\",\"trace_id\":\"89c1eb6c-bc78-419c-9304-b770093d5692\"}\n[2026-05-07 12:57:06] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"854299be-d77a-48bc-870c-b78333916d69\",\"trace_id\":\"89c1eb6c-bc78-419c-9304-b770093d5692\"}\n[2026-05-07 12:57:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"854299be-d77a-48bc-870c-b78333916d69\",\"trace_id\":\"89c1eb6c-bc78-419c-9304-b770093d5692\"}\n[2026-05-07 12:57:16] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"c4e512a3-a227-4569-bcd2-3258a9142d46\",\"trace_id\":\"016bf668-6712-4c0f-8c8c-c2e411a37889\"}\n[2026-05-07 12:57:16] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"c4e512a3-a227-4569-bcd2-3258a9142d46\",\"trace_id\":\"016bf668-6712-4c0f-8c8c-c2e411a37889\"}\n[2026-05-07 12:57:19] local.NOTICE: Monitoring start {\"correlation_id\":\"4c2d4775-716d-4ca6-b94d-cb17dace29a7\",\"trace_id\":\"e969e10d-e5f0-44c6-9767-97a70e05cfe5\"}\n[2026-05-07 12:57:19] local.NOTICE: Monitoring end {\"correlation_id\":\"4c2d4775-716d-4ca6-b94d-cb17dace29a7\",\"trace_id\":\"e969e10d-e5f0-44c6-9767-97a70e05cfe5\"}\n[2026-05-07 12:57:22] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"d03e9546-bfd0-44c6-84ee-299b1e6c14a2\",\"trace_id\":\"acbab6e5-17fc-4b11-907d-ff87322285d7\"}\n[2026-05-07 12:57:22] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"d03e9546-bfd0-44c6-84ee-299b1e6c14a2\",\"trace_id\":\"acbab6e5-17fc-4b11-907d-ff87322285d7\"}\n[2026-05-07 12:57:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"a2c0095a-18b2-427e-825b-c68c9dbf63a1\",\"trace_id\":\"9b170d6a-ed10-4a41-af79-684c99021967\"}\n[2026-05-07 12:57:25] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"a2c0095a-18b2-427e-825b-c68c9dbf63a1\",\"trace_id\":\"9b170d6a-ed10-4a41-af79-684c99021967\"}\n[2026-05-07 12:57:25] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"a2c0095a-18b2-427e-825b-c68c9dbf63a1\",\"trace_id\":\"9b170d6a-ed10-4a41-af79-684c99021967\"}\n[2026-05-07 12:57:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"a2c0095a-18b2-427e-825b-c68c9dbf63a1\",\"trace_id\":\"9b170d6a-ed10-4a41-af79-684c99021967\"}\n[2026-05-07 12:57:27] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:create\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"c4e70056-ceab-4c44-874a-8042963ce3ea\",\"trace_id\":\"011a70aa-ebb2-4ca8-aef6-4b4cca233da7\"}\n[2026-05-07 12:57:27] local.INFO: [EmailSchedule] STARTING batch create {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"c4e70056-ceab-4c44-874a-8042963ce3ea\",\"trace_id\":\"011a70aa-ebb2-4ca8-aef6-4b4cca233da7\"}\n[2026-05-07 12:57:27] local.INFO: [EmailSchedule] FINISHED batch create {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"c4e70056-ceab-4c44-874a-8042963ce3ea\",\"trace_id\":\"011a70aa-ebb2-4ca8-aef6-4b4cca233da7\"}\n[2026-05-07 12:57:27] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:create\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"c4e70056-ceab-4c44-874a-8042963ce3ea\",\"trace_id\":\"011a70aa-ebb2-4ca8-aef6-4b4cca233da7\"}\n[2026-05-07 12:57:28] local.INFO: [Jiminny\\Jobs\\Mailbox\\CreateBatches] processed 2 inboxes and created 0 batches {\"userId\":null,\"batchSize\":30,\"maxBatches\":1000} {\"correlation_id\":\"c296bf83-9f7c-4228-b6f5-99db6040fa01\",\"trace_id\":\"011a70aa-ebb2-4ca8-aef6-4b4cca233da7\"}\n[2026-05-07 12:58:06] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"a9e2de8b-b538-437e-bbe7-82636da81995\",\"trace_id\":\"e517ae80-e149-490c-b719-309e898b3c93\"}\n[2026-05-07 12:58:06] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"a9e2de8b-b538-437e-bbe7-82636da81995\",\"trace_id\":\"e517ae80-e149-490c-b719-309e898b3c93\"}\n[2026-05-07 12:58:06] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"a9e2de8b-b538-437e-bbe7-82636da81995\",\"trace_id\":\"e517ae80-e149-490c-b719-309e898b3c93\"}\n[2026-05-07 12:58:06] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":148,\"team_id\":2} {\"correlation_id\":\"a9e2de8b-b538-437e-bbe7-82636da81995\",\"trace_id\":\"e517ae80-e149-490c-b719-309e898b3c93\"}\n[2026-05-07 12:58:06] local.ERROR: Client error: `POST https://api.hubapi.com/crm/v3/objects/contact/search` resulted in a `429 Too Many Requests` response:\n{\"status\":\"error\",\"message\":\"You have reached your secondly limit.\",\"errorType\":\"RATE_LIMIT\",\"correlationId\":\"019e0284-5 (truncated...)\n {\"exception\":\"[object] (SevenShores\\\\Hubspot\\\\Exceptions\\\\BadRequest(code: 429): Client error: `POST https://api.hubapi.com/crm/v3/objects/contact/search` resulted in a `429 Too Many Requests` response:\n{\\\"status\\\":\\\"error\\\",\\\"message\\\":\\\"You have reached your secondly limit.\\\",\\\"errorType\\\":\\\"RATE_LIMIT\\\",\\\"correlationId\\\":\\\"019e0284-5 (truncated...)\n at /home/jiminny/vendor/hubspot/hubspot-php/src/Exceptions/HubspotException.php:24)\n[stacktrace]\n#0 /home/jiminny/vendor/hubspot/hubspot-php/src/Http/Client.php(125): SevenShores\\\\Hubspot\\\\Exceptions\\\\HubspotException::create(Object(GuzzleHttp\\\\Exception\\\\ClientException))\n#1 /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php(163): SevenShores\\\\Hubspot\\\\Http\\\\Client->request('POST', 'https://api.hub...', Array)\n#2 /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php(51): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->executeSearchRequest(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), 'https://api.hub...', Array, Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\PaginationState))\n#3 /home/jiminny/app/Services/Crm/Hubspot/Client.php(194): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->getPaginatedDataGenerator(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), Array, 'contact', 0, 0, NULL)\n#4 /home/jiminny/app/Services/Crm/Hubspot/Client.php(175): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client->getPaginatedDataGenerator(Array, 'contact', 0, 0, NULL)\n#5 /home/jiminny/app/Services/Crm/Hubspot/Service.php(1203): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client->getPaginatedData(Array, 'contact')\n#6 /home/jiminny/app/Console/Commands/JiminnyDebugCommand.php(353): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service->matchByName('Robot')\n#7 /home/jiminny/app/Console/Commands/JiminnyDebugCommand.php(44): Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand->rateLimit()\n#8 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand->handle(Object(Jiminny\\\\Jobs\\\\JobDispatcher), Object(Jiminny\\\\Services\\\\Kiosk\\\\AutomatedReports\\\\AutomatedReportsService), Object(Jiminny\\\\Repositories\\\\AutomatedReportsRepository), Object(Jiminny\\\\Services\\\\UserPilot\\\\UserPilotClient))\n#9 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#10 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#11 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#12 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#13 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(211): Illuminate\\\\Container\\\\Container->call(Array)\n#14 /home/jiminny/vendor/symfony/console/Command/Command.php(341): Illuminate\\\\Console\\\\Command->execute(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#15 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(180): Symfony\\\\Component\\\\Console\\\\Command\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#16 /home/jiminny/vendor/symfony/console/Application.php(1117): Illuminate\\\\Console\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#17 /home/jiminny/vendor/symfony/console/Application.php(356): Symfony\\\\Component\\\\Console\\\\Application->doRunCommand(Object(Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand), Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#18 /home/jiminny/vendor/symfony/console/Application.php(195): Symfony\\\\Component\\\\Console\\\\Application->doRun(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#19 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(198): Symfony\\\\Component\\\\Console\\\\Application->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#20 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1235): Illuminate\\\\Foundation\\\\Console\\\\Kernel->handle(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#21 /home/jiminny/artisan(13): Illuminate\\\\Foundation\\\\Application->handleCommand(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput))\n#22 {main}\n\n[previous exception] [object] (GuzzleHttp\\\\Exception\\\\ClientException(code: 429): Client error: `POST https://api.hubapi.com/crm/v3/objects/contact/search` resulted in a `429 Too Many Requests` response:\n{\\\"status\\\":\\\"error\\\",\\\"message\\\":\\\"You have reached your secondly limit.\\\",\\\"errorType\\\":\\\"RATE_LIMIT\\\",\\\"correlationId\\\":\\\"019e0284-5 (truncated...)\n at /home/jiminny/vendor/guzzlehttp/guzzle/src/Exception/RequestException.php:111)\n[stacktrace]\n#0 /home/jiminny/vendor/guzzlehttp/guzzle/src/Middleware.php(72): GuzzleHttp\\\\Exception\\\\RequestException::create(Object(GuzzleHttp\\\\Psr7\\\\Request), Object(GuzzleHttp\\\\Psr7\\\\Response), NULL, Array, NULL)\n#1 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(209): GuzzleHttp\\\\Middleware::GuzzleHttp\\\\{closure}(Object(GuzzleHttp\\\\Psr7\\\\Response))\n#2 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(158): GuzzleHttp\\\\Promise\\\\Promise::callHandler(1, Object(GuzzleHttp\\\\Psr7\\\\Response), NULL)\n#3 /home/jiminny/vendor/guzzlehttp/promises/src/TaskQueue.php(52): GuzzleHttp\\\\Promise\\\\Promise::GuzzleHttp\\\\Promise\\\\{closure}()\n#4 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(251): GuzzleHttp\\\\Promise\\\\TaskQueue->run(true)\n#5 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(227): GuzzleHttp\\\\Promise\\\\Promise->invokeWaitFn()\n#6 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(272): GuzzleHttp\\\\Promise\\\\Promise->waitIfPending()\n#7 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(229): GuzzleHttp\\\\Promise\\\\Promise->invokeWaitList()\n#8 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(69): GuzzleHttp\\\\Promise\\\\Promise->waitIfPending()\n#9 /home/jiminny/vendor/guzzlehttp/guzzle/src/Client.php(189): GuzzleHttp\\\\Promise\\\\Promise->wait()\n#10 /home/jiminny/vendor/hubspot/hubspot-php/src/Http/Client.php(113): GuzzleHttp\\\\Client->request('POST', 'https://api.hub...', Array)\n#11 /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php(163): SevenShores\\\\Hubspot\\\\Http\\\\Client->request('POST', 'https://api.hub...', Array)\n#12 /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php(51): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->executeSearchRequest(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), 'https://api.hub...', Array, Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\PaginationState))\n#13 /home/jiminny/app/Services/Crm/Hubspot/Client.php(194): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->getPaginatedDataGenerator(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), Array, 'contact', 0, 0, NULL)\n#14 /home/jiminny/app/Services/Crm/Hubspot/Client.php(175): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client->getPaginatedDataGenerator(Array, 'contact', 0, 0, NULL)\n#15 /home/jiminny/app/Services/Crm/Hubspot/Service.php(1203): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client->getPaginatedData(Array, 'contact')\n#16 /home/jiminny/app/Console/Commands/JiminnyDebugCommand.php(353): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service->matchByName('Robot')\n#17 /home/jiminny/app/Console/Commands/JiminnyDebugCommand.php(44): Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand->rateLimit()\n#18 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand->handle(Object(Jiminny\\\\Jobs\\\\JobDispatcher), Object(Jiminny\\\\Services\\\\Kiosk\\\\AutomatedReports\\\\AutomatedReportsService), Object(Jiminny\\\\Repositories\\\\AutomatedReportsRepository), Object(Jiminny\\\\Services\\\\UserPilot\\\\UserPilotClient))\n#19 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#20 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#21 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#22 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#23 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(211): Illuminate\\\\Container\\\\Container->call(Array)\n#24 /home/jiminny/vendor/symfony/console/Command/Command.php(341): Illuminate\\\\Console\\\\Command->execute(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#25 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(180): Symfony\\\\Component\\\\Console\\\\Command\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#26 /home/jiminny/vendor/symfony/console/Application.php(1117): Illuminate\\\\Console\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#27 /home/jiminny/vendor/symfony/console/Application.php(356): Symfony\\\\Component\\\\Console\\\\Application->doRunCommand(Object(Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand), Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#28 /home/jiminny/vendor/symfony/console/Application.php(195): Symfony\\\\Component\\\\Console\\\\Application->doRun(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#29 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(198): Symfony\\\\Component\\\\Console\\\\Application->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#30 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1235): Illuminate\\\\Foundation\\\\Console\\\\Kernel->handle(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#31 /home/jiminny/artisan(13): Illuminate\\\\Foundation\\\\Application->handleCommand(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput))\n#32 {main}\n\"} {\"correlation_id\":\"a9e2de8b-b538-437e-bbe7-82636da81995\",\"trace_id\":\"e517ae80-e149-490c-b719-309e898b3c93\"}\n[2026-05-07 12:58:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"fb59e309-d2cc-4fe0-9db2-544112c25477\",\"trace_id\":\"28ccdd4f-bf3a-4545-bc8a-d94188f8204f\"}\n[2026-05-07 12:58:10] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"fb59e309-d2cc-4fe0-9db2-544112c25477\",\"trace_id\":\"28ccdd4f-bf3a-4545-bc8a-d94188f8204f\"}\n[2026-05-07 12:58:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"fb59e309-d2cc-4fe0-9db2-544112c25477\",\"trace_id\":\"28ccdd4f-bf3a-4545-bc8a-d94188f8204f\"}\n[2026-05-07 12:58:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"bff14f9f-db1d-4b6c-bd92-ca810b31790a\",\"trace_id\":\"ed08145b-94b8-4585-8e81-0ad478d038dc\"}\n[2026-05-07 12:58:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"bff14f9f-db1d-4b6c-bd92-ca810b31790a\",\"trace_id\":\"ed08145b-94b8-4585-8e81-0ad478d038dc\"}\n[2026-05-07 12:58:16] local.NOTICE: Monitoring start {\"correlation_id\":\"54ed6493-c74e-4491-b2ff-9404528f1525\",\"trace_id\":\"9a1f78c0-6e74-482c-a091-8367df3d0f70\"}\n[2026-05-07 12:58:16] local.NOTICE: Monitoring end {\"correlation_id\":\"54ed6493-c74e-4491-b2ff-9404528f1525\",\"trace_id\":\"9a1f78c0-6e74-482c-a091-8367df3d0f70\"}\n[2026-05-07 12:58:24] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"7f141a32-060d-4123-bf20-8a8d7abc1482\",\"trace_id\":\"f7fdcb6b-932a-4f6b-ad95-f111628d6cf7\"}\n[2026-05-07 12:58:24] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"7f141a32-060d-4123-bf20-8a8d7abc1482\",\"trace_id\":\"f7fdcb6b-932a-4f6b-ad95-f111628d6cf7\"}\n[2026-05-07 12:58:36] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"f586fc15-711b-4199-8fdf-dcd2df95af0c\",\"trace_id\":\"828fb459-3b7f-4196-a690-12fc9ce99b1d\"}\n[2026-05-07 12:58:36] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"f586fc15-711b-4199-8fdf-dcd2df95af0c\",\"trace_id\":\"828fb459-3b7f-4196-a690-12fc9ce99b1d\"}\n[2026-05-07 12:58:37] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"f586fc15-711b-4199-8fdf-dcd2df95af0c\",\"trace_id\":\"828fb459-3b7f-4196-a690-12fc9ce99b1d\"}\n[2026-05-07 12:58:37] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"f586fc15-711b-4199-8fdf-dcd2df95af0c\",\"trace_id\":\"828fb459-3b7f-4196-a690-12fc9ce99b1d\"}\n[2026-05-07 12:58:40] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"01d4e25d-56d5-4c89-bc29-d873e21cc16f\",\"trace_id\":\"ee1fe1ac-362b-47c1-9db2-7915a30cf0f2\"}\n[2026-05-07 12:58:40] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:56:00, 2026-05-07 12:58:00] {\"correlation_id\":\"01d4e25d-56d5-4c89-bc29-d873e21cc16f\",\"trace_id\":\"ee1fe1ac-362b-47c1-9db2-7915a30cf0f2\"}\n[2026-05-07 12:58:40] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:56:00, 2026-05-07 12:58:00] {\"correlation_id\":\"01d4e25d-56d5-4c89-bc29-d873e21cc16f\",\"trace_id\":\"ee1fe1ac-362b-47c1-9db2-7915a30cf0f2\"}\n[2026-05-07 12:58:40] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"01d4e25d-56d5-4c89-bc29-d873e21cc16f\",\"trace_id\":\"ee1fe1ac-362b-47c1-9db2-7915a30cf0f2\"}\n[2026-05-07 12:58:48] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"924e149e-3462-4043-87da-00838220b970\",\"trace_id\":\"7d0922db-8131-4a52-a0c5-2a7a78df42e8\"}\n[2026-05-07 12:58:48] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"calendar:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:48] local.NOTICE: Calendar sync start {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:48] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"924e149e-3462-4043-87da-00838220b970\",\"trace_id\":\"7d0922db-8131-4a52-a0c5-2a7a78df42e8\"}\n[2026-05-07 12:58:49] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1393,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:49] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1393,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:49] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:49] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1393,\"provider\":\"google\",\"refreshToken\":\"5aa7e2d96b53201cd16fca5d2e4ef3ad03320971fc064781d18aee3ae7b99fbf\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1393,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Account has been deleted\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1393,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1387,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1387,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1387,\"provider\":\"google\",\"refreshToken\":\"8157ac6de94842937194009e9c50e459253600f799dacf6a40755ffdbeb5bba6\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1387,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Account has been deleted\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1387,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1348,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1348,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1348,\"provider\":\"google\",\"refreshToken\":\"9e7d13d3032d0cb1b79d8e95aef01383e8e91eb52ff8ee960c8a0b6b95cd8c73\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1348,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Bad Request\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1348,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1361,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1361,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1361,\"provider\":\"google\",\"refreshToken\":\"6c843da199c2b9907445329304fcc4ec5057a4ee748d8299641764395c08e1fd\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1361,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Account has been deleted\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1361,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1310,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1310,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1310,\"provider\":\"google\",\"refreshToken\":\"e34818922c2830a660813a63f6169a4a9a992ae2cccd7dc8dd7796cfdb470ef1\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1310,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Bad Request\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1310,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1333,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1333,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1333,\"provider\":\"google\",\"refreshToken\":\"6c902986546d8e8da1dc539b046cdc1d458f519acc972e5b5f1d6a1a295165e0\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1333,\"provider\":\"google\",\"responseBody\":{\"error\":\"unauthorized_client\",\"error_description\":\"Unauthorized\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1333,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1368,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1368,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1368,\"provider\":\"google\",\"refreshToken\":\"d2f128898ff8543bd16b69cfae37896ab85119b0f5ed2b431d739593bb600333\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1368,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Bad Request\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1368,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1365,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1365,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1365,\"provider\":\"google\",\"refreshToken\":\"7676e4a9afcd082b413248ab5ec6e487021fec6a9bdf315860a59cefad9caad8\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1365,\"provider\":\"google\",\"responseBody\":{\"error\":\"unauthorized_client\",\"error_description\":\"Unauthorized\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1365,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1364,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1364,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1364,\"provider\":\"google\",\"refreshToken\":\"dd5882ebce76e645292ce33ae74238abbb77c0a4ecc6a2bfe723cad82e72ba8e\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1364,\"provider\":\"google\",\"responseBody\":{\"error\":\"unauthorized_client\",\"error_description\":\"Unauthorized\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1364,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1370,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1370,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1370,\"provider\":\"office\",\"refreshToken\":\"b7ee8035306d0043cea6e00e7c4fe14f745e44074a1194db62a31cdf8b70af3e\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1370,\"provider\":\"office\",\"responseBody\":\"{\\\"error\\\":\\\"invalid_client\\\",\\\"error_description\\\":\\\"AADSTS7000215: Invalid client secret provided. Ensure the secret being sent in the request is the client secret value, not the client secret ID, for a secret added to app 'bbcbb2ef-6200-4fae-82bd-d81f5dd738da'. Trace ID: ef9bb388-453e-4744-a2e1-95e49ced1700 Correlation ID: 3b889c73-f943-4048-ba3b-63ac50581245 Timestamp: 2026-05-07 12:58:53Z\\\",\\\"error_codes\\\":[7000215],\\\"timestamp\\\":\\\"2026-05-07 12:58:53Z\\\",\\\"trace_id\\\":\\\"ef9bb388-453e-4744-a2e1-95e49ced1700\\\",\\\"correlation_id\\\":\\\"3b889c73-f943-4048-ba3b-63ac50581245\\\",\\\"error_uri\\\":\\\"https://login.microsoftonline.com/error?code=7000215\\\"}\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1370,\"provider\":\"office\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1202,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1202,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1202,\"provider\":\"office\",\"refreshToken\":\"b458799ccc29b21a6e2eb5260fdb63e49ccba21bf942a3973fb63799bd7f0afe\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1202,\"provider\":\"office\",\"responseBody\":\"{\\\"error\\\":\\\"invalid_client\\\",\\\"error_description\\\":\\\"AADSTS7000215: Invalid client secret provided. Ensure the secret being sent in the request is the client secret value, not the client secret ID, for a secret added to app 'bbcbb2ef-6200-4fae-82bd-d81f5dd738da'. Trace ID: 0b8181c0-c858-4d17-af69-c23b7f5a0a00 Correlation ID: 2ce9e931-f423-4048-b1d7-ae1910cd4834 Timestamp: 2026-05-07 12:58:54Z\\\",\\\"error_codes\\\":[7000215],\\\"timestamp\\\":\\\"2026-05-07 12:58:54Z\\\",\\\"trace_id\\\":\\\"0b8181c0-c858-4d17-af69-c23b7f5a0a00\\\",\\\"correlation_id\\\":\\\"2ce9e931-f423-4048-b1d7-ae1910cd4834\\\",\\\"error_uri\\\":\\\"https://login.microsoftonline.com/error?code=7000215\\\"}\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1202,\"provider\":\"office\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1502,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1502,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: Calendar sync job dispatched {\"calendar_id\":501} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1300,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1300,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1300,\"provider\":\"google\",\"refreshToken\":\"4b811db0725fd9602a95943519a7da935e2a5065da7d9ebfcb170752e3e1ddb8\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1300,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Account has been deleted\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1300,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1409,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1409,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1409,\"provider\":\"google\",\"refreshToken\":\"e2a3f2d06894894eed1ee87d9db1ace77d4d42ee6e1288a8940ad2c10333b0c4\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1409,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Bad Request\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1409,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1352,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1352,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1352,\"provider\":\"google\",\"refreshToken\":\"dd4b16b00fdc1216da6b717c02338c073636e29162826b2de6db3f064fc029eb\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1352,\"provider\":\"google\",\"responseBody\":{\"error\":\"unauthorized_client\",\"error_description\":\"Unauthorized\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1352,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1296,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1296,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1296,\"provider\":\"office\",\"refreshToken\":\"011ae723c9d800c674e0b4be76f49fc046dac7d501b66c59ef0d9549cfa56ae5\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1296,\"provider\":\"office\",\"responseBody\":\"{\\\"error\\\":\\\"invalid_client\\\",\\\"error_description\\\":\\\"AADSTS7000215: Invalid client secret provided. Ensure the secret being sent in the request is the client secret value, not the client secret ID, for a secret added to app 'bbcbb2ef-6200-4fae-82bd-d81f5dd738da'. Trace ID: 4f38b1ca-479e-445c-8db5-29366d0a0c00 Correlation ID: d0a4d623-1a23-4fcc-aebf-ccafeed44a92 Timestamp: 2026-05-07 12:58:56Z\\\",\\\"error_codes\\\":[7000215],\\\"timestamp\\\":\\\"2026-05-07 12:58:56Z\\\",\\\"trace_id\\\":\\\"4f38b1ca-479e-445c-8db5-29366d0a0c00\\\",\\\"correlation_id\\\":\\\"d0a4d623-1a23-4fcc-aebf-ccafeed44a92\\\",\\\"error_uri\\\":\\\"https://login.microsoftonline.com/error?code=7000215\\\"}\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1296,\"provider\":\"office\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":391,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":391,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":391,\"provider\":\"office\",\"refreshToken\":\"00045eebae0f39b34887c6d53f92ae78064f7145e1f4b67754aebd03cfb2d881\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1502,\"provider\":\"google\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1502,\"provider\":\"google\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [Calendar] Processing sync {\"calendarId\":\"a33076c1-8d97-431a-99f0-85c9524e118b\",\"from\":null,\"to\":null,\"delta\":\"CIiFh8TP44kDEIiFh8TP44kDGAUgkZvkzgIokZvkzgI=\",\"last_sync\":\"2024-12-09 07:12:53\",\"dateMode\":\"daily\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"integration-app\",\"crm_owner\":1695,\"team_id\":3143} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1502,\"provider\":\"google\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1502,\"provider\":\"google\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":391,\"provider\":\"office\",\"responseBody\":\"{\\\"error\\\":\\\"invalid_client\\\",\\\"error_description\\\":\\\"AADSTS7000215: Invalid client secret provided. Ensure the secret being sent in the request is the client secret value, not the client secret ID, for a secret added to app 'bbcbb2ef-6200-4fae-82bd-d81f5dd738da'. Trace ID: 1791a948-a974-424b-9246-7fedfa913b00 Correlation ID: b0e7bf62-d69e-49dd-b7c9-9550f0bd2aec Timestamp: 2026-05-07 12:58:56Z\\\",\\\"error_codes\\\":[7000215],\\\"timestamp\\\":\\\"2026-05-07 12:58:56Z\\\",\\\"trace_id\\\":\\\"1791a948-a974-424b-9246-7fedfa913b00\\\",\\\"correlation_id\\\":\\\"b0e7bf62-d69e-49dd-b7c9-9550f0bd2aec\\\",\\\"error_uri\\\":\\\"https://login.microsoftonline.com/error?code=7000215\\\"}\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":391,\"provider\":\"office\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1271,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1271,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1271,\"provider\":\"office\",\"refreshToken\":\"118cde2c06993147b07ccaec4cbcd5026a819dea6c71081166a492933e392afb\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [Google Calendar] Failed to watch channel for calendar {\"calendarId\":\"a33076c1-8d97-431a-99f0-85c9524e118b\",\"code\":400,\"reason\":\"{\n \\\"error\\\": {\n \\\"errors\\\": [\n {\n \\\"domain\\\": \\\"global\\\",\n \\\"reason\\\": \\\"push.webhookUrlNotHttps\\\",\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n ],\n \\\"code\\\": 400,\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n}\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.WARNING: [Calendar] Sync failed {\"calendarId\":\"a33076c1-8d97-431a-99f0-85c9524e118b\",\"code\":400,\"reason\":\"{\n \\\"error\\\": {\n \\\"errors\\\": [\n {\n \\\"domain\\\": \\\"global\\\",\n \\\"reason\\\": \\\"push.webhookUrlNotHttps\\\",\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n ],\n \\\"code\\\": 400,\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n}\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1271,\"provider\":\"office\",\"responseBody\":\"{\\\"error\\\":\\\"invalid_client\\\",\\\"error_description\\\":\\\"AADSTS7000215: Invalid client secret provided. Ensure the secret being sent in the request is the client secret value, not the client secret ID, for a secret added to app 'bbcbb2ef-6200-4fae-82bd-d81f5dd738da'. Trace ID: 2be27598-8820-475c-b6ca-a30513720c00 Correlation ID: d3ed2a98-4aa9-4a63-819b-d36fd20b8d62 Timestamp: 2026-05-07 12:58:57Z\\\",\\\"error_codes\\\":[7000215],\\\"timestamp\\\":\\\"2026-05-07 12:58:57Z\\\",\\\"trace_id\\\":\\\"2be27598-8820-475c-b6ca-a30513720c00\\\",\\\"correlation_id\\\":\\\"d3ed2a98-4aa9-4a63-819b-d36fd20b8d62\\\",\\\"error_uri\\\":\\\"https://login.microsoftonline.com/error?code=7000215\\\"}\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1271,\"provider\":\"office\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1351,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1351,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1351,\"provider\":\"google\",\"refreshToken\":\"4271d15b9e60a606439caddc68337f783e472c85b03dacff14d1b6dfded9051c\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1351,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Bad Request\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1351,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1366,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1366,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1366,\"provider\":\"google\",\"refreshToken\":\"ae21385059b2eebfd43f68aecd56eccd702a1aabb6598f1f7ab594ed8af491b4\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1366,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Bad Request\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1366,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1115,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1115,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: Calendar sync job dispatched {\"calendar_id\":378} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:58] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1421,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:58] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1421,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:58] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:58] local.INFO: Calendar sync job dispatched {\"calendar_id\":504} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:58] local.NOTICE: Calendar sync end {\"retrieved_calendars\":31,\"processed_calendars\":3} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:58] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"calendar:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1115,\"provider\":\"google\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1115,\"provider\":\"google\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [Calendar] Processing sync {\"calendarId\":\"2676cb6d-f86c-427e-bf78-591e388e3c1e\",\"from\":null,\"to\":null,\"delta\":\"CJ_x49O3jpIDEJ_x49O3jpIDGAUgw67KlwMow67KlwM=\",\"last_sync\":\"2026-01-19 07:48:40\",\"dateMode\":\"daily\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.WARNING: [Pipedrive] Account not connected for user {\"userId\":\"e6538737-e7b4-455f-a37a-3e79b665a220\",\"account\":{\"Jiminny\\\\Models\\\\SocialAccount\":{\"id\":1116,\"sociable_id\":241,\"provider_user_id\":\"19555731\",\"expires\":1775683749,\"refresh_token_expires\":null,\"provider\":\"pipedrive\",\"state\":\"full-refresh\",\"auth_scope\":\"base,deals:full,activities:full,contacts:full,search:read\",\"retry_after\":null,\"created_at\":\"2023-09-08 09:44:29\",\"updated_at\":\"2026-04-08 22:58:34\"}}} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {\"crm_provider\":\"pipedrive\",\"crm_owner\":241,\"team_id\":19} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {\"crm_provider\":\"pipedrive\",\"team_id\":19} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {\"crm_provider\":\"pipedrive\",\"team_id\":19} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.WARNING: [Calendar] CRM disconnected for user so events will not be matched {\"provider\":\"pipedrive\",\"user_id\":241,\"message\":\"Your Pipedrive account has become disconnected. Please login to Jiminny to reconnect.\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1115,\"provider\":\"google\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1115,\"provider\":\"google\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [Google Calendar] Failed to watch channel for calendar {\"calendarId\":\"2676cb6d-f86c-427e-bf78-591e388e3c1e\",\"code\":400,\"reason\":\"{\n \\\"error\\\": {\n \\\"errors\\\": [\n {\n \\\"domain\\\": \\\"global\\\",\n \\\"reason\\\": \\\"push.webhookUrlNotHttps\\\",\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n ],\n \\\"code\\\": 400,\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n}\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.WARNING: [Calendar] Sync failed {\"calendarId\":\"2676cb6d-f86c-427e-bf78-591e388e3c1e\",\"code\":400,\"reason\":\"{\n \\\"error\\\": {\n \\\"errors\\\": [\n {\n \\\"domain\\\": \\\"global\\\",\n \\\"reason\\\": \\\"push.webhookUrlNotHttps\\\",\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n ],\n \\\"code\\\": 400,\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n}\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1421,\"provider\":\"office\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1421,\"provider\":\"office\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [Calendar] Processing sync {\"calendarId\":\"9e8b1a2c-1a8f-42bd-b161-810fc0baf540\",\"from\":null,\"to\":null,\"delta\":\"R0usmcdvmMuZCBYV0hguCHhwR3crxfEuMI8zGlf-bMYpCFtdxXvSJWTlnqQvu_jjoOrOYL2VG9rZwFHCERHxGfGEK3CmQX6x8MJG3ZbBXGuVIS6C7u-doY5maMRdsfnrHIAEMJd4Bs_WMfMH4tDJ8j9aul7DHDEJaP7w0PoPPpcoxu4nEk4vk-MolJBEgkSrayEewuBs5JVItUX9lUY2tA.yO2roNQ4Vdm6hBgoutuphGchuzbvsk7aqt5wHfcyeFQ\",\"last_sync\":\"2026-05-06 15:58:35\",\"dateMode\":\"daily\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":89,\"team_id\":2} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [MS Office Calendar] Skipping delta sync for daily mode {\"calendarId\":\"9e8b1a2c-1a8f-42bd-b161-810fc0baf540\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:59:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"cb5f9d32-02db-4883-a5c9-a5b86c1a2fbb\",\"trace_id\":\"4fb8a9a0-53b1-414a-813d-a259b89f3203\"}\n[2026-05-07 12:59:06] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"cb5f9d32-02db-4883-a5c9-a5b86c1a2fbb\",\"trace_id\":\"4fb8a9a0-53b1-414a-813d-a259b89f3203\"}\n[2026-05-07 12:59:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"cb5f9d32-02db-4883-a5c9-a5b86c1a2fbb\",\"trace_id\":\"4fb8a9a0-53b1-414a-813d-a259b89f3203\"}\n[2026-05-07 12:59:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"64313a2b-3a92-4419-ae59-caabfc9e9731\",\"trace_id\":\"16443bac-2196-4257-88bc-59445729f276\"}\n[2026-05-07 12:59:09] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"64313a2b-3a92-4419-ae59-caabfc9e9731\",\"trace_id\":\"16443bac-2196-4257-88bc-59445729f276\"}\n[2026-05-07 12:59:11] local.NOTICE: Monitoring start {\"correlation_id\":\"7678c2ca-049f-44e4-acce-2e711f8d7d40\",\"trace_id\":\"54ef3d3c-f1ea-4a01-aed2-db19a6739a06\"}\n[2026-05-07 12:59:11] local.NOTICE: Monitoring end {\"correlation_id\":\"7678c2ca-049f-44e4-acce-2e711f8d7d40\",\"trace_id\":\"54ef3d3c-f1ea-4a01-aed2-db19a6739a06\"}\n[2026-05-07 12:59:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"44d7c1a1-dfc9-4401-9f63-ad8b5bff9942\",\"trace_id\":\"9f6f5f38-60f5-4869-bfd2-f366d52eaa00\"}\n[2026-05-07 12:59:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"44d7c1a1-dfc9-4401-9f63-ad8b5bff9942\",\"trace_id\":\"9f6f5f38-60f5-4869-bfd2-f366d52eaa00\"}\n[2026-05-07 12:59:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"f90f3b8c-5161-4963-a963-a40284567af1\",\"trace_id\":\"94731c50-8ce2-44ec-ace6-2d46fb00fdb1\"}\n[2026-05-07 12:59:15] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"f90f3b8c-5161-4963-a963-a40284567af1\",\"trace_id\":\"94731c50-8ce2-44ec-ace6-2d46fb00fdb1\"}\n[2026-05-07 12:59:15] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"f90f3b8c-5161-4963-a963-a40284567af1\",\"trace_id\":\"94731c50-8ce2-44ec-ace6-2d46fb00fdb1\"}\n[2026-05-07 12:59:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"f90f3b8c-5161-4963-a963-a40284567af1\",\"trace_id\":\"94731c50-8ce2-44ec-ace6-2d46fb00fdb1\"}\n[2026-05-07 13:00:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"6f98d5e3-0aa8-496e-853a-a77b7a8b74ec\",\"trace_id\":\"b63e8546-4347-49f0-ad1a-92f4e4504843\"}\n[2026-05-07 13:00:10] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"6f98d5e3-0aa8-496e-853a-a77b7a8b74ec\",\"trace_id\":\"b63e8546-4347-49f0-ad1a-92f4e4504843\"}\n[2026-05-07 13:00:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"6f98d5e3-0aa8-496e-853a-a77b7a8b74ec\",\"trace_id\":\"b63e8546-4347-49f0-ad1a-92f4e4504843\"}\n[2026-05-07 13:00:13] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"50260ccd-f119-47b0-baee-514de27801f2\",\"trace_id\":\"40e651df-62f6-4c3a-83ab-842112ec3ece\"}\n[2026-05-07 13:00:13] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"50260ccd-f119-47b0-baee-514de27801f2\",\"trace_id\":\"40e651df-62f6-4c3a-83ab-842112ec3ece\"}\n[2026-05-07 13:00:17] local.NOTICE: Monitoring start {\"correlation_id\":\"f6104856-aca3-4e7b-964e-bba66d730eb3\",\"trace_id\":\"98f34b7b-f715-49cb-8d3a-4e74c1118445\"}\n[2026-05-07 13:00:17] local.NOTICE: Monitoring end {\"correlation_id\":\"f6104856-aca3-4e7b-964e-bba66d730eb3\",\"trace_id\":\"98f34b7b-f715-49cb-8d3a-4e74c1118445\"}\n[2026-05-07 13:00:19] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"b4a9e9a2-968c-429b-8fa8-67dd59bb297f\",\"trace_id\":\"ed6a83d0-8edb-4392-8717-26d91ffde80b\"}\n[2026-05-07 13:00:19] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"b4a9e9a2-968c-429b-8fa8-67dd59bb297f\",\"trace_id\":\"ed6a83d0-8edb-4392-8717-26d91ffde80b\"}\n[2026-05-07 13:00:21] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"b11474b2-8b19-4a2f-89c3-621fde9d3b1f\",\"trace_id\":\"8018d825-0809-411b-9b2a-078e2da6bacb\"}\n[2026-05-07 13:00:21] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"b11474b2-8b19-4a2f-89c3-621fde9d3b1f\",\"trace_id\":\"8018d825-0809-411b-9b2a-078e2da6bacb\"}\n[2026-05-07 13:00:21] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"b11474b2-8b19-4a2f-89c3-621fde9d3b1f\",\"trace_id\":\"8018d825-0809-411b-9b2a-078e2da6bacb\"}\n[2026-05-07 13:00:21] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"b11474b2-8b19-4a2f-89c3-621fde9d3b1f\",\"trace_id\":\"8018d825-0809-411b-9b2a-078e2da6bacb\"}\n[2026-05-07 13:00:23] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"d3b79f58-f9c8-4063-ac7e-7a0445cd1111\",\"trace_id\":\"802cf505-95fb-4f92-8c1b-79aa3ac53084\"}\n[2026-05-07 13:00:23] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:58:00, 2026-05-07 13:00:00] {\"correlation_id\":\"d3b79f58-f9c8-4063-ac7e-7a0445cd1111\",\"trace_id\":\"802cf505-95fb-4f92-8c1b-79aa3ac53084\"}\n[2026-05-07 13:00:23] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:58:00, 2026-05-07 13:00:00] {\"correlation_id\":\"d3b79f58-f9c8-4063-ac7e-7a0445cd1111\",\"trace_id\":\"802cf505-95fb-4f92-8c1b-79aa3ac53084\"}\n[2026-05-07 13:00:23] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"d3b79f58-f9c8-4063-ac7e-7a0445cd1111\",\"trace_id\":\"802cf505-95fb-4f92-8c1b-79aa3ac53084\"}\n[2026-05-07 13:00:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:purge-stale\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"32bad9c1-861c-4a46-bece-585cc1170bfd\",\"trace_id\":\"0c20e20f-6a91-4346-9455-5cd1451c32a1\"}\n[2026-05-07 13:00:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:purge-stale\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"32bad9c1-861c-4a46-bece-585cc1170bfd\",\"trace_id\":\"0c20e20f-6a91-4346-9455-5cd1451c32a1\"}\n[2026-05-07 13:00:29] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:text-relay:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"c9d4f687-1643-431e-9377-2573a2e593fd\",\"trace_id\":\"02fab433-9c9a-49f7-b836-2b8a42551912\"}\n[2026-05-07 13:00:30] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:text-relay:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"c9d4f687-1643-431e-9377-2573a2e593fd\",\"trace_id\":\"02fab433-9c9a-49f7-b836-2b8a42551912\"}\n[2026-05-07 13:00:33] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:pre-meeting-notification\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"57870bb4-45e8-47d8-b192-21d3297d2208\",\"trace_id\":\"ba8e9eac-2dc9-4ed8-bbf1-4a35aedb9efb\"}\n[2026-05-07 13:00:33] local.INFO: Running pre-meeting notification command {\"correlation_id\":\"57870bb4-45e8-47d8-b192-21d3297d2208\",\"trace_id\":\"ba8e9eac-2dc9-4ed8-bbf1-4a35aedb9efb\"}\n[2026-05-07 13:00:33] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:pre-meeting-notification\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"57870bb4-45e8-47d8-b192-21d3297d2208\",\"trace_id\":\"ba8e9eac-2dc9-4ed8-bbf1-4a35aedb9efb\"}\n[2026-05-07 13:00:35] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:start\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"6aeb181b-8314-4d45-aff7-e378793b04d9\",\"trace_id\":\"8ffc66f1-af64-4a58-8ce8-481b3a299dbb\"}\n[2026-05-07 13:00:35] local.INFO: Running conference:monitor:start command for activities in (2026-05-07 12:50:00, 2026-05-07 12:55:00] {\"correlation_id\":\"6aeb181b-8314-4d45-aff7-e378793b04d9\",\"trace_id\":\"8ffc66f1-af64-4a58-8ce8-481b3a299dbb\"}\n[2026-05-07 13:00:35] local.INFO: [conference:monitor:start] No activities found in (2026-05-07 12:50:00, 2026-05-07 12:55:00] {\"correlation_id\":\"6aeb181b-8314-4d45-aff7-e378793b04d9\",\"trace_id\":\"8ffc66f1-af64-4a58-8ce8-481b3a299dbb\"}\n[2026-05-07 13:00:35] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:start\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"6aeb181b-8314-4d45-aff7-e378793b04d9\",\"trace_id\":\"8ffc66f1-af64-4a58-8ce8-481b3a299dbb\"}\n[2026-05-07 13:00:37] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:end\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"888d4f67-ad14-4457-b51d-2cf8b2d315f9\",\"trace_id\":\"eaf4b0b3-0414-4563-b227-ce9c6a2e5b7e\"}\n[2026-05-07 13:00:37] local.INFO: conference:monitor:end:Jiminny\\Console\\Commands\\Activities\\MonitorMeetingEndCommand::logActivitiesEnded {\"from\":\"12:55\",\"to\":\"13:00\"} {\"correlation_id\":\"888d4f67-ad14-4457-b51d-2cf8b2d315f9\",\"trace_id\":\"eaf4b0b3-0414-4563-b227-ce9c6a2e5b7e\"}\n[2026-05-07 13:00:37] local.INFO: conference:monitor:end:Jiminny\\Console\\Commands\\Activities\\MonitorMeetingEndCommand::logActivitiesWithUnfinishedSession {\"from\":\"02:50\",\"to\":\"02:55\"} {\"correlation_id\":\"888d4f67-ad14-4457-b51d-2cf8b2d315f9\",\"trace_id\":\"eaf4b0b3-0414-4563-b227-ce9c6a2e5b7e\"}\n[2026-05-07 13:00:37] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:end\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"888d4f67-ad14-4457-b51d-2cf8b2d315f9\",\"trace_id\":\"eaf4b0b3-0414-4563-b227-ce9c6a2e5b7e\"}\n[2026-05-07 13:00:39] local.NOTICE: Repairing HubSpot tokens start {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:39] local.INFO: Trying to refresh HubSpot token {\"account_id\":59,\"updated_at\":\"2025-10-03 09:32:05\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:39] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:39] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":59,\"provider\":\"hubspot\",\"refreshToken\":\"97b78f6e2cc49965c00c2492b602b02708b1392551e6b3f113fbaa48992af90b\",\"state\":\"full-refresh\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:39] local.ERROR: Failed to refresh HubSpot token {\"account_id\":59,\"updated_at\":\"2025-10-03 09:32:05\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:39] local.INFO: Trying to refresh HubSpot token {\"account_id\":306,\"updated_at\":\"2023-11-27 09:30:03\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:39] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:39] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":306,\"provider\":\"hubspot\",\"refreshToken\":\"6fa6aa8cc641d131231acc3470f5c03cb3b07b2e580fb18f8acb3b1dbb72549b\",\"state\":\"full-refresh\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:40] local.ERROR: Failed to refresh HubSpot token {\"account_id\":306,\"updated_at\":\"2023-11-27 09:30:03\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:40] local.INFO: Trying to refresh HubSpot token {\"account_id\":1372,\"updated_at\":\"2025-10-02 14:47:06\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:40] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:40] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1372,\"provider\":\"hubspot\",\"refreshToken\":\"9aa73948c761da29dce46c177cf9aee1fde483a44169ca38723f9f0597d7a8c4\",\"state\":\"full-refresh\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:40] local.ERROR: Failed to refresh HubSpot token {\"account_id\":1372,\"updated_at\":\"2025-10-02 14:47:06\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:40] local.NOTICE: Repairing HubSpot tokens end {\"total\":3,\"fixed\":0,\"failed\":3} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:45] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"jiminny:transcription:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"b619cc55-b4ef-4913-ab44-6bce51933f7e\",\"trace_id\":\"7cacb418-6e9c-410b-bf3a-15bdf1837908\"}\n[2026-05-07 13:00:45] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:pre-meeting-reminder\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"a765990f-ffe2-44e0-967f-816f5452ce69\",\"trace_id\":\"9aee0f3f-7668-455f-b207-181b58848478\"}\n[2026-05-07 13:00:45] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"jiminny:transcription:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"b619cc55-b4ef-4913-ab44-6bce51933f7e\",\"trace_id\":\"7cacb418-6e9c-410b-bf3a-15bdf1837908\"}\n[2026-05-07 13:00:45] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:45] local.INFO: [HubSpot Journal Command] Starting polling service {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:45] local.INFO: [HubSpot Journal Polling] Service starting {\"memory_limit\":\"256M\",\"max_execution_time\":\"0\",\"initial_memory_mb\":62.0} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:45] local.INFO: [HubSpot Journal Polling] Acquired polling lock {\"expires_at\":\"2026-05-07T13:02:45.724437Z\"} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:45] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:45] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:45] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:pre-meeting-reminder\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"a765990f-ffe2-44e0-967f-816f5452ce69\",\"trace_id\":\"9aee0f3f-7668-455f-b207-181b58848478\"}\n[2026-05-07 13:00:45] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:49] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"crm:reset-governor\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"055b4798-a759-4621-9e0b-652f8ee69ea1\",\"trace_id\":\"10911ef4-48d1-404a-9345-ecf0f5cb9977\"}\n[2026-05-07 13:00:49] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"crm:reset-governor\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"055b4798-a759-4621-9e0b-652f8ee69ea1\",\"trace_id\":\"10911ef4-48d1-404a-9345-ecf0f5cb9977\"}\n[2026-05-07 13:00:51] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:51] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:51] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:53] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:53] local.INFO: Dispatching activity sync job {\"import_id\":812331,\"provider\":\"twilio-flex\",\"team\":\"jiminny\"} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:53] local.INFO: Dispatching activity sync job {\"import_id\":812332,\"provider\":\"xant\",\"team\":\"jiminny\"} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:53] local.INFO: Dispatching activity sync job {\"import_id\":812333,\"provider\":\"apollo\",\"team\":\"jiminny\"} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:53] local.INFO: Dispatching activity sync job {\"import_id\":812334,\"provider\":\"groove\",\"team\":\"jiminny\"} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:53] local.INFO: Dispatching activity sync job {\"import_id\":812335,\"provider\":\"twilio-video\",\"team\":\"jiminny\"} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:53] local.INFO: Dispatching activity sync job {\"import_id\":812336,\"provider\":\"hubspot\",\"team\":\"hubspot\"} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:53] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.WARNING: [Salesforce] Account not connected for user {\"userId\":\"cdf8b554-d951-4758-bc2b-c1b85d1cd0b9\",\"account\":null} {\"correlation_id\":\"fb068e24-e135-4914-9973-94f1a0f5dae2\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {\"crm_provider\":\"salesforce\",\"crm_owner\":3,\"team_id\":1} {\"correlation_id\":\"fb068e24-e135-4914-9973-94f1a0f5dae2\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {\"crm_provider\":\"salesforce\",\"team_id\":1} {\"correlation_id\":\"fb068e24-e135-4914-9973-94f1a0f5dae2\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {\"crm_provider\":\"salesforce\",\"team_id\":1} {\"correlation_id\":\"fb068e24-e135-4914-9973-94f1a0f5dae2\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.ALERT: [SyncActivity] Failed {\"import_id\":812331,\"provider\":\"twilio-flex\",\"provider_id\":317,\"team\":\"jiminny\",\"team_id\":1,\"reason\":\"Social account for Salesforce cannot be found. Please login to Jiminny to connect.\",\"file\":\"/home/jiminny/app/Services/Crm/BaseService.php\",\"line\":646} {\"correlation_id\":\"fb068e24-e135-4914-9973-94f1a0f5dae2\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"fe9470d4-bc5a-4195-919d-e4908e439f7c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"fe9470d4-bc5a-4195-919d-e4908e439f7c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"fe9470d4-bc5a-4195-919d-e4908e439f7c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:56] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:56] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:56] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:56] local.ALERT: [SyncActivity] Failed {\"import_id\":812332,\"provider\":\"xant\",\"provider_id\":161,\"team\":\"jiminny\",\"team_id\":1,\"reason\":\"Activity Provider account not connected.\",\"file\":\"/home/jiminny/app/Services/Activity/ActivityProviderService.php\",\"line\":174} {\"correlation_id\":\"fe9470d4-bc5a-4195-919d-e4908e439f7c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:56] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"e3a8ef92-20c7-4698-a07d-1aa2c21ac82c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:56] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"e3a8ef92-20c7-4698-a07d-1aa2c21ac82c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:56] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"e3a8ef92-20c7-4698-a07d-1aa2c21ac82c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:56] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:fail-stalled\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"441dabbc-0c1f-4d49-871c-08f96adbed01\",\"trace_id\":\"13597461-50ff-4a40-a329-255430126395\"}\n[2026-05-07 13:00:56] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:fail-stalled\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"441dabbc-0c1f-4d49-871c-08f96adbed01\",\"trace_id\":\"13597461-50ff-4a40-a329-255430126395\"}\n[2026-05-07 13:00:57] local.ALERT: [SyncActivity] Failed {\"import_id\":812333,\"provider\":\"apollo\",\"provider_id\":441,\"team\":\"jiminny\",\"team_id\":1,\"reason\":\"Activity Provider account not connected.\",\"file\":\"/home/jiminny/app/Services/Activity/ActivityProviderService.php\",\"line\":174} {\"correlation_id\":\"e3a8ef92-20c7-4698-a07d-1aa2c21ac82c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:57] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"1a0b64ee-3927-48e6-8ae3-fda14f35babb\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:57] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"1a0b64ee-3927-48e6-8ae3-fda14f35babb\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:57] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"1a0b64ee-3927-48e6-8ae3-fda14f35babb\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:57] local.ALERT: [SyncActivity] Failed {\"import_id\":812334,\"provider\":\"groove\",\"provider_id\":228,\"team\":\"jiminny\",\"team_id\":1,\"reason\":\"Activity Provider account not connected.\",\"file\":\"/home/jiminny/app/Services/Activity/ActivityProviderService.php\",\"line\":174} {\"correlation_id\":\"1a0b64ee-3927-48e6-8ae3-fda14f35babb\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:57] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"5e6fecb1-9905-4ab2-a494-e6d8215430c0\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:57] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"5e6fecb1-9905-4ab2-a494-e6d8215430c0\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:57] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"5e6fecb1-9905-4ab2-a494-e6d8215430c0\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.ALERT: [SyncActivity] Failed {\"import_id\":812335,\"provider\":\"twilio-video\",\"provider_id\":243,\"team\":\"jiminny\",\"team_id\":1,\"reason\":\"Activity Provider account not connected.\",\"file\":\"/home/jiminny/app/Services/Activity/ActivityProviderService.php\",\"line\":174} {\"correlation_id\":\"5e6fecb1-9905-4ab2-a494-e6d8215430c0\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":89,\"team_id\":2} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":408,\"provider\":\"hubspot\"} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":408,\"provider\":\"hubspot\"} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [SyncActivity] Start {\"import_id\":812336,\"provider\":\"hubspot\",\"provider_id\":31,\"team\":\"hubspot\",\"team_id\":2} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [HubSpot] Search calls for period {\"from\":\"2026-05-07 12:44:00\",\"to\":\"2026-05-07 13:00:00\"} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [SyncActivity] End {\"import_id\":812336,\"provider\":\"hubspot\",\"provider_id\":31,\"team\":\"hubspot\",\"team_id\":2} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [SyncActivity] Memory usage {\"import_id\":812336,\"provider\":\"hubspot\",\"provider_id\":31,\"team\":\"hubspot\",\"team_id\":2,\"memory_usage\":27230632,\"memory_real_usage\":67108864,\"pid\":37116} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:59] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"jiminny:transcription:retry-stuck\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"1db560c5-5d8c-419a-bfb0-e761473ecf44\",\"trace_id\":\"79eb494e-fd21-4171-b59d-d7d47358f1fb\"}\n[2026-05-07 13:00:59] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"jiminny:transcription:retry-stuck\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"1db560c5-5d8c-419a-bfb0-e761473ecf44\",\"trace_id\":\"79eb494e-fd21-4171-b59d-d7d47358f1fb\"}\n[2026-05-07 13:01:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"73c0e9d6-7ef5-4040-8e35-0a9bb4028abf\",\"trace_id\":\"55b51c26-06b9-4b59-b444-53017b805b30\"}\n[2026-05-07 13:01:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"73c0e9d6-7ef5-4040-8e35-0a9bb4028abf\",\"trace_id\":\"55b51c26-06b9-4b59-b444-53017b805b30\"}\n[2026-05-07 13:01:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"5a7e717c-f314-4601-b1b8-fd550703f463\",\"trace_id\":\"a64281e5-027f-4856-a3e3-4f176c58eb6e\"}\n[2026-05-07 13:01:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"5a7e717c-f314-4601-b1b8-fd550703f463\",\"trace_id\":\"a64281e5-027f-4856-a3e3-4f176c58eb6e\"}\n[2026-05-07 13:01:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"0c425954-2696-4890-97b7-219ccc38cf46\",\"trace_id\":\"d609b364-f3b6-4b85-babb-67caf96efdb1\"}\n[2026-05-07 13:01:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"0c425954-2696-4890-97b7-219ccc38cf46\",\"trace_id\":\"d609b364-f3b6-4b85-babb-67caf96efdb1\"}\n[2026-05-07 13:01:11] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:11] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:11] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"a6bad97b-3db2-4dd6-839f-fcd485f06e65\",\"trace_id\":\"dcdde4a9-962c-46d1-9386-42adb54efbbf\"}\n[2026-05-07 13:01:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"a6bad97b-3db2-4dd6-839f-fcd485f06e65\",\"trace_id\":\"dcdde4a9-962c-46d1-9386-42adb54efbbf\"}\n[2026-05-07 13:01:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"2893478e-8c43-4719-a2e8-7c9c0e0783e9\",\"trace_id\":\"3fc8f1f0-0727-42f1-8ee6-f2b32bd8834b\"}\n[2026-05-07 13:01:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"2893478e-8c43-4719-a2e8-7c9c0e0783e9\",\"trace_id\":\"3fc8f1f0-0727-42f1-8ee6-f2b32bd8834b\"}\n[2026-05-07 13:01:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"64f52ca1-b54e-46da-a760-73dbdf407eaf\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:17] local.INFO: Dispatching activity sync job {\"import_id\":812337,\"provider\":\"hubspot\",\"team\":\"hubspot\"} {\"correlation_id\":\"64f52ca1-b54e-46da-a760-73dbdf407eaf\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"64f52ca1-b54e-46da-a760-73dbdf407eaf\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"crm:bullhorn:ping\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"3c44e0a7-ec5d-4206-a925-69f6e0783c2a\",\"trace_id\":\"60cf7a36-37ca-4ac4-a632-f317578d908f\"}\n[2026-05-07 13:01:19] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"crm:bullhorn:ping\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"3c44e0a7-ec5d-4206-a925-69f6e0783c2a\",\"trace_id\":\"60cf7a36-37ca-4ac4-a632-f317578d908f\"}\n[2026-05-07 13:01:19] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":89,\"team_id\":2} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":408,\"provider\":\"hubspot\"} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":408,\"provider\":\"hubspot\"} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [SyncActivity] Start {\"import_id\":812337,\"provider\":\"hubspot\",\"provider_id\":31,\"team\":\"hubspot\",\"team_id\":2} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [HubSpot] Search calls for period {\"from\":\"2026-05-07 12:00:00\",\"to\":\"2026-05-07 13:00:00\"} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:20] local.INFO: [SyncActivity] End {\"import_id\":812337,\"provider\":\"hubspot\",\"provider_id\":31,\"team\":\"hubspot\",\"team_id\":2} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:20] local.INFO: [SyncActivity] Memory usage {\"import_id\":812337,\"provider\":\"hubspot\",\"provider_id\":31,\"team\":\"hubspot\",\"team_id\":2,\"memory_usage\":27392888,\"memory_real_usage\":67108864,\"pid\":37116} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:21] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"nudges:send\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"55ebbc10-80bf-4724-ac64-678f6ef891cc\",\"trace_id\":\"f5392dc4-b352-4cae-b82a-004f77bbaf26\"}\n[2026-05-07 13:01:21] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"nudges:send\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"55ebbc10-80bf-4724-ac64-678f6ef891cc\",\"trace_id\":\"f5392dc4-b352-4cae-b82a-004f77bbaf26\"}\n[2026-05-07 13:01:23] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"jiminny:playlists:normalize-sort\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"9e29cfb5-b7fc-41bc-a9fd-a160d2253806\",\"trace_id\":\"3e180d83-299d-4c6c-bdda-d5a8ac156efc\"}\n[2026-05-07 13:01:23] local.INFO: [Jiminny\\Component\\Playlist\\Command\\NormalizeSortCommand::handle] starting. {\"playlists\":[]} {\"correlation_id\":\"9e29cfb5-b7fc-41bc-a9fd-a160d2253806\",\"trace_id\":\"3e180d83-299d-4c6c-bdda-d5a8ac156efc\"}\n[2026-05-07 13:01:23] local.INFO: [Jiminny\\Component\\Playlist\\Command\\NormalizeSortCommand::handle] finished. {\"normalizedPlaylists\":[],\"deletedPlaylists\":[]} {\"correlation_id\":\"9e29cfb5-b7fc-41bc-a9fd-a160d2253806\",\"trace_id\":\"3e180d83-299d-4c6c-bdda-d5a8ac156efc\"}\n[2026-05-07 13:01:23] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"jiminny:playlists:normalize-sort\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"9e29cfb5-b7fc-41bc-a9fd-a160d2253806\",\"trace_id\":\"3e180d83-299d-4c6c-bdda-d5a8ac156efc\"}\n[2026-05-07 13:01:41] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:41] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:41] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:41] local.WARNING: [HubSpot Journal Polling] Maximum empty results reached, stopping {\"empty_results\":5,\"max_empty_results\":5} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:41] local.WARNING: [HubSpot Journal Polling] Maximum empty results reached, stopping {\"empty_results\":5,\"max_empty_results\":5} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:41] local.INFO: [HubSpot Journal Polling] Service ending {\"runtime_seconds\":56,\"total_cycles\":5,\"files_downloaded\":0,\"empty_files\":0,\"other_portal_skipped\":0,\"total_events\":0,\"events_per_file\":0,\"avg_api_ms\":181.3,\"avg_download_ms\":0.0,\"avg_transform_ms\":0.0,\"avg_process_ms\":0.0,\"peak_memory_mb\":99.73} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:41] local.INFO: [HubSpot Journal Polling] Released polling lock {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:02:05] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"fe3480ce-754b-4304-b661-e4ac7234a778\",\"trace_id\":\"619e9c15-f95f-47ce-af85-6d78a6698327\"}\n[2026-05-07 13:02:05] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"fe3480ce-754b-4304-b661-e4ac7234a778\",\"trace_id\":\"619e9c15-f95f-47ce-af85-6d78a6698327\"}\n[2026-05-07 13:02:05] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"fe3480ce-754b-4304-b661-e4ac7234a778\",\"trace_id\":\"619e9c15-f95f-47ce-af85-6d78a6698327\"}\n[2026-05-07 13:02:07] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"aa98bf14-5737-4097-9f53-ac6833fb7983\",\"trace_id\":\"2f858b11-1073-43d4-996a-57e259ec2795\"}\n[2026-05-07 13:02:07] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"aa98bf14-5737-4097-9f53-ac6833fb7983\",\"trace_id\":\"2f858b11-1073-43d4-996a-57e259ec2795\"}\n[2026-05-07 13:02:08] local.NOTICE: Monitoring start {\"correlation_id\":\"25c588be-ddd6-41f1-8db8-ae28f3dd5bf5\",\"trace_id\":\"58b4c110-21ab-4c22-be4f-5be3534cd17d\"}\n[2026-05-07 13:02:08] local.NOTICE: Monitoring end {\"correlation_id\":\"25c588be-ddd6-41f1-8db8-ae28f3dd5bf5\",\"trace_id\":\"58b4c110-21ab-4c22-be4f-5be3534cd17d\"}\n[2026-05-07 13:02:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"5e453d7a-4daf-4001-b100-6aa9485d0353\",\"trace_id\":\"d97e1107-3696-4acf-95db-9cc7f37412e1\"}\n[2026-05-07 13:02:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"5e453d7a-4daf-4001-b100-6aa9485d0353\",\"trace_id\":\"d97e1107-3696-4acf-95db-9cc7f37412e1\"}\n[2026-05-07 13:02:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"3fab4dfb-f0ae-4c2c-a882-e09a1ad3ee9b\",\"trace_id\":\"3a66f9c4-3f01-40e2-aee2-e77fdabe793f\"}\n[2026-05-07 13:02:12] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"3fab4dfb-f0ae-4c2c-a882-e09a1ad3ee9b\",\"trace_id\":\"3a66f9c4-3f01-40e2-aee2-e77fdabe793f\"}\n[2026-05-07 13:02:12] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"3fab4dfb-f0ae-4c2c-a882-e09a1ad3ee9b\",\"trace_id\":\"3a66f9c4-3f01-40e2-aee2-e77fdabe793f\"}\n[2026-05-07 13:02:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"3fab4dfb-f0ae-4c2c-a882-e09a1ad3ee9b\",\"trace_id\":\"3a66f9c4-3f01-40e2-aee2-e77fdabe793f\"}\n[2026-05-07 13:02:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"63252e6d-894f-4cb9-818a-0034bf3545cb\",\"trace_id\":\"7ddf2e72-9174-4623-a622-1a5c9ee952c5\"}\n[2026-05-07 13:02:15] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 13:00:00, 2026-05-07 13:02:00] {\"correlation_id\":\"63252e6d-894f-4cb9-818a-0034bf3545cb\",\"trace_id\":\"7ddf2e72-9174-4623-a622-1a5c9ee952c5\"}\n[2026-05-07 13:02:15] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 13:00:00, 2026-05-07 13:02:00] {\"correlation_id\":\"63252e6d-894f-4cb9-818a-0034bf3545cb\",\"trace_id\":\"7ddf2e72-9174-4623-a622-1a5c9ee952c5\"}\n[2026-05-07 13:02:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"63252e6d-894f-4cb9-818a-0034bf3545cb\",\"trace_id\":\"7ddf2e72-9174-4623-a622-1a5c9ee952c5\"}\n[2026-05-07 13:02:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:create\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"cf65b2c4-c602-432d-8087-d0c0fb7f8e80\",\"trace_id\":\"b7b39317-045c-4475-879e-3d399e23fc3e\"}\n[2026-05-07 13:02:17] local.INFO: [EmailSchedule] STARTING batch create {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"cf65b2c4-c602-432d-8087-d0c0fb7f8e80\",\"trace_id\":\"b7b39317-045c-4475-879e-3d399e23fc3e\"}\n[2026-05-07 13:02:17] local.INFO: [EmailSchedule] FINISHED batch create {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"cf65b2c4-c602-432d-8087-d0c0fb7f8e80\",\"trace_id\":\"b7b39317-045c-4475-879e-3d399e23fc3e\"}\n[2026-05-07 13:02:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:create\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"cf65b2c4-c602-432d-8087-d0c0fb7f8e80\",\"trace_id\":\"b7b39317-045c-4475-879e-3d399e23fc3e\"}\n[2026-05-07 13:02:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"c481124d-04ae-43fb-b1d3-a4282f7af7ff\",\"trace_id\":\"d2d083d1-7cee-4d21-b80e-4485361d9969\"}\n[2026-05-07 13:02:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"c481124d-04ae-43fb-b1d3-a4282f7af7ff\",\"trace_id\":\"d2d083d1-7cee-4d21-b80e-4485361d9969\"}\n[2026-05-07 13:02:20] local.INFO: [Jiminny\\Jobs\\Mailbox\\CreateBatches] processed 2 inboxes and created 0 batches {\"userId\":null,\"batchSize\":30,\"maxBatches\":1000} {\"correlation_id\":\"3e2ef780-0c9d-4c30-9dc9-92315055c632\",\"trace_id\":\"b7b39317-045c-4475-879e-3d399e23fc3e\"}\n[2026-05-07 13:03:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"8cb6c7bf-4a2d-4960-bf8f-0368643fec27\",\"trace_id\":\"68c67cd4-9b92-4e41-bc1e-ebb282ea5211\"}\n[2026-05-07 13:03:06] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"8cb6c7bf-4a2d-4960-bf8f-0368643fec27\",\"trace_id\":\"68c67cd4-9b92-4e41-bc1e-ebb282ea5211\"}\n[2026-05-07 13:03:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"8cb6c7bf-4a2d-4960-bf8f-0368643fec27\",\"trace_id\":\"68c67cd4-9b92-4e41-bc1e-ebb282ea5211\"}\n[2026-05-07 13:03:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"b18dc815-6c91-43df-b083-125316724586\",\"trace_id\":\"62a636e8-4128-49eb-b99b-15efcfb37267\"}\n[2026-05-07 13:03:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"b18dc815-6c91-43df-b083-125316724586\",\"trace_id\":\"62a636e8-4128-49eb-b99b-15efcfb37267\"}\n[2026-05-07 13:03:10] local.NOTICE: Monitoring start {\"correlation_id\":\"d74c3e14-fd1a-4cab-9892-e9e924af1144\",\"trace_id\":\"29547049-25f5-4b62-a603-276e1de3dde8\"}\n[2026-05-07 13:03:10] local.NOTICE: Monitoring end {\"correlation_id\":\"d74c3e14-fd1a-4cab-9892-e9e924af1144\",\"trace_id\":\"29547049-25f5-4b62-a603-276e1de3dde8\"}\n[2026-05-07 13:03:13] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"bd7a8c2f-3f0b-48e9-86c2-0f01f2cfd9e8\",\"trace_id\":\"a3d1ecb5-4122-43c1-98ca-5d74c3dc989c\"}\n[2026-05-07 13:03:13] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"bd7a8c2f-3f0b-48e9-86c2-0f01f2cfd9e8\",\"trace_id\":\"a3d1ecb5-4122-43c1-98ca-5d74c3dc989c\"}\n[2026-05-07 13:03:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"4b20eb61-2970-4a63-8ee0-b392f7406a78\",\"trace_id\":\"892c9d93-c280-4b3f-a97a-bf1266f5c090\"}\n[2026-05-07 13:03:14] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"4b20eb61-2970-4a63-8ee0-b392f7406a78\",\"trace_id\":\"892c9d93-c280-4b3f-a97a-bf1266f5c090\"}\n[2026-05-07 13:03:14] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"4b20eb61-2970-4a63-8ee0-b392f7406a78\",\"trace_id\":\"892c9d93-c280-4b3f-a97a-bf1266f5c090\"}\n[2026-05-07 13:03:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"4b20eb61-2970-4a63-8ee0-b392f7406a78\",\"trace_id\":\"892c9d93-c280-4b3f-a97a-bf1266f5c090\"}\n[2026-05-07 13:03:18] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"6a165ea3-f101-4ac9-bfcc-e7ad618ac645\",\"trace_id\":\"383367e5-a337-4793-be1c-a88a2a6fa2e5\"}\n[2026-05-07 13:03:18] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"6a165ea3-f101-4ac9-bfcc-e7ad618ac645\",\"trace_id\":\"383367e5-a337-4793-be1c-a88a2a6fa2e5\"}","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.088194445,"height":0.027777778},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2","depth":4,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":4,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"18","depth":4,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Highlighted Error","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Services\\Crm\\Hubspot\\Pagination;\n\nuse Jiminny\\Services\\Crm\\Hubspot\\Client;\nuse Jiminny\\Services\\Crm\\Hubspot\\PayloadBuilder;\nuse Psr\\Log\\LoggerInterface;\nuse SevenShores\\Hubspot\\Exceptions\\BadRequest;\nuse SevenShores\\Hubspot\\Exceptions\\HubspotException;\nuse Jiminny\\Exceptions\\SocialAccountTokenInvalidException;\n\nclass HubspotPaginationService\n{\n public function __construct(\n private LoggerInterface $logger\n ) {\n }\n\n /**\n * @throws HubspotException\n * @throws SocialAccountTokenInvalidException\n * @throws BadRequest\n */\n public function getPaginatedDataGenerator(\n Client $client,\n array $payload,\n string $type,\n int $offset = 0,\n int &$total = 0,\n ?string &$lastRecordId = null\n ): \\Generator {\n $state = new PaginationState(offset: $offset);\n $endpoint = Client::BASE_URL . \"/crm/v3/objects/{$type}/search\";\n $defaultFilter = $payload['filters'] ?? [];\n $resultsPerPage = PayloadBuilder::MAX_SEARCH_REQUEST_LIMIT;\n $teamId = $client->getConfig()->getTeam()->getId();\n $delay = $this->calculateDelayInMicroseconds();\n\n do {\n// if ($this->shouldStopPagination($state, $teamId)) {\n// break;\n// }\n\n $payload = $this->handlePaginationStrategy($payload, $defaultFilter, $state, $resultsPerPage, $teamId);\n\n// $this->validateTokenIfNeeded($client, $state);\n// usleep($delay);\n\n $page = $this->executeSearchRequest($client, $endpoint, $payload, $state);\n\n// $state->setTotal($page['total'] ?? 0);\n// $this->updateLastRecordId($page, $state);\n//\n// // Safely iterate over results with null check\n// $results = $page['results'] ?? [];\n// foreach ($results as $row) {\n// $state->incrementTotalRecords();\n// yield $row;\n// }\n//\n// $state->setOffset($this->getNextOffset($page));\n// $state->incrementRequestCount();\n//\n// $this->logPaginationProgress($state, $teamId, $endpoint);\n } while ($state->offset && ! empty($page['results']));\n\n // Log final pagination completion stats\n $this->logger->info('[Hubspot] Pagination completed', [\n 'team_id' => $teamId,\n 'endpoint' => $endpoint,\n 'total_requests' => $state->requestCount,\n 'total_records_fetched' => $state->totalRecords,\n 'total_elapsed_seconds' => round($state->getElapsedSeconds(), 2),\n 'average_seconds_per_request' => $state->requestCount > 0 ? round($state->getElapsedSeconds() / $state->requestCount, 2) : 0,\n ]);\n\n // Update reference parameters\n $total = $state->total;\n $lastRecordId = $state->lastRecordId;\n }\n\n private function shouldStopPagination(PaginationState $state, int $teamId): bool\n {\n if ($state->hasReachedSafetyLimit()) {\n $this->logger->warning('[Hubspot] Reached maximum request limit during pagination', [\n 'team_id' => $teamId,\n 'safety_limit' => PaginationConfig::LOOP_SAFETY_LIMIT,\n 'total_fetched' => $state->totalRecords,\n ]);\n\n return true;\n }\n\n return false;\n }\n\n private function handlePaginationStrategy(\n array $payload,\n array $defaultFilter,\n PaginationState $state,\n int $resultsPerPage,\n int $teamId\n ): array {\n if ($this->shouldSwitchToKeysetPagination($state, $resultsPerPage)) {\n $payload['filters'] = $defaultFilter;\n $payload['filters'][] = [\n 'propertyName' => 'hs_object_id',\n 'operator' => 'LT',\n 'value' => $state->lastRecordId,\n ];\n\n $this->logger->info('[Hubspot] Search keyset pagination request', [\n 'team_id' => $teamId,\n 'sequence' => $state->requestCount,\n 'itemsPerPage' => $resultsPerPage,\n 'payload' => $payload,\n 'total' => $state->total,\n ]);\n\n unset($payload['after']);\n $state->setOffset(0);\n }\n\n if ($state->offset) {\n $payload['after'] = $state->offset;\n }\n\n return $payload;\n }\n\n private function shouldSwitchToKeysetPagination(PaginationState $state, int $resultsPerPage): bool\n {\n // Check if we've hit the offset limit\n $shouldSwitch = $state->requestCount > 0 && ($state->offset + $resultsPerPage) > PaginationConfig::TOTAL_QUERY_LIMIT;\n\n if ($shouldSwitch && $state->lastRecordId === null) {\n $this->logger->warning('[Hubspot] Cannot switch to keyset pagination: lastRecordId is null', [\n 'request_count' => $state->requestCount,\n 'current_offset' => $state->offset,\n 'results_per_page' => $resultsPerPage,\n 'total_query_limit' => PaginationConfig::TOTAL_QUERY_LIMIT,\n ]);\n\n return false; // Continue with offset pagination\n }\n\n return $shouldSwitch;\n }\n\n private function validateTokenIfNeeded(Client $client, PaginationState $state): void\n {\n if ($state->shouldValidateToken()) {\n $client->ensureValidToken();\n $state->updateLastTokenCheck();\n }\n }\n\n private function executeSearchRequest(Client $client, string $endpoint, array $payload, PaginationState $state): array\n {\n try {\n $response = $client->getInstance()->getClient()->request('POST', $endpoint, ['json' => $payload]);\n\n return $response->toArray();\n } catch (\\Exception $e) {\n if ($client->isUnauthorizedException($e)) {\n $this->logger->warning('[Hubspot] Got 401 during pagination, attempting token refresh', [\n 'team_id' => $client->getConfig()->getTeam()->getId(),\n 'error' => $e->getMessage(),\n ]);\n\n $client->ensureValidToken();\n $state->updateLastTokenCheck();\n\n try {\n $response = $client->getInstance()->getClient()->request('POST', $endpoint, ['json' => $payload]);\n\n $this->logger->info('[Hubspot] Token refresh and retry successful', [\n 'team_id' => $client->getConfig()->getTeam()->getId(),\n ]);\n\n return $response->toArray();\n } catch (\\Exception $retryException) {\n $this->logger->error('[Hubspot] Retry request failed after token refresh', [\n 'team_id' => $client->getConfig()->getTeam()->getId(),\n 'original_error' => $e->getMessage(),\n 'retry_error' => $retryException->getMessage(),\n ]);\n\n throw $retryException;\n }\n } else if ($client->isUnauthorizedException($e)) {\n } else {\n throw $e;\n }\n }\n }\n\n private function updateLastRecordId(array $page, PaginationState $state): void\n {\n $lastRecord = ! empty($page['results']) ? end($page['results']) : null;\n $lastRecordId = $lastRecord['id'] ?? null;\n $state->updateLastRecordId($lastRecordId);\n }\n\n private function getNextOffset(array $page): int\n {\n return isset($page['paging']['next']['after']) ? (int) $page['paging']['next']['after'] : 0;\n }\n\n private function logPaginationProgress(PaginationState $state, int $teamId, string $endpoint): void\n {\n if ($state->shouldLogProgress()) {\n $this->logger->info('[Hubspot] Pagination progress log', [\n 'team_id' => $teamId,\n 'endpoint' => $endpoint,\n 'requests_made' => $state->requestCount,\n 'records_fetched' => $state->totalRecords,\n 'elapsed_seconds' => $state->getElapsedSeconds(),\n ]);\n }\n }\n\n private function calculateDelayInMicroseconds(): int\n {\n return (int) (1 / PaginationConfig::SEARCH_RPS_LIMIT * 1000000);\n }\n}","depth":4,"on_screen":true,"value":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Services\\Crm\\Hubspot\\Pagination;\n\nuse Jiminny\\Services\\Crm\\Hubspot\\Client;\nuse Jiminny\\Services\\Crm\\Hubspot\\PayloadBuilder;\nuse Psr\\Log\\LoggerInterface;\nuse SevenShores\\Hubspot\\Exceptions\\BadRequest;\nuse SevenShores\\Hubspot\\Exceptions\\HubspotException;\nuse Jiminny\\Exceptions\\SocialAccountTokenInvalidException;\n\nclass HubspotPaginationService\n{\n public function __construct(\n private LoggerInterface $logger\n ) {\n }\n\n /**\n * @throws HubspotException\n * @throws SocialAccountTokenInvalidException\n * @throws BadRequest\n */\n public function getPaginatedDataGenerator(\n Client $client,\n array $payload,\n string $type,\n int $offset = 0,\n int &$total = 0,\n ?string &$lastRecordId = null\n ): \\Generator {\n $state = new PaginationState(offset: $offset);\n $endpoint = Client::BASE_URL . \"/crm/v3/objects/{$type}/search\";\n $defaultFilter = $payload['filters'] ?? [];\n $resultsPerPage = PayloadBuilder::MAX_SEARCH_REQUEST_LIMIT;\n $teamId = $client->getConfig()->getTeam()->getId();\n $delay = $this->calculateDelayInMicroseconds();\n\n do {\n// if ($this->shouldStopPagination($state, $teamId)) {\n// break;\n// }\n\n $payload = $this->handlePaginationStrategy($payload, $defaultFilter, $state, $resultsPerPage, $teamId);\n\n// $this->validateTokenIfNeeded($client, $state);\n// usleep($delay);\n\n $page = $this->executeSearchRequest($client, $endpoint, $payload, $state);\n\n// $state->setTotal($page['total'] ?? 0);\n// $this->updateLastRecordId($page, $state);\n//\n// // Safely iterate over results with null check\n// $results = $page['results'] ?? [];\n// foreach ($results as $row) {\n// $state->incrementTotalRecords();\n// yield $row;\n// }\n//\n// $state->setOffset($this->getNextOffset($page));\n// $state->incrementRequestCount();\n//\n// $this->logPaginationProgress($state, $teamId, $endpoint);\n } while ($state->offset && ! empty($page['results']));\n\n // Log final pagination completion stats\n $this->logger->info('[Hubspot] Pagination completed', [\n 'team_id' => $teamId,\n 'endpoint' => $endpoint,\n 'total_requests' => $state->requestCount,\n 'total_records_fetched' => $state->totalRecords,\n 'total_elapsed_seconds' => round($state->getElapsedSeconds(), 2),\n 'average_seconds_per_request' => $state->requestCount > 0 ? round($state->getElapsedSeconds() / $state->requestCount, 2) : 0,\n ]);\n\n // Update reference parameters\n $total = $state->total;\n $lastRecordId = $state->lastRecordId;\n }\n\n private function shouldStopPagination(PaginationState $state, int $teamId): bool\n {\n if ($state->hasReachedSafetyLimit()) {\n $this->logger->warning('[Hubspot] Reached maximum request limit during pagination', [\n 'team_id' => $teamId,\n 'safety_limit' => PaginationConfig::LOOP_SAFETY_LIMIT,\n 'total_fetched' => $state->totalRecords,\n ]);\n\n return true;\n }\n\n return false;\n }\n\n private function handlePaginationStrategy(\n array $payload,\n array $defaultFilter,\n PaginationState $state,\n int $resultsPerPage,\n int $teamId\n ): array {\n if ($this->shouldSwitchToKeysetPagination($state, $resultsPerPage)) {\n $payload['filters'] = $defaultFilter;\n $payload['filters'][] = [\n 'propertyName' => 'hs_object_id',\n 'operator' => 'LT',\n 'value' => $state->lastRecordId,\n ];\n\n $this->logger->info('[Hubspot] Search keyset pagination request', [\n 'team_id' => $teamId,\n 'sequence' => $state->requestCount,\n 'itemsPerPage' => $resultsPerPage,\n 'payload' => $payload,\n 'total' => $state->total,\n ]);\n\n unset($payload['after']);\n $state->setOffset(0);\n }\n\n if ($state->offset) {\n $payload['after'] = $state->offset;\n }\n\n return $payload;\n }\n\n private function shouldSwitchToKeysetPagination(PaginationState $state, int $resultsPerPage): bool\n {\n // Check if we've hit the offset limit\n $shouldSwitch = $state->requestCount > 0 && ($state->offset + $resultsPerPage) > PaginationConfig::TOTAL_QUERY_LIMIT;\n\n if ($shouldSwitch && $state->lastRecordId === null) {\n $this->logger->warning('[Hubspot] Cannot switch to keyset pagination: lastRecordId is null', [\n 'request_count' => $state->requestCount,\n 'current_offset' => $state->offset,\n 'results_per_page' => $resultsPerPage,\n 'total_query_limit' => PaginationConfig::TOTAL_QUERY_LIMIT,\n ]);\n\n return false; // Continue with offset pagination\n }\n\n return $shouldSwitch;\n }\n\n private function validateTokenIfNeeded(Client $client, PaginationState $state): void\n {\n if ($state->shouldValidateToken()) {\n $client->ensureValidToken();\n $state->updateLastTokenCheck();\n }\n }\n\n private function executeSearchRequest(Client $client, string $endpoint, array $payload, PaginationState $state): array\n {\n try {\n $response = $client->getInstance()->getClient()->request('POST', $endpoint, ['json' => $payload]);\n\n return $response->toArray();\n } catch (\\Exception $e) {\n if ($client->isUnauthorizedException($e)) {\n $this->logger->warning('[Hubspot] Got 401 during pagination, attempting token refresh', [\n 'team_id' => $client->getConfig()->getTeam()->getId(),\n 'error' => $e->getMessage(),\n ]);\n\n $client->ensureValidToken();\n $state->updateLastTokenCheck();\n\n try {\n $response = $client->getInstance()->getClient()->request('POST', $endpoint, ['json' => $payload]);\n\n $this->logger->info('[Hubspot] Token refresh and retry successful', [\n 'team_id' => $client->getConfig()->getTeam()->getId(),\n ]);\n\n return $response->toArray();\n } catch (\\Exception $retryException) {\n $this->logger->error('[Hubspot] Retry request failed after token refresh', [\n 'team_id' => $client->getConfig()->getTeam()->getId(),\n 'original_error' => $e->getMessage(),\n 'retry_error' => $retryException->getMessage(),\n ]);\n\n throw $retryException;\n }\n } else if ($client->isUnauthorizedException($e)) {\n } else {\n throw $e;\n }\n }\n }\n\n private function updateLastRecordId(array $page, PaginationState $state): void\n {\n $lastRecord = ! empty($page['results']) ? end($page['results']) : null;\n $lastRecordId = $lastRecord['id'] ?? null;\n $state->updateLastRecordId($lastRecordId);\n }\n\n private function getNextOffset(array $page): int\n {\n return isset($page['paging']['next']['after']) ? (int) $page['paging']['next']['after'] : 0;\n }\n\n private function logPaginationProgress(PaginationState $state, int $teamId, string $endpoint): void\n {\n if ($state->shouldLogProgress()) {\n $this->logger->info('[Hubspot] Pagination progress log', [\n 'team_id' => $teamId,\n 'endpoint' => $endpoint,\n 'requests_made' => $state->requestCount,\n 'records_fetched' => $state->totalRecords,\n 'elapsed_seconds' => $state->getElapsedSeconds(),\n ]);\n }\n }\n\n private function calculateDelayInMicroseconds(): int\n {\n return (int) (1 / PaginationConfig::SEARCH_RPS_LIMIT * 1000000);\n }\n}","role_description":"text entry area","is_enabled":true,"is_focused":true,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Project","depth":3,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Project","depth":3,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"New File or Directory…","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Expand Selected","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Collapse All","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Options","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
9219886827759137044
|
6701901348398533693
|
click
|
accessibility
|
NULL
|
Project: faVsco.js, menu
master, menu
Start Listen Project: faVsco.js, menu
master, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Show Replace Field
Search History
retry_error
New Line
Match Case
Words
Regex
Replace History
Replace
New Line
Preserve case
0 results
Previous Occurrence
Next Occurrence
Filter Search Results
Open in Window, Multiple Cursors
Click to highlight
Close
Sync Changes
Hide This Notification
Code changed:
Hide
934
Previous Highlighted Error
Next Highlighted Error
[2026-05-07 12:52:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"fa8a3008-d298-4682-bbbc-fdc77520e0d7","trace_id":"7cfb2afb-9fc4-4a77-81be-65dce93c7d80"}
[2026-05-07 12:52:08] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"fa8a3008-d298-4682-bbbc-fdc77520e0d7","trace_id":"7cfb2afb-9fc4-4a77-81be-65dce93c7d80"}
[2026-05-07 12:52:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"fa8a3008-d298-4682-bbbc-fdc77520e0d7","trace_id":"7cfb2afb-9fc4-4a77-81be-65dce93c7d80"}
[2026-05-07 12:52:12] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"932ced9d-9804-48ed-976a-1f8bf5e75707","trace_id":"21bf320c-58f3-4082-831d-9f07f6c6a669"}
[2026-05-07 12:52:12] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"932ced9d-9804-48ed-976a-1f8bf5e75707","trace_id":"21bf320c-58f3-4082-831d-9f07f6c6a669"}
[2026-05-07 12:52:17] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1499,"provider":"hubspot"} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:17] local.INFO: [SocialAccountService] Token retrieved {"socialAccountId":1499,"provider":"hubspot"} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:17] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:17] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {"crm_provider":"hubspot","crm_owner":148,"team_id":2} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:17] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.55,"average_seconds_per_request":0.55} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:18] local.NOTICE: Monitoring start {"correlation_id":"ae3ec78f-432c-4e22-b73b-0413af73d9f3","trace_id":"c2feb517-0f2b-4ad9-bce5-4d57476a164b"}
[2026-05-07 12:52:18] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.51,"average_seconds_per_request":0.51} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:18] local.NOTICE: Monitoring end {"correlation_id":"ae3ec78f-432c-4e22-b73b-0413af73d9f3","trace_id":"c2feb517-0f2b-4ad9-bce5-4d57476a164b"}
[2026-05-07 12:52:18] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.48,"average_seconds_per_request":0.48} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:19] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.49,"average_seconds_per_request":0.49} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:19] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.49,"average_seconds_per_request":0.49} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"2bf2f73f-007c-4909-925e-f1749fbf87b3","trace_id":"8429123c-d92c-48d9-a154-29bc0aa0e2a1"}
[2026-05-07 12:52:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"2bf2f73f-007c-4909-925e-f1749fbf87b3","trace_id":"8429123c-d92c-48d9-a154-29bc0aa0e2a1"}
[2026-05-07 12:52:20] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.48,"average_seconds_per_request":0.48} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:20] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.62,"average_seconds_per_request":0.62} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:21] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.78,"average_seconds_per_request":0.78} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:22] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":1.21,"average_seconds_per_request":1.21} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:23] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.53,"average_seconds_per_request":0.53} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:25] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8","trace_id":"64ccac6b-34f7-45ed-a8ac-b63adbb19107"}
[2026-05-07 12:52:25] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8","trace_id":"64ccac6b-34f7-45ed-a8ac-b63adbb19107"}
[2026-05-07 12:52:26] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8","trace_id":"64ccac6b-34f7-45ed-a8ac-b63adbb19107"}
[2026-05-07 12:52:26] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8","trace_id":"64ccac6b-34f7-45ed-a8ac-b63adbb19107"}
[2026-05-07 12:52:28] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:count","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"6e1a36d0-a87a-455f-88b9-04f16718ea33","trace_id":"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c"}
[2026-05-07 12:52:28] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:50:00, 2026-05-07 12:52:00] {"correlation_id":"6e1a36d0-a87a-455f-88b9-04f16718ea33","trace_id":"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c"}
[2026-05-07 12:52:28] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:50:00, 2026-05-07 12:52:00] {"correlation_id":"6e1a36d0-a87a-455f-88b9-04f16718ea33","trace_id":"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c"}
[2026-05-07 12:52:28] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:count","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"6e1a36d0-a87a-455f-88b9-04f16718ea33","trace_id":"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c"}
[2026-05-07 12:52:31] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:create","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"80549428-beea-4a6c-97d3-818ca0f059f3","trace_id":"55ddd59b-073b-4331-8cdb-baa869dcff70"}
[2026-05-07 12:52:31] local.INFO: [EmailSchedule] STARTING batch create {"host":"docker_lamp_1"} {"correlation_id":"80549428-beea-4a6c-97d3-818ca0f059f3","trace_id":"55ddd59b-073b-4331-8cdb-baa869dcff70"}
[2026-05-07 12:52:31] local.INFO: [EmailSchedule] FINISHED batch create {"host":"docker_lamp_1"} {"correlation_id":"80549428-beea-4a6c-97d3-818ca0f059f3","trace_id":"55ddd59b-073b-4331-8cdb-baa869dcff70"}
[2026-05-07 12:52:31] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:create","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"80549428-beea-4a6c-97d3-818ca0f059f3","trace_id":"55ddd59b-073b-4331-8cdb-baa869dcff70"}
[2026-05-07 12:52:32] local.INFO: [Jiminny\Jobs\Mailbox\CreateBatches] processed 2 inboxes and created 0 batches {"userId":null,"batchSize":30,"maxBatches":1000} {"correlation_id":"92242bd6-7014-4487-a50b-1570e1a88e7a","trace_id":"55ddd59b-073b-4331-8cdb-baa869dcff70"}
[2026-05-07 12:52:39] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"activity:sync","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"d467eace-3254-4ecc-8d8e-a94688d6d3ad","trace_id":"5105ca8f-3c0d-4798-b748-5a7d6fbd7531"}
[2026-05-07 12:52:39] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"activity:sync","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"d467eace-3254-4ecc-8d8e-a94688d6d3ad","trace_id":"5105ca8f-3c0d-4798-b748-5a7d6fbd7531"}
[2026-05-07 12:53:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"04363b29-2f82-470a-89d0-c5ce4f4779d7","trace_id":"3c76a1f1-3348-4e2b-897c-4a216ca95147"}
[2026-05-07 12:53:08] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"04363b29-2f82-470a-89d0-c5ce4f4779d7","trace_id":"3c76a1f1-3348-4e2b-897c-4a216ca95147"}
[2026-05-07 12:53:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"04363b29-2f82-470a-89d0-c5ce4f4779d7","trace_id":"3c76a1f1-3348-4e2b-897c-4a216ca95147"}
[2026-05-07 12:53:11] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"5ebbecd0-866c-443f-965f-b6ac03735379","trace_id":"e0a724a5-bb4b-4fe6-9fe9-36ea1c3f0326"}
[2026-05-07 12:53:11] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"5ebbecd0-866c-443f-965f-b6ac03735379","trace_id":"e0a724a5-bb4b-4fe6-9fe9-36ea1c3f0326"}
[2026-05-07 12:53:18] local.NOTICE: Monitoring start {"correlation_id":"f39f0d3c-a292-41cb-8834-45dae1f8cf47","trace_id":"b6e7e2a7-85af-401d-afc6-bec2bdab34d7"}
[2026-05-07 12:53:18] local.NOTICE: Monitoring end {"correlation_id":"f39f0d3c-a292-41cb-8834-45dae1f8cf47","trace_id":"b6e7e2a7-85af-401d-afc6-bec2bdab34d7"}
[2026-05-07 12:53:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"419bb747-2669-496f-944b-1073496cc271","trace_id":"4cb913a4-ef75-422b-80eb-fbfb988521ed"}
[2026-05-07 12:53:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"419bb747-2669-496f-944b-1073496cc271","trace_id":"4cb913a4-ef75-422b-80eb-fbfb988521ed"}
[2026-05-07 12:53:22] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"f4805c97-9344-4111-8be2-2b1efeae07bb","trace_id":"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22"}
[2026-05-07 12:53:22] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"f4805c97-9344-4111-8be2-2b1efeae07bb","trace_id":"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22"}
[2026-05-07 12:53:22] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"f4805c97-9344-4111-8be2-2b1efeae07bb","trace_id":"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22"}
[2026-05-07 12:53:22] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"f4805c97-9344-4111-8be2-2b1efeae07bb","trace_id":"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22"}
[2026-05-07 12:53:25] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:retry-failed","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"2eadb06b-2c2e-4a7f-8920-77bd30d6cd7f","trace_id":"75f27a23-2021-41a5-9e5f-4b1cb4f143a6"}
[2026-05-07 12:53:25] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:retry-failed","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"2eadb06b-2c2e-4a7f-8920-77bd30d6cd7f","trace_id":"75f27a23-2021-41a5-9e5f-4b1cb4f143a6"}
[2026-05-07 12:54:06] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"ad151521-f676-4351-a70b-f44dc0b94990","trace_id":"17e39c4c-85cb-49a4-815e-b7315a8c2249"}
[2026-05-07 12:54:06] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"ad151521-f676-4351-a70b-f44dc0b94990","trace_id":"17e39c4c-85cb-49a4-815e-b7315a8c2249"}
[2026-05-07 12:54:06] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"ad151521-f676-4351-a70b-f44dc0b94990","trace_id":"17e39c4c-85cb-49a4-815e-b7315a8c2249"}
[2026-05-07 12:54:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"ed0583cf-03c6-4696-b859-876c8efa4473","trace_id":"3f9e0a3c-2178-4885-95eb-8618b8cfc042"}
[2026-05-07 12:54:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"ed0583cf-03c6-4696-b859-876c8efa4473","trace_id":"3f9e0a3c-2178-4885-95eb-8618b8cfc042"}
[2026-05-07 12:54:10] local.NOTICE: Monitoring start {"correlation_id":"7142250a-b897-4620-8ff7-fd9b3a1f3802","trace_id":"597def1e-ca38-4cc4-8890-fdcd5baff948"}
[2026-05-07 12:54:10] local.NOTICE: Monitoring end {"correlation_id":"7142250a-b897-4620-8ff7-fd9b3a1f3802","trace_id":"597def1e-ca38-4cc4-8890-fdcd5baff948"}
[2026-05-07 12:54:12] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"cb2ada48-0200-4eb3-a8c5-6cb8ea43ec0d","trace_id":"73937bdc-10b9-4508-9ef2-86420fe774fc"}
[2026-05-07 12:54:12] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"cb2ada48-0200-4eb3-a8c5-6cb8ea43ec0d","trace_id":"73937bdc-10b9-4508-9ef2-86420fe774fc"}
[2026-05-07 12:54:14] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"8f1d8932-2839-4256-99ab-1fd13e8381c6","trace_id":"cc090767-edc2-4a89-90c2-116f1737de7f"}
[2026-05-07 12:54:14] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"8f1d8932-2839-4256-99ab-1fd13e8381c6","trace_id":"cc090767-edc2-4a89-90c2-116f1737de7f"}
[2026-05-07 12:54:14] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"8f1d8932-2839-4256-99ab-1fd13e8381c6","trace_id":"cc090767-edc2-4a89-90c2-116f1737de7f"}
[2026-05-07 12:54:14] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"8f1d8932-2839-4256-99ab-1fd13e8381c6","trace_id":"cc090767-edc2-4a89-90c2-116f1737de7f"}
[2026-05-07 12:54:16] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:count","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"9d324c6d-5b36-46ee-89c6-f95f86bf3f39","trace_id":"860cdff0-9356-4e94-84cc-e011a74ba56c"}
[2026-05-07 12:54:16] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:52:00, 2026-05-07 12:54:00] {"correlation_id":"9d324c6d-5b36-46ee-89c6-f95f86bf3f39","trace_id":"860cdff0-9356-4e94-84cc-e011a74ba56c"}
[2026-05-07 12:54:16] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:52:00, 2026-05-07 12:54:00] {"correlation_id":"9d324c6d-5b36-46ee-89c6-f95f86bf3f39","trace_id":"860cdff0-9356-4e94-84cc-e011a74ba56c"}
[2026-05-07 12:54:16] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:count","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"9d324c6d-5b36-46ee-89c6-f95f86bf3f39","trace_id":"860cdff0-9356-4e94-84cc-e011a74ba56c"}
[2026-05-07 12:54:18] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"activity:aircall:check-and-renew","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"c2009a88-eea6-4954-8642-ef5d9cb56b42","trace_id":"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab"}
[2026-05-07 12:54:18] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1496,"provider":"aircall"} {"correlation_id":"c2009a88-eea6-4954-8642-ef5d9cb56b42","trace_id":"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab"}
[2026-05-07 12:54:18] local.INFO: [SocialAccountService] Token retrieved {"socialAccountId":1496,"provider":"aircall"} {"correlation_id":"c2009a88-eea6-4954-8642-ef5d9cb56b42","trace_id":"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab"}
[2026-05-07 12:54:18] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"c2009a88-eea6-4954-8642-ef5d9cb56b42","trace_id":"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab"}
[2026-05-07 12:54:19] local.ERROR: [Aircall] Re-activating webhooks failed {"team_id":1,"reason":"{\"message\":\"Forbidden\"}"} {"correlation_id":"c2009a88-eea6-4954-8642-ef5d9cb56b42","trace_id":"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab"}
[2026-05-07 12:54:19] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"activity:aircall:check-and-renew","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"c2009a88-eea6-4954-8642-ef5d9cb56b42","trace_id":"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab"}
[2026-05-07 12:54:21] local.INFO: [RetryFailedDownloads] Starting {"options":{"from":null,"to":null,"help":false,"silent":false,"quiet":false,"verbose":false,"version":false,"ansi":null,"no-interaction":false,"env":null}} {"correlation_id":"825ef2d7-b5f8-45cd-b19d-20a179b06934","trace_id":"5825a6c8-14c9-4bec-b688-d4895cfc41cc"}
[2026-05-07 12:55:05] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"c0dc8e25-7a51-4023-be61-d0abd6d72e37","trace_id":"16b8fa3e-92b1-465e-82d4-642a2d14c7c5"}
[2026-05-07 12:55:05] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"c0dc8e25-7a51-4023-be61-d0abd6d72e37","trace_id":"16b8fa3e-92b1-465e-82d4-642a2d14c7c5"}
[2026-05-07 12:55:05] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"c0dc8e25-7a51-4023-be61-d0abd6d72e37","trace_id":"16b8fa3e-92b1-465e-82d4-642a2d14c7c5"}
[2026-05-07 12:55:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"1c65fdd1-1f79-435d-b469-add46ddafd63","trace_id":"62f2a3bb-3be7-4c76-a9dd-222bfb895fab"}
[2026-05-07 12:55:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"1c65fdd1-1f79-435d-b469-add46ddafd63","trace_id":"62f2a3bb-3be7-4c76-a9dd-222bfb895fab"}
[2026-05-07 12:55:11] local.NOTICE: Monitoring start {"correlation_id":"f115f9bc-bb59-4fc9-8c9f-8b69baba1a55","trace_id":"e75cb5c6-6dd8-4000-8d26-4418020c7cfe"}
[2026-05-07 12:55:11] local.NOTICE: Monitoring end {"correlation_id":"f115f9bc-bb59-4fc9-8c9f-8b69baba1a55","trace_id":"e75cb5c6-6dd8-4000-8d26-4418020c7cfe"}
[2026-05-07 12:55:14] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"dba5c474-4d40-44da-baf2-f8b30db9a2f5","trace_id":"adb45622-1fb0-457c-bf20-8dcceab2d62a"}
[2026-05-07 12:55:14] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"dba5c474-4d40-44da-baf2-f8b30db9a2f5","trace_id":"adb45622-1fb0-457c-bf20-8dcceab2d62a"}
[2026-05-07 12:55:16] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"22c96a8e-4424-4a1f-b349-206276eefe4c","trace_id":"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c"}
[2026-05-07 12:55:16] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"22c96a8e-4424-4a1f-b349-206276eefe4c","trace_id":"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c"}
[2026-05-07 12:55:16] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"22c96a8e-4424-4a1f-b349-206276eefe4c","trace_id":"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c"}
[2026-05-07 12:55:16] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"22c96a8e-4424-4a1f-b349-206276eefe4c","trace_id":"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c"}
[2026-05-07 12:55:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"activity:purge-stale","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"5f958e8d-1d01-4144-abd6-2513e5524ad3","trace_id":"828bc5b7-e2aa-4443-901f-38dd94bb7cc5"}
[2026-05-07 12:55:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"activity:purge-stale","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"5f958e8d-1d01-4144-abd6-2513e5524ad3","trace_id":"828bc5b7-e2aa-4443-901f-38dd94bb7cc5"}
[2026-05-07 12:55:22] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:text-relay:sync","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"6bd1c9cb-cd9a-42a9-87fe-45cb7bac687a","trace_id":"0f2f5d66-c4c9-46a5-a31b-6937663ce1ad"}
[2026-05-07 12:55:22] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:text-relay:sync","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"6bd1c9cb-cd9a-42a9-87fe-45cb7bac687a","trace_id":"0f2f5d66-c4c9-46a5-a31b-6937663ce1ad"}
[2026-05-07 12:55:24] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:pre-meeting-notification","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"c5dd8132-d7e1-4caa-84d1-0a50d02df8da","trace_id":"bc7341c5-b8e2-48ea-9670-7ec375363180"}
[2026-05-07 12:55:24] local.INFO: Running pre-meeting notification command {"correlation_id":"c5dd8132-d7e1-4caa-84d1-0a50d02df8da","trace_id":"bc7341c5-b8e2-48ea-9670-7ec375363180"}
[2026-05-07 12:55:24] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:pre-meeting-notification","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"c5dd8132-d7e1-4caa-84d1-0a50d02df8da","trace_id":"bc7341c5-b8e2-48ea-9670-7ec375363180"}
[2026-05-07 12:55:26] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:start","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0","trace_id":"efb1619f-4185-4319-9bfb-305cee0b6bfc"}
[2026-05-07 12:55:26] local.INFO: Running conference:monitor:start command for activities in (2026-05-07 12:45:00, 2026-05-07 12:50:00] {"correlation_id":"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0","trace_id":"efb1619f-4185-4319-9bfb-305cee0b6bfc"}
[2026-05-07 12:55:26] local.INFO: [conference:monitor:start] No activities found in (2026-05-07 12:45:00, 2026-05-07 12:50:00] {"correlation_id":"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0","trace_id":"efb1619f-4185-4319-9bfb-305cee0b6bfc"}
[2026-05-07 12:55:26] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:start","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0","trace_id":"efb1619f-4185-4319-9bfb-305cee0b6bfc"}
[2026-05-07 12:55:28] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:end","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"3792b31a-080a-4fe4-9823-5602361325ba","trace_id":"41a2fde1-48f6-4667-84b7-a2f93e9ad2da"}
[2026-05-07 12:55:28] local.INFO: conference:monitor:end:Jiminny\Console\Commands\Activities\MonitorMeetingEndCommand::logActivitiesEnded {"from":"12:50","to":"12:55"} {"correlation_id":"3792b31a-080a-4fe4-9823-5602361325ba","trace_id":"41a2fde1-48f6-4667-84b7-a2f93e9ad2da"}
[2026-05-07 12:55:28] local.INFO: conference:monitor:end:Jiminny\Console\Commands\Activities\MonitorMeetingEndCommand::logActivitiesWithUnfinishedSession {"from":"02:45","to":"02:50"} {"correlation_id":"3792b31a-080a-4fe4-9823-5602361325ba","trace_id":"41a2fde1-48f6-4667-84b7-a2f93e9ad2da"}
[2026-05-07 12:55:28] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:end","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"3792b31a-080a-4fe4-9823-5602361325ba","trace_id":"41a2fde1-48f6-4667-84b7-a2f93e9ad2da"}
[2026-05-07 12:55:30] local.NOTICE: Repairing HubSpot tokens start {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:30] local.INFO: Trying to refresh HubSpot token {"account_id":59,"updated_at":"2025-10-03 09:32:05"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:30] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:30] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":59,"provider":"hubspot","refreshToken":"97b78f6e2cc49965c00c2492b602b02708b1392551e6b3f113fbaa48992af90b","state":"full-refresh"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.ERROR: Failed to refresh HubSpot token {"account_id":59,"updated_at":"2025-10-03 09:32:05","reason":"missing or invalid refresh token","previous":""} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.INFO: Trying to refresh HubSpot token {"account_id":306,"updated_at":"2023-11-27 09:30:03"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":306,"provider":"hubspot","refreshToken":"6fa6aa8cc641d131231acc3470f5c03cb3b07b2e580fb18f8acb3b1dbb72549b","state":"full-refresh"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.ERROR: Failed to refresh HubSpot token {"account_id":306,"updated_at":"2023-11-27 09:30:03","reason":"missing or invalid refresh token","previous":""} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.INFO: Trying to refresh HubSpot token {"account_id":1372,"updated_at":"2025-10-02 14:47:06"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1372,"provider":"hubspot","refreshToken":"9aa73948c761da29dce46c177cf9aee1fde483a44169ca38723f9f0597d7a8c4","state":"full-refresh"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:32] local.ERROR: Failed to refresh HubSpot token {"account_id":1372,"updated_at":"2025-10-02 14:47:06","reason":"missing or invalid refresh token","previous":""} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:32] local.NOTICE: Repairing HubSpot tokens end {"total":3,"fixed":0,"failed":3} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:40] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"crm:bullhorn:ping","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"5e676ae4-5d63-49d4-9001-559088adf06b","trace_id":"2fcce073-dd68-4c99-b7c4-b9e03c20b8e4"}
[2026-05-07 12:55:40] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:pre-meeting-reminder","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"1f830896-8142-41d1-bfc9-4cbb9179ffda","trace_id":"e348a096-7f37-4308-a6d8-66131e8be901"}
[2026-05-07 12:55:40] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"crm:bullhorn:ping","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"5e676ae4-5d63-49d4-9001-559088adf06b","trace_id":"2fcce073-dd68-4c99-b7c4-b9e03c20b8e4"}
[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Command] Starting polling service {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Service starting {"memory_limit":"256M","max_execution_time":"0","initial_memory_mb":62.0} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Acquired polling lock {"expires_at":"2026-05-07T12:57:40.609671Z"} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:40] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:40] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:pre-meeting-reminder","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"1f830896-8142-41d1-bfc9-4cbb9179ffda","trace_id":"e348a096-7f37-4308-a6d8-66131e8be901"}
[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:45] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:45] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:46] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:51] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:51] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:51] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:06] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:06] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:06] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"2d8b30b4-87aa-480f-9b9e-5a9c709b742a","trace_id":"25b7be6c-1faf-430b-a724-a4ff28773a31"}
[2026-05-07 12:56:08] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"2d8b30b4-87aa-480f-9b9e-5a9c709b742a","trace_id":"25b7be6c-1faf-430b-a724-a4ff28773a31"}
[2026-05-07 12:56:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"2d8b30b4-87aa-480f-9b9e-5a9c709b742a","trace_id":"25b7be6c-1faf-430b-a724-a4ff28773a31"}
[2026-05-07 12:56:10] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"efd336d7-db4d-459e-b6e7-bf73454e955e","trace_id":"0a82c3d5-0417-48c8-b88f-70ec33e2326a"}
[2026-05-07 12:56:10] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"efd336d7-db4d-459e-b6e7-bf73454e955e","trace_id":"0a82c3d5-0417-48c8-b88f-70ec33e2326a"}
[2026-05-07 12:56:12] local.NOTICE: Monitoring start {"correlation_id":"68481576-8ca6-4ee5-821b-07374702971d","trace_id":"c73eac09-5d20-425f-9c22-bd6c65fc60c9"}
[2026-05-07 12:56:12] local.NOTICE: Monitoring end {"correlation_id":"68481576-8ca6-4ee5-821b-07374702971d","trace_id":"c73eac09-5d20-425f-9c22-bd6c65fc60c9"}
[2026-05-07 12:56:17] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"bd0cdc75-b5c2-4dbb-bc44-e36c96813d24","trace_id":"f688cd98-c171-4e30-8c72-afc14f040861"}
[2026-05-07 12:56:17] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"bd0cdc75-b5c2-4dbb-bc44-e36c96813d24","trace_id":"f688cd98-c171-4e30-8c72-afc14f040861"}
[2026-05-07 12:56:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"f01636a9-4059-4ab0-9ad2-b078d42cedbd","trace_id":"fea938d8-aedc-40ec-b8c2-2f487e1ac808"}
[2026-05-07 12:56:20] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"f01636a9-4059-4ab0-9ad2-b078d42cedbd","trace_id":"fea938d8-aedc-40ec-b8c2-2f487e1ac808"}
[2026-05-07 12:56:20] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"f01636a9-4059-4ab0-9ad2-b078d42cedbd","trace_id":"fea938d8-aedc-40ec-b8c2-2f487e1ac808"}
[2026-05-07 12:56:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"f01636a9-4059-4ab0-9ad2-b078d42cedbd","trace_id":"fea938d8-aedc-40ec-b8c2-2f487e1ac808"}
[2026-05-07 12:56:23] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:count","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"d4558901-264d-4238-8589-62a137bac1fd","trace_id":"38e6b5dc-ebd6-46a7-8224-7374d4e58630"}
[2026-05-07 12:56:23] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:54:00, 2026-05-07 12:56:00] {"correlation_id":"d4558901-264d-4238-8589-62a137bac1fd","trace_id":"38e6b5dc-ebd6-46a7-8224-7374d4e58630"}
[2026-05-07 12:56:23] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:54:00, 2026-05-07 12:56:00] {"correlation_id":"d4558901-264d-4238-8589-62a137bac1fd","trace_id":"38e6b5dc-ebd6-46a7-8224-7374d4e58630"}
[2026-05-07 12:56:23] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:count","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"d4558901-264d-4238-8589-62a137bac1fd","trace_id":"38e6b5dc-ebd6-46a7-8224-7374d4e58630"}
[2026-05-07 12:56:24] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"crm:sync-hubspot-objects","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"7bfaf9be-0ca1-4170-a0c9-83e0ed61881c","trace_id":"ba7f9eee-8dcb-4c94-acb0-18f9363757ad"}
[2026-05-07 12:56:24] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"crm:sync-hubspot-objects","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"7bfaf9be-0ca1-4170-a0c9-83e0ed61881c","trace_id":"ba7f9eee-8dcb-4c94-acb0-18f9363757ad"}
[2026-05-07 12:56:26] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"activity:notify-not-logged","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"2541e0fa-1117-4863-9523-d723b5821a24","trace_id":"d9600320-5133-4938-bdd1-2256dfdf8db4"}
[2026-05-07 12:56:26] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"activity:notify-not-logged","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"2541e0fa-1117-4863-9523-d723b5821a24","trace_id":"d9600320-5133-4938-bdd1-2256dfdf8db4"}
[2026-05-07 12:56:35] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:sync","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"e444f776-37db-4c6d-b30e-20b01a089de7","trace_id":"1168869e-e07c-4702-a046-42fc95a91f6d"}
[2026-05-07 12:56:36] local.INFO: [EmailSchedule] STARTING Inbox Sync {"host":"docker_lamp_1"} {"correlation_id":"e444f776-37db-4c6d-b30e-20b01a089de7","trace_id":"1168869e-e07c-4702-a046-42fc95a91f6d"}
[2026-05-07 12:56:36] local.INFO: [EmailSchedule] FINISHED Inbox Sync {"host":"docker_lamp_1","events":2} {"correlation_id":"e444f776-37db-4c6d-b30e-20b01a089de7","trace_id":"1168869e-e07c-4702-a046-42fc95a91f6d"}
[2026-05-07 12:56:36] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:sync","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"e444f776-37db-4c6d-b30e-20b01a089de7","trace_id":"1168869e-e07c-4702-a046-42fc95a91f6d"}
[2026-05-07 12:56:36] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:36] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:36] local.INFO: [HubSpot Journal Auth] Requesting new client credentials token {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:37] local.INFO: [HubSpot Journal Auth] Successfully obtained new access token {"expires_in":1800,"cached_for":1500} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:37] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:37] local.WARNING: [HubSpot Journal Polling] Maximum empty results reached, stopping {"empty_results":5,"max_empty_results":5} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:37] local.WARNING: [HubSpot Journal Polling] Maximum empty results reached, stopping {"empty_results":5,"max_empty_results":5} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:37] local.INFO: [HubSpot Journal Polling] Service ending {"runtime_seconds":57,"total_cycles":5,"files_downloaded":0,"empty_files":0,"other_portal_skipped":0,"total_events":0,"events_per_file":0,"avg_api_ms":238.3,"avg_download_ms":0.0,"avg_transform_ms":0.0,"avg_process_ms":0.0,"peak_memory_mb":99.73} {"correlation_id"...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
4203
|
NULL
|
0
|
2026-05-07T13:16:16.209252+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-07/1778 /Users/lukas/.screenpipe/data/data/2026-05-07/1778159776209_m1.jpg...
|
PhpStorm
|
faVsco.js – Client.php
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
master, menu
Start Listen Project: faVsco.js, menu
master, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Show Replace Field
Search History
retry_error
New Line
Match Case
Words
Regex
Replace History
Replace
New Line
Preserve case
0 results
Previous Occurrence
Next Occurrence
Filter Search Results
Open in Window, Multiple Cursors
Click to highlight
Close
Sync Changes
Hide This Notification
Code changed:
Hide
699
Previous Highlighted Error
Next Highlighted Error
[2026-05-07 12:52:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"fa8a3008-d298-4682-bbbc-fdc77520e0d7","trace_id":"7cfb2afb-9fc4-4a77-81be-65dce93c7d80"}
[2026-05-07 12:52:08] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"fa8a3008-d298-4682-bbbc-fdc77520e0d7","trace_id":"7cfb2afb-9fc4-4a77-81be-65dce93c7d80"}
[2026-05-07 12:52:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"fa8a3008-d298-4682-bbbc-fdc77520e0d7","trace_id":"7cfb2afb-9fc4-4a77-81be-65dce93c7d80"}
[2026-05-07 12:52:12] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"932ced9d-9804-48ed-976a-1f8bf5e75707","trace_id":"21bf320c-58f3-4082-831d-9f07f6c6a669"}
[2026-05-07 12:52:12] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"932ced9d-9804-48ed-976a-1f8bf5e75707","trace_id":"21bf320c-58f3-4082-831d-9f07f6c6a669"}
[2026-05-07 12:52:17] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1499,"provider":"hubspot"} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:17] local.INFO: [SocialAccountService] Token retrieved {"socialAccountId":1499,"provider":"hubspot"} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:17] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:17] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {"crm_provider":"hubspot","crm_owner":148,"team_id":2} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:17] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.55,"average_seconds_per_request":0.55} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:18] local.NOTICE: Monitoring start {"correlation_id":"ae3ec78f-432c-4e22-b73b-0413af73d9f3","trace_id":"c2feb517-0f2b-4ad9-bce5-4d57476a164b"}
[2026-05-07 12:52:18] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.51,"average_seconds_per_request":0.51} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:18] local.NOTICE: Monitoring end {"correlation_id":"ae3ec78f-432c-4e22-b73b-0413af73d9f3","trace_id":"c2feb517-0f2b-4ad9-bce5-4d57476a164b"}
[2026-05-07 12:52:18] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.48,"average_seconds_per_request":0.48} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:19] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.49,"average_seconds_per_request":0.49} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:19] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.49,"average_seconds_per_request":0.49} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"2bf2f73f-007c-4909-925e-f1749fbf87b3","trace_id":"8429123c-d92c-48d9-a154-29bc0aa0e2a1"}
[2026-05-07 12:52:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"2bf2f73f-007c-4909-925e-f1749fbf87b3","trace_id":"8429123c-d92c-48d9-a154-29bc0aa0e2a1"}
[2026-05-07 12:52:20] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.48,"average_seconds_per_request":0.48} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:20] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.62,"average_seconds_per_request":0.62} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:21] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.78,"average_seconds_per_request":0.78} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:22] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":1.21,"average_seconds_per_request":1.21} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:23] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.53,"average_seconds_per_request":0.53} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:25] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8","trace_id":"64ccac6b-34f7-45ed-a8ac-b63adbb19107"}
[2026-05-07 12:52:25] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8","trace_id":"64ccac6b-34f7-45ed-a8ac-b63adbb19107"}
[2026-05-07 12:52:26] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8","trace_id":"64ccac6b-34f7-45ed-a8ac-b63adbb19107"}
[2026-05-07 12:52:26] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8","trace_id":"64ccac6b-34f7-45ed-a8ac-b63adbb19107"}
[2026-05-07 12:52:28] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:count","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"6e1a36d0-a87a-455f-88b9-04f16718ea33","trace_id":"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c"}
[2026-05-07 12:52:28] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:50:00, 2026-05-07 12:52:00] {"correlation_id":"6e1a36d0-a87a-455f-88b9-04f16718ea33","trace_id":"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c"}
[2026-05-07 12:52:28] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:50:00, 2026-05-07 12:52:00] {"correlation_id":"6e1a36d0-a87a-455f-88b9-04f16718ea33","trace_id":"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c"}
[2026-05-07 12:52:28] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:count","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"6e1a36d0-a87a-455f-88b9-04f16718ea33","trace_id":"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c"}
[2026-05-07 12:52:31] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:create","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"80549428-beea-4a6c-97d3-818ca0f059f3","trace_id":"55ddd59b-073b-4331-8cdb-baa869dcff70"}
[2026-05-07 12:52:31] local.INFO: [EmailSchedule] STARTING batch create {"host":"docker_lamp_1"} {"correlation_id":"80549428-beea-4a6c-97d3-818ca0f059f3","trace_id":"55ddd59b-073b-4331-8cdb-baa869dcff70"}
[2026-05-07 12:52:31] local.INFO: [EmailSchedule] FINISHED batch create {"host":"docker_lamp_1"} {"correlation_id":"80549428-beea-4a6c-97d3-818ca0f059f3","trace_id":"55ddd59b-073b-4331-8cdb-baa869dcff70"}
[2026-05-07 12:52:31] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:create","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"80549428-beea-4a6c-97d3-818ca0f059f3","trace_id":"55ddd59b-073b-4331-8cdb-baa869dcff70"}
[2026-05-07 12:52:32] local.INFO: [Jiminny\Jobs\Mailbox\CreateBatches] processed 2 inboxes and created 0 batches {"userId":null,"batchSize":30,"maxBatches":1000} {"correlation_id":"92242bd6-7014-4487-a50b-1570e1a88e7a","trace_id":"55ddd59b-073b-4331-8cdb-baa869dcff70"}
[2026-05-07 12:52:39] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"activity:sync","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"d467eace-3254-4ecc-8d8e-a94688d6d3ad","trace_id":"5105ca8f-3c0d-4798-b748-5a7d6fbd7531"}
[2026-05-07 12:52:39] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"activity:sync","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"d467eace-3254-4ecc-8d8e-a94688d6d3ad","trace_id":"5105ca8f-3c0d-4798-b748-5a7d6fbd7531"}
[2026-05-07 12:53:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"04363b29-2f82-470a-89d0-c5ce4f4779d7","trace_id":"3c76a1f1-3348-4e2b-897c-4a216ca95147"}
[2026-05-07 12:53:08] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"04363b29-2f82-470a-89d0-c5ce4f4779d7","trace_id":"3c76a1f1-3348-4e2b-897c-4a216ca95147"}
[2026-05-07 12:53:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"04363b29-2f82-470a-89d0-c5ce4f4779d7","trace_id":"3c76a1f1-3348-4e2b-897c-4a216ca95147"}
[2026-05-07 12:53:11] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"5ebbecd0-866c-443f-965f-b6ac03735379","trace_id":"e0a724a5-bb4b-4fe6-9fe9-36ea1c3f0326"}
[2026-05-07 12:53:11] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"5ebbecd0-866c-443f-965f-b6ac03735379","trace_id":"e0a724a5-bb4b-4fe6-9fe9-36ea1c3f0326"}
[2026-05-07 12:53:18] local.NOTICE: Monitoring start {"correlation_id":"f39f0d3c-a292-41cb-8834-45dae1f8cf47","trace_id":"b6e7e2a7-85af-401d-afc6-bec2bdab34d7"}
[2026-05-07 12:53:18] local.NOTICE: Monitoring end {"correlation_id":"f39f0d3c-a292-41cb-8834-45dae1f8cf47","trace_id":"b6e7e2a7-85af-401d-afc6-bec2bdab34d7"}
[2026-05-07 12:53:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"419bb747-2669-496f-944b-1073496cc271","trace_id":"4cb913a4-ef75-422b-80eb-fbfb988521ed"}
[2026-05-07 12:53:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"419bb747-2669-496f-944b-1073496cc271","trace_id":"4cb913a4-ef75-422b-80eb-fbfb988521ed"}
[2026-05-07 12:53:22] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"f4805c97-9344-4111-8be2-2b1efeae07bb","trace_id":"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22"}
[2026-05-07 12:53:22] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"f4805c97-9344-4111-8be2-2b1efeae07bb","trace_id":"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22"}
[2026-05-07 12:53:22] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"f4805c97-9344-4111-8be2-2b1efeae07bb","trace_id":"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22"}
[2026-05-07 12:53:22] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"f4805c97-9344-4111-8be2-2b1efeae07bb","trace_id":"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22"}
[2026-05-07 12:53:25] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:retry-failed","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"2eadb06b-2c2e-4a7f-8920-77bd30d6cd7f","trace_id":"75f27a23-2021-41a5-9e5f-4b1cb4f143a6"}
[2026-05-07 12:53:25] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:retry-failed","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"2eadb06b-2c2e-4a7f-8920-77bd30d6cd7f","trace_id":"75f27a23-2021-41a5-9e5f-4b1cb4f143a6"}
[2026-05-07 12:54:06] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"ad151521-f676-4351-a70b-f44dc0b94990","trace_id":"17e39c4c-85cb-49a4-815e-b7315a8c2249"}
[2026-05-07 12:54:06] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"ad151521-f676-4351-a70b-f44dc0b94990","trace_id":"17e39c4c-85cb-49a4-815e-b7315a8c2249"}
[2026-05-07 12:54:06] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"ad151521-f676-4351-a70b-f44dc0b94990","trace_id":"17e39c4c-85cb-49a4-815e-b7315a8c2249"}
[2026-05-07 12:54:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"ed0583cf-03c6-4696-b859-876c8efa4473","trace_id":"3f9e0a3c-2178-4885-95eb-8618b8cfc042"}
[2026-05-07 12:54:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"ed0583cf-03c6-4696-b859-876c8efa4473","trace_id":"3f9e0a3c-2178-4885-95eb-8618b8cfc042"}
[2026-05-07 12:54:10] local.NOTICE: Monitoring start {"correlation_id":"7142250a-b897-4620-8ff7-fd9b3a1f3802","trace_id":"597def1e-ca38-4cc4-8890-fdcd5baff948"}
[2026-05-07 12:54:10] local.NOTICE: Monitoring end {"correlation_id":"7142250a-b897-4620-8ff7-fd9b3a1f3802","trace_id":"597def1e-ca38-4cc4-8890-fdcd5baff948"}
[2026-05-07 12:54:12] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"cb2ada48-0200-4eb3-a8c5-6cb8ea43ec0d","trace_id":"73937bdc-10b9-4508-9ef2-86420fe774fc"}
[2026-05-07 12:54:12] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"cb2ada48-0200-4eb3-a8c5-6cb8ea43ec0d","trace_id":"73937bdc-10b9-4508-9ef2-86420fe774fc"}
[2026-05-07 12:54:14] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"8f1d8932-2839-4256-99ab-1fd13e8381c6","trace_id":"cc090767-edc2-4a89-90c2-116f1737de7f"}
[2026-05-07 12:54:14] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"8f1d8932-2839-4256-99ab-1fd13e8381c6","trace_id":"cc090767-edc2-4a89-90c2-116f1737de7f"}
[2026-05-07 12:54:14] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"8f1d8932-2839-4256-99ab-1fd13e8381c6","trace_id":"cc090767-edc2-4a89-90c2-116f1737de7f"}
[2026-05-07 12:54:14] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"8f1d8932-2839-4256-99ab-1fd13e8381c6","trace_id":"cc090767-edc2-4a89-90c2-116f1737de7f"}
[2026-05-07 12:54:16] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:count","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"9d324c6d-5b36-46ee-89c6-f95f86bf3f39","trace_id":"860cdff0-9356-4e94-84cc-e011a74ba56c"}
[2026-05-07 12:54:16] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:52:00, 2026-05-07 12:54:00] {"correlation_id":"9d324c6d-5b36-46ee-89c6-f95f86bf3f39","trace_id":"860cdff0-9356-4e94-84cc-e011a74ba56c"}
[2026-05-07 12:54:16] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:52:00, 2026-05-07 12:54:00] {"correlation_id":"9d324c6d-5b36-46ee-89c6-f95f86bf3f39","trace_id":"860cdff0-9356-4e94-84cc-e011a74ba56c"}
[2026-05-07 12:54:16] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:count","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"9d324c6d-5b36-46ee-89c6-f95f86bf3f39","trace_id":"860cdff0-9356-4e94-84cc-e011a74ba56c"}
[2026-05-07 12:54:18] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"activity:aircall:check-and-renew","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"c2009a88-eea6-4954-8642-ef5d9cb56b42","trace_id":"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab"}
[2026-05-07 12:54:18] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1496,"provider":"aircall"} {"correlation_id":"c2009a88-eea6-4954-8642-ef5d9cb56b42","trace_id":"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab"}
[2026-05-07 12:54:18] local.INFO: [SocialAccountService] Token retrieved {"socialAccountId":1496,"provider":"aircall"} {"correlation_id":"c2009a88-eea6-4954-8642-ef5d9cb56b42","trace_id":"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab"}
[2026-05-07 12:54:18] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"c2009a88-eea6-4954-8642-ef5d9cb56b42","trace_id":"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab"}
[2026-05-07 12:54:19] local.ERROR: [Aircall] Re-activating webhooks failed {"team_id":1,"reason":"{\"message\":\"Forbidden\"}"} {"correlation_id":"c2009a88-eea6-4954-8642-ef5d9cb56b42","trace_id":"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab"}
[2026-05-07 12:54:19] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"activity:aircall:check-and-renew","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"c2009a88-eea6-4954-8642-ef5d9cb56b42","trace_id":"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab"}
[2026-05-07 12:54:21] local.INFO: [RetryFailedDownloads] Starting {"options":{"from":null,"to":null,"help":false,"silent":false,"quiet":false,"verbose":false,"version":false,"ansi":null,"no-interaction":false,"env":null}} {"correlation_id":"825ef2d7-b5f8-45cd-b19d-20a179b06934","trace_id":"5825a6c8-14c9-4bec-b688-d4895cfc41cc"}
[2026-05-07 12:55:05] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"c0dc8e25-7a51-4023-be61-d0abd6d72e37","trace_id":"16b8fa3e-92b1-465e-82d4-642a2d14c7c5"}
[2026-05-07 12:55:05] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"c0dc8e25-7a51-4023-be61-d0abd6d72e37","trace_id":"16b8fa3e-92b1-465e-82d4-642a2d14c7c5"}
[2026-05-07 12:55:05] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"c0dc8e25-7a51-4023-be61-d0abd6d72e37","trace_id":"16b8fa3e-92b1-465e-82d4-642a2d14c7c5"}
[2026-05-07 12:55:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"1c65fdd1-1f79-435d-b469-add46ddafd63","trace_id":"62f2a3bb-3be7-4c76-a9dd-222bfb895fab"}
[2026-05-07 12:55:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"1c65fdd1-1f79-435d-b469-add46ddafd63","trace_id":"62f2a3bb-3be7-4c76-a9dd-222bfb895fab"}
[2026-05-07 12:55:11] local.NOTICE: Monitoring start {"correlation_id":"f115f9bc-bb59-4fc9-8c9f-8b69baba1a55","trace_id":"e75cb5c6-6dd8-4000-8d26-4418020c7cfe"}
[2026-05-07 12:55:11] local.NOTICE: Monitoring end {"correlation_id":"f115f9bc-bb59-4fc9-8c9f-8b69baba1a55","trace_id":"e75cb5c6-6dd8-4000-8d26-4418020c7cfe"}
[2026-05-07 12:55:14] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"dba5c474-4d40-44da-baf2-f8b30db9a2f5","trace_id":"adb45622-1fb0-457c-bf20-8dcceab2d62a"}
[2026-05-07 12:55:14] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"dba5c474-4d40-44da-baf2-f8b30db9a2f5","trace_id":"adb45622-1fb0-457c-bf20-8dcceab2d62a"}
[2026-05-07 12:55:16] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"22c96a8e-4424-4a1f-b349-206276eefe4c","trace_id":"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c"}
[2026-05-07 12:55:16] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"22c96a8e-4424-4a1f-b349-206276eefe4c","trace_id":"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c"}
[2026-05-07 12:55:16] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"22c96a8e-4424-4a1f-b349-206276eefe4c","trace_id":"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c"}
[2026-05-07 12:55:16] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"22c96a8e-4424-4a1f-b349-206276eefe4c","trace_id":"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c"}
[2026-05-07 12:55:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"activity:purge-stale","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"5f958e8d-1d01-4144-abd6-2513e5524ad3","trace_id":"828bc5b7-e2aa-4443-901f-38dd94bb7cc5"}
[2026-05-07 12:55:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"activity:purge-stale","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"5f958e8d-1d01-4144-abd6-2513e5524ad3","trace_id":"828bc5b7-e2aa-4443-901f-38dd94bb7cc5"}
[2026-05-07 12:55:22] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:text-relay:sync","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"6bd1c9cb-cd9a-42a9-87fe-45cb7bac687a","trace_id":"0f2f5d66-c4c9-46a5-a31b-6937663ce1ad"}
[2026-05-07 12:55:22] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:text-relay:sync","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"6bd1c9cb-cd9a-42a9-87fe-45cb7bac687a","trace_id":"0f2f5d66-c4c9-46a5-a31b-6937663ce1ad"}
[2026-05-07 12:55:24] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:pre-meeting-notification","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"c5dd8132-d7e1-4caa-84d1-0a50d02df8da","trace_id":"bc7341c5-b8e2-48ea-9670-7ec375363180"}
[2026-05-07 12:55:24] local.INFO: Running pre-meeting notification command {"correlation_id":"c5dd8132-d7e1-4caa-84d1-0a50d02df8da","trace_id":"bc7341c5-b8e2-48ea-9670-7ec375363180"}
[2026-05-07 12:55:24] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:pre-meeting-notification","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"c5dd8132-d7e1-4caa-84d1-0a50d02df8da","trace_id":"bc7341c5-b8e2-48ea-9670-7ec375363180"}
[2026-05-07 12:55:26] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:start","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0","trace_id":"efb1619f-4185-4319-9bfb-305cee0b6bfc"}
[2026-05-07 12:55:26] local.INFO: Running conference:monitor:start command for activities in (2026-05-07 12:45:00, 2026-05-07 12:50:00] {"correlation_id":"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0","trace_id":"efb1619f-4185-4319-9bfb-305cee0b6bfc"}
[2026-05-07 12:55:26] local.INFO: [conference:monitor:start] No activities found in (2026-05-07 12:45:00, 2026-05-07 12:50:00] {"correlation_id":"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0","trace_id":"efb1619f-4185-4319-9bfb-305cee0b6bfc"}
[2026-05-07 12:55:26] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:start","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0","trace_id":"efb1619f-4185-4319-9bfb-305cee0b6bfc"}
[2026-05-07 12:55:28] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:end","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"3792b31a-080a-4fe4-9823-5602361325ba","trace_id":"41a2fde1-48f6-4667-84b7-a2f93e9ad2da"}
[2026-05-07 12:55:28] local.INFO: conference:monitor:end:Jiminny\Console\Commands\Activities\MonitorMeetingEndCommand::logActivitiesEnded {"from":"12:50","to":"12:55"} {"correlation_id":"3792b31a-080a-4fe4-9823-5602361325ba","trace_id":"41a2fde1-48f6-4667-84b7-a2f93e9ad2da"}
[2026-05-07 12:55:28] local.INFO: conference:monitor:end:Jiminny\Console\Commands\Activities\MonitorMeetingEndCommand::logActivitiesWithUnfinishedSession {"from":"02:45","to":"02:50"} {"correlation_id":"3792b31a-080a-4fe4-9823-5602361325ba","trace_id":"41a2fde1-48f6-4667-84b7-a2f93e9ad2da"}
[2026-05-07 12:55:28] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:end","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"3792b31a-080a-4fe4-9823-5602361325ba","trace_id":"41a2fde1-48f6-4667-84b7-a2f93e9ad2da"}
[2026-05-07 12:55:30] local.NOTICE: Repairing HubSpot tokens start {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:30] local.INFO: Trying to refresh HubSpot token {"account_id":59,"updated_at":"2025-10-03 09:32:05"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:30] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:30] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":59,"provider":"hubspot","refreshToken":"97b78f6e2cc49965c00c2492b602b02708b1392551e6b3f113fbaa48992af90b","state":"full-refresh"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.ERROR: Failed to refresh HubSpot token {"account_id":59,"updated_at":"2025-10-03 09:32:05","reason":"missing or invalid refresh token","previous":""} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.INFO: Trying to refresh HubSpot token {"account_id":306,"updated_at":"2023-11-27 09:30:03"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":306,"provider":"hubspot","refreshToken":"6fa6aa8cc641d131231acc3470f5c03cb3b07b2e580fb18f8acb3b1dbb72549b","state":"full-refresh"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.ERROR: Failed to refresh HubSpot token {"account_id":306,"updated_at":"2023-11-27 09:30:03","reason":"missing or invalid refresh token","previous":""} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.INFO: Trying to refresh HubSpot token {"account_id":1372,"updated_at":"2025-10-02 14:47:06"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1372,"provider":"hubspot","refreshToken":"9aa73948c761da29dce46c177cf9aee1fde483a44169ca38723f9f0597d7a8c4","state":"full-refresh"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:32] local.ERROR: Failed to refresh HubSpot token {"account_id":1372,"updated_at":"2025-10-02 14:47:06","reason":"missing or invalid refresh token","previous":""} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:32] local.NOTICE: Repairing HubSpot tokens end {"total":3,"fixed":0,"failed":3} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:40] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"crm:bullhorn:ping","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"5e676ae4-5d63-49d4-9001-559088adf06b","trace_id":"2fcce073-dd68-4c99-b7c4-b9e03c20b8e4"}
[2026-05-07 12:55:40] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:pre-meeting-reminder","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"1f830896-8142-41d1-bfc9-4cbb9179ffda","trace_id":"e348a096-7f37-4308-a6d8-66131e8be901"}
[2026-05-07 12:55:40] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"crm:bullhorn:ping","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"5e676ae4-5d63-49d4-9001-559088adf06b","trace_id":"2fcce073-dd68-4c99-b7c4-b9e03c20b8e4"}
[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Command] Starting polling service {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Service starting {"memory_limit":"256M","max_execution_time":"0","initial_memory_mb":62.0} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Acquired polling lock {"expires_at":"2026-05-07T12:57:40.609671Z"} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:40] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:40] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:pre-meeting-reminder","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"1f830896-8142-41d1-bfc9-4cbb9179ffda","trace_id":"e348a096-7f37-4308-a6d8-66131e8be901"}
[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:45] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:45] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:46] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:51] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:51] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:51] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:06] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:06] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:06] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"2d8b30b4-87aa-480f-9b9e-5a9c709b742a","trace_id":"25b7be6c-1faf-430b-a724-a4ff28773a31"}
[2026-05-07 12:56:08] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"2d8b30b4-87aa-480f-9b9e-5a9c709b742a","trace_id":"25b7be6c-1faf-430b-a724-a4ff28773a31"}
[2026-05-07 12:56:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"2d8b30b4-87aa-480f-9b9e-5a9c709b742a","trace_id":"25b7be6c-1faf-430b-a724-a4ff28773a31"}
[2026-05-07 12:56:10] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"efd336d7-db4d-459e-b6e7-bf73454e955e","trace_id":"0a82c3d5-0417-48c8-b88f-70ec33e2326a"}
[2026-05-07 12:56:10] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"efd336d7-db4d-459e-b6e7-bf73454e955e","trace_id":"0a82c3d5-0417-48c8-b88f-70ec33e2326a"}
[2026-05-07 12:56:12] local.NOTICE: Monitoring start {"correlation_id":"68481576-8ca6-4ee5-821b-07374702971d","trace_id":"c73eac09-5d20-425f-9c22-bd6c65fc60c9"}
[2026-05-07 12:56:12] local.NOTICE: Monitoring end {"correlation_id":"68481576-8ca6-4ee5-821b-07374702971d","trace_id":"c73eac09-5d20-425f-9c22-bd6c65fc60c9"}
[2026-05-07 12:56:17] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"bd0cdc75-b5c2-4dbb-bc44-e36c96813d24","trace_id":"f688cd98-c171-4e30-8c72-afc14f040861"}
[2026-05-07 12:56:17] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"bd0cdc75-b5c2-4dbb-bc44-e36c96813d24","trace_id":"f688cd98-c171-4e30-8c72-afc14f040861"}
[2026-05-07 12:56:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"f01636a9-4059-4ab0-9ad2-b078d42cedbd","trace_id":"fea938d8-aedc-40ec-b8c2-2f487e1ac808"}
[2026-05-07 12:56:20] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"f01636a9-4059-4ab0-9ad2-b078d42cedbd","trace_id":"fea938d8-aedc-40ec-b8c2-2f487e1ac808"}
[2026-05-07 12:56:20] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"f01636a9-4059-4ab0-9ad2-b078d42cedbd","trace_id":"fea938d8-aedc-40ec-b8c2-2f487e1ac808"}
[2026-05-07 12:56:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"f01636a9-4059-4ab0-9ad2-b078d42cedbd","trace_id":"fea938d8-aedc-40ec-b8c2-2f487e1ac808"}
[2026-05-07 12:56:23] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:count","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"d4558901-264d-4238-8589-62a137bac1fd","trace_id":"38e6b5dc-ebd6-46a7-8224-7374d4e58630"}
[2026-05-07 12:56:23] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:54:00, 2026-05-07 12:56:00] {"correlation_id":"d4558901-264d-4238-8589-62a137bac1fd","trace_id":"38e6b5dc-ebd6-46a7-8224-7374d4e58630"}
[2026-05-07 12:56:23] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:54:00, 2026-05-07 12:56:00] {"correlation_id":"d4558901-264d-4238-8589-62a137bac1fd","trace_id":"38e6b5dc-ebd6-46a7-8224-7374d4e58630"}
[2026-05-07 12:56:23] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:count","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"d4558901-264d-4238-8589-62a137bac1fd","trace_id":"38e6b5dc-ebd6-46a7-8224-7374d4e58630"}
[2026-05-07 12:56:24] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"crm:sync-hubspot-objects","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"7bfaf9be-0ca1-4170-a0c9-83e0ed61881c","trace_id":"ba7f9eee-8dcb-4c94-acb0-18f9363757ad"}
[2026-05-07 12:56:24] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"crm:sync-hubspot-objects","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"7bfaf9be-0ca1-4170-a0c9-83e0ed61881c","trace_id":"ba7f9eee-8dcb-4c94-acb0-18f9363757ad"}
[2026-05-07 12:56:26] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"activity:notify-not-logged","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"2541e0fa-1117-4863-9523-d723b5821a24","trace_id":"d9600320-5133-4938-bdd1-2256dfdf8db4"}
[2026-05-07 12:56:26] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"activity:notify-not-logged","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"2541e0fa-1117-4863-9523-d723b5821a24","trace_id":"d9600320-5133-4938-bdd1-2256dfdf8db4"}
[2026-05-07 12:56:35] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:sync","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"e444f776-37db-4c6d-b30e-20b01a089de7","trace_id":"1168869e-e07c-4702-a046-42fc95a91f6d"}
[2026-05-07 12:56:36] local.INFO: [EmailSchedule] STARTING Inbox Sync {"host":"docker_lamp_1"} {"correlation_id":"e444f776-37db-4c6d-b30e-20b01a089de7","trace_id":"1168869e-e07c-4702-a046-42fc95a91f6d"}
[2026-05-07 12:56:36] local.INFO: [EmailSchedule] FINISHED Inbox Sync {"host":"docker_lamp_1","events":2} {"correlation_id":"e444f776-37db-4c6d-b30e-20b01a089de7","trace_id":"1168869e-e07c-4702-a046-42fc95a91f6d"}
[2026-05-07 12:56:36] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:sync","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"e444f776-37db-4c6d-b30e-20b01a089de7","trace_id":"1168869e-e07c-4702-a046-42fc95a91f6d"}
[2026-05-07 12:56:36] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:36] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:36] local.INFO: [HubSpot Journal Auth] Requesting new client credentials token {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:37] local.INFO: [HubSpot Journal Auth] Successfully obtained new access token {"expires_in":1800,"cached_for":1500} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:37] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:37] local.WARNING: [HubSpot Journal Polling] Maximum empty results reached, stopping {"empty_results":5,"max_empty_results":5} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:37] local.WARNING: [HubSpot Journal Polling] Maximum empty results reached, stopping {"empty_results":5,"max_empty_results":5} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:37] local.INFO: [HubSpot Journal Polling] Service ending {"runtime_seconds":57,"total_cycles":5,"files_downloaded":0,"empty_files":0,"other_portal_skipped":0,"total_events":0,"events_per_file":0,"avg_api_ms":238.3,"avg_download_ms":0.0,"avg_transform_ms":0.0,"avg_process_ms":0.0,"peak_memory_mb":99.73} {"correlation_id"...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"on_screen":true,"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"master, menu","depth":5,"on_screen":true,"help_text":"Git Branch: master<br/>Some incoming commits are not fetched<br/>","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Start Listening for PHP Debug Connections","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"AskJiminnyReportActivityServiceTest","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'AskJiminnyReportActivityServiceTest'","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'AskJiminnyReportActivityServiceTest'","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More Actions","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JetBrains AI","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Search Everywhere","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"IDE and Project Settings","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Show Replace Field","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Search History","depth":3,"on_screen":true,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"retry_error","depth":4,"on_screen":true,"value":"retry_error","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"New Line","depth":3,"on_screen":true,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Match Case","depth":3,"on_screen":true,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Words","depth":3,"on_screen":true,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Regex","depth":3,"on_screen":true,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Replace History","depth":3,"bounds":{"left":0.0,"top":0.0,"width":0.015277778,"height":0.024444444},"on_screen":false,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"Replace","depth":4,"on_screen":false,"role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"New Line","depth":3,"bounds":{"left":0.0,"top":0.0,"width":0.015277778,"height":0.024444444},"on_screen":false,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Preserve case","depth":3,"bounds":{"left":0.0,"top":0.0,"width":0.015277778,"height":0.024444444},"on_screen":false,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"0 results","depth":4,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Previous Occurrence","depth":4,"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Occurrence","depth":4,"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Filter Search Results","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Open in Window, Multiple Cursors","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Click to highlight","depth":4,"on_screen":false,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.088194445,"height":0.027777778},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"699","depth":4,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Highlighted Error","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"[2026-05-07 12:52:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"fa8a3008-d298-4682-bbbc-fdc77520e0d7\",\"trace_id\":\"7cfb2afb-9fc4-4a77-81be-65dce93c7d80\"}\n[2026-05-07 12:52:08] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"fa8a3008-d298-4682-bbbc-fdc77520e0d7\",\"trace_id\":\"7cfb2afb-9fc4-4a77-81be-65dce93c7d80\"}\n[2026-05-07 12:52:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"fa8a3008-d298-4682-bbbc-fdc77520e0d7\",\"trace_id\":\"7cfb2afb-9fc4-4a77-81be-65dce93c7d80\"}\n[2026-05-07 12:52:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"932ced9d-9804-48ed-976a-1f8bf5e75707\",\"trace_id\":\"21bf320c-58f3-4082-831d-9f07f6c6a669\"}\n[2026-05-07 12:52:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"932ced9d-9804-48ed-976a-1f8bf5e75707\",\"trace_id\":\"21bf320c-58f3-4082-831d-9f07f6c6a669\"}\n[2026-05-07 12:52:17] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:17] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:17] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:17] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":148,\"team_id\":2} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:17] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.55,\"average_seconds_per_request\":0.55} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:18] local.NOTICE: Monitoring start {\"correlation_id\":\"ae3ec78f-432c-4e22-b73b-0413af73d9f3\",\"trace_id\":\"c2feb517-0f2b-4ad9-bce5-4d57476a164b\"}\n[2026-05-07 12:52:18] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.51,\"average_seconds_per_request\":0.51} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:18] local.NOTICE: Monitoring end {\"correlation_id\":\"ae3ec78f-432c-4e22-b73b-0413af73d9f3\",\"trace_id\":\"c2feb517-0f2b-4ad9-bce5-4d57476a164b\"}\n[2026-05-07 12:52:18] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.48,\"average_seconds_per_request\":0.48} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:19] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.49,\"average_seconds_per_request\":0.49} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:19] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.49,\"average_seconds_per_request\":0.49} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"2bf2f73f-007c-4909-925e-f1749fbf87b3\",\"trace_id\":\"8429123c-d92c-48d9-a154-29bc0aa0e2a1\"}\n[2026-05-07 12:52:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"2bf2f73f-007c-4909-925e-f1749fbf87b3\",\"trace_id\":\"8429123c-d92c-48d9-a154-29bc0aa0e2a1\"}\n[2026-05-07 12:52:20] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.48,\"average_seconds_per_request\":0.48} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:20] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.62,\"average_seconds_per_request\":0.62} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:21] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.78,\"average_seconds_per_request\":0.78} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:22] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":1.21,\"average_seconds_per_request\":1.21} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:23] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.53,\"average_seconds_per_request\":0.53} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8\",\"trace_id\":\"64ccac6b-34f7-45ed-a8ac-b63adbb19107\"}\n[2026-05-07 12:52:25] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8\",\"trace_id\":\"64ccac6b-34f7-45ed-a8ac-b63adbb19107\"}\n[2026-05-07 12:52:26] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8\",\"trace_id\":\"64ccac6b-34f7-45ed-a8ac-b63adbb19107\"}\n[2026-05-07 12:52:26] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8\",\"trace_id\":\"64ccac6b-34f7-45ed-a8ac-b63adbb19107\"}\n[2026-05-07 12:52:28] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"6e1a36d0-a87a-455f-88b9-04f16718ea33\",\"trace_id\":\"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c\"}\n[2026-05-07 12:52:28] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:50:00, 2026-05-07 12:52:00] {\"correlation_id\":\"6e1a36d0-a87a-455f-88b9-04f16718ea33\",\"trace_id\":\"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c\"}\n[2026-05-07 12:52:28] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:50:00, 2026-05-07 12:52:00] {\"correlation_id\":\"6e1a36d0-a87a-455f-88b9-04f16718ea33\",\"trace_id\":\"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c\"}\n[2026-05-07 12:52:28] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"6e1a36d0-a87a-455f-88b9-04f16718ea33\",\"trace_id\":\"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c\"}\n[2026-05-07 12:52:31] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:create\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"80549428-beea-4a6c-97d3-818ca0f059f3\",\"trace_id\":\"55ddd59b-073b-4331-8cdb-baa869dcff70\"}\n[2026-05-07 12:52:31] local.INFO: [EmailSchedule] STARTING batch create {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"80549428-beea-4a6c-97d3-818ca0f059f3\",\"trace_id\":\"55ddd59b-073b-4331-8cdb-baa869dcff70\"}\n[2026-05-07 12:52:31] local.INFO: [EmailSchedule] FINISHED batch create {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"80549428-beea-4a6c-97d3-818ca0f059f3\",\"trace_id\":\"55ddd59b-073b-4331-8cdb-baa869dcff70\"}\n[2026-05-07 12:52:31] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:create\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"80549428-beea-4a6c-97d3-818ca0f059f3\",\"trace_id\":\"55ddd59b-073b-4331-8cdb-baa869dcff70\"}\n[2026-05-07 12:52:32] local.INFO: [Jiminny\\Jobs\\Mailbox\\CreateBatches] processed 2 inboxes and created 0 batches {\"userId\":null,\"batchSize\":30,\"maxBatches\":1000} {\"correlation_id\":\"92242bd6-7014-4487-a50b-1570e1a88e7a\",\"trace_id\":\"55ddd59b-073b-4331-8cdb-baa869dcff70\"}\n[2026-05-07 12:52:39] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"d467eace-3254-4ecc-8d8e-a94688d6d3ad\",\"trace_id\":\"5105ca8f-3c0d-4798-b748-5a7d6fbd7531\"}\n[2026-05-07 12:52:39] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"d467eace-3254-4ecc-8d8e-a94688d6d3ad\",\"trace_id\":\"5105ca8f-3c0d-4798-b748-5a7d6fbd7531\"}\n[2026-05-07 12:53:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"04363b29-2f82-470a-89d0-c5ce4f4779d7\",\"trace_id\":\"3c76a1f1-3348-4e2b-897c-4a216ca95147\"}\n[2026-05-07 12:53:08] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"04363b29-2f82-470a-89d0-c5ce4f4779d7\",\"trace_id\":\"3c76a1f1-3348-4e2b-897c-4a216ca95147\"}\n[2026-05-07 12:53:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"04363b29-2f82-470a-89d0-c5ce4f4779d7\",\"trace_id\":\"3c76a1f1-3348-4e2b-897c-4a216ca95147\"}\n[2026-05-07 12:53:11] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"5ebbecd0-866c-443f-965f-b6ac03735379\",\"trace_id\":\"e0a724a5-bb4b-4fe6-9fe9-36ea1c3f0326\"}\n[2026-05-07 12:53:11] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"5ebbecd0-866c-443f-965f-b6ac03735379\",\"trace_id\":\"e0a724a5-bb4b-4fe6-9fe9-36ea1c3f0326\"}\n[2026-05-07 12:53:18] local.NOTICE: Monitoring start {\"correlation_id\":\"f39f0d3c-a292-41cb-8834-45dae1f8cf47\",\"trace_id\":\"b6e7e2a7-85af-401d-afc6-bec2bdab34d7\"}\n[2026-05-07 12:53:18] local.NOTICE: Monitoring end {\"correlation_id\":\"f39f0d3c-a292-41cb-8834-45dae1f8cf47\",\"trace_id\":\"b6e7e2a7-85af-401d-afc6-bec2bdab34d7\"}\n[2026-05-07 12:53:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"419bb747-2669-496f-944b-1073496cc271\",\"trace_id\":\"4cb913a4-ef75-422b-80eb-fbfb988521ed\"}\n[2026-05-07 12:53:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"419bb747-2669-496f-944b-1073496cc271\",\"trace_id\":\"4cb913a4-ef75-422b-80eb-fbfb988521ed\"}\n[2026-05-07 12:53:22] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"f4805c97-9344-4111-8be2-2b1efeae07bb\",\"trace_id\":\"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22\"}\n[2026-05-07 12:53:22] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"f4805c97-9344-4111-8be2-2b1efeae07bb\",\"trace_id\":\"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22\"}\n[2026-05-07 12:53:22] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"f4805c97-9344-4111-8be2-2b1efeae07bb\",\"trace_id\":\"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22\"}\n[2026-05-07 12:53:22] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"f4805c97-9344-4111-8be2-2b1efeae07bb\",\"trace_id\":\"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22\"}\n[2026-05-07 12:53:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"2eadb06b-2c2e-4a7f-8920-77bd30d6cd7f\",\"trace_id\":\"75f27a23-2021-41a5-9e5f-4b1cb4f143a6\"}\n[2026-05-07 12:53:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"2eadb06b-2c2e-4a7f-8920-77bd30d6cd7f\",\"trace_id\":\"75f27a23-2021-41a5-9e5f-4b1cb4f143a6\"}\n[2026-05-07 12:54:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"ad151521-f676-4351-a70b-f44dc0b94990\",\"trace_id\":\"17e39c4c-85cb-49a4-815e-b7315a8c2249\"}\n[2026-05-07 12:54:06] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"ad151521-f676-4351-a70b-f44dc0b94990\",\"trace_id\":\"17e39c4c-85cb-49a4-815e-b7315a8c2249\"}\n[2026-05-07 12:54:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"ad151521-f676-4351-a70b-f44dc0b94990\",\"trace_id\":\"17e39c4c-85cb-49a4-815e-b7315a8c2249\"}\n[2026-05-07 12:54:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"ed0583cf-03c6-4696-b859-876c8efa4473\",\"trace_id\":\"3f9e0a3c-2178-4885-95eb-8618b8cfc042\"}\n[2026-05-07 12:54:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"ed0583cf-03c6-4696-b859-876c8efa4473\",\"trace_id\":\"3f9e0a3c-2178-4885-95eb-8618b8cfc042\"}\n[2026-05-07 12:54:10] local.NOTICE: Monitoring start {\"correlation_id\":\"7142250a-b897-4620-8ff7-fd9b3a1f3802\",\"trace_id\":\"597def1e-ca38-4cc4-8890-fdcd5baff948\"}\n[2026-05-07 12:54:10] local.NOTICE: Monitoring end {\"correlation_id\":\"7142250a-b897-4620-8ff7-fd9b3a1f3802\",\"trace_id\":\"597def1e-ca38-4cc4-8890-fdcd5baff948\"}\n[2026-05-07 12:54:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"cb2ada48-0200-4eb3-a8c5-6cb8ea43ec0d\",\"trace_id\":\"73937bdc-10b9-4508-9ef2-86420fe774fc\"}\n[2026-05-07 12:54:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"cb2ada48-0200-4eb3-a8c5-6cb8ea43ec0d\",\"trace_id\":\"73937bdc-10b9-4508-9ef2-86420fe774fc\"}\n[2026-05-07 12:54:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"8f1d8932-2839-4256-99ab-1fd13e8381c6\",\"trace_id\":\"cc090767-edc2-4a89-90c2-116f1737de7f\"}\n[2026-05-07 12:54:14] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"8f1d8932-2839-4256-99ab-1fd13e8381c6\",\"trace_id\":\"cc090767-edc2-4a89-90c2-116f1737de7f\"}\n[2026-05-07 12:54:14] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"8f1d8932-2839-4256-99ab-1fd13e8381c6\",\"trace_id\":\"cc090767-edc2-4a89-90c2-116f1737de7f\"}\n[2026-05-07 12:54:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"8f1d8932-2839-4256-99ab-1fd13e8381c6\",\"trace_id\":\"cc090767-edc2-4a89-90c2-116f1737de7f\"}\n[2026-05-07 12:54:16] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"9d324c6d-5b36-46ee-89c6-f95f86bf3f39\",\"trace_id\":\"860cdff0-9356-4e94-84cc-e011a74ba56c\"}\n[2026-05-07 12:54:16] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:52:00, 2026-05-07 12:54:00] {\"correlation_id\":\"9d324c6d-5b36-46ee-89c6-f95f86bf3f39\",\"trace_id\":\"860cdff0-9356-4e94-84cc-e011a74ba56c\"}\n[2026-05-07 12:54:16] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:52:00, 2026-05-07 12:54:00] {\"correlation_id\":\"9d324c6d-5b36-46ee-89c6-f95f86bf3f39\",\"trace_id\":\"860cdff0-9356-4e94-84cc-e011a74ba56c\"}\n[2026-05-07 12:54:16] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"9d324c6d-5b36-46ee-89c6-f95f86bf3f39\",\"trace_id\":\"860cdff0-9356-4e94-84cc-e011a74ba56c\"}\n[2026-05-07 12:54:18] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:aircall:check-and-renew\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"c2009a88-eea6-4954-8642-ef5d9cb56b42\",\"trace_id\":\"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab\"}\n[2026-05-07 12:54:18] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1496,\"provider\":\"aircall\"} {\"correlation_id\":\"c2009a88-eea6-4954-8642-ef5d9cb56b42\",\"trace_id\":\"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab\"}\n[2026-05-07 12:54:18] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1496,\"provider\":\"aircall\"} {\"correlation_id\":\"c2009a88-eea6-4954-8642-ef5d9cb56b42\",\"trace_id\":\"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab\"}\n[2026-05-07 12:54:18] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"c2009a88-eea6-4954-8642-ef5d9cb56b42\",\"trace_id\":\"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab\"}\n[2026-05-07 12:54:19] local.ERROR: [Aircall] Re-activating webhooks failed {\"team_id\":1,\"reason\":\"{\\\"message\\\":\\\"Forbidden\\\"}\"} {\"correlation_id\":\"c2009a88-eea6-4954-8642-ef5d9cb56b42\",\"trace_id\":\"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab\"}\n[2026-05-07 12:54:19] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:aircall:check-and-renew\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"c2009a88-eea6-4954-8642-ef5d9cb56b42\",\"trace_id\":\"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab\"}\n[2026-05-07 12:54:21] local.INFO: [RetryFailedDownloads] Starting {\"options\":{\"from\":null,\"to\":null,\"help\":false,\"silent\":false,\"quiet\":false,\"verbose\":false,\"version\":false,\"ansi\":null,\"no-interaction\":false,\"env\":null}} {\"correlation_id\":\"825ef2d7-b5f8-45cd-b19d-20a179b06934\",\"trace_id\":\"5825a6c8-14c9-4bec-b688-d4895cfc41cc\"}\n[2026-05-07 12:55:05] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"c0dc8e25-7a51-4023-be61-d0abd6d72e37\",\"trace_id\":\"16b8fa3e-92b1-465e-82d4-642a2d14c7c5\"}\n[2026-05-07 12:55:05] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"c0dc8e25-7a51-4023-be61-d0abd6d72e37\",\"trace_id\":\"16b8fa3e-92b1-465e-82d4-642a2d14c7c5\"}\n[2026-05-07 12:55:05] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"c0dc8e25-7a51-4023-be61-d0abd6d72e37\",\"trace_id\":\"16b8fa3e-92b1-465e-82d4-642a2d14c7c5\"}\n[2026-05-07 12:55:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"1c65fdd1-1f79-435d-b469-add46ddafd63\",\"trace_id\":\"62f2a3bb-3be7-4c76-a9dd-222bfb895fab\"}\n[2026-05-07 12:55:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"1c65fdd1-1f79-435d-b469-add46ddafd63\",\"trace_id\":\"62f2a3bb-3be7-4c76-a9dd-222bfb895fab\"}\n[2026-05-07 12:55:11] local.NOTICE: Monitoring start {\"correlation_id\":\"f115f9bc-bb59-4fc9-8c9f-8b69baba1a55\",\"trace_id\":\"e75cb5c6-6dd8-4000-8d26-4418020c7cfe\"}\n[2026-05-07 12:55:11] local.NOTICE: Monitoring end {\"correlation_id\":\"f115f9bc-bb59-4fc9-8c9f-8b69baba1a55\",\"trace_id\":\"e75cb5c6-6dd8-4000-8d26-4418020c7cfe\"}\n[2026-05-07 12:55:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"dba5c474-4d40-44da-baf2-f8b30db9a2f5\",\"trace_id\":\"adb45622-1fb0-457c-bf20-8dcceab2d62a\"}\n[2026-05-07 12:55:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"dba5c474-4d40-44da-baf2-f8b30db9a2f5\",\"trace_id\":\"adb45622-1fb0-457c-bf20-8dcceab2d62a\"}\n[2026-05-07 12:55:16] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"22c96a8e-4424-4a1f-b349-206276eefe4c\",\"trace_id\":\"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c\"}\n[2026-05-07 12:55:16] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"22c96a8e-4424-4a1f-b349-206276eefe4c\",\"trace_id\":\"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c\"}\n[2026-05-07 12:55:16] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"22c96a8e-4424-4a1f-b349-206276eefe4c\",\"trace_id\":\"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c\"}\n[2026-05-07 12:55:16] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"22c96a8e-4424-4a1f-b349-206276eefe4c\",\"trace_id\":\"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c\"}\n[2026-05-07 12:55:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:purge-stale\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"5f958e8d-1d01-4144-abd6-2513e5524ad3\",\"trace_id\":\"828bc5b7-e2aa-4443-901f-38dd94bb7cc5\"}\n[2026-05-07 12:55:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:purge-stale\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"5f958e8d-1d01-4144-abd6-2513e5524ad3\",\"trace_id\":\"828bc5b7-e2aa-4443-901f-38dd94bb7cc5\"}\n[2026-05-07 12:55:22] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:text-relay:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"6bd1c9cb-cd9a-42a9-87fe-45cb7bac687a\",\"trace_id\":\"0f2f5d66-c4c9-46a5-a31b-6937663ce1ad\"}\n[2026-05-07 12:55:22] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:text-relay:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"6bd1c9cb-cd9a-42a9-87fe-45cb7bac687a\",\"trace_id\":\"0f2f5d66-c4c9-46a5-a31b-6937663ce1ad\"}\n[2026-05-07 12:55:24] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:pre-meeting-notification\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"c5dd8132-d7e1-4caa-84d1-0a50d02df8da\",\"trace_id\":\"bc7341c5-b8e2-48ea-9670-7ec375363180\"}\n[2026-05-07 12:55:24] local.INFO: Running pre-meeting notification command {\"correlation_id\":\"c5dd8132-d7e1-4caa-84d1-0a50d02df8da\",\"trace_id\":\"bc7341c5-b8e2-48ea-9670-7ec375363180\"}\n[2026-05-07 12:55:24] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:pre-meeting-notification\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"c5dd8132-d7e1-4caa-84d1-0a50d02df8da\",\"trace_id\":\"bc7341c5-b8e2-48ea-9670-7ec375363180\"}\n[2026-05-07 12:55:26] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:start\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0\",\"trace_id\":\"efb1619f-4185-4319-9bfb-305cee0b6bfc\"}\n[2026-05-07 12:55:26] local.INFO: Running conference:monitor:start command for activities in (2026-05-07 12:45:00, 2026-05-07 12:50:00] {\"correlation_id\":\"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0\",\"trace_id\":\"efb1619f-4185-4319-9bfb-305cee0b6bfc\"}\n[2026-05-07 12:55:26] local.INFO: [conference:monitor:start] No activities found in (2026-05-07 12:45:00, 2026-05-07 12:50:00] {\"correlation_id\":\"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0\",\"trace_id\":\"efb1619f-4185-4319-9bfb-305cee0b6bfc\"}\n[2026-05-07 12:55:26] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:start\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0\",\"trace_id\":\"efb1619f-4185-4319-9bfb-305cee0b6bfc\"}\n[2026-05-07 12:55:28] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:end\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"3792b31a-080a-4fe4-9823-5602361325ba\",\"trace_id\":\"41a2fde1-48f6-4667-84b7-a2f93e9ad2da\"}\n[2026-05-07 12:55:28] local.INFO: conference:monitor:end:Jiminny\\Console\\Commands\\Activities\\MonitorMeetingEndCommand::logActivitiesEnded {\"from\":\"12:50\",\"to\":\"12:55\"} {\"correlation_id\":\"3792b31a-080a-4fe4-9823-5602361325ba\",\"trace_id\":\"41a2fde1-48f6-4667-84b7-a2f93e9ad2da\"}\n[2026-05-07 12:55:28] local.INFO: conference:monitor:end:Jiminny\\Console\\Commands\\Activities\\MonitorMeetingEndCommand::logActivitiesWithUnfinishedSession {\"from\":\"02:45\",\"to\":\"02:50\"} {\"correlation_id\":\"3792b31a-080a-4fe4-9823-5602361325ba\",\"trace_id\":\"41a2fde1-48f6-4667-84b7-a2f93e9ad2da\"}\n[2026-05-07 12:55:28] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:end\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"3792b31a-080a-4fe4-9823-5602361325ba\",\"trace_id\":\"41a2fde1-48f6-4667-84b7-a2f93e9ad2da\"}\n[2026-05-07 12:55:30] local.NOTICE: Repairing HubSpot tokens start {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:30] local.INFO: Trying to refresh HubSpot token {\"account_id\":59,\"updated_at\":\"2025-10-03 09:32:05\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:30] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:30] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":59,\"provider\":\"hubspot\",\"refreshToken\":\"97b78f6e2cc49965c00c2492b602b02708b1392551e6b3f113fbaa48992af90b\",\"state\":\"full-refresh\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.ERROR: Failed to refresh HubSpot token {\"account_id\":59,\"updated_at\":\"2025-10-03 09:32:05\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.INFO: Trying to refresh HubSpot token {\"account_id\":306,\"updated_at\":\"2023-11-27 09:30:03\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":306,\"provider\":\"hubspot\",\"refreshToken\":\"6fa6aa8cc641d131231acc3470f5c03cb3b07b2e580fb18f8acb3b1dbb72549b\",\"state\":\"full-refresh\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.ERROR: Failed to refresh HubSpot token {\"account_id\":306,\"updated_at\":\"2023-11-27 09:30:03\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.INFO: Trying to refresh HubSpot token {\"account_id\":1372,\"updated_at\":\"2025-10-02 14:47:06\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1372,\"provider\":\"hubspot\",\"refreshToken\":\"9aa73948c761da29dce46c177cf9aee1fde483a44169ca38723f9f0597d7a8c4\",\"state\":\"full-refresh\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:32] local.ERROR: Failed to refresh HubSpot token {\"account_id\":1372,\"updated_at\":\"2025-10-02 14:47:06\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:32] local.NOTICE: Repairing HubSpot tokens end {\"total\":3,\"fixed\":0,\"failed\":3} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:40] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"crm:bullhorn:ping\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"5e676ae4-5d63-49d4-9001-559088adf06b\",\"trace_id\":\"2fcce073-dd68-4c99-b7c4-b9e03c20b8e4\"}\n[2026-05-07 12:55:40] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:pre-meeting-reminder\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"1f830896-8142-41d1-bfc9-4cbb9179ffda\",\"trace_id\":\"e348a096-7f37-4308-a6d8-66131e8be901\"}\n[2026-05-07 12:55:40] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"crm:bullhorn:ping\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"5e676ae4-5d63-49d4-9001-559088adf06b\",\"trace_id\":\"2fcce073-dd68-4c99-b7c4-b9e03c20b8e4\"}\n[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Command] Starting polling service {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Service starting {\"memory_limit\":\"256M\",\"max_execution_time\":\"0\",\"initial_memory_mb\":62.0} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Acquired polling lock {\"expires_at\":\"2026-05-07T12:57:40.609671Z\"} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:40] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:40] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:pre-meeting-reminder\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"1f830896-8142-41d1-bfc9-4cbb9179ffda\",\"trace_id\":\"e348a096-7f37-4308-a6d8-66131e8be901\"}\n[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:45] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:45] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:46] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:51] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:51] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:51] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:06] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:06] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:06] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"2d8b30b4-87aa-480f-9b9e-5a9c709b742a\",\"trace_id\":\"25b7be6c-1faf-430b-a724-a4ff28773a31\"}\n[2026-05-07 12:56:08] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"2d8b30b4-87aa-480f-9b9e-5a9c709b742a\",\"trace_id\":\"25b7be6c-1faf-430b-a724-a4ff28773a31\"}\n[2026-05-07 12:56:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"2d8b30b4-87aa-480f-9b9e-5a9c709b742a\",\"trace_id\":\"25b7be6c-1faf-430b-a724-a4ff28773a31\"}\n[2026-05-07 12:56:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"efd336d7-db4d-459e-b6e7-bf73454e955e\",\"trace_id\":\"0a82c3d5-0417-48c8-b88f-70ec33e2326a\"}\n[2026-05-07 12:56:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"efd336d7-db4d-459e-b6e7-bf73454e955e\",\"trace_id\":\"0a82c3d5-0417-48c8-b88f-70ec33e2326a\"}\n[2026-05-07 12:56:12] local.NOTICE: Monitoring start {\"correlation_id\":\"68481576-8ca6-4ee5-821b-07374702971d\",\"trace_id\":\"c73eac09-5d20-425f-9c22-bd6c65fc60c9\"}\n[2026-05-07 12:56:12] local.NOTICE: Monitoring end {\"correlation_id\":\"68481576-8ca6-4ee5-821b-07374702971d\",\"trace_id\":\"c73eac09-5d20-425f-9c22-bd6c65fc60c9\"}\n[2026-05-07 12:56:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"bd0cdc75-b5c2-4dbb-bc44-e36c96813d24\",\"trace_id\":\"f688cd98-c171-4e30-8c72-afc14f040861\"}\n[2026-05-07 12:56:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"bd0cdc75-b5c2-4dbb-bc44-e36c96813d24\",\"trace_id\":\"f688cd98-c171-4e30-8c72-afc14f040861\"}\n[2026-05-07 12:56:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"f01636a9-4059-4ab0-9ad2-b078d42cedbd\",\"trace_id\":\"fea938d8-aedc-40ec-b8c2-2f487e1ac808\"}\n[2026-05-07 12:56:20] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"f01636a9-4059-4ab0-9ad2-b078d42cedbd\",\"trace_id\":\"fea938d8-aedc-40ec-b8c2-2f487e1ac808\"}\n[2026-05-07 12:56:20] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"f01636a9-4059-4ab0-9ad2-b078d42cedbd\",\"trace_id\":\"fea938d8-aedc-40ec-b8c2-2f487e1ac808\"}\n[2026-05-07 12:56:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"f01636a9-4059-4ab0-9ad2-b078d42cedbd\",\"trace_id\":\"fea938d8-aedc-40ec-b8c2-2f487e1ac808\"}\n[2026-05-07 12:56:23] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"d4558901-264d-4238-8589-62a137bac1fd\",\"trace_id\":\"38e6b5dc-ebd6-46a7-8224-7374d4e58630\"}\n[2026-05-07 12:56:23] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:54:00, 2026-05-07 12:56:00] {\"correlation_id\":\"d4558901-264d-4238-8589-62a137bac1fd\",\"trace_id\":\"38e6b5dc-ebd6-46a7-8224-7374d4e58630\"}\n[2026-05-07 12:56:23] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:54:00, 2026-05-07 12:56:00] {\"correlation_id\":\"d4558901-264d-4238-8589-62a137bac1fd\",\"trace_id\":\"38e6b5dc-ebd6-46a7-8224-7374d4e58630\"}\n[2026-05-07 12:56:23] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"d4558901-264d-4238-8589-62a137bac1fd\",\"trace_id\":\"38e6b5dc-ebd6-46a7-8224-7374d4e58630\"}\n[2026-05-07 12:56:24] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"crm:sync-hubspot-objects\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"7bfaf9be-0ca1-4170-a0c9-83e0ed61881c\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:24] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"crm:sync-hubspot-objects\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"7bfaf9be-0ca1-4170-a0c9-83e0ed61881c\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:26] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:notify-not-logged\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"2541e0fa-1117-4863-9523-d723b5821a24\",\"trace_id\":\"d9600320-5133-4938-bdd1-2256dfdf8db4\"}\n[2026-05-07 12:56:26] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:notify-not-logged\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"2541e0fa-1117-4863-9523-d723b5821a24\",\"trace_id\":\"d9600320-5133-4938-bdd1-2256dfdf8db4\"}\n[2026-05-07 12:56:35] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"e444f776-37db-4c6d-b30e-20b01a089de7\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:36] local.INFO: [EmailSchedule] STARTING Inbox Sync {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"e444f776-37db-4c6d-b30e-20b01a089de7\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:36] local.INFO: [EmailSchedule] FINISHED Inbox Sync {\"host\":\"docker_lamp_1\",\"events\":2} {\"correlation_id\":\"e444f776-37db-4c6d-b30e-20b01a089de7\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:36] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"e444f776-37db-4c6d-b30e-20b01a089de7\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:36] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:36] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:36] local.INFO: [HubSpot Journal Auth] Requesting new client credentials token {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:37] local.INFO: [HubSpot Journal Auth] Successfully obtained new access token {\"expires_in\":1800,\"cached_for\":1500} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:37] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:37] local.WARNING: [HubSpot Journal Polling] Maximum empty results reached, stopping {\"empty_results\":5,\"max_empty_results\":5} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:37] local.WARNING: [HubSpot Journal Polling] Maximum empty results reached, stopping {\"empty_results\":5,\"max_empty_results\":5} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:37] local.INFO: [HubSpot Journal Polling] Service ending {\"runtime_seconds\":57,\"total_cycles\":5,\"files_downloaded\":0,\"empty_files\":0,\"other_portal_skipped\":0,\"total_events\":0,\"events_per_file\":0,\"avg_api_ms\":238.3,\"avg_download_ms\":0.0,\"avg_transform_ms\":0.0,\"avg_process_ms\":0.0,\"peak_memory_mb\":99.73} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:37] local.INFO: [HubSpot Journal Polling] Released polling lock {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:50] local.INFO: [Commands/AsyncUpdateEsEntities] Starting ES update worker {\"pid\":37119,\"workerId\":\"\",\"target\":\"activities\"} {\"correlation_id\":\"902cef33-4733-4b2a-9693-affb8645cecc\",\"trace_id\":\"4ffe2bb8-67c6-422a-a846-319973cc0259\"}\n[2026-05-07 12:56:50] local.INFO: [SyncHubspotObjects] Starting sync {\"team\":\"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4\",\"usage\":23195976,\"real_usage\":65011712,\"pid\":37113} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:50] local.INFO: [Sync Mailbox] Sync start {\"inbox_id\":59} {\"correlation_id\":\"20256b2c-2b69-48f6-bdd3-61d047eb0b0d\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:50] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:50] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:50] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:50] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1499,\"provider\":\"hubspot\",\"refreshToken\":\"96f94c623a404e02ebdbf07f1b75707bb6cdbf848cbf45d418baf608c41a8d86\",\"state\":\"connected\"} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:50] local.INFO: [Inbox service] Skipping METADATA SYNC for inbox 59 due to unauthorized access to the mailbox {\"correlation_id\":\"20256b2c-2b69-48f6-bdd3-61d047eb0b0d\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:50] local.INFO: [Sync Mailbox] Sync complete {\"inbox_id\":59} {\"correlation_id\":\"20256b2c-2b69-48f6-bdd3-61d047eb0b0d\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:50] local.INFO: [Sync Mailbox] Sync start {\"inbox_id\":212} {\"correlation_id\":\"b6c31853-3729-4780-a52b-ebcce17d41b9\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:50] local.INFO: [Inbox service] Skipping METADATA SYNC for inbox 212 due to unauthorized access to the mailbox {\"correlation_id\":\"b6c31853-3729-4780-a52b-ebcce17d41b9\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:50] local.INFO: [Sync Mailbox] Sync complete {\"inbox_id\":212} {\"correlation_id\":\"b6c31853-3729-4780-a52b-ebcce17d41b9\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:51] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:51] local.INFO: [SocialAccountObserver] Access token was modified, encrypting {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:51] local.INFO: [SocialAccountService] Token refreshed {\"socialAccountId\":1499,\"provider\":\"hubspot\",\"state\":\"connected\"} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:51] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":148,\"team_id\":2} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:51] local.INFO: [HubSpot] Syncing opportunities using strategy: lastModified {\"team\":2} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/deals/search\",\"total_requests\":0,\"total_records_fetched\":0,\"total_elapsed_seconds\":0.3,\"average_seconds_per_request\":0} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.INFO: [SyncHubspotObjects] Sync finished {\"team\":\"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4\",\"provider\":\"hubspot\",\"status\":\"completed\",\"duration_ms\":1854.64,\"usage\":24199288,\"real_usage\":65011712,\"pid\":37113} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.ERROR: Jiminny\\Services\\Crm\\Hubspot\\Pagination\\HubspotPaginationService::getPaginatedDataGenerator(): Return value must be of type Generator, none returned {\"exception\":\"[object] (TypeError(code: 0): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService::getPaginatedDataGenerator(): Return value must be of type Generator, none returned at /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php:82)\n[stacktrace]\n#0 /home/jiminny/app/Services/Crm/Hubspot/Client.php(194): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->getPaginatedDataGenerator(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), Array, 'deals', 0, 0, NULL)\n#1 /home/jiminny/app/Services/Crm/Hubspot/OpportunitySyncStrategy/HubspotSyncStrategyBase.php(55): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client->getPaginatedDataGenerator(Array, 'deals', 0, 0, NULL)\n#2 /home/jiminny/app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php(73): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\OpportunitySyncStrategy\\\\HubspotSyncStrategyBase->fetchOpportunities(Array, 0, NULL)\n#3 /home/jiminny/app/Jobs/Crm/SyncHubspotObjects.php(118): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service->syncOpportunities(Array)\n#4 /home/jiminny/app/Jobs/Crm/SyncHubspotObjects.php(86): Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects->syncHubspotCrmObjects(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service), Object(Illuminate\\\\Support\\\\Carbon))\n#5 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects->handle(Object(Jiminny\\\\Services\\\\ResolveTeamCrmConnection), Object(Illuminate\\\\Log\\\\LogManager), Object(Jiminny\\\\Repositories\\\\TeamRepository))\n#6 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#7 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#8 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#9 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#10 /home/jiminny/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(129): Illuminate\\\\Container\\\\Container->call(Array)\n#11 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\\\Bus\\\\Dispatcher->Illuminate\\\\Bus\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#12 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\\\\Pipeline\\\\Pipeline->Illuminate\\\\Pipeline\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#13 /home/jiminny/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(133): Illuminate\\\\Pipeline\\\\Pipeline->then(Object(Closure))\n#14 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(136): Illuminate\\\\Bus\\\\Dispatcher->dispatchNow(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects), false)\n#15 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\\\Queue\\\\CallQueuedHandler->Illuminate\\\\Queue\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#16 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\\\\Pipeline\\\\Pipeline->Illuminate\\\\Pipeline\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#17 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(129): Illuminate\\\\Pipeline\\\\Pipeline->then(Object(Closure))\n#18 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(70): Illuminate\\\\Queue\\\\CallQueuedHandler->dispatchThroughMiddleware(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#19 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Jobs/Job.php(102): Illuminate\\\\Queue\\\\CallQueuedHandler->call(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Array)\n#20 /home/jiminny/app/Queue/Worker/Worker.php(71): Illuminate\\\\Queue\\\\Jobs\\\\Job->fire()\n#21 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(435): Jiminny\\\\Queue\\\\Worker\\\\Worker->process('redis', Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#22 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(201): Illuminate\\\\Queue\\\\Worker->runJob(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), 'redis', Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#23 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(148): Illuminate\\\\Queue\\\\Worker->daemon('redis', 'crm-sync,crm-up...', Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#24 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(131): Illuminate\\\\Queue\\\\Console\\\\WorkCommand->runWorker('redis', 'crm-sync,crm-up...')\n#25 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Illuminate\\\\Queue\\\\Console\\\\WorkCommand->handle()\n#26 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#27 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#28 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#29 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#30 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(211): Illuminate\\\\Container\\\\Container->call(Array)\n#31 /home/jiminny/vendor/symfony/console/Command/Command.php(341): Illuminate\\\\Console\\\\Command->execute(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#32 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(180): Symfony\\\\Component\\\\Console\\\\Command\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#33 /home/jiminny/vendor/symfony/console/Application.php(1117): Illuminate\\\\Console\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#34 /home/jiminny/vendor/symfony/console/Application.php(356): Symfony\\\\Component\\\\Console\\\\Application->doRunCommand(Object(Illuminate\\\\Queue\\\\Console\\\\WorkCommand), Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#35 /home/jiminny/vendor/symfony/console/Application.php(195): Symfony\\\\Component\\\\Console\\\\Application->doRun(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#36 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(198): Symfony\\\\Component\\\\Console\\\\Application->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#37 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1235): Illuminate\\\\Foundation\\\\Console\\\\Kernel->handle(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#38 /home/jiminny/artisan(13): Illuminate\\\\Foundation\\\\Application->handleCommand(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput))\n#39 {main}\n\"} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.INFO: [SyncHubspotObjects] Starting sync {\"team\":\"b2d49a54-b645-4637-a7ae-a86cfce6e8e4\",\"usage\":25235152,\"real_usage\":65011712,\"pid\":37113} {\"correlation_id\":\"0d3cf2b0-a245-4a83-9bd5-1c5788b85738\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.WARNING: [HubSpot] Account not connected for user {\"userId\":\"2ac0447f-3c8c-4ce0-baeb-b63ddb76fa9b\",\"account\":null} {\"correlation_id\":\"0d3cf2b0-a245-4a83-9bd5-1c5788b85738\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {\"crm_provider\":\"hubspot\",\"crm_owner\":130,\"team_id\":42} {\"correlation_id\":\"0d3cf2b0-a245-4a83-9bd5-1c5788b85738\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":42} {\"correlation_id\":\"0d3cf2b0-a245-4a83-9bd5-1c5788b85738\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":42} {\"correlation_id\":\"0d3cf2b0-a245-4a83-9bd5-1c5788b85738\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.INFO: [SyncHubspotObjects] Sync finished {\"team\":\"b2d49a54-b645-4637-a7ae-a86cfce6e8e4\",\"provider\":\"hubspot\",\"status\":\"disconnected\",\"duration_ms\":70.53,\"usage\":25225384,\"real_usage\":65011712,\"pid\":37113,\"reason\":\"Social account for HubSpot cannot be found. Please login to Jiminny to connect.\"} {\"correlation_id\":\"0d3cf2b0-a245-4a83-9bd5-1c5788b85738\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Starting sync {\"team\":\"b2b115eb-93ce-4d1b-929c-173757df8fba\",\"usage\":25263936,\"real_usage\":65011712,\"pid\":37113} {\"correlation_id\":\"1e46be79-1db4-4829-b19c-1548141a94e0\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.WARNING: [HubSpot] Account not connected for user {\"userId\":\"33e34a7a-1c02-4f04-87ac-22c3a385e6e3\",\"account\":{\"Jiminny\\\\Models\\\\SocialAccount\":{\"id\":306,\"sociable_id\":109,\"provider_user_id\":\"11348452\",\"expires\":1701077403,\"refresh_token_expires\":null,\"provider\":\"hubspot\",\"state\":\"full-refresh\",\"auth_scope\":null,\"retry_after\":null,\"created_at\":\"2020-09-01 16:59:04\",\"updated_at\":\"2023-11-27 09:30:03\"}}} {\"correlation_id\":\"1e46be79-1db4-4829-b19c-1548141a94e0\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {\"crm_provider\":\"hubspot\",\"crm_owner\":109,\"team_id\":29} {\"correlation_id\":\"1e46be79-1db4-4829-b19c-1548141a94e0\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":29} {\"correlation_id\":\"1e46be79-1db4-4829-b19c-1548141a94e0\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":29} {\"correlation_id\":\"1e46be79-1db4-4829-b19c-1548141a94e0\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Sync finished {\"team\":\"b2b115eb-93ce-4d1b-929c-173757df8fba\",\"provider\":\"hubspot\",\"status\":\"disconnected\",\"duration_ms\":47.7,\"usage\":25451952,\"real_usage\":65011712,\"pid\":37113,\"reason\":\"Your HubSpot account has become disconnected. Please login to Jiminny to reconnect.\"} {\"correlation_id\":\"1e46be79-1db4-4829-b19c-1548141a94e0\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Starting sync {\"team\":\"c6b9d6b0-b48d-4832-a68c-a57d60651888\",\"usage\":25490320,\"real_usage\":65011712,\"pid\":37113} {\"correlation_id\":\"0da4e096-9534-4a72-bc1f-8e61561d8e37\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.WARNING: [HubSpot] Account not connected for user {\"userId\":\"71e3aac5-fb66-47c5-a236-2d051ae3e319\",\"account\":null} {\"correlation_id\":\"0da4e096-9534-4a72-bc1f-8e61561d8e37\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {\"crm_provider\":\"hubspot\",\"crm_owner\":256,\"team_id\":49} {\"correlation_id\":\"0da4e096-9534-4a72-bc1f-8e61561d8e37\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":49} {\"correlation_id\":\"0da4e096-9534-4a72-bc1f-8e61561d8e37\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":49} {\"correlation_id\":\"0da4e096-9534-4a72-bc1f-8e61561d8e37\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Sync finished {\"team\":\"c6b9d6b0-b48d-4832-a68c-a57d60651888\",\"provider\":\"hubspot\",\"status\":\"disconnected\",\"duration_ms\":44.12,\"usage\":25547952,\"real_usage\":65011712,\"pid\":37113,\"reason\":\"Social account for HubSpot cannot be found. Please login to Jiminny to connect.\"} {\"correlation_id\":\"0da4e096-9534-4a72-bc1f-8e61561d8e37\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Starting sync {\"team\":\"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4\",\"usage\":25587032,\"real_usage\":65011712,\"pid\":37113} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":148,\"team_id\":2} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [HubSpot] Syncing opportunities using strategy: lastModified {\"team\":2} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/deals/search\",\"total_requests\":0,\"total_records_fetched\":0,\"total_elapsed_seconds\":0.28,\"average_seconds_per_request\":0} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Sync finished {\"team\":\"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4\",\"provider\":\"hubspot\",\"status\":\"completed\",\"duration_ms\":412.19,\"usage\":25739960,\"real_usage\":65011712,\"pid\":37113} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.ERROR: Jiminny\\Services\\Crm\\Hubspot\\Pagination\\HubspotPaginationService::getPaginatedDataGenerator(): Return value must be of type Generator, none returned {\"exception\":\"[object] (TypeError(code: 0): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService::getPaginatedDataGenerator(): Return value must be of type Generator, none returned at /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php:82)\n[stacktrace]\n#0 /home/jiminny/app/Services/Crm/Hubspot/Client.php(194): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->getPaginatedDataGenerator(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), Array, 'deals', 0, 0, NULL)\n#1 /home/jiminny/app/Services/Crm/Hubspot/OpportunitySyncStrategy/HubspotSyncStrategyBase.php(55): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client->getPaginatedDataGenerator(Array, 'deals', 0, 0, NULL)\n#2 /home/jiminny/app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php(73): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\OpportunitySyncStrategy\\\\HubspotSyncStrategyBase->fetchOpportunities(Array, 0, NULL)\n#3 /home/jiminny/app/Jobs/Crm/SyncHubspotObjects.php(118): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service->syncOpportunities(Array)\n#4 /home/jiminny/app/Jobs/Crm/SyncHubspotObjects.php(86): Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects->syncHubspotCrmObjects(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service), Object(Illuminate\\\\Support\\\\Carbon))\n#5 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects->handle(Object(Jiminny\\\\Services\\\\ResolveTeamCrmConnection), Object(Illuminate\\\\Log\\\\LogManager), Object(Jiminny\\\\Repositories\\\\TeamRepository))\n#6 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#7 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#8 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#9 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#10 /home/jiminny/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(129): Illuminate\\\\Container\\\\Container->call(Array)\n#11 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\\\Bus\\\\Dispatcher->Illuminate\\\\Bus\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#12 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\\\\Pipeline\\\\Pipeline->Illuminate\\\\Pipeline\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#13 /home/jiminny/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(133): Illuminate\\\\Pipeline\\\\Pipeline->then(Object(Closure))\n#14 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(136): Illuminate\\\\Bus\\\\Dispatcher->dispatchNow(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects), false)\n#15 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\\\Queue\\\\CallQueuedHandler->Illuminate\\\\Queue\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#16 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\\\\Pipeline\\\\Pipeline->Illuminate\\\\Pipeline\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#17 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(129): Illuminate\\\\Pipeline\\\\Pipeline->then(Object(Closure))\n#18 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(70): Illuminate\\\\Queue\\\\CallQueuedHandler->dispatchThroughMiddleware(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#19 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Jobs/Job.php(102): Illuminate\\\\Queue\\\\CallQueuedHandler->call(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Array)\n#20 /home/jiminny/app/Queue/Worker/Worker.php(71): Illuminate\\\\Queue\\\\Jobs\\\\Job->fire()\n#21 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(435): Jiminny\\\\Queue\\\\Worker\\\\Worker->process('redis', Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#22 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(201): Illuminate\\\\Queue\\\\Worker->runJob(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), 'redis', Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#23 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(148): Illuminate\\\\Queue\\\\Worker->daemon('redis', 'crm-sync,crm-up...', Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#24 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(131): Illuminate\\\\Queue\\\\Console\\\\WorkCommand->runWorker('redis', 'crm-sync,crm-up...')\n#25 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Illuminate\\\\Queue\\\\Console\\\\WorkCommand->handle()\n#26 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#27 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#28 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#29 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#30 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(211): Illuminate\\\\Container\\\\Container->call(Array)\n#31 /home/jiminny/vendor/symfony/console/Command/Command.php(341): Illuminate\\\\Console\\\\Command->execute(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#32 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(180): Symfony\\\\Component\\\\Console\\\\Command\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#33 /home/jiminny/vendor/symfony/console/Application.php(1117): Illuminate\\\\Console\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#34 /home/jiminny/vendor/symfony/console/Application.php(356): Symfony\\\\Component\\\\Console\\\\Application->doRunCommand(Object(Illuminate\\\\Queue\\\\Console\\\\WorkCommand), Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#35 /home/jiminny/vendor/symfony/console/Application.php(195): Symfony\\\\Component\\\\Console\\\\Application->doRun(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#36 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(198): Symfony\\\\Component\\\\Console\\\\Application->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#37 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1235): Illuminate\\\\Foundation\\\\Console\\\\Kernel->handle(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#38 /home/jiminny/artisan(13): Illuminate\\\\Foundation\\\\Application->handleCommand(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput))\n#39 {main}\n\"} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Starting sync {\"team\":\"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4\",\"usage\":25172624,\"real_usage\":65011712,\"pid\":37113} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":148,\"team_id\":2} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [HubSpot] Syncing opportunities using strategy: lastModified {\"team\":2} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/deals/search\",\"total_requests\":0,\"total_records_fetched\":0,\"total_elapsed_seconds\":0.23,\"average_seconds_per_request\":0} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Sync finished {\"team\":\"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4\",\"provider\":\"hubspot\",\"status\":\"completed\",\"duration_ms\":291.83,\"usage\":25225088,\"real_usage\":65011712,\"pid\":37113} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:54] local.ERROR: Jiminny\\Services\\Crm\\Hubspot\\Pagination\\HubspotPaginationService::getPaginatedDataGenerator(): Return value must be of type Generator, none returned {\"exception\":\"[object] (TypeError(code: 0): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService::getPaginatedDataGenerator(): Return value must be of type Generator, none returned at /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php:82)\n[stacktrace]\n#0 /home/jiminny/app/Services/Crm/Hubspot/Client.php(194): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->getPaginatedDataGenerator(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), Array, 'deals', 0, 0, NULL)\n#1 /home/jiminny/app/Services/Crm/Hubspot/OpportunitySyncStrategy/HubspotSyncStrategyBase.php(55): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client->getPaginatedDataGenerator(Array, 'deals', 0, 0, NULL)\n#2 /home/jiminny/app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php(73): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\OpportunitySyncStrategy\\\\HubspotSyncStrategyBase->fetchOpportunities(Array, 0, NULL)\n#3 /home/jiminny/app/Jobs/Crm/SyncHubspotObjects.php(118): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service->syncOpportunities(Array)\n#4 /home/jiminny/app/Jobs/Crm/SyncHubspotObjects.php(86): Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects->syncHubspotCrmObjects(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service), Object(Illuminate\\\\Support\\\\Carbon))\n#5 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects->handle(Object(Jiminny\\\\Services\\\\ResolveTeamCrmConnection), Object(Illuminate\\\\Log\\\\LogManager), Object(Jiminny\\\\Repositories\\\\TeamRepository))\n#6 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#7 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#8 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#9 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#10 /home/jiminny/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(129): Illuminate\\\\Container\\\\Container->call(Array)\n#11 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\\\Bus\\\\Dispatcher->Illuminate\\\\Bus\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#12 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\\\\Pipeline\\\\Pipeline->Illuminate\\\\Pipeline\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#13 /home/jiminny/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(133): Illuminate\\\\Pipeline\\\\Pipeline->then(Object(Closure))\n#14 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(136): Illuminate\\\\Bus\\\\Dispatcher->dispatchNow(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects), false)\n#15 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\\\Queue\\\\CallQueuedHandler->Illuminate\\\\Queue\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#16 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\\\\Pipeline\\\\Pipeline->Illuminate\\\\Pipeline\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#17 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(129): Illuminate\\\\Pipeline\\\\Pipeline->then(Object(Closure))\n#18 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(70): Illuminate\\\\Queue\\\\CallQueuedHandler->dispatchThroughMiddleware(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#19 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Jobs/Job.php(102): Illuminate\\\\Queue\\\\CallQueuedHandler->call(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Array)\n#20 /home/jiminny/app/Queue/Worker/Worker.php(71): Illuminate\\\\Queue\\\\Jobs\\\\Job->fire()\n#21 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(435): Jiminny\\\\Queue\\\\Worker\\\\Worker->process('redis', Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#22 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(201): Illuminate\\\\Queue\\\\Worker->runJob(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), 'redis', Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#23 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(148): Illuminate\\\\Queue\\\\Worker->daemon('redis', 'crm-sync,crm-up...', Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#24 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(131): Illuminate\\\\Queue\\\\Console\\\\WorkCommand->runWorker('redis', 'crm-sync,crm-up...')\n#25 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Illuminate\\\\Queue\\\\Console\\\\WorkCommand->handle()\n#26 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#27 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#28 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#29 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#30 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(211): Illuminate\\\\Container\\\\Container->call(Array)\n#31 /home/jiminny/vendor/symfony/console/Command/Command.php(341): Illuminate\\\\Console\\\\Command->execute(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#32 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(180): Symfony\\\\Component\\\\Console\\\\Command\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#33 /home/jiminny/vendor/symfony/console/Application.php(1117): Illuminate\\\\Console\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#34 /home/jiminny/vendor/symfony/console/Application.php(356): Symfony\\\\Component\\\\Console\\\\Application->doRunCommand(Object(Illuminate\\\\Queue\\\\Console\\\\WorkCommand), Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#35 /home/jiminny/vendor/symfony/console/Application.php(195): Symfony\\\\Component\\\\Console\\\\Application->doRun(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#36 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(198): Symfony\\\\Component\\\\Console\\\\Application->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#37 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1235): Illuminate\\\\Foundation\\\\Console\\\\Kernel->handle(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#38 /home/jiminny/artisan(13): Illuminate\\\\Foundation\\\\Application->handleCommand(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput))\n#39 {main}\n\"} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:57:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"854299be-d77a-48bc-870c-b78333916d69\",\"trace_id\":\"89c1eb6c-bc78-419c-9304-b770093d5692\"}\n[2026-05-07 12:57:06] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"854299be-d77a-48bc-870c-b78333916d69\",\"trace_id\":\"89c1eb6c-bc78-419c-9304-b770093d5692\"}\n[2026-05-07 12:57:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"854299be-d77a-48bc-870c-b78333916d69\",\"trace_id\":\"89c1eb6c-bc78-419c-9304-b770093d5692\"}\n[2026-05-07 12:57:16] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"c4e512a3-a227-4569-bcd2-3258a9142d46\",\"trace_id\":\"016bf668-6712-4c0f-8c8c-c2e411a37889\"}\n[2026-05-07 12:57:16] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"c4e512a3-a227-4569-bcd2-3258a9142d46\",\"trace_id\":\"016bf668-6712-4c0f-8c8c-c2e411a37889\"}\n[2026-05-07 12:57:19] local.NOTICE: Monitoring start {\"correlation_id\":\"4c2d4775-716d-4ca6-b94d-cb17dace29a7\",\"trace_id\":\"e969e10d-e5f0-44c6-9767-97a70e05cfe5\"}\n[2026-05-07 12:57:19] local.NOTICE: Monitoring end {\"correlation_id\":\"4c2d4775-716d-4ca6-b94d-cb17dace29a7\",\"trace_id\":\"e969e10d-e5f0-44c6-9767-97a70e05cfe5\"}\n[2026-05-07 12:57:22] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"d03e9546-bfd0-44c6-84ee-299b1e6c14a2\",\"trace_id\":\"acbab6e5-17fc-4b11-907d-ff87322285d7\"}\n[2026-05-07 12:57:22] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"d03e9546-bfd0-44c6-84ee-299b1e6c14a2\",\"trace_id\":\"acbab6e5-17fc-4b11-907d-ff87322285d7\"}\n[2026-05-07 12:57:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"a2c0095a-18b2-427e-825b-c68c9dbf63a1\",\"trace_id\":\"9b170d6a-ed10-4a41-af79-684c99021967\"}\n[2026-05-07 12:57:25] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"a2c0095a-18b2-427e-825b-c68c9dbf63a1\",\"trace_id\":\"9b170d6a-ed10-4a41-af79-684c99021967\"}\n[2026-05-07 12:57:25] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"a2c0095a-18b2-427e-825b-c68c9dbf63a1\",\"trace_id\":\"9b170d6a-ed10-4a41-af79-684c99021967\"}\n[2026-05-07 12:57:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"a2c0095a-18b2-427e-825b-c68c9dbf63a1\",\"trace_id\":\"9b170d6a-ed10-4a41-af79-684c99021967\"}\n[2026-05-07 12:57:27] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:create\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"c4e70056-ceab-4c44-874a-8042963ce3ea\",\"trace_id\":\"011a70aa-ebb2-4ca8-aef6-4b4cca233da7\"}\n[2026-05-07 12:57:27] local.INFO: [EmailSchedule] STARTING batch create {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"c4e70056-ceab-4c44-874a-8042963ce3ea\",\"trace_id\":\"011a70aa-ebb2-4ca8-aef6-4b4cca233da7\"}\n[2026-05-07 12:57:27] local.INFO: [EmailSchedule] FINISHED batch create {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"c4e70056-ceab-4c44-874a-8042963ce3ea\",\"trace_id\":\"011a70aa-ebb2-4ca8-aef6-4b4cca233da7\"}\n[2026-05-07 12:57:27] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:create\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"c4e70056-ceab-4c44-874a-8042963ce3ea\",\"trace_id\":\"011a70aa-ebb2-4ca8-aef6-4b4cca233da7\"}\n[2026-05-07 12:57:28] local.INFO: [Jiminny\\Jobs\\Mailbox\\CreateBatches] processed 2 inboxes and created 0 batches {\"userId\":null,\"batchSize\":30,\"maxBatches\":1000} {\"correlation_id\":\"c296bf83-9f7c-4228-b6f5-99db6040fa01\",\"trace_id\":\"011a70aa-ebb2-4ca8-aef6-4b4cca233da7\"}\n[2026-05-07 12:58:06] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"a9e2de8b-b538-437e-bbe7-82636da81995\",\"trace_id\":\"e517ae80-e149-490c-b719-309e898b3c93\"}\n[2026-05-07 12:58:06] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"a9e2de8b-b538-437e-bbe7-82636da81995\",\"trace_id\":\"e517ae80-e149-490c-b719-309e898b3c93\"}\n[2026-05-07 12:58:06] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"a9e2de8b-b538-437e-bbe7-82636da81995\",\"trace_id\":\"e517ae80-e149-490c-b719-309e898b3c93\"}\n[2026-05-07 12:58:06] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":148,\"team_id\":2} {\"correlation_id\":\"a9e2de8b-b538-437e-bbe7-82636da81995\",\"trace_id\":\"e517ae80-e149-490c-b719-309e898b3c93\"}\n[2026-05-07 12:58:06] local.ERROR: Client error: `POST https://api.hubapi.com/crm/v3/objects/contact/search` resulted in a `429 Too Many Requests` response:\n{\"status\":\"error\",\"message\":\"You have reached your secondly limit.\",\"errorType\":\"RATE_LIMIT\",\"correlationId\":\"019e0284-5 (truncated...)\n {\"exception\":\"[object] (SevenShores\\\\Hubspot\\\\Exceptions\\\\BadRequest(code: 429): Client error: `POST https://api.hubapi.com/crm/v3/objects/contact/search` resulted in a `429 Too Many Requests` response:\n{\\\"status\\\":\\\"error\\\",\\\"message\\\":\\\"You have reached your secondly limit.\\\",\\\"errorType\\\":\\\"RATE_LIMIT\\\",\\\"correlationId\\\":\\\"019e0284-5 (truncated...)\n at /home/jiminny/vendor/hubspot/hubspot-php/src/Exceptions/HubspotException.php:24)\n[stacktrace]\n#0 /home/jiminny/vendor/hubspot/hubspot-php/src/Http/Client.php(125): SevenShores\\\\Hubspot\\\\Exceptions\\\\HubspotException::create(Object(GuzzleHttp\\\\Exception\\\\ClientException))\n#1 /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php(163): SevenShores\\\\Hubspot\\\\Http\\\\Client->request('POST', 'https://api.hub...', Array)\n#2 /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php(51): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->executeSearchRequest(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), 'https://api.hub...', Array, Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\PaginationState))\n#3 /home/jiminny/app/Services/Crm/Hubspot/Client.php(194): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->getPaginatedDataGenerator(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), Array, 'contact', 0, 0, NULL)\n#4 /home/jiminny/app/Services/Crm/Hubspot/Client.php(175): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client->getPaginatedDataGenerator(Array, 'contact', 0, 0, NULL)\n#5 /home/jiminny/app/Services/Crm/Hubspot/Service.php(1203): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client->getPaginatedData(Array, 'contact')\n#6 /home/jiminny/app/Console/Commands/JiminnyDebugCommand.php(353): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service->matchByName('Robot')\n#7 /home/jiminny/app/Console/Commands/JiminnyDebugCommand.php(44): Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand->rateLimit()\n#8 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand->handle(Object(Jiminny\\\\Jobs\\\\JobDispatcher), Object(Jiminny\\\\Services\\\\Kiosk\\\\AutomatedReports\\\\AutomatedReportsService), Object(Jiminny\\\\Repositories\\\\AutomatedReportsRepository), Object(Jiminny\\\\Services\\\\UserPilot\\\\UserPilotClient))\n#9 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#10 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#11 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#12 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#13 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(211): Illuminate\\\\Container\\\\Container->call(Array)\n#14 /home/jiminny/vendor/symfony/console/Command/Command.php(341): Illuminate\\\\Console\\\\Command->execute(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#15 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(180): Symfony\\\\Component\\\\Console\\\\Command\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#16 /home/jiminny/vendor/symfony/console/Application.php(1117): Illuminate\\\\Console\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#17 /home/jiminny/vendor/symfony/console/Application.php(356): Symfony\\\\Component\\\\Console\\\\Application->doRunCommand(Object(Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand), Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#18 /home/jiminny/vendor/symfony/console/Application.php(195): Symfony\\\\Component\\\\Console\\\\Application->doRun(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#19 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(198): Symfony\\\\Component\\\\Console\\\\Application->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#20 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1235): Illuminate\\\\Foundation\\\\Console\\\\Kernel->handle(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#21 /home/jiminny/artisan(13): Illuminate\\\\Foundation\\\\Application->handleCommand(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput))\n#22 {main}\n\n[previous exception] [object] (GuzzleHttp\\\\Exception\\\\ClientException(code: 429): Client error: `POST https://api.hubapi.com/crm/v3/objects/contact/search` resulted in a `429 Too Many Requests` response:\n{\\\"status\\\":\\\"error\\\",\\\"message\\\":\\\"You have reached your secondly limit.\\\",\\\"errorType\\\":\\\"RATE_LIMIT\\\",\\\"correlationId\\\":\\\"019e0284-5 (truncated...)\n at /home/jiminny/vendor/guzzlehttp/guzzle/src/Exception/RequestException.php:111)\n[stacktrace]\n#0 /home/jiminny/vendor/guzzlehttp/guzzle/src/Middleware.php(72): GuzzleHttp\\\\Exception\\\\RequestException::create(Object(GuzzleHttp\\\\Psr7\\\\Request), Object(GuzzleHttp\\\\Psr7\\\\Response), NULL, Array, NULL)\n#1 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(209): GuzzleHttp\\\\Middleware::GuzzleHttp\\\\{closure}(Object(GuzzleHttp\\\\Psr7\\\\Response))\n#2 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(158): GuzzleHttp\\\\Promise\\\\Promise::callHandler(1, Object(GuzzleHttp\\\\Psr7\\\\Response), NULL)\n#3 /home/jiminny/vendor/guzzlehttp/promises/src/TaskQueue.php(52): GuzzleHttp\\\\Promise\\\\Promise::GuzzleHttp\\\\Promise\\\\{closure}()\n#4 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(251): GuzzleHttp\\\\Promise\\\\TaskQueue->run(true)\n#5 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(227): GuzzleHttp\\\\Promise\\\\Promise->invokeWaitFn()\n#6 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(272): GuzzleHttp\\\\Promise\\\\Promise->waitIfPending()\n#7 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(229): GuzzleHttp\\\\Promise\\\\Promise->invokeWaitList()\n#8 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(69): GuzzleHttp\\\\Promise\\\\Promise->waitIfPending()\n#9 /home/jiminny/vendor/guzzlehttp/guzzle/src/Client.php(189): GuzzleHttp\\\\Promise\\\\Promise->wait()\n#10 /home/jiminny/vendor/hubspot/hubspot-php/src/Http/Client.php(113): GuzzleHttp\\\\Client->request('POST', 'https://api.hub...', Array)\n#11 /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php(163): SevenShores\\\\Hubspot\\\\Http\\\\Client->request('POST', 'https://api.hub...', Array)\n#12 /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php(51): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->executeSearchRequest(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), 'https://api.hub...', Array, Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\PaginationState))\n#13 /home/jiminny/app/Services/Crm/Hubspot/Client.php(194): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->getPaginatedDataGenerator(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), Array, 'contact', 0, 0, NULL)\n#14 /home/jiminny/app/Services/Crm/Hubspot/Client.php(175): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client->getPaginatedDataGenerator(Array, 'contact', 0, 0, NULL)\n#15 /home/jiminny/app/Services/Crm/Hubspot/Service.php(1203): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client->getPaginatedData(Array, 'contact')\n#16 /home/jiminny/app/Console/Commands/JiminnyDebugCommand.php(353): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service->matchByName('Robot')\n#17 /home/jiminny/app/Console/Commands/JiminnyDebugCommand.php(44): Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand->rateLimit()\n#18 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand->handle(Object(Jiminny\\\\Jobs\\\\JobDispatcher), Object(Jiminny\\\\Services\\\\Kiosk\\\\AutomatedReports\\\\AutomatedReportsService), Object(Jiminny\\\\Repositories\\\\AutomatedReportsRepository), Object(Jiminny\\\\Services\\\\UserPilot\\\\UserPilotClient))\n#19 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#20 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#21 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#22 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#23 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(211): Illuminate\\\\Container\\\\Container->call(Array)\n#24 /home/jiminny/vendor/symfony/console/Command/Command.php(341): Illuminate\\\\Console\\\\Command->execute(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#25 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(180): Symfony\\\\Component\\\\Console\\\\Command\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#26 /home/jiminny/vendor/symfony/console/Application.php(1117): Illuminate\\\\Console\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#27 /home/jiminny/vendor/symfony/console/Application.php(356): Symfony\\\\Component\\\\Console\\\\Application->doRunCommand(Object(Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand), Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#28 /home/jiminny/vendor/symfony/console/Application.php(195): Symfony\\\\Component\\\\Console\\\\Application->doRun(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#29 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(198): Symfony\\\\Component\\\\Console\\\\Application->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#30 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1235): Illuminate\\\\Foundation\\\\Console\\\\Kernel->handle(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#31 /home/jiminny/artisan(13): Illuminate\\\\Foundation\\\\Application->handleCommand(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput))\n#32 {main}\n\"} {\"correlation_id\":\"a9e2de8b-b538-437e-bbe7-82636da81995\",\"trace_id\":\"e517ae80-e149-490c-b719-309e898b3c93\"}\n[2026-05-07 12:58:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"fb59e309-d2cc-4fe0-9db2-544112c25477\",\"trace_id\":\"28ccdd4f-bf3a-4545-bc8a-d94188f8204f\"}\n[2026-05-07 12:58:10] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"fb59e309-d2cc-4fe0-9db2-544112c25477\",\"trace_id\":\"28ccdd4f-bf3a-4545-bc8a-d94188f8204f\"}\n[2026-05-07 12:58:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"fb59e309-d2cc-4fe0-9db2-544112c25477\",\"trace_id\":\"28ccdd4f-bf3a-4545-bc8a-d94188f8204f\"}\n[2026-05-07 12:58:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"bff14f9f-db1d-4b6c-bd92-ca810b31790a\",\"trace_id\":\"ed08145b-94b8-4585-8e81-0ad478d038dc\"}\n[2026-05-07 12:58:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"bff14f9f-db1d-4b6c-bd92-ca810b31790a\",\"trace_id\":\"ed08145b-94b8-4585-8e81-0ad478d038dc\"}\n[2026-05-07 12:58:16] local.NOTICE: Monitoring start {\"correlation_id\":\"54ed6493-c74e-4491-b2ff-9404528f1525\",\"trace_id\":\"9a1f78c0-6e74-482c-a091-8367df3d0f70\"}\n[2026-05-07 12:58:16] local.NOTICE: Monitoring end {\"correlation_id\":\"54ed6493-c74e-4491-b2ff-9404528f1525\",\"trace_id\":\"9a1f78c0-6e74-482c-a091-8367df3d0f70\"}\n[2026-05-07 12:58:24] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"7f141a32-060d-4123-bf20-8a8d7abc1482\",\"trace_id\":\"f7fdcb6b-932a-4f6b-ad95-f111628d6cf7\"}\n[2026-05-07 12:58:24] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"7f141a32-060d-4123-bf20-8a8d7abc1482\",\"trace_id\":\"f7fdcb6b-932a-4f6b-ad95-f111628d6cf7\"}\n[2026-05-07 12:58:36] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"f586fc15-711b-4199-8fdf-dcd2df95af0c\",\"trace_id\":\"828fb459-3b7f-4196-a690-12fc9ce99b1d\"}\n[2026-05-07 12:58:36] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"f586fc15-711b-4199-8fdf-dcd2df95af0c\",\"trace_id\":\"828fb459-3b7f-4196-a690-12fc9ce99b1d\"}\n[2026-05-07 12:58:37] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"f586fc15-711b-4199-8fdf-dcd2df95af0c\",\"trace_id\":\"828fb459-3b7f-4196-a690-12fc9ce99b1d\"}\n[2026-05-07 12:58:37] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"f586fc15-711b-4199-8fdf-dcd2df95af0c\",\"trace_id\":\"828fb459-3b7f-4196-a690-12fc9ce99b1d\"}\n[2026-05-07 12:58:40] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"01d4e25d-56d5-4c89-bc29-d873e21cc16f\",\"trace_id\":\"ee1fe1ac-362b-47c1-9db2-7915a30cf0f2\"}\n[2026-05-07 12:58:40] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:56:00, 2026-05-07 12:58:00] {\"correlation_id\":\"01d4e25d-56d5-4c89-bc29-d873e21cc16f\",\"trace_id\":\"ee1fe1ac-362b-47c1-9db2-7915a30cf0f2\"}\n[2026-05-07 12:58:40] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:56:00, 2026-05-07 12:58:00] {\"correlation_id\":\"01d4e25d-56d5-4c89-bc29-d873e21cc16f\",\"trace_id\":\"ee1fe1ac-362b-47c1-9db2-7915a30cf0f2\"}\n[2026-05-07 12:58:40] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"01d4e25d-56d5-4c89-bc29-d873e21cc16f\",\"trace_id\":\"ee1fe1ac-362b-47c1-9db2-7915a30cf0f2\"}\n[2026-05-07 12:58:48] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"924e149e-3462-4043-87da-00838220b970\",\"trace_id\":\"7d0922db-8131-4a52-a0c5-2a7a78df42e8\"}\n[2026-05-07 12:58:48] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"calendar:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:48] local.NOTICE: Calendar sync start {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:48] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"924e149e-3462-4043-87da-00838220b970\",\"trace_id\":\"7d0922db-8131-4a52-a0c5-2a7a78df42e8\"}\n[2026-05-07 12:58:49] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1393,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:49] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1393,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:49] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:49] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1393,\"provider\":\"google\",\"refreshToken\":\"5aa7e2d96b53201cd16fca5d2e4ef3ad03320971fc064781d18aee3ae7b99fbf\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1393,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Account has been deleted\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1393,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1387,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1387,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1387,\"provider\":\"google\",\"refreshToken\":\"8157ac6de94842937194009e9c50e459253600f799dacf6a40755ffdbeb5bba6\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1387,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Account has been deleted\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1387,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1348,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1348,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1348,\"provider\":\"google\",\"refreshToken\":\"9e7d13d3032d0cb1b79d8e95aef01383e8e91eb52ff8ee960c8a0b6b95cd8c73\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1348,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Bad Request\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1348,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1361,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1361,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1361,\"provider\":\"google\",\"refreshToken\":\"6c843da199c2b9907445329304fcc4ec5057a4ee748d8299641764395c08e1fd\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1361,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Account has been deleted\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1361,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1310,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1310,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1310,\"provider\":\"google\",\"refreshToken\":\"e34818922c2830a660813a63f6169a4a9a992ae2cccd7dc8dd7796cfdb470ef1\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1310,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Bad Request\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1310,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1333,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1333,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1333,\"provider\":\"google\",\"refreshToken\":\"6c902986546d8e8da1dc539b046cdc1d458f519acc972e5b5f1d6a1a295165e0\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1333,\"provider\":\"google\",\"responseBody\":{\"error\":\"unauthorized_client\",\"error_description\":\"Unauthorized\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1333,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1368,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1368,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1368,\"provider\":\"google\",\"refreshToken\":\"d2f128898ff8543bd16b69cfae37896ab85119b0f5ed2b431d739593bb600333\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1368,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Bad Request\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1368,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1365,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1365,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1365,\"provider\":\"google\",\"refreshToken\":\"7676e4a9afcd082b413248ab5ec6e487021fec6a9bdf315860a59cefad9caad8\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1365,\"provider\":\"google\",\"responseBody\":{\"error\":\"unauthorized_client\",\"error_description\":\"Unauthorized\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1365,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1364,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1364,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1364,\"provider\":\"google\",\"refreshToken\":\"dd5882ebce76e645292ce33ae74238abbb77c0a4ecc6a2bfe723cad82e72ba8e\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1364,\"provider\":\"google\",\"responseBody\":{\"error\":\"unauthorized_client\",\"error_description\":\"Unauthorized\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1364,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1370,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1370,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1370,\"provider\":\"office\",\"refreshToken\":\"b7ee8035306d0043cea6e00e7c4fe14f745e44074a1194db62a31cdf8b70af3e\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1370,\"provider\":\"office\",\"responseBody\":\"{\\\"error\\\":\\\"invalid_client\\\",\\\"error_description\\\":\\\"AADSTS7000215: Invalid client secret provided. Ensure the secret being sent in the request is the client secret value, not the client secret ID, for a secret added to app 'bbcbb2ef-6200-4fae-82bd-d81f5dd738da'. Trace ID: ef9bb388-453e-4744-a2e1-95e49ced1700 Correlation ID: 3b889c73-f943-4048-ba3b-63ac50581245 Timestamp: 2026-05-07 12:58:53Z\\\",\\\"error_codes\\\":[7000215],\\\"timestamp\\\":\\\"2026-05-07 12:58:53Z\\\",\\\"trace_id\\\":\\\"ef9bb388-453e-4744-a2e1-95e49ced1700\\\",\\\"correlation_id\\\":\\\"3b889c73-f943-4048-ba3b-63ac50581245\\\",\\\"error_uri\\\":\\\"https://login.microsoftonline.com/error?code=7000215\\\"}\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1370,\"provider\":\"office\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1202,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1202,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1202,\"provider\":\"office\",\"refreshToken\":\"b458799ccc29b21a6e2eb5260fdb63e49ccba21bf942a3973fb63799bd7f0afe\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1202,\"provider\":\"office\",\"responseBody\":\"{\\\"error\\\":\\\"invalid_client\\\",\\\"error_description\\\":\\\"AADSTS7000215: Invalid client secret provided. Ensure the secret being sent in the request is the client secret value, not the client secret ID, for a secret added to app 'bbcbb2ef-6200-4fae-82bd-d81f5dd738da'. Trace ID: 0b8181c0-c858-4d17-af69-c23b7f5a0a00 Correlation ID: 2ce9e931-f423-4048-b1d7-ae1910cd4834 Timestamp: 2026-05-07 12:58:54Z\\\",\\\"error_codes\\\":[7000215],\\\"timestamp\\\":\\\"2026-05-07 12:58:54Z\\\",\\\"trace_id\\\":\\\"0b8181c0-c858-4d17-af69-c23b7f5a0a00\\\",\\\"correlation_id\\\":\\\"2ce9e931-f423-4048-b1d7-ae1910cd4834\\\",\\\"error_uri\\\":\\\"https://login.microsoftonline.com/error?code=7000215\\\"}\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1202,\"provider\":\"office\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1502,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1502,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: Calendar sync job dispatched {\"calendar_id\":501} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1300,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1300,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1300,\"provider\":\"google\",\"refreshToken\":\"4b811db0725fd9602a95943519a7da935e2a5065da7d9ebfcb170752e3e1ddb8\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1300,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Account has been deleted\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1300,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1409,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1409,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1409,\"provider\":\"google\",\"refreshToken\":\"e2a3f2d06894894eed1ee87d9db1ace77d4d42ee6e1288a8940ad2c10333b0c4\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1409,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Bad Request\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1409,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1352,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1352,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1352,\"provider\":\"google\",\"refreshToken\":\"dd4b16b00fdc1216da6b717c02338c073636e29162826b2de6db3f064fc029eb\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1352,\"provider\":\"google\",\"responseBody\":{\"error\":\"unauthorized_client\",\"error_description\":\"Unauthorized\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1352,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1296,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1296,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1296,\"provider\":\"office\",\"refreshToken\":\"011ae723c9d800c674e0b4be76f49fc046dac7d501b66c59ef0d9549cfa56ae5\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1296,\"provider\":\"office\",\"responseBody\":\"{\\\"error\\\":\\\"invalid_client\\\",\\\"error_description\\\":\\\"AADSTS7000215: Invalid client secret provided. Ensure the secret being sent in the request is the client secret value, not the client secret ID, for a secret added to app 'bbcbb2ef-6200-4fae-82bd-d81f5dd738da'. Trace ID: 4f38b1ca-479e-445c-8db5-29366d0a0c00 Correlation ID: d0a4d623-1a23-4fcc-aebf-ccafeed44a92 Timestamp: 2026-05-07 12:58:56Z\\\",\\\"error_codes\\\":[7000215],\\\"timestamp\\\":\\\"2026-05-07 12:58:56Z\\\",\\\"trace_id\\\":\\\"4f38b1ca-479e-445c-8db5-29366d0a0c00\\\",\\\"correlation_id\\\":\\\"d0a4d623-1a23-4fcc-aebf-ccafeed44a92\\\",\\\"error_uri\\\":\\\"https://login.microsoftonline.com/error?code=7000215\\\"}\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1296,\"provider\":\"office\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":391,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":391,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":391,\"provider\":\"office\",\"refreshToken\":\"00045eebae0f39b34887c6d53f92ae78064f7145e1f4b67754aebd03cfb2d881\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1502,\"provider\":\"google\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1502,\"provider\":\"google\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [Calendar] Processing sync {\"calendarId\":\"a33076c1-8d97-431a-99f0-85c9524e118b\",\"from\":null,\"to\":null,\"delta\":\"CIiFh8TP44kDEIiFh8TP44kDGAUgkZvkzgIokZvkzgI=\",\"last_sync\":\"2024-12-09 07:12:53\",\"dateMode\":\"daily\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"integration-app\",\"crm_owner\":1695,\"team_id\":3143} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1502,\"provider\":\"google\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1502,\"provider\":\"google\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":391,\"provider\":\"office\",\"responseBody\":\"{\\\"error\\\":\\\"invalid_client\\\",\\\"error_description\\\":\\\"AADSTS7000215: Invalid client secret provided. Ensure the secret being sent in the request is the client secret value, not the client secret ID, for a secret added to app 'bbcbb2ef-6200-4fae-82bd-d81f5dd738da'. Trace ID: 1791a948-a974-424b-9246-7fedfa913b00 Correlation ID: b0e7bf62-d69e-49dd-b7c9-9550f0bd2aec Timestamp: 2026-05-07 12:58:56Z\\\",\\\"error_codes\\\":[7000215],\\\"timestamp\\\":\\\"2026-05-07 12:58:56Z\\\",\\\"trace_id\\\":\\\"1791a948-a974-424b-9246-7fedfa913b00\\\",\\\"correlation_id\\\":\\\"b0e7bf62-d69e-49dd-b7c9-9550f0bd2aec\\\",\\\"error_uri\\\":\\\"https://login.microsoftonline.com/error?code=7000215\\\"}\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":391,\"provider\":\"office\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1271,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1271,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1271,\"provider\":\"office\",\"refreshToken\":\"118cde2c06993147b07ccaec4cbcd5026a819dea6c71081166a492933e392afb\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [Google Calendar] Failed to watch channel for calendar {\"calendarId\":\"a33076c1-8d97-431a-99f0-85c9524e118b\",\"code\":400,\"reason\":\"{\n \\\"error\\\": {\n \\\"errors\\\": [\n {\n \\\"domain\\\": \\\"global\\\",\n \\\"reason\\\": \\\"push.webhookUrlNotHttps\\\",\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n ],\n \\\"code\\\": 400,\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n}\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.WARNING: [Calendar] Sync failed {\"calendarId\":\"a33076c1-8d97-431a-99f0-85c9524e118b\",\"code\":400,\"reason\":\"{\n \\\"error\\\": {\n \\\"errors\\\": [\n {\n \\\"domain\\\": \\\"global\\\",\n \\\"reason\\\": \\\"push.webhookUrlNotHttps\\\",\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n ],\n \\\"code\\\": 400,\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n}\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1271,\"provider\":\"office\",\"responseBody\":\"{\\\"error\\\":\\\"invalid_client\\\",\\\"error_description\\\":\\\"AADSTS7000215: Invalid client secret provided. Ensure the secret being sent in the request is the client secret value, not the client secret ID, for a secret added to app 'bbcbb2ef-6200-4fae-82bd-d81f5dd738da'. Trace ID: 2be27598-8820-475c-b6ca-a30513720c00 Correlation ID: d3ed2a98-4aa9-4a63-819b-d36fd20b8d62 Timestamp: 2026-05-07 12:58:57Z\\\",\\\"error_codes\\\":[7000215],\\\"timestamp\\\":\\\"2026-05-07 12:58:57Z\\\",\\\"trace_id\\\":\\\"2be27598-8820-475c-b6ca-a30513720c00\\\",\\\"correlation_id\\\":\\\"d3ed2a98-4aa9-4a63-819b-d36fd20b8d62\\\",\\\"error_uri\\\":\\\"https://login.microsoftonline.com/error?code=7000215\\\"}\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1271,\"provider\":\"office\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1351,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1351,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1351,\"provider\":\"google\",\"refreshToken\":\"4271d15b9e60a606439caddc68337f783e472c85b03dacff14d1b6dfded9051c\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1351,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Bad Request\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1351,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1366,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1366,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1366,\"provider\":\"google\",\"refreshToken\":\"ae21385059b2eebfd43f68aecd56eccd702a1aabb6598f1f7ab594ed8af491b4\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1366,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Bad Request\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1366,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1115,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1115,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: Calendar sync job dispatched {\"calendar_id\":378} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:58] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1421,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:58] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1421,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:58] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:58] local.INFO: Calendar sync job dispatched {\"calendar_id\":504} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:58] local.NOTICE: Calendar sync end {\"retrieved_calendars\":31,\"processed_calendars\":3} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:58] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"calendar:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1115,\"provider\":\"google\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1115,\"provider\":\"google\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [Calendar] Processing sync {\"calendarId\":\"2676cb6d-f86c-427e-bf78-591e388e3c1e\",\"from\":null,\"to\":null,\"delta\":\"CJ_x49O3jpIDEJ_x49O3jpIDGAUgw67KlwMow67KlwM=\",\"last_sync\":\"2026-01-19 07:48:40\",\"dateMode\":\"daily\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.WARNING: [Pipedrive] Account not connected for user {\"userId\":\"e6538737-e7b4-455f-a37a-3e79b665a220\",\"account\":{\"Jiminny\\\\Models\\\\SocialAccount\":{\"id\":1116,\"sociable_id\":241,\"provider_user_id\":\"19555731\",\"expires\":1775683749,\"refresh_token_expires\":null,\"provider\":\"pipedrive\",\"state\":\"full-refresh\",\"auth_scope\":\"base,deals:full,activities:full,contacts:full,search:read\",\"retry_after\":null,\"created_at\":\"2023-09-08 09:44:29\",\"updated_at\":\"2026-04-08 22:58:34\"}}} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {\"crm_provider\":\"pipedrive\",\"crm_owner\":241,\"team_id\":19} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {\"crm_provider\":\"pipedrive\",\"team_id\":19} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {\"crm_provider\":\"pipedrive\",\"team_id\":19} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.WARNING: [Calendar] CRM disconnected for user so events will not be matched {\"provider\":\"pipedrive\",\"user_id\":241,\"message\":\"Your Pipedrive account has become disconnected. Please login to Jiminny to reconnect.\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1115,\"provider\":\"google\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1115,\"provider\":\"google\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [Google Calendar] Failed to watch channel for calendar {\"calendarId\":\"2676cb6d-f86c-427e-bf78-591e388e3c1e\",\"code\":400,\"reason\":\"{\n \\\"error\\\": {\n \\\"errors\\\": [\n {\n \\\"domain\\\": \\\"global\\\",\n \\\"reason\\\": \\\"push.webhookUrlNotHttps\\\",\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n ],\n \\\"code\\\": 400,\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n}\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.WARNING: [Calendar] Sync failed {\"calendarId\":\"2676cb6d-f86c-427e-bf78-591e388e3c1e\",\"code\":400,\"reason\":\"{\n \\\"error\\\": {\n \\\"errors\\\": [\n {\n \\\"domain\\\": \\\"global\\\",\n \\\"reason\\\": \\\"push.webhookUrlNotHttps\\\",\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n ],\n \\\"code\\\": 400,\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n}\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1421,\"provider\":\"office\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1421,\"provider\":\"office\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [Calendar] Processing sync {\"calendarId\":\"9e8b1a2c-1a8f-42bd-b161-810fc0baf540\",\"from\":null,\"to\":null,\"delta\":\"R0usmcdvmMuZCBYV0hguCHhwR3crxfEuMI8zGlf-bMYpCFtdxXvSJWTlnqQvu_jjoOrOYL2VG9rZwFHCERHxGfGEK3CmQX6x8MJG3ZbBXGuVIS6C7u-doY5maMRdsfnrHIAEMJd4Bs_WMfMH4tDJ8j9aul7DHDEJaP7w0PoPPpcoxu4nEk4vk-MolJBEgkSrayEewuBs5JVItUX9lUY2tA.yO2roNQ4Vdm6hBgoutuphGchuzbvsk7aqt5wHfcyeFQ\",\"last_sync\":\"2026-05-06 15:58:35\",\"dateMode\":\"daily\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":89,\"team_id\":2} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [MS Office Calendar] Skipping delta sync for daily mode {\"calendarId\":\"9e8b1a2c-1a8f-42bd-b161-810fc0baf540\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:59:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"cb5f9d32-02db-4883-a5c9-a5b86c1a2fbb\",\"trace_id\":\"4fb8a9a0-53b1-414a-813d-a259b89f3203\"}\n[2026-05-07 12:59:06] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"cb5f9d32-02db-4883-a5c9-a5b86c1a2fbb\",\"trace_id\":\"4fb8a9a0-53b1-414a-813d-a259b89f3203\"}\n[2026-05-07 12:59:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"cb5f9d32-02db-4883-a5c9-a5b86c1a2fbb\",\"trace_id\":\"4fb8a9a0-53b1-414a-813d-a259b89f3203\"}\n[2026-05-07 12:59:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"64313a2b-3a92-4419-ae59-caabfc9e9731\",\"trace_id\":\"16443bac-2196-4257-88bc-59445729f276\"}\n[2026-05-07 12:59:09] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"64313a2b-3a92-4419-ae59-caabfc9e9731\",\"trace_id\":\"16443bac-2196-4257-88bc-59445729f276\"}\n[2026-05-07 12:59:11] local.NOTICE: Monitoring start {\"correlation_id\":\"7678c2ca-049f-44e4-acce-2e711f8d7d40\",\"trace_id\":\"54ef3d3c-f1ea-4a01-aed2-db19a6739a06\"}\n[2026-05-07 12:59:11] local.NOTICE: Monitoring end {\"correlation_id\":\"7678c2ca-049f-44e4-acce-2e711f8d7d40\",\"trace_id\":\"54ef3d3c-f1ea-4a01-aed2-db19a6739a06\"}\n[2026-05-07 12:59:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"44d7c1a1-dfc9-4401-9f63-ad8b5bff9942\",\"trace_id\":\"9f6f5f38-60f5-4869-bfd2-f366d52eaa00\"}\n[2026-05-07 12:59:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"44d7c1a1-dfc9-4401-9f63-ad8b5bff9942\",\"trace_id\":\"9f6f5f38-60f5-4869-bfd2-f366d52eaa00\"}\n[2026-05-07 12:59:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"f90f3b8c-5161-4963-a963-a40284567af1\",\"trace_id\":\"94731c50-8ce2-44ec-ace6-2d46fb00fdb1\"}\n[2026-05-07 12:59:15] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"f90f3b8c-5161-4963-a963-a40284567af1\",\"trace_id\":\"94731c50-8ce2-44ec-ace6-2d46fb00fdb1\"}\n[2026-05-07 12:59:15] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"f90f3b8c-5161-4963-a963-a40284567af1\",\"trace_id\":\"94731c50-8ce2-44ec-ace6-2d46fb00fdb1\"}\n[2026-05-07 12:59:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"f90f3b8c-5161-4963-a963-a40284567af1\",\"trace_id\":\"94731c50-8ce2-44ec-ace6-2d46fb00fdb1\"}\n[2026-05-07 13:00:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"6f98d5e3-0aa8-496e-853a-a77b7a8b74ec\",\"trace_id\":\"b63e8546-4347-49f0-ad1a-92f4e4504843\"}\n[2026-05-07 13:00:10] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"6f98d5e3-0aa8-496e-853a-a77b7a8b74ec\",\"trace_id\":\"b63e8546-4347-49f0-ad1a-92f4e4504843\"}\n[2026-05-07 13:00:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"6f98d5e3-0aa8-496e-853a-a77b7a8b74ec\",\"trace_id\":\"b63e8546-4347-49f0-ad1a-92f4e4504843\"}\n[2026-05-07 13:00:13] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"50260ccd-f119-47b0-baee-514de27801f2\",\"trace_id\":\"40e651df-62f6-4c3a-83ab-842112ec3ece\"}\n[2026-05-07 13:00:13] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"50260ccd-f119-47b0-baee-514de27801f2\",\"trace_id\":\"40e651df-62f6-4c3a-83ab-842112ec3ece\"}\n[2026-05-07 13:00:17] local.NOTICE: Monitoring start {\"correlation_id\":\"f6104856-aca3-4e7b-964e-bba66d730eb3\",\"trace_id\":\"98f34b7b-f715-49cb-8d3a-4e74c1118445\"}\n[2026-05-07 13:00:17] local.NOTICE: Monitoring end {\"correlation_id\":\"f6104856-aca3-4e7b-964e-bba66d730eb3\",\"trace_id\":\"98f34b7b-f715-49cb-8d3a-4e74c1118445\"}\n[2026-05-07 13:00:19] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"b4a9e9a2-968c-429b-8fa8-67dd59bb297f\",\"trace_id\":\"ed6a83d0-8edb-4392-8717-26d91ffde80b\"}\n[2026-05-07 13:00:19] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"b4a9e9a2-968c-429b-8fa8-67dd59bb297f\",\"trace_id\":\"ed6a83d0-8edb-4392-8717-26d91ffde80b\"}\n[2026-05-07 13:00:21] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"b11474b2-8b19-4a2f-89c3-621fde9d3b1f\",\"trace_id\":\"8018d825-0809-411b-9b2a-078e2da6bacb\"}\n[2026-05-07 13:00:21] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"b11474b2-8b19-4a2f-89c3-621fde9d3b1f\",\"trace_id\":\"8018d825-0809-411b-9b2a-078e2da6bacb\"}\n[2026-05-07 13:00:21] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"b11474b2-8b19-4a2f-89c3-621fde9d3b1f\",\"trace_id\":\"8018d825-0809-411b-9b2a-078e2da6bacb\"}\n[2026-05-07 13:00:21] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"b11474b2-8b19-4a2f-89c3-621fde9d3b1f\",\"trace_id\":\"8018d825-0809-411b-9b2a-078e2da6bacb\"}\n[2026-05-07 13:00:23] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"d3b79f58-f9c8-4063-ac7e-7a0445cd1111\",\"trace_id\":\"802cf505-95fb-4f92-8c1b-79aa3ac53084\"}\n[2026-05-07 13:00:23] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:58:00, 2026-05-07 13:00:00] {\"correlation_id\":\"d3b79f58-f9c8-4063-ac7e-7a0445cd1111\",\"trace_id\":\"802cf505-95fb-4f92-8c1b-79aa3ac53084\"}\n[2026-05-07 13:00:23] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:58:00, 2026-05-07 13:00:00] {\"correlation_id\":\"d3b79f58-f9c8-4063-ac7e-7a0445cd1111\",\"trace_id\":\"802cf505-95fb-4f92-8c1b-79aa3ac53084\"}\n[2026-05-07 13:00:23] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"d3b79f58-f9c8-4063-ac7e-7a0445cd1111\",\"trace_id\":\"802cf505-95fb-4f92-8c1b-79aa3ac53084\"}\n[2026-05-07 13:00:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:purge-stale\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"32bad9c1-861c-4a46-bece-585cc1170bfd\",\"trace_id\":\"0c20e20f-6a91-4346-9455-5cd1451c32a1\"}\n[2026-05-07 13:00:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:purge-stale\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"32bad9c1-861c-4a46-bece-585cc1170bfd\",\"trace_id\":\"0c20e20f-6a91-4346-9455-5cd1451c32a1\"}\n[2026-05-07 13:00:29] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:text-relay:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"c9d4f687-1643-431e-9377-2573a2e593fd\",\"trace_id\":\"02fab433-9c9a-49f7-b836-2b8a42551912\"}\n[2026-05-07 13:00:30] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:text-relay:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"c9d4f687-1643-431e-9377-2573a2e593fd\",\"trace_id\":\"02fab433-9c9a-49f7-b836-2b8a42551912\"}\n[2026-05-07 13:00:33] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:pre-meeting-notification\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"57870bb4-45e8-47d8-b192-21d3297d2208\",\"trace_id\":\"ba8e9eac-2dc9-4ed8-bbf1-4a35aedb9efb\"}\n[2026-05-07 13:00:33] local.INFO: Running pre-meeting notification command {\"correlation_id\":\"57870bb4-45e8-47d8-b192-21d3297d2208\",\"trace_id\":\"ba8e9eac-2dc9-4ed8-bbf1-4a35aedb9efb\"}\n[2026-05-07 13:00:33] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:pre-meeting-notification\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"57870bb4-45e8-47d8-b192-21d3297d2208\",\"trace_id\":\"ba8e9eac-2dc9-4ed8-bbf1-4a35aedb9efb\"}\n[2026-05-07 13:00:35] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:start\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"6aeb181b-8314-4d45-aff7-e378793b04d9\",\"trace_id\":\"8ffc66f1-af64-4a58-8ce8-481b3a299dbb\"}\n[2026-05-07 13:00:35] local.INFO: Running conference:monitor:start command for activities in (2026-05-07 12:50:00, 2026-05-07 12:55:00] {\"correlation_id\":\"6aeb181b-8314-4d45-aff7-e378793b04d9\",\"trace_id\":\"8ffc66f1-af64-4a58-8ce8-481b3a299dbb\"}\n[2026-05-07 13:00:35] local.INFO: [conference:monitor:start] No activities found in (2026-05-07 12:50:00, 2026-05-07 12:55:00] {\"correlation_id\":\"6aeb181b-8314-4d45-aff7-e378793b04d9\",\"trace_id\":\"8ffc66f1-af64-4a58-8ce8-481b3a299dbb\"}\n[2026-05-07 13:00:35] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:start\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"6aeb181b-8314-4d45-aff7-e378793b04d9\",\"trace_id\":\"8ffc66f1-af64-4a58-8ce8-481b3a299dbb\"}\n[2026-05-07 13:00:37] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:end\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"888d4f67-ad14-4457-b51d-2cf8b2d315f9\",\"trace_id\":\"eaf4b0b3-0414-4563-b227-ce9c6a2e5b7e\"}\n[2026-05-07 13:00:37] local.INFO: conference:monitor:end:Jiminny\\Console\\Commands\\Activities\\MonitorMeetingEndCommand::logActivitiesEnded {\"from\":\"12:55\",\"to\":\"13:00\"} {\"correlation_id\":\"888d4f67-ad14-4457-b51d-2cf8b2d315f9\",\"trace_id\":\"eaf4b0b3-0414-4563-b227-ce9c6a2e5b7e\"}\n[2026-05-07 13:00:37] local.INFO: conference:monitor:end:Jiminny\\Console\\Commands\\Activities\\MonitorMeetingEndCommand::logActivitiesWithUnfinishedSession {\"from\":\"02:50\",\"to\":\"02:55\"} {\"correlation_id\":\"888d4f67-ad14-4457-b51d-2cf8b2d315f9\",\"trace_id\":\"eaf4b0b3-0414-4563-b227-ce9c6a2e5b7e\"}\n[2026-05-07 13:00:37] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:end\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"888d4f67-ad14-4457-b51d-2cf8b2d315f9\",\"trace_id\":\"eaf4b0b3-0414-4563-b227-ce9c6a2e5b7e\"}\n[2026-05-07 13:00:39] local.NOTICE: Repairing HubSpot tokens start {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:39] local.INFO: Trying to refresh HubSpot token {\"account_id\":59,\"updated_at\":\"2025-10-03 09:32:05\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:39] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:39] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":59,\"provider\":\"hubspot\",\"refreshToken\":\"97b78f6e2cc49965c00c2492b602b02708b1392551e6b3f113fbaa48992af90b\",\"state\":\"full-refresh\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:39] local.ERROR: Failed to refresh HubSpot token {\"account_id\":59,\"updated_at\":\"2025-10-03 09:32:05\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:39] local.INFO: Trying to refresh HubSpot token {\"account_id\":306,\"updated_at\":\"2023-11-27 09:30:03\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:39] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:39] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":306,\"provider\":\"hubspot\",\"refreshToken\":\"6fa6aa8cc641d131231acc3470f5c03cb3b07b2e580fb18f8acb3b1dbb72549b\",\"state\":\"full-refresh\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:40] local.ERROR: Failed to refresh HubSpot token {\"account_id\":306,\"updated_at\":\"2023-11-27 09:30:03\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:40] local.INFO: Trying to refresh HubSpot token {\"account_id\":1372,\"updated_at\":\"2025-10-02 14:47:06\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:40] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:40] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1372,\"provider\":\"hubspot\",\"refreshToken\":\"9aa73948c761da29dce46c177cf9aee1fde483a44169ca38723f9f0597d7a8c4\",\"state\":\"full-refresh\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:40] local.ERROR: Failed to refresh HubSpot token {\"account_id\":1372,\"updated_at\":\"2025-10-02 14:47:06\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:40] local.NOTICE: Repairing HubSpot tokens end {\"total\":3,\"fixed\":0,\"failed\":3} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:45] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"jiminny:transcription:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"b619cc55-b4ef-4913-ab44-6bce51933f7e\",\"trace_id\":\"7cacb418-6e9c-410b-bf3a-15bdf1837908\"}\n[2026-05-07 13:00:45] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:pre-meeting-reminder\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"a765990f-ffe2-44e0-967f-816f5452ce69\",\"trace_id\":\"9aee0f3f-7668-455f-b207-181b58848478\"}\n[2026-05-07 13:00:45] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"jiminny:transcription:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"b619cc55-b4ef-4913-ab44-6bce51933f7e\",\"trace_id\":\"7cacb418-6e9c-410b-bf3a-15bdf1837908\"}\n[2026-05-07 13:00:45] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:45] local.INFO: [HubSpot Journal Command] Starting polling service {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:45] local.INFO: [HubSpot Journal Polling] Service starting {\"memory_limit\":\"256M\",\"max_execution_time\":\"0\",\"initial_memory_mb\":62.0} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:45] local.INFO: [HubSpot Journal Polling] Acquired polling lock {\"expires_at\":\"2026-05-07T13:02:45.724437Z\"} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:45] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:45] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:45] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:pre-meeting-reminder\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"a765990f-ffe2-44e0-967f-816f5452ce69\",\"trace_id\":\"9aee0f3f-7668-455f-b207-181b58848478\"}\n[2026-05-07 13:00:45] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:49] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"crm:reset-governor\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"055b4798-a759-4621-9e0b-652f8ee69ea1\",\"trace_id\":\"10911ef4-48d1-404a-9345-ecf0f5cb9977\"}\n[2026-05-07 13:00:49] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"crm:reset-governor\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"055b4798-a759-4621-9e0b-652f8ee69ea1\",\"trace_id\":\"10911ef4-48d1-404a-9345-ecf0f5cb9977\"}\n[2026-05-07 13:00:51] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:51] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:51] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:53] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:53] local.INFO: Dispatching activity sync job {\"import_id\":812331,\"provider\":\"twilio-flex\",\"team\":\"jiminny\"} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:53] local.INFO: Dispatching activity sync job {\"import_id\":812332,\"provider\":\"xant\",\"team\":\"jiminny\"} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:53] local.INFO: Dispatching activity sync job {\"import_id\":812333,\"provider\":\"apollo\",\"team\":\"jiminny\"} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:53] local.INFO: Dispatching activity sync job {\"import_id\":812334,\"provider\":\"groove\",\"team\":\"jiminny\"} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:53] local.INFO: Dispatching activity sync job {\"import_id\":812335,\"provider\":\"twilio-video\",\"team\":\"jiminny\"} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:53] local.INFO: Dispatching activity sync job {\"import_id\":812336,\"provider\":\"hubspot\",\"team\":\"hubspot\"} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:53] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.WARNING: [Salesforce] Account not connected for user {\"userId\":\"cdf8b554-d951-4758-bc2b-c1b85d1cd0b9\",\"account\":null} {\"correlation_id\":\"fb068e24-e135-4914-9973-94f1a0f5dae2\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {\"crm_provider\":\"salesforce\",\"crm_owner\":3,\"team_id\":1} {\"correlation_id\":\"fb068e24-e135-4914-9973-94f1a0f5dae2\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {\"crm_provider\":\"salesforce\",\"team_id\":1} {\"correlation_id\":\"fb068e24-e135-4914-9973-94f1a0f5dae2\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {\"crm_provider\":\"salesforce\",\"team_id\":1} {\"correlation_id\":\"fb068e24-e135-4914-9973-94f1a0f5dae2\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.ALERT: [SyncActivity] Failed {\"import_id\":812331,\"provider\":\"twilio-flex\",\"provider_id\":317,\"team\":\"jiminny\",\"team_id\":1,\"reason\":\"Social account for Salesforce cannot be found. Please login to Jiminny to connect.\",\"file\":\"/home/jiminny/app/Services/Crm/BaseService.php\",\"line\":646} {\"correlation_id\":\"fb068e24-e135-4914-9973-94f1a0f5dae2\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"fe9470d4-bc5a-4195-919d-e4908e439f7c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"fe9470d4-bc5a-4195-919d-e4908e439f7c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"fe9470d4-bc5a-4195-919d-e4908e439f7c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:56] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:56] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:56] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:56] local.ALERT: [SyncActivity] Failed {\"import_id\":812332,\"provider\":\"xant\",\"provider_id\":161,\"team\":\"jiminny\",\"team_id\":1,\"reason\":\"Activity Provider account not connected.\",\"file\":\"/home/jiminny/app/Services/Activity/ActivityProviderService.php\",\"line\":174} {\"correlation_id\":\"fe9470d4-bc5a-4195-919d-e4908e439f7c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:56] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"e3a8ef92-20c7-4698-a07d-1aa2c21ac82c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:56] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"e3a8ef92-20c7-4698-a07d-1aa2c21ac82c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:56] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"e3a8ef92-20c7-4698-a07d-1aa2c21ac82c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:56] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:fail-stalled\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"441dabbc-0c1f-4d49-871c-08f96adbed01\",\"trace_id\":\"13597461-50ff-4a40-a329-255430126395\"}\n[2026-05-07 13:00:56] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:fail-stalled\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"441dabbc-0c1f-4d49-871c-08f96adbed01\",\"trace_id\":\"13597461-50ff-4a40-a329-255430126395\"}\n[2026-05-07 13:00:57] local.ALERT: [SyncActivity] Failed {\"import_id\":812333,\"provider\":\"apollo\",\"provider_id\":441,\"team\":\"jiminny\",\"team_id\":1,\"reason\":\"Activity Provider account not connected.\",\"file\":\"/home/jiminny/app/Services/Activity/ActivityProviderService.php\",\"line\":174} {\"correlation_id\":\"e3a8ef92-20c7-4698-a07d-1aa2c21ac82c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:57] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"1a0b64ee-3927-48e6-8ae3-fda14f35babb\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:57] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"1a0b64ee-3927-48e6-8ae3-fda14f35babb\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:57] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"1a0b64ee-3927-48e6-8ae3-fda14f35babb\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:57] local.ALERT: [SyncActivity] Failed {\"import_id\":812334,\"provider\":\"groove\",\"provider_id\":228,\"team\":\"jiminny\",\"team_id\":1,\"reason\":\"Activity Provider account not connected.\",\"file\":\"/home/jiminny/app/Services/Activity/ActivityProviderService.php\",\"line\":174} {\"correlation_id\":\"1a0b64ee-3927-48e6-8ae3-fda14f35babb\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:57] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"5e6fecb1-9905-4ab2-a494-e6d8215430c0\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:57] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"5e6fecb1-9905-4ab2-a494-e6d8215430c0\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:57] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"5e6fecb1-9905-4ab2-a494-e6d8215430c0\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.ALERT: [SyncActivity] Failed {\"import_id\":812335,\"provider\":\"twilio-video\",\"provider_id\":243,\"team\":\"jiminny\",\"team_id\":1,\"reason\":\"Activity Provider account not connected.\",\"file\":\"/home/jiminny/app/Services/Activity/ActivityProviderService.php\",\"line\":174} {\"correlation_id\":\"5e6fecb1-9905-4ab2-a494-e6d8215430c0\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":89,\"team_id\":2} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":408,\"provider\":\"hubspot\"} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":408,\"provider\":\"hubspot\"} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [SyncActivity] Start {\"import_id\":812336,\"provider\":\"hubspot\",\"provider_id\":31,\"team\":\"hubspot\",\"team_id\":2} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [HubSpot] Search calls for period {\"from\":\"2026-05-07 12:44:00\",\"to\":\"2026-05-07 13:00:00\"} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [SyncActivity] End {\"import_id\":812336,\"provider\":\"hubspot\",\"provider_id\":31,\"team\":\"hubspot\",\"team_id\":2} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [SyncActivity] Memory usage {\"import_id\":812336,\"provider\":\"hubspot\",\"provider_id\":31,\"team\":\"hubspot\",\"team_id\":2,\"memory_usage\":27230632,\"memory_real_usage\":67108864,\"pid\":37116} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:59] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"jiminny:transcription:retry-stuck\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"1db560c5-5d8c-419a-bfb0-e761473ecf44\",\"trace_id\":\"79eb494e-fd21-4171-b59d-d7d47358f1fb\"}\n[2026-05-07 13:00:59] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"jiminny:transcription:retry-stuck\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"1db560c5-5d8c-419a-bfb0-e761473ecf44\",\"trace_id\":\"79eb494e-fd21-4171-b59d-d7d47358f1fb\"}\n[2026-05-07 13:01:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"73c0e9d6-7ef5-4040-8e35-0a9bb4028abf\",\"trace_id\":\"55b51c26-06b9-4b59-b444-53017b805b30\"}\n[2026-05-07 13:01:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"73c0e9d6-7ef5-4040-8e35-0a9bb4028abf\",\"trace_id\":\"55b51c26-06b9-4b59-b444-53017b805b30\"}\n[2026-05-07 13:01:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"5a7e717c-f314-4601-b1b8-fd550703f463\",\"trace_id\":\"a64281e5-027f-4856-a3e3-4f176c58eb6e\"}\n[2026-05-07 13:01:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"5a7e717c-f314-4601-b1b8-fd550703f463\",\"trace_id\":\"a64281e5-027f-4856-a3e3-4f176c58eb6e\"}\n[2026-05-07 13:01:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"0c425954-2696-4890-97b7-219ccc38cf46\",\"trace_id\":\"d609b364-f3b6-4b85-babb-67caf96efdb1\"}\n[2026-05-07 13:01:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"0c425954-2696-4890-97b7-219ccc38cf46\",\"trace_id\":\"d609b364-f3b6-4b85-babb-67caf96efdb1\"}\n[2026-05-07 13:01:11] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:11] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:11] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"a6bad97b-3db2-4dd6-839f-fcd485f06e65\",\"trace_id\":\"dcdde4a9-962c-46d1-9386-42adb54efbbf\"}\n[2026-05-07 13:01:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"a6bad97b-3db2-4dd6-839f-fcd485f06e65\",\"trace_id\":\"dcdde4a9-962c-46d1-9386-42adb54efbbf\"}\n[2026-05-07 13:01:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"2893478e-8c43-4719-a2e8-7c9c0e0783e9\",\"trace_id\":\"3fc8f1f0-0727-42f1-8ee6-f2b32bd8834b\"}\n[2026-05-07 13:01:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"2893478e-8c43-4719-a2e8-7c9c0e0783e9\",\"trace_id\":\"3fc8f1f0-0727-42f1-8ee6-f2b32bd8834b\"}\n[2026-05-07 13:01:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"64f52ca1-b54e-46da-a760-73dbdf407eaf\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:17] local.INFO: Dispatching activity sync job {\"import_id\":812337,\"provider\":\"hubspot\",\"team\":\"hubspot\"} {\"correlation_id\":\"64f52ca1-b54e-46da-a760-73dbdf407eaf\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"64f52ca1-b54e-46da-a760-73dbdf407eaf\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"crm:bullhorn:ping\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"3c44e0a7-ec5d-4206-a925-69f6e0783c2a\",\"trace_id\":\"60cf7a36-37ca-4ac4-a632-f317578d908f\"}\n[2026-05-07 13:01:19] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"crm:bullhorn:ping\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"3c44e0a7-ec5d-4206-a925-69f6e0783c2a\",\"trace_id\":\"60cf7a36-37ca-4ac4-a632-f317578d908f\"}\n[2026-05-07 13:01:19] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":89,\"team_id\":2} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":408,\"provider\":\"hubspot\"} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":408,\"provider\":\"hubspot\"} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [SyncActivity] Start {\"import_id\":812337,\"provider\":\"hubspot\",\"provider_id\":31,\"team\":\"hubspot\",\"team_id\":2} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [HubSpot] Search calls for period {\"from\":\"2026-05-07 12:00:00\",\"to\":\"2026-05-07 13:00:00\"} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:20] local.INFO: [SyncActivity] End {\"import_id\":812337,\"provider\":\"hubspot\",\"provider_id\":31,\"team\":\"hubspot\",\"team_id\":2} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:20] local.INFO: [SyncActivity] Memory usage {\"import_id\":812337,\"provider\":\"hubspot\",\"provider_id\":31,\"team\":\"hubspot\",\"team_id\":2,\"memory_usage\":27392888,\"memory_real_usage\":67108864,\"pid\":37116} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:21] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"nudges:send\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"55ebbc10-80bf-4724-ac64-678f6ef891cc\",\"trace_id\":\"f5392dc4-b352-4cae-b82a-004f77bbaf26\"}\n[2026-05-07 13:01:21] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"nudges:send\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"55ebbc10-80bf-4724-ac64-678f6ef891cc\",\"trace_id\":\"f5392dc4-b352-4cae-b82a-004f77bbaf26\"}\n[2026-05-07 13:01:23] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"jiminny:playlists:normalize-sort\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"9e29cfb5-b7fc-41bc-a9fd-a160d2253806\",\"trace_id\":\"3e180d83-299d-4c6c-bdda-d5a8ac156efc\"}\n[2026-05-07 13:01:23] local.INFO: [Jiminny\\Component\\Playlist\\Command\\NormalizeSortCommand::handle] starting. {\"playlists\":[]} {\"correlation_id\":\"9e29cfb5-b7fc-41bc-a9fd-a160d2253806\",\"trace_id\":\"3e180d83-299d-4c6c-bdda-d5a8ac156efc\"}\n[2026-05-07 13:01:23] local.INFO: [Jiminny\\Component\\Playlist\\Command\\NormalizeSortCommand::handle] finished. {\"normalizedPlaylists\":[],\"deletedPlaylists\":[]} {\"correlation_id\":\"9e29cfb5-b7fc-41bc-a9fd-a160d2253806\",\"trace_id\":\"3e180d83-299d-4c6c-bdda-d5a8ac156efc\"}\n[2026-05-07 13:01:23] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"jiminny:playlists:normalize-sort\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"9e29cfb5-b7fc-41bc-a9fd-a160d2253806\",\"trace_id\":\"3e180d83-299d-4c6c-bdda-d5a8ac156efc\"}\n[2026-05-07 13:01:41] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:41] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:41] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:41] local.WARNING: [HubSpot Journal Polling] Maximum empty results reached, stopping {\"empty_results\":5,\"max_empty_results\":5} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:41] local.WARNING: [HubSpot Journal Polling] Maximum empty results reached, stopping {\"empty_results\":5,\"max_empty_results\":5} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:41] local.INFO: [HubSpot Journal Polling] Service ending {\"runtime_seconds\":56,\"total_cycles\":5,\"files_downloaded\":0,\"empty_files\":0,\"other_portal_skipped\":0,\"total_events\":0,\"events_per_file\":0,\"avg_api_ms\":181.3,\"avg_download_ms\":0.0,\"avg_transform_ms\":0.0,\"avg_process_ms\":0.0,\"peak_memory_mb\":99.73} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:41] local.INFO: [HubSpot Journal Polling] Released polling lock {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:02:05] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"fe3480ce-754b-4304-b661-e4ac7234a778\",\"trace_id\":\"619e9c15-f95f-47ce-af85-6d78a6698327\"}\n[2026-05-07 13:02:05] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"fe3480ce-754b-4304-b661-e4ac7234a778\",\"trace_id\":\"619e9c15-f95f-47ce-af85-6d78a6698327\"}\n[2026-05-07 13:02:05] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"fe3480ce-754b-4304-b661-e4ac7234a778\",\"trace_id\":\"619e9c15-f95f-47ce-af85-6d78a6698327\"}\n[2026-05-07 13:02:07] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"aa98bf14-5737-4097-9f53-ac6833fb7983\",\"trace_id\":\"2f858b11-1073-43d4-996a-57e259ec2795\"}\n[2026-05-07 13:02:07] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"aa98bf14-5737-4097-9f53-ac6833fb7983\",\"trace_id\":\"2f858b11-1073-43d4-996a-57e259ec2795\"}\n[2026-05-07 13:02:08] local.NOTICE: Monitoring start {\"correlation_id\":\"25c588be-ddd6-41f1-8db8-ae28f3dd5bf5\",\"trace_id\":\"58b4c110-21ab-4c22-be4f-5be3534cd17d\"}\n[2026-05-07 13:02:08] local.NOTICE: Monitoring end {\"correlation_id\":\"25c588be-ddd6-41f1-8db8-ae28f3dd5bf5\",\"trace_id\":\"58b4c110-21ab-4c22-be4f-5be3534cd17d\"}\n[2026-05-07 13:02:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"5e453d7a-4daf-4001-b100-6aa9485d0353\",\"trace_id\":\"d97e1107-3696-4acf-95db-9cc7f37412e1\"}\n[2026-05-07 13:02:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"5e453d7a-4daf-4001-b100-6aa9485d0353\",\"trace_id\":\"d97e1107-3696-4acf-95db-9cc7f37412e1\"}\n[2026-05-07 13:02:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"3fab4dfb-f0ae-4c2c-a882-e09a1ad3ee9b\",\"trace_id\":\"3a66f9c4-3f01-40e2-aee2-e77fdabe793f\"}\n[2026-05-07 13:02:12] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"3fab4dfb-f0ae-4c2c-a882-e09a1ad3ee9b\",\"trace_id\":\"3a66f9c4-3f01-40e2-aee2-e77fdabe793f\"}\n[2026-05-07 13:02:12] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"3fab4dfb-f0ae-4c2c-a882-e09a1ad3ee9b\",\"trace_id\":\"3a66f9c4-3f01-40e2-aee2-e77fdabe793f\"}\n[2026-05-07 13:02:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"3fab4dfb-f0ae-4c2c-a882-e09a1ad3ee9b\",\"trace_id\":\"3a66f9c4-3f01-40e2-aee2-e77fdabe793f\"}\n[2026-05-07 13:02:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"63252e6d-894f-4cb9-818a-0034bf3545cb\",\"trace_id\":\"7ddf2e72-9174-4623-a622-1a5c9ee952c5\"}\n[2026-05-07 13:02:15] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 13:00:00, 2026-05-07 13:02:00] {\"correlation_id\":\"63252e6d-894f-4cb9-818a-0034bf3545cb\",\"trace_id\":\"7ddf2e72-9174-4623-a622-1a5c9ee952c5\"}\n[2026-05-07 13:02:15] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 13:00:00, 2026-05-07 13:02:00] {\"correlation_id\":\"63252e6d-894f-4cb9-818a-0034bf3545cb\",\"trace_id\":\"7ddf2e72-9174-4623-a622-1a5c9ee952c5\"}\n[2026-05-07 13:02:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"63252e6d-894f-4cb9-818a-0034bf3545cb\",\"trace_id\":\"7ddf2e72-9174-4623-a622-1a5c9ee952c5\"}\n[2026-05-07 13:02:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:create\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"cf65b2c4-c602-432d-8087-d0c0fb7f8e80\",\"trace_id\":\"b7b39317-045c-4475-879e-3d399e23fc3e\"}\n[2026-05-07 13:02:17] local.INFO: [EmailSchedule] STARTING batch create {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"cf65b2c4-c602-432d-8087-d0c0fb7f8e80\",\"trace_id\":\"b7b39317-045c-4475-879e-3d399e23fc3e\"}\n[2026-05-07 13:02:17] local.INFO: [EmailSchedule] FINISHED batch create {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"cf65b2c4-c602-432d-8087-d0c0fb7f8e80\",\"trace_id\":\"b7b39317-045c-4475-879e-3d399e23fc3e\"}\n[2026-05-07 13:02:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:create\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"cf65b2c4-c602-432d-8087-d0c0fb7f8e80\",\"trace_id\":\"b7b39317-045c-4475-879e-3d399e23fc3e\"}\n[2026-05-07 13:02:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"c481124d-04ae-43fb-b1d3-a4282f7af7ff\",\"trace_id\":\"d2d083d1-7cee-4d21-b80e-4485361d9969\"}\n[2026-05-07 13:02:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"c481124d-04ae-43fb-b1d3-a4282f7af7ff\",\"trace_id\":\"d2d083d1-7cee-4d21-b80e-4485361d9969\"}\n[2026-05-07 13:02:20] local.INFO: [Jiminny\\Jobs\\Mailbox\\CreateBatches] processed 2 inboxes and created 0 batches {\"userId\":null,\"batchSize\":30,\"maxBatches\":1000} {\"correlation_id\":\"3e2ef780-0c9d-4c30-9dc9-92315055c632\",\"trace_id\":\"b7b39317-045c-4475-879e-3d399e23fc3e\"}\n[2026-05-07 13:03:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"8cb6c7bf-4a2d-4960-bf8f-0368643fec27\",\"trace_id\":\"68c67cd4-9b92-4e41-bc1e-ebb282ea5211\"}\n[2026-05-07 13:03:06] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"8cb6c7bf-4a2d-4960-bf8f-0368643fec27\",\"trace_id\":\"68c67cd4-9b92-4e41-bc1e-ebb282ea5211\"}\n[2026-05-07 13:03:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"8cb6c7bf-4a2d-4960-bf8f-0368643fec27\",\"trace_id\":\"68c67cd4-9b92-4e41-bc1e-ebb282ea5211\"}\n[2026-05-07 13:03:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"b18dc815-6c91-43df-b083-125316724586\",\"trace_id\":\"62a636e8-4128-49eb-b99b-15efcfb37267\"}\n[2026-05-07 13:03:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"b18dc815-6c91-43df-b083-125316724586\",\"trace_id\":\"62a636e8-4128-49eb-b99b-15efcfb37267\"}\n[2026-05-07 13:03:10] local.NOTICE: Monitoring start {\"correlation_id\":\"d74c3e14-fd1a-4cab-9892-e9e924af1144\",\"trace_id\":\"29547049-25f5-4b62-a603-276e1de3dde8\"}\n[2026-05-07 13:03:10] local.NOTICE: Monitoring end {\"correlation_id\":\"d74c3e14-fd1a-4cab-9892-e9e924af1144\",\"trace_id\":\"29547049-25f5-4b62-a603-276e1de3dde8\"}\n[2026-05-07 13:03:13] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"bd7a8c2f-3f0b-48e9-86c2-0f01f2cfd9e8\",\"trace_id\":\"a3d1ecb5-4122-43c1-98ca-5d74c3dc989c\"}\n[2026-05-07 13:03:13] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"bd7a8c2f-3f0b-48e9-86c2-0f01f2cfd9e8\",\"trace_id\":\"a3d1ecb5-4122-43c1-98ca-5d74c3dc989c\"}\n[2026-05-07 13:03:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"4b20eb61-2970-4a63-8ee0-b392f7406a78\",\"trace_id\":\"892c9d93-c280-4b3f-a97a-bf1266f5c090\"}\n[2026-05-07 13:03:14] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"4b20eb61-2970-4a63-8ee0-b392f7406a78\",\"trace_id\":\"892c9d93-c280-4b3f-a97a-bf1266f5c090\"}\n[2026-05-07 13:03:14] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"4b20eb61-2970-4a63-8ee0-b392f7406a78\",\"trace_id\":\"892c9d93-c280-4b3f-a97a-bf1266f5c090\"}\n[2026-05-07 13:03:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"4b20eb61-2970-4a63-8ee0-b392f7406a78\",\"trace_id\":\"892c9d93-c280-4b3f-a97a-bf1266f5c090\"}\n[2026-05-07 13:03:18] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"6a165ea3-f101-4ac9-bfcc-e7ad618ac645\",\"trace_id\":\"383367e5-a337-4793-be1c-a88a2a6fa2e5\"}\n[2026-05-07 13:03:18] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"6a165ea3-f101-4ac9-bfcc-e7ad618ac645\",\"trace_id\":\"383367e5-a337-4793-be1c-a88a2a6fa2e5\"}","depth":4,"on_screen":true,"value":"[2026-05-07 12:52:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"fa8a3008-d298-4682-bbbc-fdc77520e0d7\",\"trace_id\":\"7cfb2afb-9fc4-4a77-81be-65dce93c7d80\"}\n[2026-05-07 12:52:08] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"fa8a3008-d298-4682-bbbc-fdc77520e0d7\",\"trace_id\":\"7cfb2afb-9fc4-4a77-81be-65dce93c7d80\"}\n[2026-05-07 12:52:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"fa8a3008-d298-4682-bbbc-fdc77520e0d7\",\"trace_id\":\"7cfb2afb-9fc4-4a77-81be-65dce93c7d80\"}\n[2026-05-07 12:52:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"932ced9d-9804-48ed-976a-1f8bf5e75707\",\"trace_id\":\"21bf320c-58f3-4082-831d-9f07f6c6a669\"}\n[2026-05-07 12:52:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"932ced9d-9804-48ed-976a-1f8bf5e75707\",\"trace_id\":\"21bf320c-58f3-4082-831d-9f07f6c6a669\"}\n[2026-05-07 12:52:17] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:17] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:17] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:17] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":148,\"team_id\":2} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:17] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.55,\"average_seconds_per_request\":0.55} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:18] local.NOTICE: Monitoring start {\"correlation_id\":\"ae3ec78f-432c-4e22-b73b-0413af73d9f3\",\"trace_id\":\"c2feb517-0f2b-4ad9-bce5-4d57476a164b\"}\n[2026-05-07 12:52:18] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.51,\"average_seconds_per_request\":0.51} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:18] local.NOTICE: Monitoring end {\"correlation_id\":\"ae3ec78f-432c-4e22-b73b-0413af73d9f3\",\"trace_id\":\"c2feb517-0f2b-4ad9-bce5-4d57476a164b\"}\n[2026-05-07 12:52:18] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.48,\"average_seconds_per_request\":0.48} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:19] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.49,\"average_seconds_per_request\":0.49} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:19] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.49,\"average_seconds_per_request\":0.49} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"2bf2f73f-007c-4909-925e-f1749fbf87b3\",\"trace_id\":\"8429123c-d92c-48d9-a154-29bc0aa0e2a1\"}\n[2026-05-07 12:52:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"2bf2f73f-007c-4909-925e-f1749fbf87b3\",\"trace_id\":\"8429123c-d92c-48d9-a154-29bc0aa0e2a1\"}\n[2026-05-07 12:52:20] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.48,\"average_seconds_per_request\":0.48} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:20] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.62,\"average_seconds_per_request\":0.62} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:21] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.78,\"average_seconds_per_request\":0.78} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:22] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":1.21,\"average_seconds_per_request\":1.21} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:23] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.53,\"average_seconds_per_request\":0.53} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8\",\"trace_id\":\"64ccac6b-34f7-45ed-a8ac-b63adbb19107\"}\n[2026-05-07 12:52:25] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8\",\"trace_id\":\"64ccac6b-34f7-45ed-a8ac-b63adbb19107\"}\n[2026-05-07 12:52:26] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8\",\"trace_id\":\"64ccac6b-34f7-45ed-a8ac-b63adbb19107\"}\n[2026-05-07 12:52:26] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8\",\"trace_id\":\"64ccac6b-34f7-45ed-a8ac-b63adbb19107\"}\n[2026-05-07 12:52:28] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"6e1a36d0-a87a-455f-88b9-04f16718ea33\",\"trace_id\":\"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c\"}\n[2026-05-07 12:52:28] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:50:00, 2026-05-07 12:52:00] {\"correlation_id\":\"6e1a36d0-a87a-455f-88b9-04f16718ea33\",\"trace_id\":\"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c\"}\n[2026-05-07 12:52:28] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:50:00, 2026-05-07 12:52:00] {\"correlation_id\":\"6e1a36d0-a87a-455f-88b9-04f16718ea33\",\"trace_id\":\"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c\"}\n[2026-05-07 12:52:28] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"6e1a36d0-a87a-455f-88b9-04f16718ea33\",\"trace_id\":\"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c\"}\n[2026-05-07 12:52:31] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:create\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"80549428-beea-4a6c-97d3-818ca0f059f3\",\"trace_id\":\"55ddd59b-073b-4331-8cdb-baa869dcff70\"}\n[2026-05-07 12:52:31] local.INFO: [EmailSchedule] STARTING batch create {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"80549428-beea-4a6c-97d3-818ca0f059f3\",\"trace_id\":\"55ddd59b-073b-4331-8cdb-baa869dcff70\"}\n[2026-05-07 12:52:31] local.INFO: [EmailSchedule] FINISHED batch create {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"80549428-beea-4a6c-97d3-818ca0f059f3\",\"trace_id\":\"55ddd59b-073b-4331-8cdb-baa869dcff70\"}\n[2026-05-07 12:52:31] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:create\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"80549428-beea-4a6c-97d3-818ca0f059f3\",\"trace_id\":\"55ddd59b-073b-4331-8cdb-baa869dcff70\"}\n[2026-05-07 12:52:32] local.INFO: [Jiminny\\Jobs\\Mailbox\\CreateBatches] processed 2 inboxes and created 0 batches {\"userId\":null,\"batchSize\":30,\"maxBatches\":1000} {\"correlation_id\":\"92242bd6-7014-4487-a50b-1570e1a88e7a\",\"trace_id\":\"55ddd59b-073b-4331-8cdb-baa869dcff70\"}\n[2026-05-07 12:52:39] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"d467eace-3254-4ecc-8d8e-a94688d6d3ad\",\"trace_id\":\"5105ca8f-3c0d-4798-b748-5a7d6fbd7531\"}\n[2026-05-07 12:52:39] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"d467eace-3254-4ecc-8d8e-a94688d6d3ad\",\"trace_id\":\"5105ca8f-3c0d-4798-b748-5a7d6fbd7531\"}\n[2026-05-07 12:53:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"04363b29-2f82-470a-89d0-c5ce4f4779d7\",\"trace_id\":\"3c76a1f1-3348-4e2b-897c-4a216ca95147\"}\n[2026-05-07 12:53:08] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"04363b29-2f82-470a-89d0-c5ce4f4779d7\",\"trace_id\":\"3c76a1f1-3348-4e2b-897c-4a216ca95147\"}\n[2026-05-07 12:53:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"04363b29-2f82-470a-89d0-c5ce4f4779d7\",\"trace_id\":\"3c76a1f1-3348-4e2b-897c-4a216ca95147\"}\n[2026-05-07 12:53:11] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"5ebbecd0-866c-443f-965f-b6ac03735379\",\"trace_id\":\"e0a724a5-bb4b-4fe6-9fe9-36ea1c3f0326\"}\n[2026-05-07 12:53:11] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"5ebbecd0-866c-443f-965f-b6ac03735379\",\"trace_id\":\"e0a724a5-bb4b-4fe6-9fe9-36ea1c3f0326\"}\n[2026-05-07 12:53:18] local.NOTICE: Monitoring start {\"correlation_id\":\"f39f0d3c-a292-41cb-8834-45dae1f8cf47\",\"trace_id\":\"b6e7e2a7-85af-401d-afc6-bec2bdab34d7\"}\n[2026-05-07 12:53:18] local.NOTICE: Monitoring end {\"correlation_id\":\"f39f0d3c-a292-41cb-8834-45dae1f8cf47\",\"trace_id\":\"b6e7e2a7-85af-401d-afc6-bec2bdab34d7\"}\n[2026-05-07 12:53:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"419bb747-2669-496f-944b-1073496cc271\",\"trace_id\":\"4cb913a4-ef75-422b-80eb-fbfb988521ed\"}\n[2026-05-07 12:53:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"419bb747-2669-496f-944b-1073496cc271\",\"trace_id\":\"4cb913a4-ef75-422b-80eb-fbfb988521ed\"}\n[2026-05-07 12:53:22] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"f4805c97-9344-4111-8be2-2b1efeae07bb\",\"trace_id\":\"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22\"}\n[2026-05-07 12:53:22] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"f4805c97-9344-4111-8be2-2b1efeae07bb\",\"trace_id\":\"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22\"}\n[2026-05-07 12:53:22] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"f4805c97-9344-4111-8be2-2b1efeae07bb\",\"trace_id\":\"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22\"}\n[2026-05-07 12:53:22] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"f4805c97-9344-4111-8be2-2b1efeae07bb\",\"trace_id\":\"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22\"}\n[2026-05-07 12:53:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"2eadb06b-2c2e-4a7f-8920-77bd30d6cd7f\",\"trace_id\":\"75f27a23-2021-41a5-9e5f-4b1cb4f143a6\"}\n[2026-05-07 12:53:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"2eadb06b-2c2e-4a7f-8920-77bd30d6cd7f\",\"trace_id\":\"75f27a23-2021-41a5-9e5f-4b1cb4f143a6\"}\n[2026-05-07 12:54:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"ad151521-f676-4351-a70b-f44dc0b94990\",\"trace_id\":\"17e39c4c-85cb-49a4-815e-b7315a8c2249\"}\n[2026-05-07 12:54:06] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"ad151521-f676-4351-a70b-f44dc0b94990\",\"trace_id\":\"17e39c4c-85cb-49a4-815e-b7315a8c2249\"}\n[2026-05-07 12:54:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"ad151521-f676-4351-a70b-f44dc0b94990\",\"trace_id\":\"17e39c4c-85cb-49a4-815e-b7315a8c2249\"}\n[2026-05-07 12:54:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"ed0583cf-03c6-4696-b859-876c8efa4473\",\"trace_id\":\"3f9e0a3c-2178-4885-95eb-8618b8cfc042\"}\n[2026-05-07 12:54:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"ed0583cf-03c6-4696-b859-876c8efa4473\",\"trace_id\":\"3f9e0a3c-2178-4885-95eb-8618b8cfc042\"}\n[2026-05-07 12:54:10] local.NOTICE: Monitoring start {\"correlation_id\":\"7142250a-b897-4620-8ff7-fd9b3a1f3802\",\"trace_id\":\"597def1e-ca38-4cc4-8890-fdcd5baff948\"}\n[2026-05-07 12:54:10] local.NOTICE: Monitoring end {\"correlation_id\":\"7142250a-b897-4620-8ff7-fd9b3a1f3802\",\"trace_id\":\"597def1e-ca38-4cc4-8890-fdcd5baff948\"}\n[2026-05-07 12:54:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"cb2ada48-0200-4eb3-a8c5-6cb8ea43ec0d\",\"trace_id\":\"73937bdc-10b9-4508-9ef2-86420fe774fc\"}\n[2026-05-07 12:54:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"cb2ada48-0200-4eb3-a8c5-6cb8ea43ec0d\",\"trace_id\":\"73937bdc-10b9-4508-9ef2-86420fe774fc\"}\n[2026-05-07 12:54:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"8f1d8932-2839-4256-99ab-1fd13e8381c6\",\"trace_id\":\"cc090767-edc2-4a89-90c2-116f1737de7f\"}\n[2026-05-07 12:54:14] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"8f1d8932-2839-4256-99ab-1fd13e8381c6\",\"trace_id\":\"cc090767-edc2-4a89-90c2-116f1737de7f\"}\n[2026-05-07 12:54:14] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"8f1d8932-2839-4256-99ab-1fd13e8381c6\",\"trace_id\":\"cc090767-edc2-4a89-90c2-116f1737de7f\"}\n[2026-05-07 12:54:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"8f1d8932-2839-4256-99ab-1fd13e8381c6\",\"trace_id\":\"cc090767-edc2-4a89-90c2-116f1737de7f\"}\n[2026-05-07 12:54:16] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"9d324c6d-5b36-46ee-89c6-f95f86bf3f39\",\"trace_id\":\"860cdff0-9356-4e94-84cc-e011a74ba56c\"}\n[2026-05-07 12:54:16] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:52:00, 2026-05-07 12:54:00] {\"correlation_id\":\"9d324c6d-5b36-46ee-89c6-f95f86bf3f39\",\"trace_id\":\"860cdff0-9356-4e94-84cc-e011a74ba56c\"}\n[2026-05-07 12:54:16] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:52:00, 2026-05-07 12:54:00] {\"correlation_id\":\"9d324c6d-5b36-46ee-89c6-f95f86bf3f39\",\"trace_id\":\"860cdff0-9356-4e94-84cc-e011a74ba56c\"}\n[2026-05-07 12:54:16] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"9d324c6d-5b36-46ee-89c6-f95f86bf3f39\",\"trace_id\":\"860cdff0-9356-4e94-84cc-e011a74ba56c\"}\n[2026-05-07 12:54:18] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:aircall:check-and-renew\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"c2009a88-eea6-4954-8642-ef5d9cb56b42\",\"trace_id\":\"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab\"}\n[2026-05-07 12:54:18] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1496,\"provider\":\"aircall\"} {\"correlation_id\":\"c2009a88-eea6-4954-8642-ef5d9cb56b42\",\"trace_id\":\"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab\"}\n[2026-05-07 12:54:18] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1496,\"provider\":\"aircall\"} {\"correlation_id\":\"c2009a88-eea6-4954-8642-ef5d9cb56b42\",\"trace_id\":\"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab\"}\n[2026-05-07 12:54:18] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"c2009a88-eea6-4954-8642-ef5d9cb56b42\",\"trace_id\":\"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab\"}\n[2026-05-07 12:54:19] local.ERROR: [Aircall] Re-activating webhooks failed {\"team_id\":1,\"reason\":\"{\\\"message\\\":\\\"Forbidden\\\"}\"} {\"correlation_id\":\"c2009a88-eea6-4954-8642-ef5d9cb56b42\",\"trace_id\":\"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab\"}\n[2026-05-07 12:54:19] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:aircall:check-and-renew\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"c2009a88-eea6-4954-8642-ef5d9cb56b42\",\"trace_id\":\"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab\"}\n[2026-05-07 12:54:21] local.INFO: [RetryFailedDownloads] Starting {\"options\":{\"from\":null,\"to\":null,\"help\":false,\"silent\":false,\"quiet\":false,\"verbose\":false,\"version\":false,\"ansi\":null,\"no-interaction\":false,\"env\":null}} {\"correlation_id\":\"825ef2d7-b5f8-45cd-b19d-20a179b06934\",\"trace_id\":\"5825a6c8-14c9-4bec-b688-d4895cfc41cc\"}\n[2026-05-07 12:55:05] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"c0dc8e25-7a51-4023-be61-d0abd6d72e37\",\"trace_id\":\"16b8fa3e-92b1-465e-82d4-642a2d14c7c5\"}\n[2026-05-07 12:55:05] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"c0dc8e25-7a51-4023-be61-d0abd6d72e37\",\"trace_id\":\"16b8fa3e-92b1-465e-82d4-642a2d14c7c5\"}\n[2026-05-07 12:55:05] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"c0dc8e25-7a51-4023-be61-d0abd6d72e37\",\"trace_id\":\"16b8fa3e-92b1-465e-82d4-642a2d14c7c5\"}\n[2026-05-07 12:55:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"1c65fdd1-1f79-435d-b469-add46ddafd63\",\"trace_id\":\"62f2a3bb-3be7-4c76-a9dd-222bfb895fab\"}\n[2026-05-07 12:55:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"1c65fdd1-1f79-435d-b469-add46ddafd63\",\"trace_id\":\"62f2a3bb-3be7-4c76-a9dd-222bfb895fab\"}\n[2026-05-07 12:55:11] local.NOTICE: Monitoring start {\"correlation_id\":\"f115f9bc-bb59-4fc9-8c9f-8b69baba1a55\",\"trace_id\":\"e75cb5c6-6dd8-4000-8d26-4418020c7cfe\"}\n[2026-05-07 12:55:11] local.NOTICE: Monitoring end {\"correlation_id\":\"f115f9bc-bb59-4fc9-8c9f-8b69baba1a55\",\"trace_id\":\"e75cb5c6-6dd8-4000-8d26-4418020c7cfe\"}\n[2026-05-07 12:55:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"dba5c474-4d40-44da-baf2-f8b30db9a2f5\",\"trace_id\":\"adb45622-1fb0-457c-bf20-8dcceab2d62a\"}\n[2026-05-07 12:55:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"dba5c474-4d40-44da-baf2-f8b30db9a2f5\",\"trace_id\":\"adb45622-1fb0-457c-bf20-8dcceab2d62a\"}\n[2026-05-07 12:55:16] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"22c96a8e-4424-4a1f-b349-206276eefe4c\",\"trace_id\":\"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c\"}\n[2026-05-07 12:55:16] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"22c96a8e-4424-4a1f-b349-206276eefe4c\",\"trace_id\":\"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c\"}\n[2026-05-07 12:55:16] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"22c96a8e-4424-4a1f-b349-206276eefe4c\",\"trace_id\":\"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c\"}\n[2026-05-07 12:55:16] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"22c96a8e-4424-4a1f-b349-206276eefe4c\",\"trace_id\":\"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c\"}\n[2026-05-07 12:55:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:purge-stale\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"5f958e8d-1d01-4144-abd6-2513e5524ad3\",\"trace_id\":\"828bc5b7-e2aa-4443-901f-38dd94bb7cc5\"}\n[2026-05-07 12:55:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:purge-stale\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"5f958e8d-1d01-4144-abd6-2513e5524ad3\",\"trace_id\":\"828bc5b7-e2aa-4443-901f-38dd94bb7cc5\"}\n[2026-05-07 12:55:22] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:text-relay:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"6bd1c9cb-cd9a-42a9-87fe-45cb7bac687a\",\"trace_id\":\"0f2f5d66-c4c9-46a5-a31b-6937663ce1ad\"}\n[2026-05-07 12:55:22] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:text-relay:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"6bd1c9cb-cd9a-42a9-87fe-45cb7bac687a\",\"trace_id\":\"0f2f5d66-c4c9-46a5-a31b-6937663ce1ad\"}\n[2026-05-07 12:55:24] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:pre-meeting-notification\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"c5dd8132-d7e1-4caa-84d1-0a50d02df8da\",\"trace_id\":\"bc7341c5-b8e2-48ea-9670-7ec375363180\"}\n[2026-05-07 12:55:24] local.INFO: Running pre-meeting notification command {\"correlation_id\":\"c5dd8132-d7e1-4caa-84d1-0a50d02df8da\",\"trace_id\":\"bc7341c5-b8e2-48ea-9670-7ec375363180\"}\n[2026-05-07 12:55:24] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:pre-meeting-notification\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"c5dd8132-d7e1-4caa-84d1-0a50d02df8da\",\"trace_id\":\"bc7341c5-b8e2-48ea-9670-7ec375363180\"}\n[2026-05-07 12:55:26] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:start\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0\",\"trace_id\":\"efb1619f-4185-4319-9bfb-305cee0b6bfc\"}\n[2026-05-07 12:55:26] local.INFO: Running conference:monitor:start command for activities in (2026-05-07 12:45:00, 2026-05-07 12:50:00] {\"correlation_id\":\"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0\",\"trace_id\":\"efb1619f-4185-4319-9bfb-305cee0b6bfc\"}\n[2026-05-07 12:55:26] local.INFO: [conference:monitor:start] No activities found in (2026-05-07 12:45:00, 2026-05-07 12:50:00] {\"correlation_id\":\"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0\",\"trace_id\":\"efb1619f-4185-4319-9bfb-305cee0b6bfc\"}\n[2026-05-07 12:55:26] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:start\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0\",\"trace_id\":\"efb1619f-4185-4319-9bfb-305cee0b6bfc\"}\n[2026-05-07 12:55:28] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:end\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"3792b31a-080a-4fe4-9823-5602361325ba\",\"trace_id\":\"41a2fde1-48f6-4667-84b7-a2f93e9ad2da\"}\n[2026-05-07 12:55:28] local.INFO: conference:monitor:end:Jiminny\\Console\\Commands\\Activities\\MonitorMeetingEndCommand::logActivitiesEnded {\"from\":\"12:50\",\"to\":\"12:55\"} {\"correlation_id\":\"3792b31a-080a-4fe4-9823-5602361325ba\",\"trace_id\":\"41a2fde1-48f6-4667-84b7-a2f93e9ad2da\"}\n[2026-05-07 12:55:28] local.INFO: conference:monitor:end:Jiminny\\Console\\Commands\\Activities\\MonitorMeetingEndCommand::logActivitiesWithUnfinishedSession {\"from\":\"02:45\",\"to\":\"02:50\"} {\"correlation_id\":\"3792b31a-080a-4fe4-9823-5602361325ba\",\"trace_id\":\"41a2fde1-48f6-4667-84b7-a2f93e9ad2da\"}\n[2026-05-07 12:55:28] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:end\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"3792b31a-080a-4fe4-9823-5602361325ba\",\"trace_id\":\"41a2fde1-48f6-4667-84b7-a2f93e9ad2da\"}\n[2026-05-07 12:55:30] local.NOTICE: Repairing HubSpot tokens start {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:30] local.INFO: Trying to refresh HubSpot token {\"account_id\":59,\"updated_at\":\"2025-10-03 09:32:05\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:30] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:30] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":59,\"provider\":\"hubspot\",\"refreshToken\":\"97b78f6e2cc49965c00c2492b602b02708b1392551e6b3f113fbaa48992af90b\",\"state\":\"full-refresh\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.ERROR: Failed to refresh HubSpot token {\"account_id\":59,\"updated_at\":\"2025-10-03 09:32:05\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.INFO: Trying to refresh HubSpot token {\"account_id\":306,\"updated_at\":\"2023-11-27 09:30:03\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":306,\"provider\":\"hubspot\",\"refreshToken\":\"6fa6aa8cc641d131231acc3470f5c03cb3b07b2e580fb18f8acb3b1dbb72549b\",\"state\":\"full-refresh\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.ERROR: Failed to refresh HubSpot token {\"account_id\":306,\"updated_at\":\"2023-11-27 09:30:03\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.INFO: Trying to refresh HubSpot token {\"account_id\":1372,\"updated_at\":\"2025-10-02 14:47:06\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1372,\"provider\":\"hubspot\",\"refreshToken\":\"9aa73948c761da29dce46c177cf9aee1fde483a44169ca38723f9f0597d7a8c4\",\"state\":\"full-refresh\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:32] local.ERROR: Failed to refresh HubSpot token {\"account_id\":1372,\"updated_at\":\"2025-10-02 14:47:06\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:32] local.NOTICE: Repairing HubSpot tokens end {\"total\":3,\"fixed\":0,\"failed\":3} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:40] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"crm:bullhorn:ping\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"5e676ae4-5d63-49d4-9001-559088adf06b\",\"trace_id\":\"2fcce073-dd68-4c99-b7c4-b9e03c20b8e4\"}\n[2026-05-07 12:55:40] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:pre-meeting-reminder\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"1f830896-8142-41d1-bfc9-4cbb9179ffda\",\"trace_id\":\"e348a096-7f37-4308-a6d8-66131e8be901\"}\n[2026-05-07 12:55:40] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"crm:bullhorn:ping\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"5e676ae4-5d63-49d4-9001-559088adf06b\",\"trace_id\":\"2fcce073-dd68-4c99-b7c4-b9e03c20b8e4\"}\n[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Command] Starting polling service {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Service starting {\"memory_limit\":\"256M\",\"max_execution_time\":\"0\",\"initial_memory_mb\":62.0} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Acquired polling lock {\"expires_at\":\"2026-05-07T12:57:40.609671Z\"} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:40] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:40] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:pre-meeting-reminder\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"1f830896-8142-41d1-bfc9-4cbb9179ffda\",\"trace_id\":\"e348a096-7f37-4308-a6d8-66131e8be901\"}\n[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:45] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:45] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:46] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:51] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:51] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:51] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:06] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:06] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:06] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"2d8b30b4-87aa-480f-9b9e-5a9c709b742a\",\"trace_id\":\"25b7be6c-1faf-430b-a724-a4ff28773a31\"}\n[2026-05-07 12:56:08] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"2d8b30b4-87aa-480f-9b9e-5a9c709b742a\",\"trace_id\":\"25b7be6c-1faf-430b-a724-a4ff28773a31\"}\n[2026-05-07 12:56:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"2d8b30b4-87aa-480f-9b9e-5a9c709b742a\",\"trace_id\":\"25b7be6c-1faf-430b-a724-a4ff28773a31\"}\n[2026-05-07 12:56:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"efd336d7-db4d-459e-b6e7-bf73454e955e\",\"trace_id\":\"0a82c3d5-0417-48c8-b88f-70ec33e2326a\"}\n[2026-05-07 12:56:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"efd336d7-db4d-459e-b6e7-bf73454e955e\",\"trace_id\":\"0a82c3d5-0417-48c8-b88f-70ec33e2326a\"}\n[2026-05-07 12:56:12] local.NOTICE: Monitoring start {\"correlation_id\":\"68481576-8ca6-4ee5-821b-07374702971d\",\"trace_id\":\"c73eac09-5d20-425f-9c22-bd6c65fc60c9\"}\n[2026-05-07 12:56:12] local.NOTICE: Monitoring end {\"correlation_id\":\"68481576-8ca6-4ee5-821b-07374702971d\",\"trace_id\":\"c73eac09-5d20-425f-9c22-bd6c65fc60c9\"}\n[2026-05-07 12:56:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"bd0cdc75-b5c2-4dbb-bc44-e36c96813d24\",\"trace_id\":\"f688cd98-c171-4e30-8c72-afc14f040861\"}\n[2026-05-07 12:56:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"bd0cdc75-b5c2-4dbb-bc44-e36c96813d24\",\"trace_id\":\"f688cd98-c171-4e30-8c72-afc14f040861\"}\n[2026-05-07 12:56:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"f01636a9-4059-4ab0-9ad2-b078d42cedbd\",\"trace_id\":\"fea938d8-aedc-40ec-b8c2-2f487e1ac808\"}\n[2026-05-07 12:56:20] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"f01636a9-4059-4ab0-9ad2-b078d42cedbd\",\"trace_id\":\"fea938d8-aedc-40ec-b8c2-2f487e1ac808\"}\n[2026-05-07 12:56:20] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"f01636a9-4059-4ab0-9ad2-b078d42cedbd\",\"trace_id\":\"fea938d8-aedc-40ec-b8c2-2f487e1ac808\"}\n[2026-05-07 12:56:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"f01636a9-4059-4ab0-9ad2-b078d42cedbd\",\"trace_id\":\"fea938d8-aedc-40ec-b8c2-2f487e1ac808\"}\n[2026-05-07 12:56:23] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"d4558901-264d-4238-8589-62a137bac1fd\",\"trace_id\":\"38e6b5dc-ebd6-46a7-8224-7374d4e58630\"}\n[2026-05-07 12:56:23] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:54:00, 2026-05-07 12:56:00] {\"correlation_id\":\"d4558901-264d-4238-8589-62a137bac1fd\",\"trace_id\":\"38e6b5dc-ebd6-46a7-8224-7374d4e58630\"}\n[2026-05-07 12:56:23] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:54:00, 2026-05-07 12:56:00] {\"correlation_id\":\"d4558901-264d-4238-8589-62a137bac1fd\",\"trace_id\":\"38e6b5dc-ebd6-46a7-8224-7374d4e58630\"}\n[2026-05-07 12:56:23] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"d4558901-264d-4238-8589-62a137bac1fd\",\"trace_id\":\"38e6b5dc-ebd6-46a7-8224-7374d4e58630\"}\n[2026-05-07 12:56:24] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"crm:sync-hubspot-objects\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"7bfaf9be-0ca1-4170-a0c9-83e0ed61881c\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:24] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"crm:sync-hubspot-objects\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"7bfaf9be-0ca1-4170-a0c9-83e0ed61881c\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:26] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:notify-not-logged\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"2541e0fa-1117-4863-9523-d723b5821a24\",\"trace_id\":\"d9600320-5133-4938-bdd1-2256dfdf8db4\"}\n[2026-05-07 12:56:26] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:notify-not-logged\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"2541e0fa-1117-4863-9523-d723b5821a24\",\"trace_id\":\"d9600320-5133-4938-bdd1-2256dfdf8db4\"}\n[2026-05-07 12:56:35] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"e444f776-37db-4c6d-b30e-20b01a089de7\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:36] local.INFO: [EmailSchedule] STARTING Inbox Sync {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"e444f776-37db-4c6d-b30e-20b01a089de7\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:36] local.INFO: [EmailSchedule] FINISHED Inbox Sync {\"host\":\"docker_lamp_1\",\"events\":2} {\"correlation_id\":\"e444f776-37db-4c6d-b30e-20b01a089de7\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:36] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"e444f776-37db-4c6d-b30e-20b01a089de7\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:36] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:36] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:36] local.INFO: [HubSpot Journal Auth] Requesting new client credentials token {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:37] local.INFO: [HubSpot Journal Auth] Successfully obtained new access token {\"expires_in\":1800,\"cached_for\":1500} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:37] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:37] local.WARNING: [HubSpot Journal Polling] Maximum empty results reached, stopping {\"empty_results\":5,\"max_empty_results\":5} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:37] local.WARNING: [HubSpot Journal Polling] Maximum empty results reached, stopping {\"empty_results\":5,\"max_empty_results\":5} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:37] local.INFO: [HubSpot Journal Polling] Service ending {\"runtime_seconds\":57,\"total_cycles\":5,\"files_downloaded\":0,\"empty_files\":0,\"other_portal_skipped\":0,\"total_events\":0,\"events_per_file\":0,\"avg_api_ms\":238.3,\"avg_download_ms\":0.0,\"avg_transform_ms\":0.0,\"avg_process_ms\":0.0,\"peak_memory_mb\":99.73} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:37] local.INFO: [HubSpot Journal Polling] Released polling lock {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:50] local.INFO: [Commands/AsyncUpdateEsEntities] Starting ES update worker {\"pid\":37119,\"workerId\":\"\",\"target\":\"activities\"} {\"correlation_id\":\"902cef33-4733-4b2a-9693-affb8645cecc\",\"trace_id\":\"4ffe2bb8-67c6-422a-a846-319973cc0259\"}\n[2026-05-07 12:56:50] local.INFO: [SyncHubspotObjects] Starting sync {\"team\":\"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4\",\"usage\":23195976,\"real_usage\":65011712,\"pid\":37113} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:50] local.INFO: [Sync Mailbox] Sync start {\"inbox_id\":59} {\"correlation_id\":\"20256b2c-2b69-48f6-bdd3-61d047eb0b0d\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:50] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:50] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:50] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:50] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1499,\"provider\":\"hubspot\",\"refreshToken\":\"96f94c623a404e02ebdbf07f1b75707bb6cdbf848cbf45d418baf608c41a8d86\",\"state\":\"connected\"} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:50] local.INFO: [Inbox service] Skipping METADATA SYNC for inbox 59 due to unauthorized access to the mailbox {\"correlation_id\":\"20256b2c-2b69-48f6-bdd3-61d047eb0b0d\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:50] local.INFO: [Sync Mailbox] Sync complete {\"inbox_id\":59} {\"correlation_id\":\"20256b2c-2b69-48f6-bdd3-61d047eb0b0d\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:50] local.INFO: [Sync Mailbox] Sync start {\"inbox_id\":212} {\"correlation_id\":\"b6c31853-3729-4780-a52b-ebcce17d41b9\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:50] local.INFO: [Inbox service] Skipping METADATA SYNC for inbox 212 due to unauthorized access to the mailbox {\"correlation_id\":\"b6c31853-3729-4780-a52b-ebcce17d41b9\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:50] local.INFO: [Sync Mailbox] Sync complete {\"inbox_id\":212} {\"correlation_id\":\"b6c31853-3729-4780-a52b-ebcce17d41b9\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:51] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:51] local.INFO: [SocialAccountObserver] Access token was modified, encrypting {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:51] local.INFO: [SocialAccountService] Token refreshed {\"socialAccountId\":1499,\"provider\":\"hubspot\",\"state\":\"connected\"} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:51] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":148,\"team_id\":2} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:51] local.INFO: [HubSpot] Syncing opportunities using strategy: lastModified {\"team\":2} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/deals/search\",\"total_requests\":0,\"total_records_fetched\":0,\"total_elapsed_seconds\":0.3,\"average_seconds_per_request\":0} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.INFO: [SyncHubspotObjects] Sync finished {\"team\":\"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4\",\"provider\":\"hubspot\",\"status\":\"completed\",\"duration_ms\":1854.64,\"usage\":24199288,\"real_usage\":65011712,\"pid\":37113} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.ERROR: Jiminny\\Services\\Crm\\Hubspot\\Pagination\\HubspotPaginationService::getPaginatedDataGenerator(): Return value must be of type Generator, none returned {\"exception\":\"[object] (TypeError(code: 0): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService::getPaginatedDataGenerator(): Return value must be of type Generator, none returned at /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php:82)\n[stacktrace]\n#0 /home/jiminny/app/Services/Crm/Hubspot/Client.php(194): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->getPaginatedDataGenerator(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), Array, 'deals', 0, 0, NULL)\n#1 /home/jiminny/app/Services/Crm/Hubspot/OpportunitySyncStrategy/HubspotSyncStrategyBase.php(55): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client->getPaginatedDataGenerator(Array, 'deals', 0, 0, NULL)\n#2 /home/jiminny/app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php(73): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\OpportunitySyncStrategy\\\\HubspotSyncStrategyBase->fetchOpportunities(Array, 0, NULL)\n#3 /home/jiminny/app/Jobs/Crm/SyncHubspotObjects.php(118): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service->syncOpportunities(Array)\n#4 /home/jiminny/app/Jobs/Crm/SyncHubspotObjects.php(86): Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects->syncHubspotCrmObjects(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service), Object(Illuminate\\\\Support\\\\Carbon))\n#5 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects->handle(Object(Jiminny\\\\Services\\\\ResolveTeamCrmConnection), Object(Illuminate\\\\Log\\\\LogManager), Object(Jiminny\\\\Repositories\\\\TeamRepository))\n#6 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#7 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#8 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#9 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#10 /home/jiminny/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(129): Illuminate\\\\Container\\\\Container->call(Array)\n#11 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\\\Bus\\\\Dispatcher->Illuminate\\\\Bus\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#12 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\\\\Pipeline\\\\Pipeline->Illuminate\\\\Pipeline\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#13 /home/jiminny/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(133): Illuminate\\\\Pipeline\\\\Pipeline->then(Object(Closure))\n#14 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(136): Illuminate\\\\Bus\\\\Dispatcher->dispatchNow(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects), false)\n#15 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\\\Queue\\\\CallQueuedHandler->Illuminate\\\\Queue\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#16 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\\\\Pipeline\\\\Pipeline->Illuminate\\\\Pipeline\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#17 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(129): Illuminate\\\\Pipeline\\\\Pipeline->then(Object(Closure))\n#18 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(70): Illuminate\\\\Queue\\\\CallQueuedHandler->dispatchThroughMiddleware(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#19 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Jobs/Job.php(102): Illuminate\\\\Queue\\\\CallQueuedHandler->call(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Array)\n#20 /home/jiminny/app/Queue/Worker/Worker.php(71): Illuminate\\\\Queue\\\\Jobs\\\\Job->fire()\n#21 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(435): Jiminny\\\\Queue\\\\Worker\\\\Worker->process('redis', Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#22 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(201): Illuminate\\\\Queue\\\\Worker->runJob(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), 'redis', Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#23 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(148): Illuminate\\\\Queue\\\\Worker->daemon('redis', 'crm-sync,crm-up...', Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#24 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(131): Illuminate\\\\Queue\\\\Console\\\\WorkCommand->runWorker('redis', 'crm-sync,crm-up...')\n#25 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Illuminate\\\\Queue\\\\Console\\\\WorkCommand->handle()\n#26 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#27 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#28 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#29 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#30 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(211): Illuminate\\\\Container\\\\Container->call(Array)\n#31 /home/jiminny/vendor/symfony/console/Command/Command.php(341): Illuminate\\\\Console\\\\Command->execute(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#32 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(180): Symfony\\\\Component\\\\Console\\\\Command\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#33 /home/jiminny/vendor/symfony/console/Application.php(1117): Illuminate\\\\Console\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#34 /home/jiminny/vendor/symfony/console/Application.php(356): Symfony\\\\Component\\\\Console\\\\Application->doRunCommand(Object(Illuminate\\\\Queue\\\\Console\\\\WorkCommand), Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#35 /home/jiminny/vendor/symfony/console/Application.php(195): Symfony\\\\Component\\\\Console\\\\Application->doRun(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#36 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(198): Symfony\\\\Component\\\\Console\\\\Application->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#37 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1235): Illuminate\\\\Foundation\\\\Console\\\\Kernel->handle(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#38 /home/jiminny/artisan(13): Illuminate\\\\Foundation\\\\Application->handleCommand(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput))\n#39 {main}\n\"} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.INFO: [SyncHubspotObjects] Starting sync {\"team\":\"b2d49a54-b645-4637-a7ae-a86cfce6e8e4\",\"usage\":25235152,\"real_usage\":65011712,\"pid\":37113} {\"correlation_id\":\"0d3cf2b0-a245-4a83-9bd5-1c5788b85738\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.WARNING: [HubSpot] Account not connected for user {\"userId\":\"2ac0447f-3c8c-4ce0-baeb-b63ddb76fa9b\",\"account\":null} {\"correlation_id\":\"0d3cf2b0-a245-4a83-9bd5-1c5788b85738\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {\"crm_provider\":\"hubspot\",\"crm_owner\":130,\"team_id\":42} {\"correlation_id\":\"0d3cf2b0-a245-4a83-9bd5-1c5788b85738\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":42} {\"correlation_id\":\"0d3cf2b0-a245-4a83-9bd5-1c5788b85738\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":42} {\"correlation_id\":\"0d3cf2b0-a245-4a83-9bd5-1c5788b85738\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.INFO: [SyncHubspotObjects] Sync finished {\"team\":\"b2d49a54-b645-4637-a7ae-a86cfce6e8e4\",\"provider\":\"hubspot\",\"status\":\"disconnected\",\"duration_ms\":70.53,\"usage\":25225384,\"real_usage\":65011712,\"pid\":37113,\"reason\":\"Social account for HubSpot cannot be found. Please login to Jiminny to connect.\"} {\"correlation_id\":\"0d3cf2b0-a245-4a83-9bd5-1c5788b85738\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Starting sync {\"team\":\"b2b115eb-93ce-4d1b-929c-173757df8fba\",\"usage\":25263936,\"real_usage\":65011712,\"pid\":37113} {\"correlation_id\":\"1e46be79-1db4-4829-b19c-1548141a94e0\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.WARNING: [HubSpot] Account not connected for user {\"userId\":\"33e34a7a-1c02-4f04-87ac-22c3a385e6e3\",\"account\":{\"Jiminny\\\\Models\\\\SocialAccount\":{\"id\":306,\"sociable_id\":109,\"provider_user_id\":\"11348452\",\"expires\":1701077403,\"refresh_token_expires\":null,\"provider\":\"hubspot\",\"state\":\"full-refresh\",\"auth_scope\":null,\"retry_after\":null,\"created_at\":\"2020-09-01 16:59:04\",\"updated_at\":\"2023-11-27 09:30:03\"}}} {\"correlation_id\":\"1e46be79-1db4-4829-b19c-1548141a94e0\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {\"crm_provider\":\"hubspot\",\"crm_owner\":109,\"team_id\":29} {\"correlation_id\":\"1e46be79-1db4-4829-b19c-1548141a94e0\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":29} {\"correlation_id\":\"1e46be79-1db4-4829-b19c-1548141a94e0\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":29} {\"correlation_id\":\"1e46be79-1db4-4829-b19c-1548141a94e0\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Sync finished {\"team\":\"b2b115eb-93ce-4d1b-929c-173757df8fba\",\"provider\":\"hubspot\",\"status\":\"disconnected\",\"duration_ms\":47.7,\"usage\":25451952,\"real_usage\":65011712,\"pid\":37113,\"reason\":\"Your HubSpot account has become disconnected. Please login to Jiminny to reconnect.\"} {\"correlation_id\":\"1e46be79-1db4-4829-b19c-1548141a94e0\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Starting sync {\"team\":\"c6b9d6b0-b48d-4832-a68c-a57d60651888\",\"usage\":25490320,\"real_usage\":65011712,\"pid\":37113} {\"correlation_id\":\"0da4e096-9534-4a72-bc1f-8e61561d8e37\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.WARNING: [HubSpot] Account not connected for user {\"userId\":\"71e3aac5-fb66-47c5-a236-2d051ae3e319\",\"account\":null} {\"correlation_id\":\"0da4e096-9534-4a72-bc1f-8e61561d8e37\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {\"crm_provider\":\"hubspot\",\"crm_owner\":256,\"team_id\":49} {\"correlation_id\":\"0da4e096-9534-4a72-bc1f-8e61561d8e37\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":49} {\"correlation_id\":\"0da4e096-9534-4a72-bc1f-8e61561d8e37\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":49} {\"correlation_id\":\"0da4e096-9534-4a72-bc1f-8e61561d8e37\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Sync finished {\"team\":\"c6b9d6b0-b48d-4832-a68c-a57d60651888\",\"provider\":\"hubspot\",\"status\":\"disconnected\",\"duration_ms\":44.12,\"usage\":25547952,\"real_usage\":65011712,\"pid\":37113,\"reason\":\"Social account for HubSpot cannot be found. Please login to Jiminny to connect.\"} {\"correlation_id\":\"0da4e096-9534-4a72-bc1f-8e61561d8e37\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Starting sync {\"team\":\"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4\",\"usage\":25587032,\"real_usage\":65011712,\"pid\":37113} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":148,\"team_id\":2} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [HubSpot] Syncing opportunities using strategy: lastModified {\"team\":2} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/deals/search\",\"total_requests\":0,\"total_records_fetched\":0,\"total_elapsed_seconds\":0.28,\"average_seconds_per_request\":0} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Sync finished {\"team\":\"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4\",\"provider\":\"hubspot\",\"status\":\"completed\",\"duration_ms\":412.19,\"usage\":25739960,\"real_usage\":65011712,\"pid\":37113} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.ERROR: Jiminny\\Services\\Crm\\Hubspot\\Pagination\\HubspotPaginationService::getPaginatedDataGenerator(): Return value must be of type Generator, none returned {\"exception\":\"[object] (TypeError(code: 0): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService::getPaginatedDataGenerator(): Return value must be of type Generator, none returned at /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php:82)\n[stacktrace]\n#0 /home/jiminny/app/Services/Crm/Hubspot/Client.php(194): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->getPaginatedDataGenerator(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), Array, 'deals', 0, 0, NULL)\n#1 /home/jiminny/app/Services/Crm/Hubspot/OpportunitySyncStrategy/HubspotSyncStrategyBase.php(55): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client->getPaginatedDataGenerator(Array, 'deals', 0, 0, NULL)\n#2 /home/jiminny/app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php(73): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\OpportunitySyncStrategy\\\\HubspotSyncStrategyBase->fetchOpportunities(Array, 0, NULL)\n#3 /home/jiminny/app/Jobs/Crm/SyncHubspotObjects.php(118): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service->syncOpportunities(Array)\n#4 /home/jiminny/app/Jobs/Crm/SyncHubspotObjects.php(86): Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects->syncHubspotCrmObjects(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service), Object(Illuminate\\\\Support\\\\Carbon))\n#5 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects->handle(Object(Jiminny\\\\Services\\\\ResolveTeamCrmConnection), Object(Illuminate\\\\Log\\\\LogManager), Object(Jiminny\\\\Repositories\\\\TeamRepository))\n#6 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#7 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#8 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#9 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#10 /home/jiminny/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(129): Illuminate\\\\Container\\\\Container->call(Array)\n#11 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\\\Bus\\\\Dispatcher->Illuminate\\\\Bus\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#12 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\\\\Pipeline\\\\Pipeline->Illuminate\\\\Pipeline\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#13 /home/jiminny/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(133): Illuminate\\\\Pipeline\\\\Pipeline->then(Object(Closure))\n#14 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(136): Illuminate\\\\Bus\\\\Dispatcher->dispatchNow(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects), false)\n#15 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\\\Queue\\\\CallQueuedHandler->Illuminate\\\\Queue\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#16 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\\\\Pipeline\\\\Pipeline->Illuminate\\\\Pipeline\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#17 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(129): Illuminate\\\\Pipeline\\\\Pipeline->then(Object(Closure))\n#18 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(70): Illuminate\\\\Queue\\\\CallQueuedHandler->dispatchThroughMiddleware(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#19 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Jobs/Job.php(102): Illuminate\\\\Queue\\\\CallQueuedHandler->call(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Array)\n#20 /home/jiminny/app/Queue/Worker/Worker.php(71): Illuminate\\\\Queue\\\\Jobs\\\\Job->fire()\n#21 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(435): Jiminny\\\\Queue\\\\Worker\\\\Worker->process('redis', Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#22 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(201): Illuminate\\\\Queue\\\\Worker->runJob(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), 'redis', Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#23 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(148): Illuminate\\\\Queue\\\\Worker->daemon('redis', 'crm-sync,crm-up...', Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#24 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(131): Illuminate\\\\Queue\\\\Console\\\\WorkCommand->runWorker('redis', 'crm-sync,crm-up...')\n#25 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Illuminate\\\\Queue\\\\Console\\\\WorkCommand->handle()\n#26 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#27 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#28 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#29 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#30 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(211): Illuminate\\\\Container\\\\Container->call(Array)\n#31 /home/jiminny/vendor/symfony/console/Command/Command.php(341): Illuminate\\\\Console\\\\Command->execute(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#32 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(180): Symfony\\\\Component\\\\Console\\\\Command\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#33 /home/jiminny/vendor/symfony/console/Application.php(1117): Illuminate\\\\Console\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#34 /home/jiminny/vendor/symfony/console/Application.php(356): Symfony\\\\Component\\\\Console\\\\Application->doRunCommand(Object(Illuminate\\\\Queue\\\\Console\\\\WorkCommand), Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#35 /home/jiminny/vendor/symfony/console/Application.php(195): Symfony\\\\Component\\\\Console\\\\Application->doRun(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#36 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(198): Symfony\\\\Component\\\\Console\\\\Application->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#37 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1235): Illuminate\\\\Foundation\\\\Console\\\\Kernel->handle(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#38 /home/jiminny/artisan(13): Illuminate\\\\Foundation\\\\Application->handleCommand(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput))\n#39 {main}\n\"} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Starting sync {\"team\":\"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4\",\"usage\":25172624,\"real_usage\":65011712,\"pid\":37113} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":148,\"team_id\":2} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [HubSpot] Syncing opportunities using strategy: lastModified {\"team\":2} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/deals/search\",\"total_requests\":0,\"total_records_fetched\":0,\"total_elapsed_seconds\":0.23,\"average_seconds_per_request\":0} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Sync finished {\"team\":\"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4\",\"provider\":\"hubspot\",\"status\":\"completed\",\"duration_ms\":291.83,\"usage\":25225088,\"real_usage\":65011712,\"pid\":37113} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:54] local.ERROR: Jiminny\\Services\\Crm\\Hubspot\\Pagination\\HubspotPaginationService::getPaginatedDataGenerator(): Return value must be of type Generator, none returned {\"exception\":\"[object] (TypeError(code: 0): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService::getPaginatedDataGenerator(): Return value must be of type Generator, none returned at /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php:82)\n[stacktrace]\n#0 /home/jiminny/app/Services/Crm/Hubspot/Client.php(194): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->getPaginatedDataGenerator(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), Array, 'deals', 0, 0, NULL)\n#1 /home/jiminny/app/Services/Crm/Hubspot/OpportunitySyncStrategy/HubspotSyncStrategyBase.php(55): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client->getPaginatedDataGenerator(Array, 'deals', 0, 0, NULL)\n#2 /home/jiminny/app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php(73): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\OpportunitySyncStrategy\\\\HubspotSyncStrategyBase->fetchOpportunities(Array, 0, NULL)\n#3 /home/jiminny/app/Jobs/Crm/SyncHubspotObjects.php(118): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service->syncOpportunities(Array)\n#4 /home/jiminny/app/Jobs/Crm/SyncHubspotObjects.php(86): Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects->syncHubspotCrmObjects(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service), Object(Illuminate\\\\Support\\\\Carbon))\n#5 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects->handle(Object(Jiminny\\\\Services\\\\ResolveTeamCrmConnection), Object(Illuminate\\\\Log\\\\LogManager), Object(Jiminny\\\\Repositories\\\\TeamRepository))\n#6 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#7 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#8 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#9 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#10 /home/jiminny/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(129): Illuminate\\\\Container\\\\Container->call(Array)\n#11 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\\\Bus\\\\Dispatcher->Illuminate\\\\Bus\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#12 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\\\\Pipeline\\\\Pipeline->Illuminate\\\\Pipeline\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#13 /home/jiminny/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(133): Illuminate\\\\Pipeline\\\\Pipeline->then(Object(Closure))\n#14 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(136): Illuminate\\\\Bus\\\\Dispatcher->dispatchNow(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects), false)\n#15 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\\\Queue\\\\CallQueuedHandler->Illuminate\\\\Queue\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#16 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\\\\Pipeline\\\\Pipeline->Illuminate\\\\Pipeline\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#17 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(129): Illuminate\\\\Pipeline\\\\Pipeline->then(Object(Closure))\n#18 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(70): Illuminate\\\\Queue\\\\CallQueuedHandler->dispatchThroughMiddleware(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#19 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Jobs/Job.php(102): Illuminate\\\\Queue\\\\CallQueuedHandler->call(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Array)\n#20 /home/jiminny/app/Queue/Worker/Worker.php(71): Illuminate\\\\Queue\\\\Jobs\\\\Job->fire()\n#21 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(435): Jiminny\\\\Queue\\\\Worker\\\\Worker->process('redis', Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#22 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(201): Illuminate\\\\Queue\\\\Worker->runJob(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), 'redis', Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#23 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(148): Illuminate\\\\Queue\\\\Worker->daemon('redis', 'crm-sync,crm-up...', Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#24 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(131): Illuminate\\\\Queue\\\\Console\\\\WorkCommand->runWorker('redis', 'crm-sync,crm-up...')\n#25 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Illuminate\\\\Queue\\\\Console\\\\WorkCommand->handle()\n#26 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#27 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#28 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#29 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#30 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(211): Illuminate\\\\Container\\\\Container->call(Array)\n#31 /home/jiminny/vendor/symfony/console/Command/Command.php(341): Illuminate\\\\Console\\\\Command->execute(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#32 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(180): Symfony\\\\Component\\\\Console\\\\Command\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#33 /home/jiminny/vendor/symfony/console/Application.php(1117): Illuminate\\\\Console\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#34 /home/jiminny/vendor/symfony/console/Application.php(356): Symfony\\\\Component\\\\Console\\\\Application->doRunCommand(Object(Illuminate\\\\Queue\\\\Console\\\\WorkCommand), Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#35 /home/jiminny/vendor/symfony/console/Application.php(195): Symfony\\\\Component\\\\Console\\\\Application->doRun(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#36 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(198): Symfony\\\\Component\\\\Console\\\\Application->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#37 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1235): Illuminate\\\\Foundation\\\\Console\\\\Kernel->handle(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#38 /home/jiminny/artisan(13): Illuminate\\\\Foundation\\\\Application->handleCommand(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput))\n#39 {main}\n\"} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:57:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"854299be-d77a-48bc-870c-b78333916d69\",\"trace_id\":\"89c1eb6c-bc78-419c-9304-b770093d5692\"}\n[2026-05-07 12:57:06] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"854299be-d77a-48bc-870c-b78333916d69\",\"trace_id\":\"89c1eb6c-bc78-419c-9304-b770093d5692\"}\n[2026-05-07 12:57:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"854299be-d77a-48bc-870c-b78333916d69\",\"trace_id\":\"89c1eb6c-bc78-419c-9304-b770093d5692\"}\n[2026-05-07 12:57:16] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"c4e512a3-a227-4569-bcd2-3258a9142d46\",\"trace_id\":\"016bf668-6712-4c0f-8c8c-c2e411a37889\"}\n[2026-05-07 12:57:16] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"c4e512a3-a227-4569-bcd2-3258a9142d46\",\"trace_id\":\"016bf668-6712-4c0f-8c8c-c2e411a37889\"}\n[2026-05-07 12:57:19] local.NOTICE: Monitoring start {\"correlation_id\":\"4c2d4775-716d-4ca6-b94d-cb17dace29a7\",\"trace_id\":\"e969e10d-e5f0-44c6-9767-97a70e05cfe5\"}\n[2026-05-07 12:57:19] local.NOTICE: Monitoring end {\"correlation_id\":\"4c2d4775-716d-4ca6-b94d-cb17dace29a7\",\"trace_id\":\"e969e10d-e5f0-44c6-9767-97a70e05cfe5\"}\n[2026-05-07 12:57:22] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"d03e9546-bfd0-44c6-84ee-299b1e6c14a2\",\"trace_id\":\"acbab6e5-17fc-4b11-907d-ff87322285d7\"}\n[2026-05-07 12:57:22] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"d03e9546-bfd0-44c6-84ee-299b1e6c14a2\",\"trace_id\":\"acbab6e5-17fc-4b11-907d-ff87322285d7\"}\n[2026-05-07 12:57:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"a2c0095a-18b2-427e-825b-c68c9dbf63a1\",\"trace_id\":\"9b170d6a-ed10-4a41-af79-684c99021967\"}\n[2026-05-07 12:57:25] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"a2c0095a-18b2-427e-825b-c68c9dbf63a1\",\"trace_id\":\"9b170d6a-ed10-4a41-af79-684c99021967\"}\n[2026-05-07 12:57:25] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"a2c0095a-18b2-427e-825b-c68c9dbf63a1\",\"trace_id\":\"9b170d6a-ed10-4a41-af79-684c99021967\"}\n[2026-05-07 12:57:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"a2c0095a-18b2-427e-825b-c68c9dbf63a1\",\"trace_id\":\"9b170d6a-ed10-4a41-af79-684c99021967\"}\n[2026-05-07 12:57:27] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:create\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"c4e70056-ceab-4c44-874a-8042963ce3ea\",\"trace_id\":\"011a70aa-ebb2-4ca8-aef6-4b4cca233da7\"}\n[2026-05-07 12:57:27] local.INFO: [EmailSchedule] STARTING batch create {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"c4e70056-ceab-4c44-874a-8042963ce3ea\",\"trace_id\":\"011a70aa-ebb2-4ca8-aef6-4b4cca233da7\"}\n[2026-05-07 12:57:27] local.INFO: [EmailSchedule] FINISHED batch create {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"c4e70056-ceab-4c44-874a-8042963ce3ea\",\"trace_id\":\"011a70aa-ebb2-4ca8-aef6-4b4cca233da7\"}\n[2026-05-07 12:57:27] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:create\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"c4e70056-ceab-4c44-874a-8042963ce3ea\",\"trace_id\":\"011a70aa-ebb2-4ca8-aef6-4b4cca233da7\"}\n[2026-05-07 12:57:28] local.INFO: [Jiminny\\Jobs\\Mailbox\\CreateBatches] processed 2 inboxes and created 0 batches {\"userId\":null,\"batchSize\":30,\"maxBatches\":1000} {\"correlation_id\":\"c296bf83-9f7c-4228-b6f5-99db6040fa01\",\"trace_id\":\"011a70aa-ebb2-4ca8-aef6-4b4cca233da7\"}\n[2026-05-07 12:58:06] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"a9e2de8b-b538-437e-bbe7-82636da81995\",\"trace_id\":\"e517ae80-e149-490c-b719-309e898b3c93\"}\n[2026-05-07 12:58:06] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"a9e2de8b-b538-437e-bbe7-82636da81995\",\"trace_id\":\"e517ae80-e149-490c-b719-309e898b3c93\"}\n[2026-05-07 12:58:06] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"a9e2de8b-b538-437e-bbe7-82636da81995\",\"trace_id\":\"e517ae80-e149-490c-b719-309e898b3c93\"}\n[2026-05-07 12:58:06] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":148,\"team_id\":2} {\"correlation_id\":\"a9e2de8b-b538-437e-bbe7-82636da81995\",\"trace_id\":\"e517ae80-e149-490c-b719-309e898b3c93\"}\n[2026-05-07 12:58:06] local.ERROR: Client error: `POST https://api.hubapi.com/crm/v3/objects/contact/search` resulted in a `429 Too Many Requests` response:\n{\"status\":\"error\",\"message\":\"You have reached your secondly limit.\",\"errorType\":\"RATE_LIMIT\",\"correlationId\":\"019e0284-5 (truncated...)\n {\"exception\":\"[object] (SevenShores\\\\Hubspot\\\\Exceptions\\\\BadRequest(code: 429): Client error: `POST https://api.hubapi.com/crm/v3/objects/contact/search` resulted in a `429 Too Many Requests` response:\n{\\\"status\\\":\\\"error\\\",\\\"message\\\":\\\"You have reached your secondly limit.\\\",\\\"errorType\\\":\\\"RATE_LIMIT\\\",\\\"correlationId\\\":\\\"019e0284-5 (truncated...)\n at /home/jiminny/vendor/hubspot/hubspot-php/src/Exceptions/HubspotException.php:24)\n[stacktrace]\n#0 /home/jiminny/vendor/hubspot/hubspot-php/src/Http/Client.php(125): SevenShores\\\\Hubspot\\\\Exceptions\\\\HubspotException::create(Object(GuzzleHttp\\\\Exception\\\\ClientException))\n#1 /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php(163): SevenShores\\\\Hubspot\\\\Http\\\\Client->request('POST', 'https://api.hub...', Array)\n#2 /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php(51): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->executeSearchRequest(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), 'https://api.hub...', Array, Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\PaginationState))\n#3 /home/jiminny/app/Services/Crm/Hubspot/Client.php(194): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->getPaginatedDataGenerator(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), Array, 'contact', 0, 0, NULL)\n#4 /home/jiminny/app/Services/Crm/Hubspot/Client.php(175): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client->getPaginatedDataGenerator(Array, 'contact', 0, 0, NULL)\n#5 /home/jiminny/app/Services/Crm/Hubspot/Service.php(1203): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client->getPaginatedData(Array, 'contact')\n#6 /home/jiminny/app/Console/Commands/JiminnyDebugCommand.php(353): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service->matchByName('Robot')\n#7 /home/jiminny/app/Console/Commands/JiminnyDebugCommand.php(44): Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand->rateLimit()\n#8 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand->handle(Object(Jiminny\\\\Jobs\\\\JobDispatcher), Object(Jiminny\\\\Services\\\\Kiosk\\\\AutomatedReports\\\\AutomatedReportsService), Object(Jiminny\\\\Repositories\\\\AutomatedReportsRepository), Object(Jiminny\\\\Services\\\\UserPilot\\\\UserPilotClient))\n#9 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#10 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#11 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#12 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#13 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(211): Illuminate\\\\Container\\\\Container->call(Array)\n#14 /home/jiminny/vendor/symfony/console/Command/Command.php(341): Illuminate\\\\Console\\\\Command->execute(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#15 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(180): Symfony\\\\Component\\\\Console\\\\Command\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#16 /home/jiminny/vendor/symfony/console/Application.php(1117): Illuminate\\\\Console\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#17 /home/jiminny/vendor/symfony/console/Application.php(356): Symfony\\\\Component\\\\Console\\\\Application->doRunCommand(Object(Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand), Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#18 /home/jiminny/vendor/symfony/console/Application.php(195): Symfony\\\\Component\\\\Console\\\\Application->doRun(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#19 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(198): Symfony\\\\Component\\\\Console\\\\Application->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#20 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1235): Illuminate\\\\Foundation\\\\Console\\\\Kernel->handle(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#21 /home/jiminny/artisan(13): Illuminate\\\\Foundation\\\\Application->handleCommand(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput))\n#22 {main}\n\n[previous exception] [object] (GuzzleHttp\\\\Exception\\\\ClientException(code: 429): Client error: `POST https://api.hubapi.com/crm/v3/objects/contact/search` resulted in a `429 Too Many Requests` response:\n{\\\"status\\\":\\\"error\\\",\\\"message\\\":\\\"You have reached your secondly limit.\\\",\\\"errorType\\\":\\\"RATE_LIMIT\\\",\\\"correlationId\\\":\\\"019e0284-5 (truncated...)\n at /home/jiminny/vendor/guzzlehttp/guzzle/src/Exception/RequestException.php:111)\n[stacktrace]\n#0 /home/jiminny/vendor/guzzlehttp/guzzle/src/Middleware.php(72): GuzzleHttp\\\\Exception\\\\RequestException::create(Object(GuzzleHttp\\\\Psr7\\\\Request), Object(GuzzleHttp\\\\Psr7\\\\Response), NULL, Array, NULL)\n#1 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(209): GuzzleHttp\\\\Middleware::GuzzleHttp\\\\{closure}(Object(GuzzleHttp\\\\Psr7\\\\Response))\n#2 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(158): GuzzleHttp\\\\Promise\\\\Promise::callHandler(1, Object(GuzzleHttp\\\\Psr7\\\\Response), NULL)\n#3 /home/jiminny/vendor/guzzlehttp/promises/src/TaskQueue.php(52): GuzzleHttp\\\\Promise\\\\Promise::GuzzleHttp\\\\Promise\\\\{closure}()\n#4 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(251): GuzzleHttp\\\\Promise\\\\TaskQueue->run(true)\n#5 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(227): GuzzleHttp\\\\Promise\\\\Promise->invokeWaitFn()\n#6 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(272): GuzzleHttp\\\\Promise\\\\Promise->waitIfPending()\n#7 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(229): GuzzleHttp\\\\Promise\\\\Promise->invokeWaitList()\n#8 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(69): GuzzleHttp\\\\Promise\\\\Promise->waitIfPending()\n#9 /home/jiminny/vendor/guzzlehttp/guzzle/src/Client.php(189): GuzzleHttp\\\\Promise\\\\Promise->wait()\n#10 /home/jiminny/vendor/hubspot/hubspot-php/src/Http/Client.php(113): GuzzleHttp\\\\Client->request('POST', 'https://api.hub...', Array)\n#11 /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php(163): SevenShores\\\\Hubspot\\\\Http\\\\Client->request('POST', 'https://api.hub...', Array)\n#12 /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php(51): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->executeSearchRequest(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), 'https://api.hub...', Array, Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\PaginationState))\n#13 /home/jiminny/app/Services/Crm/Hubspot/Client.php(194): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->getPaginatedDataGenerator(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), Array, 'contact', 0, 0, NULL)\n#14 /home/jiminny/app/Services/Crm/Hubspot/Client.php(175): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client->getPaginatedDataGenerator(Array, 'contact', 0, 0, NULL)\n#15 /home/jiminny/app/Services/Crm/Hubspot/Service.php(1203): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client->getPaginatedData(Array, 'contact')\n#16 /home/jiminny/app/Console/Commands/JiminnyDebugCommand.php(353): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service->matchByName('Robot')\n#17 /home/jiminny/app/Console/Commands/JiminnyDebugCommand.php(44): Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand->rateLimit()\n#18 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand->handle(Object(Jiminny\\\\Jobs\\\\JobDispatcher), Object(Jiminny\\\\Services\\\\Kiosk\\\\AutomatedReports\\\\AutomatedReportsService), Object(Jiminny\\\\Repositories\\\\AutomatedReportsRepository), Object(Jiminny\\\\Services\\\\UserPilot\\\\UserPilotClient))\n#19 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#20 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#21 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#22 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#23 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(211): Illuminate\\\\Container\\\\Container->call(Array)\n#24 /home/jiminny/vendor/symfony/console/Command/Command.php(341): Illuminate\\\\Console\\\\Command->execute(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#25 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(180): Symfony\\\\Component\\\\Console\\\\Command\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#26 /home/jiminny/vendor/symfony/console/Application.php(1117): Illuminate\\\\Console\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#27 /home/jiminny/vendor/symfony/console/Application.php(356): Symfony\\\\Component\\\\Console\\\\Application->doRunCommand(Object(Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand), Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#28 /home/jiminny/vendor/symfony/console/Application.php(195): Symfony\\\\Component\\\\Console\\\\Application->doRun(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#29 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(198): Symfony\\\\Component\\\\Console\\\\Application->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#30 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1235): Illuminate\\\\Foundation\\\\Console\\\\Kernel->handle(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#31 /home/jiminny/artisan(13): Illuminate\\\\Foundation\\\\Application->handleCommand(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput))\n#32 {main}\n\"} {\"correlation_id\":\"a9e2de8b-b538-437e-bbe7-82636da81995\",\"trace_id\":\"e517ae80-e149-490c-b719-309e898b3c93\"}\n[2026-05-07 12:58:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"fb59e309-d2cc-4fe0-9db2-544112c25477\",\"trace_id\":\"28ccdd4f-bf3a-4545-bc8a-d94188f8204f\"}\n[2026-05-07 12:58:10] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"fb59e309-d2cc-4fe0-9db2-544112c25477\",\"trace_id\":\"28ccdd4f-bf3a-4545-bc8a-d94188f8204f\"}\n[2026-05-07 12:58:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"fb59e309-d2cc-4fe0-9db2-544112c25477\",\"trace_id\":\"28ccdd4f-bf3a-4545-bc8a-d94188f8204f\"}\n[2026-05-07 12:58:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"bff14f9f-db1d-4b6c-bd92-ca810b31790a\",\"trace_id\":\"ed08145b-94b8-4585-8e81-0ad478d038dc\"}\n[2026-05-07 12:58:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"bff14f9f-db1d-4b6c-bd92-ca810b31790a\",\"trace_id\":\"ed08145b-94b8-4585-8e81-0ad478d038dc\"}\n[2026-05-07 12:58:16] local.NOTICE: Monitoring start {\"correlation_id\":\"54ed6493-c74e-4491-b2ff-9404528f1525\",\"trace_id\":\"9a1f78c0-6e74-482c-a091-8367df3d0f70\"}\n[2026-05-07 12:58:16] local.NOTICE: Monitoring end {\"correlation_id\":\"54ed6493-c74e-4491-b2ff-9404528f1525\",\"trace_id\":\"9a1f78c0-6e74-482c-a091-8367df3d0f70\"}\n[2026-05-07 12:58:24] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"7f141a32-060d-4123-bf20-8a8d7abc1482\",\"trace_id\":\"f7fdcb6b-932a-4f6b-ad95-f111628d6cf7\"}\n[2026-05-07 12:58:24] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"7f141a32-060d-4123-bf20-8a8d7abc1482\",\"trace_id\":\"f7fdcb6b-932a-4f6b-ad95-f111628d6cf7\"}\n[2026-05-07 12:58:36] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"f586fc15-711b-4199-8fdf-dcd2df95af0c\",\"trace_id\":\"828fb459-3b7f-4196-a690-12fc9ce99b1d\"}\n[2026-05-07 12:58:36] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"f586fc15-711b-4199-8fdf-dcd2df95af0c\",\"trace_id\":\"828fb459-3b7f-4196-a690-12fc9ce99b1d\"}\n[2026-05-07 12:58:37] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"f586fc15-711b-4199-8fdf-dcd2df95af0c\",\"trace_id\":\"828fb459-3b7f-4196-a690-12fc9ce99b1d\"}\n[2026-05-07 12:58:37] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"f586fc15-711b-4199-8fdf-dcd2df95af0c\",\"trace_id\":\"828fb459-3b7f-4196-a690-12fc9ce99b1d\"}\n[2026-05-07 12:58:40] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"01d4e25d-56d5-4c89-bc29-d873e21cc16f\",\"trace_id\":\"ee1fe1ac-362b-47c1-9db2-7915a30cf0f2\"}\n[2026-05-07 12:58:40] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:56:00, 2026-05-07 12:58:00] {\"correlation_id\":\"01d4e25d-56d5-4c89-bc29-d873e21cc16f\",\"trace_id\":\"ee1fe1ac-362b-47c1-9db2-7915a30cf0f2\"}\n[2026-05-07 12:58:40] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:56:00, 2026-05-07 12:58:00] {\"correlation_id\":\"01d4e25d-56d5-4c89-bc29-d873e21cc16f\",\"trace_id\":\"ee1fe1ac-362b-47c1-9db2-7915a30cf0f2\"}\n[2026-05-07 12:58:40] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"01d4e25d-56d5-4c89-bc29-d873e21cc16f\",\"trace_id\":\"ee1fe1ac-362b-47c1-9db2-7915a30cf0f2\"}\n[2026-05-07 12:58:48] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"924e149e-3462-4043-87da-00838220b970\",\"trace_id\":\"7d0922db-8131-4a52-a0c5-2a7a78df42e8\"}\n[2026-05-07 12:58:48] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"calendar:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:48] local.NOTICE: Calendar sync start {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:48] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"924e149e-3462-4043-87da-00838220b970\",\"trace_id\":\"7d0922db-8131-4a52-a0c5-2a7a78df42e8\"}\n[2026-05-07 12:58:49] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1393,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:49] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1393,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:49] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:49] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1393,\"provider\":\"google\",\"refreshToken\":\"5aa7e2d96b53201cd16fca5d2e4ef3ad03320971fc064781d18aee3ae7b99fbf\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1393,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Account has been deleted\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1393,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1387,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1387,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1387,\"provider\":\"google\",\"refreshToken\":\"8157ac6de94842937194009e9c50e459253600f799dacf6a40755ffdbeb5bba6\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1387,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Account has been deleted\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1387,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1348,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1348,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1348,\"provider\":\"google\",\"refreshToken\":\"9e7d13d3032d0cb1b79d8e95aef01383e8e91eb52ff8ee960c8a0b6b95cd8c73\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1348,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Bad Request\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1348,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1361,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1361,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1361,\"provider\":\"google\",\"refreshToken\":\"6c843da199c2b9907445329304fcc4ec5057a4ee748d8299641764395c08e1fd\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1361,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Account has been deleted\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1361,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1310,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1310,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1310,\"provider\":\"google\",\"refreshToken\":\"e34818922c2830a660813a63f6169a4a9a992ae2cccd7dc8dd7796cfdb470ef1\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1310,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Bad Request\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1310,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1333,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1333,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1333,\"provider\":\"google\",\"refreshToken\":\"6c902986546d8e8da1dc539b046cdc1d458f519acc972e5b5f1d6a1a295165e0\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1333,\"provider\":\"google\",\"responseBody\":{\"error\":\"unauthorized_client\",\"error_description\":\"Unauthorized\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1333,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1368,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1368,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1368,\"provider\":\"google\",\"refreshToken\":\"d2f128898ff8543bd16b69cfae37896ab85119b0f5ed2b431d739593bb600333\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1368,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Bad Request\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1368,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1365,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1365,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1365,\"provider\":\"google\",\"refreshToken\":\"7676e4a9afcd082b413248ab5ec6e487021fec6a9bdf315860a59cefad9caad8\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1365,\"provider\":\"google\",\"responseBody\":{\"error\":\"unauthorized_client\",\"error_description\":\"Unauthorized\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1365,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1364,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1364,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1364,\"provider\":\"google\",\"refreshToken\":\"dd5882ebce76e645292ce33ae74238abbb77c0a4ecc6a2bfe723cad82e72ba8e\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1364,\"provider\":\"google\",\"responseBody\":{\"error\":\"unauthorized_client\",\"error_description\":\"Unauthorized\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1364,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1370,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1370,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1370,\"provider\":\"office\",\"refreshToken\":\"b7ee8035306d0043cea6e00e7c4fe14f745e44074a1194db62a31cdf8b70af3e\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1370,\"provider\":\"office\",\"responseBody\":\"{\\\"error\\\":\\\"invalid_client\\\",\\\"error_description\\\":\\\"AADSTS7000215: Invalid client secret provided. Ensure the secret being sent in the request is the client secret value, not the client secret ID, for a secret added to app 'bbcbb2ef-6200-4fae-82bd-d81f5dd738da'. Trace ID: ef9bb388-453e-4744-a2e1-95e49ced1700 Correlation ID: 3b889c73-f943-4048-ba3b-63ac50581245 Timestamp: 2026-05-07 12:58:53Z\\\",\\\"error_codes\\\":[7000215],\\\"timestamp\\\":\\\"2026-05-07 12:58:53Z\\\",\\\"trace_id\\\":\\\"ef9bb388-453e-4744-a2e1-95e49ced1700\\\",\\\"correlation_id\\\":\\\"3b889c73-f943-4048-ba3b-63ac50581245\\\",\\\"error_uri\\\":\\\"https://login.microsoftonline.com/error?code=7000215\\\"}\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1370,\"provider\":\"office\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1202,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1202,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1202,\"provider\":\"office\",\"refreshToken\":\"b458799ccc29b21a6e2eb5260fdb63e49ccba21bf942a3973fb63799bd7f0afe\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1202,\"provider\":\"office\",\"responseBody\":\"{\\\"error\\\":\\\"invalid_client\\\",\\\"error_description\\\":\\\"AADSTS7000215: Invalid client secret provided. Ensure the secret being sent in the request is the client secret value, not the client secret ID, for a secret added to app 'bbcbb2ef-6200-4fae-82bd-d81f5dd738da'. Trace ID: 0b8181c0-c858-4d17-af69-c23b7f5a0a00 Correlation ID: 2ce9e931-f423-4048-b1d7-ae1910cd4834 Timestamp: 2026-05-07 12:58:54Z\\\",\\\"error_codes\\\":[7000215],\\\"timestamp\\\":\\\"2026-05-07 12:58:54Z\\\",\\\"trace_id\\\":\\\"0b8181c0-c858-4d17-af69-c23b7f5a0a00\\\",\\\"correlation_id\\\":\\\"2ce9e931-f423-4048-b1d7-ae1910cd4834\\\",\\\"error_uri\\\":\\\"https://login.microsoftonline.com/error?code=7000215\\\"}\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1202,\"provider\":\"office\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1502,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1502,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: Calendar sync job dispatched {\"calendar_id\":501} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1300,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1300,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1300,\"provider\":\"google\",\"refreshToken\":\"4b811db0725fd9602a95943519a7da935e2a5065da7d9ebfcb170752e3e1ddb8\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1300,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Account has been deleted\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1300,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1409,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1409,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1409,\"provider\":\"google\",\"refreshToken\":\"e2a3f2d06894894eed1ee87d9db1ace77d4d42ee6e1288a8940ad2c10333b0c4\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1409,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Bad Request\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1409,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1352,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1352,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1352,\"provider\":\"google\",\"refreshToken\":\"dd4b16b00fdc1216da6b717c02338c073636e29162826b2de6db3f064fc029eb\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1352,\"provider\":\"google\",\"responseBody\":{\"error\":\"unauthorized_client\",\"error_description\":\"Unauthorized\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1352,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1296,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1296,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1296,\"provider\":\"office\",\"refreshToken\":\"011ae723c9d800c674e0b4be76f49fc046dac7d501b66c59ef0d9549cfa56ae5\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1296,\"provider\":\"office\",\"responseBody\":\"{\\\"error\\\":\\\"invalid_client\\\",\\\"error_description\\\":\\\"AADSTS7000215: Invalid client secret provided. Ensure the secret being sent in the request is the client secret value, not the client secret ID, for a secret added to app 'bbcbb2ef-6200-4fae-82bd-d81f5dd738da'. Trace ID: 4f38b1ca-479e-445c-8db5-29366d0a0c00 Correlation ID: d0a4d623-1a23-4fcc-aebf-ccafeed44a92 Timestamp: 2026-05-07 12:58:56Z\\\",\\\"error_codes\\\":[7000215],\\\"timestamp\\\":\\\"2026-05-07 12:58:56Z\\\",\\\"trace_id\\\":\\\"4f38b1ca-479e-445c-8db5-29366d0a0c00\\\",\\\"correlation_id\\\":\\\"d0a4d623-1a23-4fcc-aebf-ccafeed44a92\\\",\\\"error_uri\\\":\\\"https://login.microsoftonline.com/error?code=7000215\\\"}\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1296,\"provider\":\"office\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":391,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":391,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":391,\"provider\":\"office\",\"refreshToken\":\"00045eebae0f39b34887c6d53f92ae78064f7145e1f4b67754aebd03cfb2d881\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1502,\"provider\":\"google\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1502,\"provider\":\"google\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [Calendar] Processing sync {\"calendarId\":\"a33076c1-8d97-431a-99f0-85c9524e118b\",\"from\":null,\"to\":null,\"delta\":\"CIiFh8TP44kDEIiFh8TP44kDGAUgkZvkzgIokZvkzgI=\",\"last_sync\":\"2024-12-09 07:12:53\",\"dateMode\":\"daily\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"integration-app\",\"crm_owner\":1695,\"team_id\":3143} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1502,\"provider\":\"google\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1502,\"provider\":\"google\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":391,\"provider\":\"office\",\"responseBody\":\"{\\\"error\\\":\\\"invalid_client\\\",\\\"error_description\\\":\\\"AADSTS7000215: Invalid client secret provided. Ensure the secret being sent in the request is the client secret value, not the client secret ID, for a secret added to app 'bbcbb2ef-6200-4fae-82bd-d81f5dd738da'. Trace ID: 1791a948-a974-424b-9246-7fedfa913b00 Correlation ID: b0e7bf62-d69e-49dd-b7c9-9550f0bd2aec Timestamp: 2026-05-07 12:58:56Z\\\",\\\"error_codes\\\":[7000215],\\\"timestamp\\\":\\\"2026-05-07 12:58:56Z\\\",\\\"trace_id\\\":\\\"1791a948-a974-424b-9246-7fedfa913b00\\\",\\\"correlation_id\\\":\\\"b0e7bf62-d69e-49dd-b7c9-9550f0bd2aec\\\",\\\"error_uri\\\":\\\"https://login.microsoftonline.com/error?code=7000215\\\"}\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":391,\"provider\":\"office\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1271,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1271,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1271,\"provider\":\"office\",\"refreshToken\":\"118cde2c06993147b07ccaec4cbcd5026a819dea6c71081166a492933e392afb\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [Google Calendar] Failed to watch channel for calendar {\"calendarId\":\"a33076c1-8d97-431a-99f0-85c9524e118b\",\"code\":400,\"reason\":\"{\n \\\"error\\\": {\n \\\"errors\\\": [\n {\n \\\"domain\\\": \\\"global\\\",\n \\\"reason\\\": \\\"push.webhookUrlNotHttps\\\",\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n ],\n \\\"code\\\": 400,\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n}\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.WARNING: [Calendar] Sync failed {\"calendarId\":\"a33076c1-8d97-431a-99f0-85c9524e118b\",\"code\":400,\"reason\":\"{\n \\\"error\\\": {\n \\\"errors\\\": [\n {\n \\\"domain\\\": \\\"global\\\",\n \\\"reason\\\": \\\"push.webhookUrlNotHttps\\\",\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n ],\n \\\"code\\\": 400,\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n}\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1271,\"provider\":\"office\",\"responseBody\":\"{\\\"error\\\":\\\"invalid_client\\\",\\\"error_description\\\":\\\"AADSTS7000215: Invalid client secret provided. Ensure the secret being sent in the request is the client secret value, not the client secret ID, for a secret added to app 'bbcbb2ef-6200-4fae-82bd-d81f5dd738da'. Trace ID: 2be27598-8820-475c-b6ca-a30513720c00 Correlation ID: d3ed2a98-4aa9-4a63-819b-d36fd20b8d62 Timestamp: 2026-05-07 12:58:57Z\\\",\\\"error_codes\\\":[7000215],\\\"timestamp\\\":\\\"2026-05-07 12:58:57Z\\\",\\\"trace_id\\\":\\\"2be27598-8820-475c-b6ca-a30513720c00\\\",\\\"correlation_id\\\":\\\"d3ed2a98-4aa9-4a63-819b-d36fd20b8d62\\\",\\\"error_uri\\\":\\\"https://login.microsoftonline.com/error?code=7000215\\\"}\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1271,\"provider\":\"office\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1351,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1351,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1351,\"provider\":\"google\",\"refreshToken\":\"4271d15b9e60a606439caddc68337f783e472c85b03dacff14d1b6dfded9051c\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1351,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Bad Request\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1351,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1366,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1366,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1366,\"provider\":\"google\",\"refreshToken\":\"ae21385059b2eebfd43f68aecd56eccd702a1aabb6598f1f7ab594ed8af491b4\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1366,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Bad Request\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1366,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1115,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1115,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: Calendar sync job dispatched {\"calendar_id\":378} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:58] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1421,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:58] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1421,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:58] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:58] local.INFO: Calendar sync job dispatched {\"calendar_id\":504} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:58] local.NOTICE: Calendar sync end {\"retrieved_calendars\":31,\"processed_calendars\":3} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:58] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"calendar:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1115,\"provider\":\"google\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1115,\"provider\":\"google\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [Calendar] Processing sync {\"calendarId\":\"2676cb6d-f86c-427e-bf78-591e388e3c1e\",\"from\":null,\"to\":null,\"delta\":\"CJ_x49O3jpIDEJ_x49O3jpIDGAUgw67KlwMow67KlwM=\",\"last_sync\":\"2026-01-19 07:48:40\",\"dateMode\":\"daily\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.WARNING: [Pipedrive] Account not connected for user {\"userId\":\"e6538737-e7b4-455f-a37a-3e79b665a220\",\"account\":{\"Jiminny\\\\Models\\\\SocialAccount\":{\"id\":1116,\"sociable_id\":241,\"provider_user_id\":\"19555731\",\"expires\":1775683749,\"refresh_token_expires\":null,\"provider\":\"pipedrive\",\"state\":\"full-refresh\",\"auth_scope\":\"base,deals:full,activities:full,contacts:full,search:read\",\"retry_after\":null,\"created_at\":\"2023-09-08 09:44:29\",\"updated_at\":\"2026-04-08 22:58:34\"}}} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {\"crm_provider\":\"pipedrive\",\"crm_owner\":241,\"team_id\":19} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {\"crm_provider\":\"pipedrive\",\"team_id\":19} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {\"crm_provider\":\"pipedrive\",\"team_id\":19} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.WARNING: [Calendar] CRM disconnected for user so events will not be matched {\"provider\":\"pipedrive\",\"user_id\":241,\"message\":\"Your Pipedrive account has become disconnected. Please login to Jiminny to reconnect.\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1115,\"provider\":\"google\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1115,\"provider\":\"google\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [Google Calendar] Failed to watch channel for calendar {\"calendarId\":\"2676cb6d-f86c-427e-bf78-591e388e3c1e\",\"code\":400,\"reason\":\"{\n \\\"error\\\": {\n \\\"errors\\\": [\n {\n \\\"domain\\\": \\\"global\\\",\n \\\"reason\\\": \\\"push.webhookUrlNotHttps\\\",\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n ],\n \\\"code\\\": 400,\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n}\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.WARNING: [Calendar] Sync failed {\"calendarId\":\"2676cb6d-f86c-427e-bf78-591e388e3c1e\",\"code\":400,\"reason\":\"{\n \\\"error\\\": {\n \\\"errors\\\": [\n {\n \\\"domain\\\": \\\"global\\\",\n \\\"reason\\\": \\\"push.webhookUrlNotHttps\\\",\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n ],\n \\\"code\\\": 400,\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n}\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1421,\"provider\":\"office\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1421,\"provider\":\"office\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [Calendar] Processing sync {\"calendarId\":\"9e8b1a2c-1a8f-42bd-b161-810fc0baf540\",\"from\":null,\"to\":null,\"delta\":\"R0usmcdvmMuZCBYV0hguCHhwR3crxfEuMI8zGlf-bMYpCFtdxXvSJWTlnqQvu_jjoOrOYL2VG9rZwFHCERHxGfGEK3CmQX6x8MJG3ZbBXGuVIS6C7u-doY5maMRdsfnrHIAEMJd4Bs_WMfMH4tDJ8j9aul7DHDEJaP7w0PoPPpcoxu4nEk4vk-MolJBEgkSrayEewuBs5JVItUX9lUY2tA.yO2roNQ4Vdm6hBgoutuphGchuzbvsk7aqt5wHfcyeFQ\",\"last_sync\":\"2026-05-06 15:58:35\",\"dateMode\":\"daily\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":89,\"team_id\":2} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [MS Office Calendar] Skipping delta sync for daily mode {\"calendarId\":\"9e8b1a2c-1a8f-42bd-b161-810fc0baf540\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:59:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"cb5f9d32-02db-4883-a5c9-a5b86c1a2fbb\",\"trace_id\":\"4fb8a9a0-53b1-414a-813d-a259b89f3203\"}\n[2026-05-07 12:59:06] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"cb5f9d32-02db-4883-a5c9-a5b86c1a2fbb\",\"trace_id\":\"4fb8a9a0-53b1-414a-813d-a259b89f3203\"}\n[2026-05-07 12:59:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"cb5f9d32-02db-4883-a5c9-a5b86c1a2fbb\",\"trace_id\":\"4fb8a9a0-53b1-414a-813d-a259b89f3203\"}\n[2026-05-07 12:59:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"64313a2b-3a92-4419-ae59-caabfc9e9731\",\"trace_id\":\"16443bac-2196-4257-88bc-59445729f276\"}\n[2026-05-07 12:59:09] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"64313a2b-3a92-4419-ae59-caabfc9e9731\",\"trace_id\":\"16443bac-2196-4257-88bc-59445729f276\"}\n[2026-05-07 12:59:11] local.NOTICE: Monitoring start {\"correlation_id\":\"7678c2ca-049f-44e4-acce-2e711f8d7d40\",\"trace_id\":\"54ef3d3c-f1ea-4a01-aed2-db19a6739a06\"}\n[2026-05-07 12:59:11] local.NOTICE: Monitoring end {\"correlation_id\":\"7678c2ca-049f-44e4-acce-2e711f8d7d40\",\"trace_id\":\"54ef3d3c-f1ea-4a01-aed2-db19a6739a06\"}\n[2026-05-07 12:59:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"44d7c1a1-dfc9-4401-9f63-ad8b5bff9942\",\"trace_id\":\"9f6f5f38-60f5-4869-bfd2-f366d52eaa00\"}\n[2026-05-07 12:59:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"44d7c1a1-dfc9-4401-9f63-ad8b5bff9942\",\"trace_id\":\"9f6f5f38-60f5-4869-bfd2-f366d52eaa00\"}\n[2026-05-07 12:59:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"f90f3b8c-5161-4963-a963-a40284567af1\",\"trace_id\":\"94731c50-8ce2-44ec-ace6-2d46fb00fdb1\"}\n[2026-05-07 12:59:15] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"f90f3b8c-5161-4963-a963-a40284567af1\",\"trace_id\":\"94731c50-8ce2-44ec-ace6-2d46fb00fdb1\"}\n[2026-05-07 12:59:15] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"f90f3b8c-5161-4963-a963-a40284567af1\",\"trace_id\":\"94731c50-8ce2-44ec-ace6-2d46fb00fdb1\"}\n[2026-05-07 12:59:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"f90f3b8c-5161-4963-a963-a40284567af1\",\"trace_id\":\"94731c50-8ce2-44ec-ace6-2d46fb00fdb1\"}\n[2026-05-07 13:00:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"6f98d5e3-0aa8-496e-853a-a77b7a8b74ec\",\"trace_id\":\"b63e8546-4347-49f0-ad1a-92f4e4504843\"}\n[2026-05-07 13:00:10] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"6f98d5e3-0aa8-496e-853a-a77b7a8b74ec\",\"trace_id\":\"b63e8546-4347-49f0-ad1a-92f4e4504843\"}\n[2026-05-07 13:00:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"6f98d5e3-0aa8-496e-853a-a77b7a8b74ec\",\"trace_id\":\"b63e8546-4347-49f0-ad1a-92f4e4504843\"}\n[2026-05-07 13:00:13] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"50260ccd-f119-47b0-baee-514de27801f2\",\"trace_id\":\"40e651df-62f6-4c3a-83ab-842112ec3ece\"}\n[2026-05-07 13:00:13] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"50260ccd-f119-47b0-baee-514de27801f2\",\"trace_id\":\"40e651df-62f6-4c3a-83ab-842112ec3ece\"}\n[2026-05-07 13:00:17] local.NOTICE: Monitoring start {\"correlation_id\":\"f6104856-aca3-4e7b-964e-bba66d730eb3\",\"trace_id\":\"98f34b7b-f715-49cb-8d3a-4e74c1118445\"}\n[2026-05-07 13:00:17] local.NOTICE: Monitoring end {\"correlation_id\":\"f6104856-aca3-4e7b-964e-bba66d730eb3\",\"trace_id\":\"98f34b7b-f715-49cb-8d3a-4e74c1118445\"}\n[2026-05-07 13:00:19] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"b4a9e9a2-968c-429b-8fa8-67dd59bb297f\",\"trace_id\":\"ed6a83d0-8edb-4392-8717-26d91ffde80b\"}\n[2026-05-07 13:00:19] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"b4a9e9a2-968c-429b-8fa8-67dd59bb297f\",\"trace_id\":\"ed6a83d0-8edb-4392-8717-26d91ffde80b\"}\n[2026-05-07 13:00:21] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"b11474b2-8b19-4a2f-89c3-621fde9d3b1f\",\"trace_id\":\"8018d825-0809-411b-9b2a-078e2da6bacb\"}\n[2026-05-07 13:00:21] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"b11474b2-8b19-4a2f-89c3-621fde9d3b1f\",\"trace_id\":\"8018d825-0809-411b-9b2a-078e2da6bacb\"}\n[2026-05-07 13:00:21] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"b11474b2-8b19-4a2f-89c3-621fde9d3b1f\",\"trace_id\":\"8018d825-0809-411b-9b2a-078e2da6bacb\"}\n[2026-05-07 13:00:21] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"b11474b2-8b19-4a2f-89c3-621fde9d3b1f\",\"trace_id\":\"8018d825-0809-411b-9b2a-078e2da6bacb\"}\n[2026-05-07 13:00:23] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"d3b79f58-f9c8-4063-ac7e-7a0445cd1111\",\"trace_id\":\"802cf505-95fb-4f92-8c1b-79aa3ac53084\"}\n[2026-05-07 13:00:23] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:58:00, 2026-05-07 13:00:00] {\"correlation_id\":\"d3b79f58-f9c8-4063-ac7e-7a0445cd1111\",\"trace_id\":\"802cf505-95fb-4f92-8c1b-79aa3ac53084\"}\n[2026-05-07 13:00:23] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:58:00, 2026-05-07 13:00:00] {\"correlation_id\":\"d3b79f58-f9c8-4063-ac7e-7a0445cd1111\",\"trace_id\":\"802cf505-95fb-4f92-8c1b-79aa3ac53084\"}\n[2026-05-07 13:00:23] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"d3b79f58-f9c8-4063-ac7e-7a0445cd1111\",\"trace_id\":\"802cf505-95fb-4f92-8c1b-79aa3ac53084\"}\n[2026-05-07 13:00:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:purge-stale\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"32bad9c1-861c-4a46-bece-585cc1170bfd\",\"trace_id\":\"0c20e20f-6a91-4346-9455-5cd1451c32a1\"}\n[2026-05-07 13:00:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:purge-stale\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"32bad9c1-861c-4a46-bece-585cc1170bfd\",\"trace_id\":\"0c20e20f-6a91-4346-9455-5cd1451c32a1\"}\n[2026-05-07 13:00:29] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:text-relay:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"c9d4f687-1643-431e-9377-2573a2e593fd\",\"trace_id\":\"02fab433-9c9a-49f7-b836-2b8a42551912\"}\n[2026-05-07 13:00:30] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:text-relay:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"c9d4f687-1643-431e-9377-2573a2e593fd\",\"trace_id\":\"02fab433-9c9a-49f7-b836-2b8a42551912\"}\n[2026-05-07 13:00:33] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:pre-meeting-notification\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"57870bb4-45e8-47d8-b192-21d3297d2208\",\"trace_id\":\"ba8e9eac-2dc9-4ed8-bbf1-4a35aedb9efb\"}\n[2026-05-07 13:00:33] local.INFO: Running pre-meeting notification command {\"correlation_id\":\"57870bb4-45e8-47d8-b192-21d3297d2208\",\"trace_id\":\"ba8e9eac-2dc9-4ed8-bbf1-4a35aedb9efb\"}\n[2026-05-07 13:00:33] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:pre-meeting-notification\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"57870bb4-45e8-47d8-b192-21d3297d2208\",\"trace_id\":\"ba8e9eac-2dc9-4ed8-bbf1-4a35aedb9efb\"}\n[2026-05-07 13:00:35] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:start\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"6aeb181b-8314-4d45-aff7-e378793b04d9\",\"trace_id\":\"8ffc66f1-af64-4a58-8ce8-481b3a299dbb\"}\n[2026-05-07 13:00:35] local.INFO: Running conference:monitor:start command for activities in (2026-05-07 12:50:00, 2026-05-07 12:55:00] {\"correlation_id\":\"6aeb181b-8314-4d45-aff7-e378793b04d9\",\"trace_id\":\"8ffc66f1-af64-4a58-8ce8-481b3a299dbb\"}\n[2026-05-07 13:00:35] local.INFO: [conference:monitor:start] No activities found in (2026-05-07 12:50:00, 2026-05-07 12:55:00] {\"correlation_id\":\"6aeb181b-8314-4d45-aff7-e378793b04d9\",\"trace_id\":\"8ffc66f1-af64-4a58-8ce8-481b3a299dbb\"}\n[2026-05-07 13:00:35] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:start\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"6aeb181b-8314-4d45-aff7-e378793b04d9\",\"trace_id\":\"8ffc66f1-af64-4a58-8ce8-481b3a299dbb\"}\n[2026-05-07 13:00:37] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:end\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"888d4f67-ad14-4457-b51d-2cf8b2d315f9\",\"trace_id\":\"eaf4b0b3-0414-4563-b227-ce9c6a2e5b7e\"}\n[2026-05-07 13:00:37] local.INFO: conference:monitor:end:Jiminny\\Console\\Commands\\Activities\\MonitorMeetingEndCommand::logActivitiesEnded {\"from\":\"12:55\",\"to\":\"13:00\"} {\"correlation_id\":\"888d4f67-ad14-4457-b51d-2cf8b2d315f9\",\"trace_id\":\"eaf4b0b3-0414-4563-b227-ce9c6a2e5b7e\"}\n[2026-05-07 13:00:37] local.INFO: conference:monitor:end:Jiminny\\Console\\Commands\\Activities\\MonitorMeetingEndCommand::logActivitiesWithUnfinishedSession {\"from\":\"02:50\",\"to\":\"02:55\"} {\"correlation_id\":\"888d4f67-ad14-4457-b51d-2cf8b2d315f9\",\"trace_id\":\"eaf4b0b3-0414-4563-b227-ce9c6a2e5b7e\"}\n[2026-05-07 13:00:37] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:end\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"888d4f67-ad14-4457-b51d-2cf8b2d315f9\",\"trace_id\":\"eaf4b0b3-0414-4563-b227-ce9c6a2e5b7e\"}\n[2026-05-07 13:00:39] local.NOTICE: Repairing HubSpot tokens start {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:39] local.INFO: Trying to refresh HubSpot token {\"account_id\":59,\"updated_at\":\"2025-10-03 09:32:05\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:39] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:39] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":59,\"provider\":\"hubspot\",\"refreshToken\":\"97b78f6e2cc49965c00c2492b602b02708b1392551e6b3f113fbaa48992af90b\",\"state\":\"full-refresh\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:39] local.ERROR: Failed to refresh HubSpot token {\"account_id\":59,\"updated_at\":\"2025-10-03 09:32:05\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:39] local.INFO: Trying to refresh HubSpot token {\"account_id\":306,\"updated_at\":\"2023-11-27 09:30:03\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:39] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:39] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":306,\"provider\":\"hubspot\",\"refreshToken\":\"6fa6aa8cc641d131231acc3470f5c03cb3b07b2e580fb18f8acb3b1dbb72549b\",\"state\":\"full-refresh\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:40] local.ERROR: Failed to refresh HubSpot token {\"account_id\":306,\"updated_at\":\"2023-11-27 09:30:03\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:40] local.INFO: Trying to refresh HubSpot token {\"account_id\":1372,\"updated_at\":\"2025-10-02 14:47:06\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:40] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:40] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1372,\"provider\":\"hubspot\",\"refreshToken\":\"9aa73948c761da29dce46c177cf9aee1fde483a44169ca38723f9f0597d7a8c4\",\"state\":\"full-refresh\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:40] local.ERROR: Failed to refresh HubSpot token {\"account_id\":1372,\"updated_at\":\"2025-10-02 14:47:06\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:40] local.NOTICE: Repairing HubSpot tokens end {\"total\":3,\"fixed\":0,\"failed\":3} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:45] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"jiminny:transcription:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"b619cc55-b4ef-4913-ab44-6bce51933f7e\",\"trace_id\":\"7cacb418-6e9c-410b-bf3a-15bdf1837908\"}\n[2026-05-07 13:00:45] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:pre-meeting-reminder\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"a765990f-ffe2-44e0-967f-816f5452ce69\",\"trace_id\":\"9aee0f3f-7668-455f-b207-181b58848478\"}\n[2026-05-07 13:00:45] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"jiminny:transcription:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"b619cc55-b4ef-4913-ab44-6bce51933f7e\",\"trace_id\":\"7cacb418-6e9c-410b-bf3a-15bdf1837908\"}\n[2026-05-07 13:00:45] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:45] local.INFO: [HubSpot Journal Command] Starting polling service {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:45] local.INFO: [HubSpot Journal Polling] Service starting {\"memory_limit\":\"256M\",\"max_execution_time\":\"0\",\"initial_memory_mb\":62.0} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:45] local.INFO: [HubSpot Journal Polling] Acquired polling lock {\"expires_at\":\"2026-05-07T13:02:45.724437Z\"} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:45] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:45] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:45] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:pre-meeting-reminder\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"a765990f-ffe2-44e0-967f-816f5452ce69\",\"trace_id\":\"9aee0f3f-7668-455f-b207-181b58848478\"}\n[2026-05-07 13:00:45] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:49] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"crm:reset-governor\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"055b4798-a759-4621-9e0b-652f8ee69ea1\",\"trace_id\":\"10911ef4-48d1-404a-9345-ecf0f5cb9977\"}\n[2026-05-07 13:00:49] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"crm:reset-governor\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"055b4798-a759-4621-9e0b-652f8ee69ea1\",\"trace_id\":\"10911ef4-48d1-404a-9345-ecf0f5cb9977\"}\n[2026-05-07 13:00:51] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:51] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:51] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:53] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:53] local.INFO: Dispatching activity sync job {\"import_id\":812331,\"provider\":\"twilio-flex\",\"team\":\"jiminny\"} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:53] local.INFO: Dispatching activity sync job {\"import_id\":812332,\"provider\":\"xant\",\"team\":\"jiminny\"} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:53] local.INFO: Dispatching activity sync job {\"import_id\":812333,\"provider\":\"apollo\",\"team\":\"jiminny\"} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:53] local.INFO: Dispatching activity sync job {\"import_id\":812334,\"provider\":\"groove\",\"team\":\"jiminny\"} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:53] local.INFO: Dispatching activity sync job {\"import_id\":812335,\"provider\":\"twilio-video\",\"team\":\"jiminny\"} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:53] local.INFO: Dispatching activity sync job {\"import_id\":812336,\"provider\":\"hubspot\",\"team\":\"hubspot\"} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:53] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.WARNING: [Salesforce] Account not connected for user {\"userId\":\"cdf8b554-d951-4758-bc2b-c1b85d1cd0b9\",\"account\":null} {\"correlation_id\":\"fb068e24-e135-4914-9973-94f1a0f5dae2\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {\"crm_provider\":\"salesforce\",\"crm_owner\":3,\"team_id\":1} {\"correlation_id\":\"fb068e24-e135-4914-9973-94f1a0f5dae2\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {\"crm_provider\":\"salesforce\",\"team_id\":1} {\"correlation_id\":\"fb068e24-e135-4914-9973-94f1a0f5dae2\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {\"crm_provider\":\"salesforce\",\"team_id\":1} {\"correlation_id\":\"fb068e24-e135-4914-9973-94f1a0f5dae2\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.ALERT: [SyncActivity] Failed {\"import_id\":812331,\"provider\":\"twilio-flex\",\"provider_id\":317,\"team\":\"jiminny\",\"team_id\":1,\"reason\":\"Social account for Salesforce cannot be found. Please login to Jiminny to connect.\",\"file\":\"/home/jiminny/app/Services/Crm/BaseService.php\",\"line\":646} {\"correlation_id\":\"fb068e24-e135-4914-9973-94f1a0f5dae2\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"fe9470d4-bc5a-4195-919d-e4908e439f7c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"fe9470d4-bc5a-4195-919d-e4908e439f7c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"fe9470d4-bc5a-4195-919d-e4908e439f7c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:56] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:56] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:56] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:56] local.ALERT: [SyncActivity] Failed {\"import_id\":812332,\"provider\":\"xant\",\"provider_id\":161,\"team\":\"jiminny\",\"team_id\":1,\"reason\":\"Activity Provider account not connected.\",\"file\":\"/home/jiminny/app/Services/Activity/ActivityProviderService.php\",\"line\":174} {\"correlation_id\":\"fe9470d4-bc5a-4195-919d-e4908e439f7c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:56] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"e3a8ef92-20c7-4698-a07d-1aa2c21ac82c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:56] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"e3a8ef92-20c7-4698-a07d-1aa2c21ac82c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:56] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"e3a8ef92-20c7-4698-a07d-1aa2c21ac82c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:56] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:fail-stalled\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"441dabbc-0c1f-4d49-871c-08f96adbed01\",\"trace_id\":\"13597461-50ff-4a40-a329-255430126395\"}\n[2026-05-07 13:00:56] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:fail-stalled\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"441dabbc-0c1f-4d49-871c-08f96adbed01\",\"trace_id\":\"13597461-50ff-4a40-a329-255430126395\"}\n[2026-05-07 13:00:57] local.ALERT: [SyncActivity] Failed {\"import_id\":812333,\"provider\":\"apollo\",\"provider_id\":441,\"team\":\"jiminny\",\"team_id\":1,\"reason\":\"Activity Provider account not connected.\",\"file\":\"/home/jiminny/app/Services/Activity/ActivityProviderService.php\",\"line\":174} {\"correlation_id\":\"e3a8ef92-20c7-4698-a07d-1aa2c21ac82c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:57] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"1a0b64ee-3927-48e6-8ae3-fda14f35babb\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:57] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"1a0b64ee-3927-48e6-8ae3-fda14f35babb\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:57] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"1a0b64ee-3927-48e6-8ae3-fda14f35babb\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:57] local.ALERT: [SyncActivity] Failed {\"import_id\":812334,\"provider\":\"groove\",\"provider_id\":228,\"team\":\"jiminny\",\"team_id\":1,\"reason\":\"Activity Provider account not connected.\",\"file\":\"/home/jiminny/app/Services/Activity/ActivityProviderService.php\",\"line\":174} {\"correlation_id\":\"1a0b64ee-3927-48e6-8ae3-fda14f35babb\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:57] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"5e6fecb1-9905-4ab2-a494-e6d8215430c0\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:57] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"5e6fecb1-9905-4ab2-a494-e6d8215430c0\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:57] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"5e6fecb1-9905-4ab2-a494-e6d8215430c0\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.ALERT: [SyncActivity] Failed {\"import_id\":812335,\"provider\":\"twilio-video\",\"provider_id\":243,\"team\":\"jiminny\",\"team_id\":1,\"reason\":\"Activity Provider account not connected.\",\"file\":\"/home/jiminny/app/Services/Activity/ActivityProviderService.php\",\"line\":174} {\"correlation_id\":\"5e6fecb1-9905-4ab2-a494-e6d8215430c0\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":89,\"team_id\":2} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":408,\"provider\":\"hubspot\"} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":408,\"provider\":\"hubspot\"} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [SyncActivity] Start {\"import_id\":812336,\"provider\":\"hubspot\",\"provider_id\":31,\"team\":\"hubspot\",\"team_id\":2} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [HubSpot] Search calls for period {\"from\":\"2026-05-07 12:44:00\",\"to\":\"2026-05-07 13:00:00\"} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [SyncActivity] End {\"import_id\":812336,\"provider\":\"hubspot\",\"provider_id\":31,\"team\":\"hubspot\",\"team_id\":2} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [SyncActivity] Memory usage {\"import_id\":812336,\"provider\":\"hubspot\",\"provider_id\":31,\"team\":\"hubspot\",\"team_id\":2,\"memory_usage\":27230632,\"memory_real_usage\":67108864,\"pid\":37116} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:59] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"jiminny:transcription:retry-stuck\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"1db560c5-5d8c-419a-bfb0-e761473ecf44\",\"trace_id\":\"79eb494e-fd21-4171-b59d-d7d47358f1fb\"}\n[2026-05-07 13:00:59] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"jiminny:transcription:retry-stuck\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"1db560c5-5d8c-419a-bfb0-e761473ecf44\",\"trace_id\":\"79eb494e-fd21-4171-b59d-d7d47358f1fb\"}\n[2026-05-07 13:01:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"73c0e9d6-7ef5-4040-8e35-0a9bb4028abf\",\"trace_id\":\"55b51c26-06b9-4b59-b444-53017b805b30\"}\n[2026-05-07 13:01:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"73c0e9d6-7ef5-4040-8e35-0a9bb4028abf\",\"trace_id\":\"55b51c26-06b9-4b59-b444-53017b805b30\"}\n[2026-05-07 13:01:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"5a7e717c-f314-4601-b1b8-fd550703f463\",\"trace_id\":\"a64281e5-027f-4856-a3e3-4f176c58eb6e\"}\n[2026-05-07 13:01:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"5a7e717c-f314-4601-b1b8-fd550703f463\",\"trace_id\":\"a64281e5-027f-4856-a3e3-4f176c58eb6e\"}\n[2026-05-07 13:01:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"0c425954-2696-4890-97b7-219ccc38cf46\",\"trace_id\":\"d609b364-f3b6-4b85-babb-67caf96efdb1\"}\n[2026-05-07 13:01:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"0c425954-2696-4890-97b7-219ccc38cf46\",\"trace_id\":\"d609b364-f3b6-4b85-babb-67caf96efdb1\"}\n[2026-05-07 13:01:11] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:11] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:11] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"a6bad97b-3db2-4dd6-839f-fcd485f06e65\",\"trace_id\":\"dcdde4a9-962c-46d1-9386-42adb54efbbf\"}\n[2026-05-07 13:01:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"a6bad97b-3db2-4dd6-839f-fcd485f06e65\",\"trace_id\":\"dcdde4a9-962c-46d1-9386-42adb54efbbf\"}\n[2026-05-07 13:01:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"2893478e-8c43-4719-a2e8-7c9c0e0783e9\",\"trace_id\":\"3fc8f1f0-0727-42f1-8ee6-f2b32bd8834b\"}\n[2026-05-07 13:01:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"2893478e-8c43-4719-a2e8-7c9c0e0783e9\",\"trace_id\":\"3fc8f1f0-0727-42f1-8ee6-f2b32bd8834b\"}\n[2026-05-07 13:01:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"64f52ca1-b54e-46da-a760-73dbdf407eaf\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:17] local.INFO: Dispatching activity sync job {\"import_id\":812337,\"provider\":\"hubspot\",\"team\":\"hubspot\"} {\"correlation_id\":\"64f52ca1-b54e-46da-a760-73dbdf407eaf\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"64f52ca1-b54e-46da-a760-73dbdf407eaf\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"crm:bullhorn:ping\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"3c44e0a7-ec5d-4206-a925-69f6e0783c2a\",\"trace_id\":\"60cf7a36-37ca-4ac4-a632-f317578d908f\"}\n[2026-05-07 13:01:19] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"crm:bullhorn:ping\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"3c44e0a7-ec5d-4206-a925-69f6e0783c2a\",\"trace_id\":\"60cf7a36-37ca-4ac4-a632-f317578d908f\"}\n[2026-05-07 13:01:19] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":89,\"team_id\":2} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":408,\"provider\":\"hubspot\"} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":408,\"provider\":\"hubspot\"} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [SyncActivity] Start {\"import_id\":812337,\"provider\":\"hubspot\",\"provider_id\":31,\"team\":\"hubspot\",\"team_id\":2} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [HubSpot] Search calls for period {\"from\":\"2026-05-07 12:00:00\",\"to\":\"2026-05-07 13:00:00\"} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:20] local.INFO: [SyncActivity] End {\"import_id\":812337,\"provider\":\"hubspot\",\"provider_id\":31,\"team\":\"hubspot\",\"team_id\":2} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:20] local.INFO: [SyncActivity] Memory usage {\"import_id\":812337,\"provider\":\"hubspot\",\"provider_id\":31,\"team\":\"hubspot\",\"team_id\":2,\"memory_usage\":27392888,\"memory_real_usage\":67108864,\"pid\":37116} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:21] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"nudges:send\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"55ebbc10-80bf-4724-ac64-678f6ef891cc\",\"trace_id\":\"f5392dc4-b352-4cae-b82a-004f77bbaf26\"}\n[2026-05-07 13:01:21] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"nudges:send\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"55ebbc10-80bf-4724-ac64-678f6ef891cc\",\"trace_id\":\"f5392dc4-b352-4cae-b82a-004f77bbaf26\"}\n[2026-05-07 13:01:23] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"jiminny:playlists:normalize-sort\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"9e29cfb5-b7fc-41bc-a9fd-a160d2253806\",\"trace_id\":\"3e180d83-299d-4c6c-bdda-d5a8ac156efc\"}\n[2026-05-07 13:01:23] local.INFO: [Jiminny\\Component\\Playlist\\Command\\NormalizeSortCommand::handle] starting. {\"playlists\":[]} {\"correlation_id\":\"9e29cfb5-b7fc-41bc-a9fd-a160d2253806\",\"trace_id\":\"3e180d83-299d-4c6c-bdda-d5a8ac156efc\"}\n[2026-05-07 13:01:23] local.INFO: [Jiminny\\Component\\Playlist\\Command\\NormalizeSortCommand::handle] finished. {\"normalizedPlaylists\":[],\"deletedPlaylists\":[]} {\"correlation_id\":\"9e29cfb5-b7fc-41bc-a9fd-a160d2253806\",\"trace_id\":\"3e180d83-299d-4c6c-bdda-d5a8ac156efc\"}\n[2026-05-07 13:01:23] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"jiminny:playlists:normalize-sort\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"9e29cfb5-b7fc-41bc-a9fd-a160d2253806\",\"trace_id\":\"3e180d83-299d-4c6c-bdda-d5a8ac156efc\"}\n[2026-05-07 13:01:41] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:41] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:41] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:41] local.WARNING: [HubSpot Journal Polling] Maximum empty results reached, stopping {\"empty_results\":5,\"max_empty_results\":5} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:41] local.WARNING: [HubSpot Journal Polling] Maximum empty results reached, stopping {\"empty_results\":5,\"max_empty_results\":5} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:41] local.INFO: [HubSpot Journal Polling] Service ending {\"runtime_seconds\":56,\"total_cycles\":5,\"files_downloaded\":0,\"empty_files\":0,\"other_portal_skipped\":0,\"total_events\":0,\"events_per_file\":0,\"avg_api_ms\":181.3,\"avg_download_ms\":0.0,\"avg_transform_ms\":0.0,\"avg_process_ms\":0.0,\"peak_memory_mb\":99.73} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:41] local.INFO: [HubSpot Journal Polling] Released polling lock {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:02:05] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"fe3480ce-754b-4304-b661-e4ac7234a778\",\"trace_id\":\"619e9c15-f95f-47ce-af85-6d78a6698327\"}\n[2026-05-07 13:02:05] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"fe3480ce-754b-4304-b661-e4ac7234a778\",\"trace_id\":\"619e9c15-f95f-47ce-af85-6d78a6698327\"}\n[2026-05-07 13:02:05] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"fe3480ce-754b-4304-b661-e4ac7234a778\",\"trace_id\":\"619e9c15-f95f-47ce-af85-6d78a6698327\"}\n[2026-05-07 13:02:07] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"aa98bf14-5737-4097-9f53-ac6833fb7983\",\"trace_id\":\"2f858b11-1073-43d4-996a-57e259ec2795\"}\n[2026-05-07 13:02:07] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"aa98bf14-5737-4097-9f53-ac6833fb7983\",\"trace_id\":\"2f858b11-1073-43d4-996a-57e259ec2795\"}\n[2026-05-07 13:02:08] local.NOTICE: Monitoring start {\"correlation_id\":\"25c588be-ddd6-41f1-8db8-ae28f3dd5bf5\",\"trace_id\":\"58b4c110-21ab-4c22-be4f-5be3534cd17d\"}\n[2026-05-07 13:02:08] local.NOTICE: Monitoring end {\"correlation_id\":\"25c588be-ddd6-41f1-8db8-ae28f3dd5bf5\",\"trace_id\":\"58b4c110-21ab-4c22-be4f-5be3534cd17d\"}\n[2026-05-07 13:02:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"5e453d7a-4daf-4001-b100-6aa9485d0353\",\"trace_id\":\"d97e1107-3696-4acf-95db-9cc7f37412e1\"}\n[2026-05-07 13:02:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"5e453d7a-4daf-4001-b100-6aa9485d0353\",\"trace_id\":\"d97e1107-3696-4acf-95db-9cc7f37412e1\"}\n[2026-05-07 13:02:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"3fab4dfb-f0ae-4c2c-a882-e09a1ad3ee9b\",\"trace_id\":\"3a66f9c4-3f01-40e2-aee2-e77fdabe793f\"}\n[2026-05-07 13:02:12] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"3fab4dfb-f0ae-4c2c-a882-e09a1ad3ee9b\",\"trace_id\":\"3a66f9c4-3f01-40e2-aee2-e77fdabe793f\"}\n[2026-05-07 13:02:12] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"3fab4dfb-f0ae-4c2c-a882-e09a1ad3ee9b\",\"trace_id\":\"3a66f9c4-3f01-40e2-aee2-e77fdabe793f\"}\n[2026-05-07 13:02:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"3fab4dfb-f0ae-4c2c-a882-e09a1ad3ee9b\",\"trace_id\":\"3a66f9c4-3f01-40e2-aee2-e77fdabe793f\"}\n[2026-05-07 13:02:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"63252e6d-894f-4cb9-818a-0034bf3545cb\",\"trace_id\":\"7ddf2e72-9174-4623-a622-1a5c9ee952c5\"}\n[2026-05-07 13:02:15] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 13:00:00, 2026-05-07 13:02:00] {\"correlation_id\":\"63252e6d-894f-4cb9-818a-0034bf3545cb\",\"trace_id\":\"7ddf2e72-9174-4623-a622-1a5c9ee952c5\"}\n[2026-05-07 13:02:15] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 13:00:00, 2026-05-07 13:02:00] {\"correlation_id\":\"63252e6d-894f-4cb9-818a-0034bf3545cb\",\"trace_id\":\"7ddf2e72-9174-4623-a622-1a5c9ee952c5\"}\n[2026-05-07 13:02:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"63252e6d-894f-4cb9-818a-0034bf3545cb\",\"trace_id\":\"7ddf2e72-9174-4623-a622-1a5c9ee952c5\"}\n[2026-05-07 13:02:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:create\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"cf65b2c4-c602-432d-8087-d0c0fb7f8e80\",\"trace_id\":\"b7b39317-045c-4475-879e-3d399e23fc3e\"}\n[2026-05-07 13:02:17] local.INFO: [EmailSchedule] STARTING batch create {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"cf65b2c4-c602-432d-8087-d0c0fb7f8e80\",\"trace_id\":\"b7b39317-045c-4475-879e-3d399e23fc3e\"}\n[2026-05-07 13:02:17] local.INFO: [EmailSchedule] FINISHED batch create {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"cf65b2c4-c602-432d-8087-d0c0fb7f8e80\",\"trace_id\":\"b7b39317-045c-4475-879e-3d399e23fc3e\"}\n[2026-05-07 13:02:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:create\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"cf65b2c4-c602-432d-8087-d0c0fb7f8e80\",\"trace_id\":\"b7b39317-045c-4475-879e-3d399e23fc3e\"}\n[2026-05-07 13:02:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"c481124d-04ae-43fb-b1d3-a4282f7af7ff\",\"trace_id\":\"d2d083d1-7cee-4d21-b80e-4485361d9969\"}\n[2026-05-07 13:02:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"c481124d-04ae-43fb-b1d3-a4282f7af7ff\",\"trace_id\":\"d2d083d1-7cee-4d21-b80e-4485361d9969\"}\n[2026-05-07 13:02:20] local.INFO: [Jiminny\\Jobs\\Mailbox\\CreateBatches] processed 2 inboxes and created 0 batches {\"userId\":null,\"batchSize\":30,\"maxBatches\":1000} {\"correlation_id\":\"3e2ef780-0c9d-4c30-9dc9-92315055c632\",\"trace_id\":\"b7b39317-045c-4475-879e-3d399e23fc3e\"}\n[2026-05-07 13:03:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"8cb6c7bf-4a2d-4960-bf8f-0368643fec27\",\"trace_id\":\"68c67cd4-9b92-4e41-bc1e-ebb282ea5211\"}\n[2026-05-07 13:03:06] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"8cb6c7bf-4a2d-4960-bf8f-0368643fec27\",\"trace_id\":\"68c67cd4-9b92-4e41-bc1e-ebb282ea5211\"}\n[2026-05-07 13:03:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"8cb6c7bf-4a2d-4960-bf8f-0368643fec27\",\"trace_id\":\"68c67cd4-9b92-4e41-bc1e-ebb282ea5211\"}\n[2026-05-07 13:03:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"b18dc815-6c91-43df-b083-125316724586\",\"trace_id\":\"62a636e8-4128-49eb-b99b-15efcfb37267\"}\n[2026-05-07 13:03:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"b18dc815-6c91-43df-b083-125316724586\",\"trace_id\":\"62a636e8-4128-49eb-b99b-15efcfb37267\"}\n[2026-05-07 13:03:10] local.NOTICE: Monitoring start {\"correlation_id\":\"d74c3e14-fd1a-4cab-9892-e9e924af1144\",\"trace_id\":\"29547049-25f5-4b62-a603-276e1de3dde8\"}\n[2026-05-07 13:03:10] local.NOTICE: Monitoring end {\"correlation_id\":\"d74c3e14-fd1a-4cab-9892-e9e924af1144\",\"trace_id\":\"29547049-25f5-4b62-a603-276e1de3dde8\"}\n[2026-05-07 13:03:13] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"bd7a8c2f-3f0b-48e9-86c2-0f01f2cfd9e8\",\"trace_id\":\"a3d1ecb5-4122-43c1-98ca-5d74c3dc989c\"}\n[2026-05-07 13:03:13] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"bd7a8c2f-3f0b-48e9-86c2-0f01f2cfd9e8\",\"trace_id\":\"a3d1ecb5-4122-43c1-98ca-5d74c3dc989c\"}\n[2026-05-07 13:03:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"4b20eb61-2970-4a63-8ee0-b392f7406a78\",\"trace_id\":\"892c9d93-c280-4b3f-a97a-bf1266f5c090\"}\n[2026-05-07 13:03:14] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"4b20eb61-2970-4a63-8ee0-b392f7406a78\",\"trace_id\":\"892c9d93-c280-4b3f-a97a-bf1266f5c090\"}\n[2026-05-07 13:03:14] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"4b20eb61-2970-4a63-8ee0-b392f7406a78\",\"trace_id\":\"892c9d93-c280-4b3f-a97a-bf1266f5c090\"}\n[2026-05-07 13:03:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"4b20eb61-2970-4a63-8ee0-b392f7406a78\",\"trace_id\":\"892c9d93-c280-4b3f-a97a-bf1266f5c090\"}\n[2026-05-07 13:03:18] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"6a165ea3-f101-4ac9-bfcc-e7ad618ac645\",\"trace_id\":\"383367e5-a337-4793-be1c-a88a2a6fa2e5\"}\n[2026-05-07 13:03:18] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"6a165ea3-f101-4ac9-bfcc-e7ad618ac645\",\"trace_id\":\"383367e5-a337-4793-be1c-a88a2a6fa2e5\"}","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.088194445,"height":0.027777778},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2","depth":4,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"68","depth":4,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"2","depth":4,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Highlighted Error","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Services\\Crm\\Hubspot;\n\nuse HubSpot\\Client\\Crm\\Deals\\ApiException as DealApiException;\nuse HubSpot\\Client\\Crm\\Contacts\\ApiException as ContactApiException;\nuse HubSpot\\Client\\Crm\\Companies\\ApiException as CompanyApiException;\nuse HubSpot\\Client\\Crm\\Contacts\\Model\\SimplePublicObjectWithAssociations as ContactsWithAssociations;\nuse HubSpot\\Client\\Crm\\Companies\\Model\\SimplePublicObjectWithAssociations as CompaniesWithAssociations;\nuse HubSpot\\Client\\Crm\\Deals\\Model\\SimplePublicObjectWithAssociations as DealWithAssociations;\nuse HubSpot\\Client\\Crm\\Objects\\Model\\SimplePublicObjectInput;\nuse HubSpot\\Client\\Crm\\Objects\\Model\\SimplePublicObjectWithAssociations as ObjectWithAssociations;\nuse HubSpot\\Client\\Crm\\Pipelines\\Model\\Error;\nuse HubSpot\\Client\\Crm\\Pipelines\\Model\\PipelineStage;\nuse HubSpot\\Client\\Crm\\Properties\\Model\\Property;\nuse HubSpot\\Discovery\\Discovery;\nuse Jiminny\\Component\\Utility\\Service\\ProviderRateLimiter;\nuse Jiminny\\Exceptions\\CrmException;\nuse Jiminny\\Exceptions\\RateLimitException;\nuse Jiminny\\Exceptions\\SocialAccountTokenInvalidException;\nuse Jiminny\\Jobs\\Crm\\NoteObject;\nuse Jiminny\\Models\\Crm\\Field;\nuse Jiminny\\Services\\Crm\\BaseClient;\nuse Jiminny\\Services\\Crm\\Hubspot\\DTO\\Response\\Owner;\nuse Jiminny\\Services\\SocialAccountService;\nuse SevenShores\\Hubspot\\Exceptions\\BadRequest;\nuse SevenShores\\Hubspot\\Exceptions\\HubspotException;\nuse SevenShores\\Hubspot\\Factory;\nuse SevenShores\\Hubspot\\Http\\Response;\nuse Jiminny\\Services\\Crm\\Hubspot\\Pagination\\HubspotPaginationService;\nuse Throwable;\n\n/**\n * @phpstan-type CrmFieldOption array{id:string, label:string, value?:string}\n */\nclass Client extends BaseClient implements HubspotClientInterface\n{\n public const string MIN_API_VERSION = '2';\n\n public const string BASE_URL = 'https://api.hubapi.com';\n\n public const int ASSOCIATIONS_BATCH_SIZE_LIMIT = 1000;\n\n private HubspotPaginationService $paginationService;\n private HubspotTokenManager $tokenManager;\n private ProviderRateLimiter $rateLimiter;\n\n public function __construct(\n SocialAccountService $socialAccountService,\n HubspotPaginationService $paginationService,\n HubspotTokenManager $tokenManager,\n ProviderRateLimiter $rateLimiter,\n ) {\n parent::__construct($socialAccountService);\n $this->paginationService = $paginationService;\n $this->tokenManager = $tokenManager;\n $this->rateLimiter = $rateLimiter;\n\n $this->setBaseUrl(self::BASE_URL);\n $this->setVersion(self::MIN_API_VERSION);\n }\n\n /**\n * Single entry point for every HubSpot API call. Enforces the per-portal\n * rate limit configured in the rate_limits table (morphed to the current\n * Configuration) and reacts to a real 429 from HubSpot by translating it\n * into a RateLimitException carrying Retry-After.\n *\n * Wrap any outbound HubSpot call (SDK or raw HTTP) like:\n *\n * $this->executeRequest(fn () => $this->getNewInstance()->crm()->...);\n *\n * @template T\n * @param callable(): T $apiCall\n * @return T\n *\n * @throws RateLimitException\n */\n private function executeRequest(callable $apiCall)\n {\n if (! $this->rateLimiter->canMakeRequest($this->config)) {\n $retryAfter = $this->rateLimiter->requestAvailableIn($this->config);\n\n $this->log->warning('[Hubspot] Rate limit exceeded, deferring request', [\n 'team_id' => $this->config->team_id,\n 'config_id' => $this->config->getId(),\n 'retry_after' => $retryAfter,\n ]);\n\n throw new RateLimitException(\n 'Hubspot rate limit reached for configuration ' . $this->config->getId(),\n $retryAfter,\n );\n }\n\n $this->rateLimiter->incrementRequestCount($this->config);\n\n try {\n return $apiCall();\n } catch (Throwable $e) {\n if ($this->isHubspotRateLimit($e)) {\n $retryAfter = $this->parseRetryAfter($e);\n\n $this->log->warning('[Hubspot] Received 429 from API', [\n 'team_id' => $this->config->team_id,\n 'config_id' => $this->config->getId(),\n 'retry_after' => $retryAfter,\n 'reason' => $e->getMessage(),\n ]);\n\n throw new RateLimitException('Hubspot returned 429', $retryAfter, $e);\n }\n\n throw $e;\n }\n }\n\n public function isHubspotRateLimit(Throwable $e): bool\n {\n return method_exists($e, 'getCode') && (int) $e->getCode() === 429;\n }\n\n public function parseRetryAfter(Throwable $e): int\n {\n if (method_exists($e, 'getResponseHeaders')) {\n $headers = $e->getResponseHeaders() ?: [];\n $value = $headers['Retry-After'] ?? $headers['retry-after'] ?? null;\n if (is_array($value)) {\n $value = $value[0] ?? null;\n }\n if (is_numeric($value)) {\n return (int) $value;\n }\n }\n\n return 10;\n }\n\n public function getMinimumApiVersion(): string\n {\n return self::MIN_API_VERSION;\n }\n\n public function getInstance(): Factory\n {\n return new Factory([\n 'key' => $this->accessToken,\n 'oauth2' => true,\n 'base_url' => $this->baseUrl,\n ]);\n }\n\n public function getNewInstance(): Discovery\n {\n return \\HubSpot\\Factory::createWithAccessToken($this->accessToken);\n }\n\n /**\n * Secondly and daily limits for Hubspot API\n *\n * Product Tier: Free & Starter | Professional & Enterprise | API add-on (any tier)\n * Burst: 100/10 seconds | 150/10 seconds | 200/10 seconds\n * Daily: 250,000 | 500,000 | 1,000,000\n *\n * Official documentation states: The search endpoints are rate limited to five requests per second.\n * Since with 5 RPS were still hitting secondly rate limits we lowered it to 4\n */\n public function getPaginatedData(array $payload, string $type, int $offset = 0): array\n {\n $total = 0;\n $lastId = null;\n $rows = [];\n foreach ($this->getPaginatedDataGenerator($payload, $type, $offset, $total, $lastId) as $row) {\n $rows[] = $row;\n }\n\n return ['results' => $rows, 'total' => $total, 'last_record' => $lastId];\n }\n\n /**\n * @throws HubspotException\n * @throws SocialAccountTokenInvalidException\n * @throws BadRequest\n */\n public function getPaginatedDataGenerator(\n array $payload,\n string $type,\n int $offset = 0,\n int &$total = 0,\n ?string &$lastRecordId = null\n ): \\Generator {\n return $this->paginationService->getPaginatedDataGenerator(\n $this,\n $payload,\n $type,\n $offset,\n $total,\n $lastRecordId\n );\n }\n\n /**\n * @throws DealApiException\n * @throws CrmException\n */\n public function getOpportunityById(string $crmId, array $fields): array\n {\n try {\n// $deal = $this->executeRequest(fn () => $this->getNewInstance()->crm()->deals()->basicApi()->getById(\n $deal = $this->getNewInstance()->crm()->deals()->basicApi()->getById(\n $crmId,\n implode(',', $fields),\n 'companies,contacts'\n );\n } catch (DealApiException $e) {\n $this->log->info('[Hubspot] Failed to fetch opportunity', [\n 'crm_id' => $crmId,\n 'reason' => $e->getMessage(),\n ]);\n\n throw $e;\n }\n\n if (! $deal instanceof DealWithAssociations) {\n throw new CrmException('Deal not found');\n }\n\n return [\n 'id' => $deal->getId(),\n 'properties' => $deal->getProperties(),\n 'associations' => $deal->getAssociations(),\n ];\n }\n\n /**\n * Generic batch read method for HubSpot objects\n *\n * @param string $objectType The object type ('deals', 'companies', 'contacts')\n * @param array<string> $crmIds Array of HubSpot object IDs (max 100)\n * @param array<string> $fields Array of property names to fetch\n *\n * @return array<string, array> Array keyed by CRM ID with object data\n */\n private function batchReadObjects(string $objectType, array $crmIds, array $fields): array\n {\n if (empty($crmIds)) {\n return [];\n }\n\n $this->validateBatchSize($objectType, $crmIds);\n $this->ensureValidToken();\n\n try {\n $batchConfig = $this->createBatchConfiguration($objectType);\n $batchReadRequest = $this->prepareBatchRequest($batchConfig, $crmIds, $fields);\n $response = $batchConfig['api']->read($batchReadRequest);\n\n $this->validateApiResponse($response, $objectType);\n\n $results = $this->processApiResults($response);\n $this->logBatchResults($objectType, $crmIds, $results);\n\n return $results;\n } catch (\\Throwable $e) {\n $this->handleBatchError($e, $objectType, $crmIds);\n }\n }\n\n private function validateBatchSize(string $objectType, array $crmIds): void\n {\n if (count($crmIds) > 100) {\n throw new \\InvalidArgumentException(\"Batch size cannot exceed 100 {$objectType}\");\n }\n }\n\n private function createBatchConfiguration(string $objectType): array\n {\n $configurations = [\n 'deals' => [\n 'batchReadRequest' => new \\HubSpot\\Client\\Crm\\Deals\\Model\\BatchReadInputSimplePublicObjectId(),\n 'inputClass' => \\HubSpot\\Client\\Crm\\Deals\\Model\\SimplePublicObjectId::class,\n 'api' => $this->getNewInstance()->crm()->deals()->batchApi(),\n ],\n 'companies' => [\n 'batchReadRequest' => new \\HubSpot\\Client\\Crm\\Companies\\Model\\BatchReadInputSimplePublicObjectId(),\n 'inputClass' => \\HubSpot\\Client\\Crm\\Companies\\Model\\SimplePublicObjectId::class,\n 'api' => $this->getNewInstance()->crm()->companies()->batchApi(),\n ],\n 'contacts' => [\n 'batchReadRequest' => new \\HubSpot\\Client\\Crm\\Contacts\\Model\\BatchReadInputSimplePublicObjectId(),\n 'inputClass' => \\HubSpot\\Client\\Crm\\Contacts\\Model\\SimplePublicObjectId::class,\n 'api' => $this->getNewInstance()->crm()->contacts()->batchApi(),\n ],\n ];\n\n if (! isset($configurations[$objectType])) {\n throw new \\InvalidArgumentException(\"Unsupported object type: {$objectType}\");\n }\n\n return $configurations[$objectType];\n }\n\n private function prepareBatchRequest(array $batchConfig, array $crmIds, array $fields): object\n {\n $batchReadRequest = $batchConfig['batchReadRequest'];\n $inputClass = $batchConfig['inputClass'];\n\n $inputs = array_map(function ($crmId) use ($inputClass) {\n $input = new $inputClass();\n $input->setId($crmId);\n\n return $input;\n }, $crmIds);\n\n $batchReadRequest->setInputs($inputs);\n $batchReadRequest->setProperties($fields);\n\n return $batchReadRequest;\n }\n\n private function validateApiResponse($response, string $objectType): void\n {\n if (! $response) {\n throw new CrmException(\"HubSpot API returned null response for {$objectType} batch read\");\n }\n }\n\n private function processApiResults($response): array\n {\n $results = [];\n $responseResults = $response->getResults();\n\n if ($responseResults) {\n foreach ($responseResults as $object) {\n if ($object && $object->getId()) {\n $results[$object->getId()] = [\n 'id' => $object->getId(),\n 'properties' => $object->getProperties() ?: [],\n ];\n }\n }\n }\n\n return $results;\n }\n\n private function logBatchResults(string $objectType, array $crmIds, array $results): void\n {\n $this->log->info(\"[HubSpot] Batch fetched {$objectType}\", [\n 'requested_count' => count($crmIds),\n 'returned_count' => count($results),\n 'crm_ids' => $crmIds,\n ]);\n }\n\n private function handleBatchError(\\Throwable $e, string $objectType, array $crmIds): void\n {\n $errorMessage = $e->getMessage() ?: 'Unknown error';\n $errorTrace = $e->getTraceAsString() ?: 'No trace available';\n\n $this->log->error(\"[HubSpot] Failed to batch fetch {$objectType}\", [\n 'crm_ids' => $crmIds,\n 'error' => $errorMessage,\n 'trace' => $errorTrace,\n ]);\n\n throw new CrmException(\"Failed to batch fetch {$objectType}: \" . $errorMessage);\n }\n\n /**\n * Batch read multiple opportunities by their CRM IDs\n *\n * @param array<string> $crmIds Array of HubSpot deal IDs (max 100)\n * @param array<string> $fields Array of property names to fetch\n *\n * @return array<string, array> Array keyed by CRM ID with opportunity data\n */\n public function getOpportunitiesByIds(array $crmIds, array $fields): array\n {\n return $this->batchReadObjects('deals', $crmIds, $fields);\n }\n\n /**\n * Batch read multiple companies by their CRM IDs\n *\n * @param array<string> $crmIds Array of HubSpot company IDs (max 100)\n * @param array<string> $fields Array of property names to fetch\n *\n * @return array<string, array> Array keyed by CRM ID with company data\n */\n public function getCompaniesByIds(array $crmIds, array $fields): array\n {\n return $this->batchReadObjects('companies', $crmIds, $fields);\n }\n\n /**\n * Batch read multiple contacts by their CRM IDs\n *\n * @param array<string> $crmIds Array of HubSpot contact IDs (max 100)\n * @param array<string> $fields Array of property names to fetch\n *\n * @return array<string, array> Array keyed by CRM ID with contact data\n */\n public function getContactsByIds(array $crmIds, array $fields): array\n {\n return $this->batchReadObjects('contacts', $crmIds, $fields);\n }\n\n /**\n * @throws CompanyApiException\n * @throws CrmException\n */\n public function getAccountById(string $crmId, array $fields): array\n {\n try {\n $company = $this->getNewInstance()->crm()->companies()->basicApi()->getById(\n $crmId,\n implode(',', $fields),\n );\n } catch (CompanyApiException $e) {\n $this->log->info('[Hubspot] Failed to fetch account', [\n 'crm_id' => $crmId,\n 'reason' => $e->getMessage(),\n ]);\n\n throw $e;\n }\n\n if (! $company instanceof CompaniesWithAssociations) {\n throw new CrmException('Account not found');\n }\n\n return [\n 'id' => $company->getId(),\n 'properties' => $company->getProperties(),\n ];\n }\n\n /**\n * @throws ContactApiException\n * @throws CrmException\n */\n public function getContactById(string $crmId, array $fields): array\n {\n try {\n $contact = $this->getNewInstance()->crm()->contacts()->basicApi()->getById(\n $crmId,\n implode(',', $fields)\n );\n } catch (ContactApiException $e) {\n $this->log->info('[Hubspot] Failed to fetch contact', [\n 'crm_id' => $crmId,\n 'reason' => $e->getMessage(),\n ]);\n\n throw $e;\n }\n\n if (! $contact instanceof ContactsWithAssociations) {\n throw new CrmException('Contact not found');\n }\n\n return [\n 'id' => $contact->getId(),\n 'properties' => $contact->getProperties(),\n ];\n }\n\n /**\n * This is email search request that Hubspot offers as GET (more generous quota)\n */\n public function getContactByEmail(string $email, array $fields = []): array\n {\n try {\n $contact = $this->getNewInstance()->crm()->contacts()->basicApi()->getById(\n $email,\n implode(',', $fields),\n null,\n false,\n 'email'\n );\n\n return [\n 'id' => $contact->getId(),\n 'properties' => $contact->getProperties(),\n ];\n } catch (ContactApiException $e) {\n $this->log->info('[Hubspot] Failed to fetch contact', [\n 'email' => $email,\n 'reason' => $e->getMessage(),\n ]);\n\n return [];\n }\n }\n\n /**\n * @throws CrmException\n */\n public function fetchProperty(string $objectType, string $propertyId): Property\n {\n $result = $this->getNewInstance()->crm()->properties()->coreApi()->getByName($objectType, $propertyId);\n\n if (! $result instanceof Property) {\n $this->log->error('[Hubspot] Failed to fetch property', [\n 'object_type' => $objectType,\n 'property_id' => $propertyId,\n 'reason' => $result->getMessage(),\n ]);\n\n throw new CrmException('Failed to fetch property');\n }\n\n return $result;\n }\n\n /**\n * @return array<CrmFieldOption>\n */\n public function fetchPropertyOptions(string $objectType, string $propertyId): array\n {\n /** @var array<CrmFieldOption> */\n return $this->fetchProperty($objectType, $propertyId)->getOptions();\n }\n\n /**\n * @return array<array{id:string, label:string, deleted:bool}>\n */\n public function fetchCallDispositions(): array\n {\n /** @var Response $response */\n $response = $this->getInstance()->engagements()->getCallDispositions();\n\n /**\n * @var array<array{\n * id:string,\n * label:string,\n * deleted: bool\n * }>\n */\n return $response->toArray();\n }\n\n /**\n * @return array<CrmFieldOption>\n */\n public function fetchOpportunityPipelineStages(): array\n {\n $stages = [];\n $apiResponse = $this->getNewInstance()->crm()->pipelines()->pipelinesApi()->getAll('deals');\n\n if ($apiResponse instanceof Error) {\n $this->log->error('[Hubspot] Failed to fetch opportunity pipelines', [\n 'reason' => $apiResponse->getMessage(),\n ]);\n\n return [];\n }\n\n foreach ($apiResponse->getResults() as $pipeline) {\n $pipelineStages = array_map(\n static function (PipelineStage $stage) {\n return [\n 'id' => $stage->getId(),\n 'label' => $stage->getLabel(),\n ];\n },\n $pipeline->getStages()\n );\n\n $stages = array_merge($stages, $pipelineStages);\n }\n\n return $stages;\n }\n\n public function fetchOpportunityPipelines(): array\n {\n $pipelines = [];\n\n try {\n $apiResponse = $this->makeRequest('/crm/v3/pipelines/deals');\n } catch (\\Exception $e) {\n $this->log->info('[Hubspot] Failed to fetch opportunity pipelines', [\n 'reason' => $e->getMessage(),\n ]);\n\n return [];\n }\n\n $response = $apiResponse->toArray();\n\n foreach ($response['results'] as $pipeline) {\n $pipelines[] = [\n 'id' => $pipeline['id'],\n 'label' => $pipeline['label'],\n ];\n }\n\n return $pipelines;\n }\n\n /**\n * @return array<CrmFieldOption>\n */\n public function fetchMeetingOutcomeFieldOptions(Field $field): array\n {\n return $field->getCrmProviderId() === 'meetingOutcome'\n ? $this->fetchMeetingOutcomeTypes()\n : $this->fetchCallActivityTypes();\n }\n\n public function fetchMeetingOutcomeTypes(): array\n {\n return $this->extractMeetingTypeOptions(\n 'https://api.hubapi.com/crm/v3/properties/meeting/hs_meeting_outcome'\n );\n }\n\n public function fetchCallActivityTypes(): array\n {\n return $this->extractMeetingTypeOptions(\n 'https://api.hubapi.com/crm/v3/properties/call/hs_activity_type'\n );\n }\n\n private function extractMeetingTypeOptions(string $endpoint): array\n {\n /** @var Response $response */\n $response = $this->getInstance()\n ->getClient()\n ->request('GET', $endpoint);\n\n /**\n * @var array<array{\n * value: string,\n * label: string,\n * displayOrder: int\n * }> $optionData\n */\n $optionData = $response->toArray()['options'] ?? [];\n\n $options = [];\n foreach ($optionData as $item) {\n $options[] = [\n 'id' => $item['value'],\n 'value' => $item['value'],\n 'label' => $item['label'],\n 'display_order' => $item['displayOrder'],\n ];\n }\n\n return $options;\n }\n\n /**\n * @return array<CrmFieldOption>\n */\n public function fetchDispositionFieldOptions(): array\n {\n $options = [];\n\n $dispositions = $this->fetchCallDispositions();\n\n foreach ($dispositions as $disposition) {\n if ($disposition['deleted'] !== false) {\n continue;\n }\n\n $option['value'] = $disposition['id'];\n $option['id'] = $disposition['id'];\n $option['label'] = $disposition['label'];\n\n $options[] = $option;\n }\n\n return $options;\n }\n\n /**\n * @return array<CrmFieldOption>\n */\n public function fetchOpportunityFieldOptions(Field $field): array\n {\n if ($field->isStageField()) {\n return $this->fetchOpportunityPipelineStages();\n }\n\n if ($field->isPipelineField()) {\n return $this->fetchOpportunityPipelines();\n }\n\n return $this->fetchPropertyOptions('deals', $field->getCrmProviderId());\n }\n\n /**\n * @throws BadRequest\n * @throws HubspotException\n */\n public function makeRequest(string $endpoint, $method = 'GET', $payload = [], ?string $queryString = null)\n {\n $endpoint = self::BASE_URL . $endpoint;\n\n if ($method === 'GET') {\n $response = $this->getInstance()->getClient()?->request(\n method: $method,\n endpoint: $endpoint,\n query_string: $queryString\n );\n } else {\n $response = $this->getInstance()->getClient()->request($method, $endpoint, [\n 'json' => ($payload),\n ]);\n }\n\n $max = $response->getHeaderLine('X-HubSpot-RateLimit-Max'); // \"110\"\n $remaining = $response->getHeaderLine('X-HubSpot-RateLimit-Remaining'); // \"109\"\n $interval = $response->getHeaderLine('X-HubSpot-RateLimit-Interval-Milliseconds'); // \"10000\"\n $body = json_decode((string) $response->getBody(), true);\n\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$max ' . PHP_EOL . print_r($max, true));\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$remaining ' . PHP_EOL . print_r($remaining, true));\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$interval ' . PHP_EOL . print_r($interval, true));\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$body ' . PHP_EOL . print_r($body, true));\n\n return $response;\n }\n\n /**\n * @throws BadRequest\n * @throws HubspotException\n */\n public function createMeeting(array $payload): Response\n {\n $endpoint = '/crm/v3/objects/meetings';\n\n return $this->makeRequest($endpoint, 'POST', $payload);\n }\n\n /**\n * @throws BadRequest\n * @throws HubspotException\n */\n public function updateMeeting(string $meetingId, array $payload): Response\n {\n $endpoint = '/crm/v3/objects/meetings/' . $meetingId;\n\n return $this->makeRequest($endpoint, 'PATCH', $payload);\n }\n\n /**\n * @throws \\Exception\n */\n public function createNote(\n string $body,\n string $ownerId,\n int $timestamp,\n string $objectId,\n NoteObject $noteObject\n ): ?string {\n try {\n $noteInput = new SimplePublicObjectInput([\n 'properties' => [\n 'hs_note_body' => $body,\n 'hubspot_owner_id' => $ownerId,\n 'hs_timestamp' => $timestamp,\n ],\n ]);\n\n // Create note\n $note = $this->getNewInstance()->crm()->objects()->basicApi()->create('note', $noteInput);\n\n $this->getNewInstance()->crm()->objects()->associationsApi()->create(\n 'note',\n $note->getId(),\n $this->getNoteObject($noteObject),\n $objectId,\n $this->getNoteAssociationType($noteObject),\n );\n\n return $note->getId();\n } catch (\\Exception $e) {\n $this->log->error('[Hubspot] Failed to create note', [\n 'objectId' => $objectId,\n 'noteObject' => $noteObject->getObjectType(),\n 'reason' => $e->getMessage(),\n ]);\n\n \\Sentry::captureException($e);\n }\n\n return null;\n }\n\n public function updateEngagement(string $objectId, array $engagement, array $metadata): void\n {\n $this->getInstance()->engagements()->update($objectId, $engagement, $metadata);\n }\n\n public function getEngagementData(string $engagementId): array\n {\n $engagement = $this->getInstance()->engagements()->get($engagementId);\n\n return $engagement->toArray();\n }\n\n public function createEngagement(array $engagement, array $associations, array $metadata): Response\n {\n return $this->getInstance()\n ->engagements()\n ->create($engagement, $associations, $metadata);\n }\n\n public function isUnauthorizedException(\\Exception $e): bool\n {\n // Check for specific HubSpot API exception types first\n if ($e instanceof BadRequest) {\n // BadRequest can contain 401 status codes\n return $e->getCode() === 401;\n }\n\n // Check for HTTP client exceptions with status codes\n if ($e instanceof \\GuzzleHttp\\Exception\\RequestException && $e->hasResponse()) {\n $response = $e->getResponse();\n if ($response !== null) {\n return $response->getStatusCode() === 401;\n }\n }\n\n // Check for Guzzle HTTP exceptions\n if ($e instanceof \\GuzzleHttp\\Exception\\ClientException) {\n return $e->getCode() === 401;\n }\n\n // Fallback to string matching as last resort, but be more specific\n $message = strtolower($e->getMessage());\n\n return str_contains($message, '401 unauthorized') ||\n str_contains($message, 'http 401') ||\n str_contains($message, 'status code 401') ||\n (preg_match('/\\b401\\b/', $message) && str_contains($message, 'unauthorized'));\n }\n\n /**\n * Validates and refreshes the access token if needed before API requests.\n * This ensures long-running processes don't fail due to token expiration.\n *\n * @throws SocialAccountTokenInvalidException\n */\n public function ensureValidToken(): void\n {\n if ($this->oauthAccount === null) {\n return;\n }\n\n $newToken = $this->tokenManager->ensureValidToken($this->oauthAccount);\n if ($newToken !== null) {\n $this->accessToken = $newToken;\n }\n }\n\n public function getConfig()\n {\n return $this->config;\n }\n\n // returns only active (archived=false)\n public function getOwners(): array\n {\n return $this->getNewInstance()->crm()->owners()->getAll();\n }\n\n /**\n * @param bool $archived\n *\n * @return array<Owner>|[]\n */\n public function getOwnersArchived(bool $archived = true): array\n {\n $endpoint = '/crm/v3/owners';\n $queryParams = [\n 'archived' => $archived ? 'true' : 'false',\n ];\n $queryString = http_build_query($queryParams);\n\n $owners = [];\n\n try {\n $response = $this->makeRequest(endpoint: $endpoint, queryString: $queryString);\n $responseData = $response?->toArray();\n\n foreach ($responseData['results'] as $result) {\n try {\n $owners[] = Owner::create($result);\n } catch (Throwable $e) {\n $this->log->error('[HubSpot] Failed to process owner data', [\n 'result' => $result,\n 'error' => $e->getMessage(),\n ]);\n\n continue;\n }\n }\n } catch (Throwable $e) {\n $this->log->error('HubSpot] Failed to fetch owners', [\n 'archived' => $archived,\n 'error' => $e->getMessage(),\n ]);\n\n return [];\n }\n\n return $owners;\n }\n\n public function getMeeting(string $engagementId): ObjectWithAssociations\n {\n return $this->getNewInstance()->crm()->objects()->basicApi()\n ->getById('meeting', $engagementId, null, 'contact,company,deal');\n }\n\n public function deleteEngagement(string $engagementId): void\n {\n $this->getInstance()->engagements()->delete((int) $engagementId);\n }\n\n public function getAssociationsData(array $ids, string $fromObject, string $toObject): array\n {\n $associationData = [];\n $idChunks = array_chunk($ids, self::ASSOCIATIONS_BATCH_SIZE_LIMIT);\n\n foreach ($idChunks as $idChunk) {\n try {\n $batchInput = new \\HubSpot\\Client\\Crm\\Associations\\Model\\BatchInputPublicObjectId();\n $batchInput->setInputs(array_map(function ($id) {\n $publicObjectId = new \\HubSpot\\Client\\Crm\\Associations\\Model\\PublicObjectId();\n $publicObjectId->setId($id);\n\n return $publicObjectId;\n }, $idChunk));\n\n $associatedObjectsData = $this\n ->getNewInstance()\n ->crm()\n ->associations()\n ->batchApi()\n ->read($fromObject, $toObject, $batchInput);\n\n if ($associatedObjectsData instanceof \\HubSpot\\Client\\Crm\\Associations\\Model\\BatchResponsePublicAssociationMulti) {\n foreach ($associatedObjectsData->getResults() as $association) {\n $from = $association->getFrom()->getId();\n $toAssociations = $association->getTo();\n\n if (! empty($toAssociations)) {\n $associationData[$from] = array_map(function ($item) {\n return $item->getId();\n }, $toAssociations);\n }\n }\n }\n } catch (\\Exception $e) {\n $this->log->error('[Hubspot] Failed to fetch associations', [\n 'from_object' => $fromObject,\n 'to_object' => $toObject,\n 'reason' => $e->getMessage(),\n ]);\n }\n }\n\n return $associationData;\n }\n\n /**\n * @throws \\Exception\n */\n private function getNoteAssociationType(NoteObject $noteObject): string\n {\n return match($noteObject) {\n NoteObject::Opportunity => 'note_to_deal',\n NoteObject::Lead, NoteObject::Contact => 'note_to_contact', // or 'note_to_lead' if your portal supports it\n NoteObject::Account => 'note_to_company',\n NoteObject::Call, NoteObject::Event => throw new \\Exception('Not supported'),\n };\n }\n\n /**\n * @throws \\Exception\n */\n private function getNoteObject(NoteObject $noteObject): string\n {\n return match($noteObject) {\n NoteObject::Opportunity => 'deal',\n NoteObject::Lead, NoteObject::Contact => 'contact',\n NoteObject::Account => 'company',\n NoteObject::Call, NoteObject::Event => throw new \\Exception('Not supported'),\n };\n }\n\n public function addAssociations(string $objectType, string $associationType, array $payload): Response\n {\n $endpoint = \"/crm/v4/associations/$objectType/$associationType/batch/create\";\n\n return $this->makeRequest($endpoint, 'POST', $payload);\n }\n\n public function removeAssociations(string $objectType, string $associationType, array $payload): Response\n {\n $endpoint = \"/crm/v4/associations/$objectType/$associationType/batch/archive\";\n\n return $this->makeRequest($endpoint, 'POST', $payload);\n }\n}","depth":4,"on_screen":true,"value":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Services\\Crm\\Hubspot;\n\nuse HubSpot\\Client\\Crm\\Deals\\ApiException as DealApiException;\nuse HubSpot\\Client\\Crm\\Contacts\\ApiException as ContactApiException;\nuse HubSpot\\Client\\Crm\\Companies\\ApiException as CompanyApiException;\nuse HubSpot\\Client\\Crm\\Contacts\\Model\\SimplePublicObjectWithAssociations as ContactsWithAssociations;\nuse HubSpot\\Client\\Crm\\Companies\\Model\\SimplePublicObjectWithAssociations as CompaniesWithAssociations;\nuse HubSpot\\Client\\Crm\\Deals\\Model\\SimplePublicObjectWithAssociations as DealWithAssociations;\nuse HubSpot\\Client\\Crm\\Objects\\Model\\SimplePublicObjectInput;\nuse HubSpot\\Client\\Crm\\Objects\\Model\\SimplePublicObjectWithAssociations as ObjectWithAssociations;\nuse HubSpot\\Client\\Crm\\Pipelines\\Model\\Error;\nuse HubSpot\\Client\\Crm\\Pipelines\\Model\\PipelineStage;\nuse HubSpot\\Client\\Crm\\Properties\\Model\\Property;\nuse HubSpot\\Discovery\\Discovery;\nuse Jiminny\\Component\\Utility\\Service\\ProviderRateLimiter;\nuse Jiminny\\Exceptions\\CrmException;\nuse Jiminny\\Exceptions\\RateLimitException;\nuse Jiminny\\Exceptions\\SocialAccountTokenInvalidException;\nuse Jiminny\\Jobs\\Crm\\NoteObject;\nuse Jiminny\\Models\\Crm\\Field;\nuse Jiminny\\Services\\Crm\\BaseClient;\nuse Jiminny\\Services\\Crm\\Hubspot\\DTO\\Response\\Owner;\nuse Jiminny\\Services\\SocialAccountService;\nuse SevenShores\\Hubspot\\Exceptions\\BadRequest;\nuse SevenShores\\Hubspot\\Exceptions\\HubspotException;\nuse SevenShores\\Hubspot\\Factory;\nuse SevenShores\\Hubspot\\Http\\Response;\nuse Jiminny\\Services\\Crm\\Hubspot\\Pagination\\HubspotPaginationService;\nuse Throwable;\n\n/**\n * @phpstan-type CrmFieldOption array{id:string, label:string, value?:string}\n */\nclass Client extends BaseClient implements HubspotClientInterface\n{\n public const string MIN_API_VERSION = '2';\n\n public const string BASE_URL = 'https://api.hubapi.com';\n\n public const int ASSOCIATIONS_BATCH_SIZE_LIMIT = 1000;\n\n private HubspotPaginationService $paginationService;\n private HubspotTokenManager $tokenManager;\n private ProviderRateLimiter $rateLimiter;\n\n public function __construct(\n SocialAccountService $socialAccountService,\n HubspotPaginationService $paginationService,\n HubspotTokenManager $tokenManager,\n ProviderRateLimiter $rateLimiter,\n ) {\n parent::__construct($socialAccountService);\n $this->paginationService = $paginationService;\n $this->tokenManager = $tokenManager;\n $this->rateLimiter = $rateLimiter;\n\n $this->setBaseUrl(self::BASE_URL);\n $this->setVersion(self::MIN_API_VERSION);\n }\n\n /**\n * Single entry point for every HubSpot API call. Enforces the per-portal\n * rate limit configured in the rate_limits table (morphed to the current\n * Configuration) and reacts to a real 429 from HubSpot by translating it\n * into a RateLimitException carrying Retry-After.\n *\n * Wrap any outbound HubSpot call (SDK or raw HTTP) like:\n *\n * $this->executeRequest(fn () => $this->getNewInstance()->crm()->...);\n *\n * @template T\n * @param callable(): T $apiCall\n * @return T\n *\n * @throws RateLimitException\n */\n private function executeRequest(callable $apiCall)\n {\n if (! $this->rateLimiter->canMakeRequest($this->config)) {\n $retryAfter = $this->rateLimiter->requestAvailableIn($this->config);\n\n $this->log->warning('[Hubspot] Rate limit exceeded, deferring request', [\n 'team_id' => $this->config->team_id,\n 'config_id' => $this->config->getId(),\n 'retry_after' => $retryAfter,\n ]);\n\n throw new RateLimitException(\n 'Hubspot rate limit reached for configuration ' . $this->config->getId(),\n $retryAfter,\n );\n }\n\n $this->rateLimiter->incrementRequestCount($this->config);\n\n try {\n return $apiCall();\n } catch (Throwable $e) {\n if ($this->isHubspotRateLimit($e)) {\n $retryAfter = $this->parseRetryAfter($e);\n\n $this->log->warning('[Hubspot] Received 429 from API', [\n 'team_id' => $this->config->team_id,\n 'config_id' => $this->config->getId(),\n 'retry_after' => $retryAfter,\n 'reason' => $e->getMessage(),\n ]);\n\n throw new RateLimitException('Hubspot returned 429', $retryAfter, $e);\n }\n\n throw $e;\n }\n }\n\n public function isHubspotRateLimit(Throwable $e): bool\n {\n return method_exists($e, 'getCode') && (int) $e->getCode() === 429;\n }\n\n public function parseRetryAfter(Throwable $e): int\n {\n if (method_exists($e, 'getResponseHeaders')) {\n $headers = $e->getResponseHeaders() ?: [];\n $value = $headers['Retry-After'] ?? $headers['retry-after'] ?? null;\n if (is_array($value)) {\n $value = $value[0] ?? null;\n }\n if (is_numeric($value)) {\n return (int) $value;\n }\n }\n\n return 10;\n }\n\n public function getMinimumApiVersion(): string\n {\n return self::MIN_API_VERSION;\n }\n\n public function getInstance(): Factory\n {\n return new Factory([\n 'key' => $this->accessToken,\n 'oauth2' => true,\n 'base_url' => $this->baseUrl,\n ]);\n }\n\n public function getNewInstance(): Discovery\n {\n return \\HubSpot\\Factory::createWithAccessToken($this->accessToken);\n }\n\n /**\n * Secondly and daily limits for Hubspot API\n *\n * Product Tier: Free & Starter | Professional & Enterprise | API add-on (any tier)\n * Burst: 100/10 seconds | 150/10 seconds | 200/10 seconds\n * Daily: 250,000 | 500,000 | 1,000,000\n *\n * Official documentation states: The search endpoints are rate limited to five requests per second.\n * Since with 5 RPS were still hitting secondly rate limits we lowered it to 4\n */\n public function getPaginatedData(array $payload, string $type, int $offset = 0): array\n {\n $total = 0;\n $lastId = null;\n $rows = [];\n foreach ($this->getPaginatedDataGenerator($payload, $type, $offset, $total, $lastId) as $row) {\n $rows[] = $row;\n }\n\n return ['results' => $rows, 'total' => $total, 'last_record' => $lastId];\n }\n\n /**\n * @throws HubspotException\n * @throws SocialAccountTokenInvalidException\n * @throws BadRequest\n */\n public function getPaginatedDataGenerator(\n array $payload,\n string $type,\n int $offset = 0,\n int &$total = 0,\n ?string &$lastRecordId = null\n ): \\Generator {\n return $this->paginationService->getPaginatedDataGenerator(\n $this,\n $payload,\n $type,\n $offset,\n $total,\n $lastRecordId\n );\n }\n\n /**\n * @throws DealApiException\n * @throws CrmException\n */\n public function getOpportunityById(string $crmId, array $fields): array\n {\n try {\n// $deal = $this->executeRequest(fn () => $this->getNewInstance()->crm()->deals()->basicApi()->getById(\n $deal = $this->getNewInstance()->crm()->deals()->basicApi()->getById(\n $crmId,\n implode(',', $fields),\n 'companies,contacts'\n );\n } catch (DealApiException $e) {\n $this->log->info('[Hubspot] Failed to fetch opportunity', [\n 'crm_id' => $crmId,\n 'reason' => $e->getMessage(),\n ]);\n\n throw $e;\n }\n\n if (! $deal instanceof DealWithAssociations) {\n throw new CrmException('Deal not found');\n }\n\n return [\n 'id' => $deal->getId(),\n 'properties' => $deal->getProperties(),\n 'associations' => $deal->getAssociations(),\n ];\n }\n\n /**\n * Generic batch read method for HubSpot objects\n *\n * @param string $objectType The object type ('deals', 'companies', 'contacts')\n * @param array<string> $crmIds Array of HubSpot object IDs (max 100)\n * @param array<string> $fields Array of property names to fetch\n *\n * @return array<string, array> Array keyed by CRM ID with object data\n */\n private function batchReadObjects(string $objectType, array $crmIds, array $fields): array\n {\n if (empty($crmIds)) {\n return [];\n }\n\n $this->validateBatchSize($objectType, $crmIds);\n $this->ensureValidToken();\n\n try {\n $batchConfig = $this->createBatchConfiguration($objectType);\n $batchReadRequest = $this->prepareBatchRequest($batchConfig, $crmIds, $fields);\n $response = $batchConfig['api']->read($batchReadRequest);\n\n $this->validateApiResponse($response, $objectType);\n\n $results = $this->processApiResults($response);\n $this->logBatchResults($objectType, $crmIds, $results);\n\n return $results;\n } catch (\\Throwable $e) {\n $this->handleBatchError($e, $objectType, $crmIds);\n }\n }\n\n private function validateBatchSize(string $objectType, array $crmIds): void\n {\n if (count($crmIds) > 100) {\n throw new \\InvalidArgumentException(\"Batch size cannot exceed 100 {$objectType}\");\n }\n }\n\n private function createBatchConfiguration(string $objectType): array\n {\n $configurations = [\n 'deals' => [\n 'batchReadRequest' => new \\HubSpot\\Client\\Crm\\Deals\\Model\\BatchReadInputSimplePublicObjectId(),\n 'inputClass' => \\HubSpot\\Client\\Crm\\Deals\\Model\\SimplePublicObjectId::class,\n 'api' => $this->getNewInstance()->crm()->deals()->batchApi(),\n ],\n 'companies' => [\n 'batchReadRequest' => new \\HubSpot\\Client\\Crm\\Companies\\Model\\BatchReadInputSimplePublicObjectId(),\n 'inputClass' => \\HubSpot\\Client\\Crm\\Companies\\Model\\SimplePublicObjectId::class,\n 'api' => $this->getNewInstance()->crm()->companies()->batchApi(),\n ],\n 'contacts' => [\n 'batchReadRequest' => new \\HubSpot\\Client\\Crm\\Contacts\\Model\\BatchReadInputSimplePublicObjectId(),\n 'inputClass' => \\HubSpot\\Client\\Crm\\Contacts\\Model\\SimplePublicObjectId::class,\n 'api' => $this->getNewInstance()->crm()->contacts()->batchApi(),\n ],\n ];\n\n if (! isset($configurations[$objectType])) {\n throw new \\InvalidArgumentException(\"Unsupported object type: {$objectType}\");\n }\n\n return $configurations[$objectType];\n }\n\n private function prepareBatchRequest(array $batchConfig, array $crmIds, array $fields): object\n {\n $batchReadRequest = $batchConfig['batchReadRequest'];\n $inputClass = $batchConfig['inputClass'];\n\n $inputs = array_map(function ($crmId) use ($inputClass) {\n $input = new $inputClass();\n $input->setId($crmId);\n\n return $input;\n }, $crmIds);\n\n $batchReadRequest->setInputs($inputs);\n $batchReadRequest->setProperties($fields);\n\n return $batchReadRequest;\n }\n\n private function validateApiResponse($response, string $objectType): void\n {\n if (! $response) {\n throw new CrmException(\"HubSpot API returned null response for {$objectType} batch read\");\n }\n }\n\n private function processApiResults($response): array\n {\n $results = [];\n $responseResults = $response->getResults();\n\n if ($responseResults) {\n foreach ($responseResults as $object) {\n if ($object && $object->getId()) {\n $results[$object->getId()] = [\n 'id' => $object->getId(),\n 'properties' => $object->getProperties() ?: [],\n ];\n }\n }\n }\n\n return $results;\n }\n\n private function logBatchResults(string $objectType, array $crmIds, array $results): void\n {\n $this->log->info(\"[HubSpot] Batch fetched {$objectType}\", [\n 'requested_count' => count($crmIds),\n 'returned_count' => count($results),\n 'crm_ids' => $crmIds,\n ]);\n }\n\n private function handleBatchError(\\Throwable $e, string $objectType, array $crmIds): void\n {\n $errorMessage = $e->getMessage() ?: 'Unknown error';\n $errorTrace = $e->getTraceAsString() ?: 'No trace available';\n\n $this->log->error(\"[HubSpot] Failed to batch fetch {$objectType}\", [\n 'crm_ids' => $crmIds,\n 'error' => $errorMessage,\n 'trace' => $errorTrace,\n ]);\n\n throw new CrmException(\"Failed to batch fetch {$objectType}: \" . $errorMessage);\n }\n\n /**\n * Batch read multiple opportunities by their CRM IDs\n *\n * @param array<string> $crmIds Array of HubSpot deal IDs (max 100)\n * @param array<string> $fields Array of property names to fetch\n *\n * @return array<string, array> Array keyed by CRM ID with opportunity data\n */\n public function getOpportunitiesByIds(array $crmIds, array $fields): array\n {\n return $this->batchReadObjects('deals', $crmIds, $fields);\n }\n\n /**\n * Batch read multiple companies by their CRM IDs\n *\n * @param array<string> $crmIds Array of HubSpot company IDs (max 100)\n * @param array<string> $fields Array of property names to fetch\n *\n * @return array<string, array> Array keyed by CRM ID with company data\n */\n public function getCompaniesByIds(array $crmIds, array $fields): array\n {\n return $this->batchReadObjects('companies', $crmIds, $fields);\n }\n\n /**\n * Batch read multiple contacts by their CRM IDs\n *\n * @param array<string> $crmIds Array of HubSpot contact IDs (max 100)\n * @param array<string> $fields Array of property names to fetch\n *\n * @return array<string, array> Array keyed by CRM ID with contact data\n */\n public function getContactsByIds(array $crmIds, array $fields): array\n {\n return $this->batchReadObjects('contacts', $crmIds, $fields);\n }\n\n /**\n * @throws CompanyApiException\n * @throws CrmException\n */\n public function getAccountById(string $crmId, array $fields): array\n {\n try {\n $company = $this->getNewInstance()->crm()->companies()->basicApi()->getById(\n $crmId,\n implode(',', $fields),\n );\n } catch (CompanyApiException $e) {\n $this->log->info('[Hubspot] Failed to fetch account', [\n 'crm_id' => $crmId,\n 'reason' => $e->getMessage(),\n ]);\n\n throw $e;\n }\n\n if (! $company instanceof CompaniesWithAssociations) {\n throw new CrmException('Account not found');\n }\n\n return [\n 'id' => $company->getId(),\n 'properties' => $company->getProperties(),\n ];\n }\n\n /**\n * @throws ContactApiException\n * @throws CrmException\n */\n public function getContactById(string $crmId, array $fields): array\n {\n try {\n $contact = $this->getNewInstance()->crm()->contacts()->basicApi()->getById(\n $crmId,\n implode(',', $fields)\n );\n } catch (ContactApiException $e) {\n $this->log->info('[Hubspot] Failed to fetch contact', [\n 'crm_id' => $crmId,\n 'reason' => $e->getMessage(),\n ]);\n\n throw $e;\n }\n\n if (! $contact instanceof ContactsWithAssociations) {\n throw new CrmException('Contact not found');\n }\n\n return [\n 'id' => $contact->getId(),\n 'properties' => $contact->getProperties(),\n ];\n }\n\n /**\n * This is email search request that Hubspot offers as GET (more generous quota)\n */\n public function getContactByEmail(string $email, array $fields = []): array\n {\n try {\n $contact = $this->getNewInstance()->crm()->contacts()->basicApi()->getById(\n $email,\n implode(',', $fields),\n null,\n false,\n 'email'\n );\n\n return [\n 'id' => $contact->getId(),\n 'properties' => $contact->getProperties(),\n ];\n } catch (ContactApiException $e) {\n $this->log->info('[Hubspot] Failed to fetch contact', [\n 'email' => $email,\n 'reason' => $e->getMessage(),\n ]);\n\n return [];\n }\n }\n\n /**\n * @throws CrmException\n */\n public function fetchProperty(string $objectType, string $propertyId): Property\n {\n $result = $this->getNewInstance()->crm()->properties()->coreApi()->getByName($objectType, $propertyId);\n\n if (! $result instanceof Property) {\n $this->log->error('[Hubspot] Failed to fetch property', [\n 'object_type' => $objectType,\n 'property_id' => $propertyId,\n 'reason' => $result->getMessage(),\n ]);\n\n throw new CrmException('Failed to fetch property');\n }\n\n return $result;\n }\n\n /**\n * @return array<CrmFieldOption>\n */\n public function fetchPropertyOptions(string $objectType, string $propertyId): array\n {\n /** @var array<CrmFieldOption> */\n return $this->fetchProperty($objectType, $propertyId)->getOptions();\n }\n\n /**\n * @return array<array{id:string, label:string, deleted:bool}>\n */\n public function fetchCallDispositions(): array\n {\n /** @var Response $response */\n $response = $this->getInstance()->engagements()->getCallDispositions();\n\n /**\n * @var array<array{\n * id:string,\n * label:string,\n * deleted: bool\n * }>\n */\n return $response->toArray();\n }\n\n /**\n * @return array<CrmFieldOption>\n */\n public function fetchOpportunityPipelineStages(): array\n {\n $stages = [];\n $apiResponse = $this->getNewInstance()->crm()->pipelines()->pipelinesApi()->getAll('deals');\n\n if ($apiResponse instanceof Error) {\n $this->log->error('[Hubspot] Failed to fetch opportunity pipelines', [\n 'reason' => $apiResponse->getMessage(),\n ]);\n\n return [];\n }\n\n foreach ($apiResponse->getResults() as $pipeline) {\n $pipelineStages = array_map(\n static function (PipelineStage $stage) {\n return [\n 'id' => $stage->getId(),\n 'label' => $stage->getLabel(),\n ];\n },\n $pipeline->getStages()\n );\n\n $stages = array_merge($stages, $pipelineStages);\n }\n\n return $stages;\n }\n\n public function fetchOpportunityPipelines(): array\n {\n $pipelines = [];\n\n try {\n $apiResponse = $this->makeRequest('/crm/v3/pipelines/deals');\n } catch (\\Exception $e) {\n $this->log->info('[Hubspot] Failed to fetch opportunity pipelines', [\n 'reason' => $e->getMessage(),\n ]);\n\n return [];\n }\n\n $response = $apiResponse->toArray();\n\n foreach ($response['results'] as $pipeline) {\n $pipelines[] = [\n 'id' => $pipeline['id'],\n 'label' => $pipeline['label'],\n ];\n }\n\n return $pipelines;\n }\n\n /**\n * @return array<CrmFieldOption>\n */\n public function fetchMeetingOutcomeFieldOptions(Field $field): array\n {\n return $field->getCrmProviderId() === 'meetingOutcome'\n ? $this->fetchMeetingOutcomeTypes()\n : $this->fetchCallActivityTypes();\n }\n\n public function fetchMeetingOutcomeTypes(): array\n {\n return $this->extractMeetingTypeOptions(\n 'https://api.hubapi.com/crm/v3/properties/meeting/hs_meeting_outcome'\n );\n }\n\n public function fetchCallActivityTypes(): array\n {\n return $this->extractMeetingTypeOptions(\n 'https://api.hubapi.com/crm/v3/properties/call/hs_activity_type'\n );\n }\n\n private function extractMeetingTypeOptions(string $endpoint): array\n {\n /** @var Response $response */\n $response = $this->getInstance()\n ->getClient()\n ->request('GET', $endpoint);\n\n /**\n * @var array<array{\n * value: string,\n * label: string,\n * displayOrder: int\n * }> $optionData\n */\n $optionData = $response->toArray()['options'] ?? [];\n\n $options = [];\n foreach ($optionData as $item) {\n $options[] = [\n 'id' => $item['value'],\n 'value' => $item['value'],\n 'label' => $item['label'],\n 'display_order' => $item['displayOrder'],\n ];\n }\n\n return $options;\n }\n\n /**\n * @return array<CrmFieldOption>\n */\n public function fetchDispositionFieldOptions(): array\n {\n $options = [];\n\n $dispositions = $this->fetchCallDispositions();\n\n foreach ($dispositions as $disposition) {\n if ($disposition['deleted'] !== false) {\n continue;\n }\n\n $option['value'] = $disposition['id'];\n $option['id'] = $disposition['id'];\n $option['label'] = $disposition['label'];\n\n $options[] = $option;\n }\n\n return $options;\n }\n\n /**\n * @return array<CrmFieldOption>\n */\n public function fetchOpportunityFieldOptions(Field $field): array\n {\n if ($field->isStageField()) {\n return $this->fetchOpportunityPipelineStages();\n }\n\n if ($field->isPipelineField()) {\n return $this->fetchOpportunityPipelines();\n }\n\n return $this->fetchPropertyOptions('deals', $field->getCrmProviderId());\n }\n\n /**\n * @throws BadRequest\n * @throws HubspotException\n */\n public function makeRequest(string $endpoint, $method = 'GET', $payload = [], ?string $queryString = null)\n {\n $endpoint = self::BASE_URL . $endpoint;\n\n if ($method === 'GET') {\n $response = $this->getInstance()->getClient()?->request(\n method: $method,\n endpoint: $endpoint,\n query_string: $queryString\n );\n } else {\n $response = $this->getInstance()->getClient()->request($method, $endpoint, [\n 'json' => ($payload),\n ]);\n }\n\n $max = $response->getHeaderLine('X-HubSpot-RateLimit-Max'); // \"110\"\n $remaining = $response->getHeaderLine('X-HubSpot-RateLimit-Remaining'); // \"109\"\n $interval = $response->getHeaderLine('X-HubSpot-RateLimit-Interval-Milliseconds'); // \"10000\"\n $body = json_decode((string) $response->getBody(), true);\n\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$max ' . PHP_EOL . print_r($max, true));\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$remaining ' . PHP_EOL . print_r($remaining, true));\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$interval ' . PHP_EOL . print_r($interval, true));\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$body ' . PHP_EOL . print_r($body, true));\n\n return $response;\n }\n\n /**\n * @throws BadRequest\n * @throws HubspotException\n */\n public function createMeeting(array $payload): Response\n {\n $endpoint = '/crm/v3/objects/meetings';\n\n return $this->makeRequest($endpoint, 'POST', $payload);\n }\n\n /**\n * @throws BadRequest\n * @throws HubspotException\n */\n public function updateMeeting(string $meetingId, array $payload): Response\n {\n $endpoint = '/crm/v3/objects/meetings/' . $meetingId;\n\n return $this->makeRequest($endpoint, 'PATCH', $payload);\n }\n\n /**\n * @throws \\Exception\n */\n public function createNote(\n string $body,\n string $ownerId,\n int $timestamp,\n string $objectId,\n NoteObject $noteObject\n ): ?string {\n try {\n $noteInput = new SimplePublicObjectInput([\n 'properties' => [\n 'hs_note_body' => $body,\n 'hubspot_owner_id' => $ownerId,\n 'hs_timestamp' => $timestamp,\n ],\n ]);\n\n // Create note\n $note = $this->getNewInstance()->crm()->objects()->basicApi()->create('note', $noteInput);\n\n $this->getNewInstance()->crm()->objects()->associationsApi()->create(\n 'note',\n $note->getId(),\n $this->getNoteObject($noteObject),\n $objectId,\n $this->getNoteAssociationType($noteObject),\n );\n\n return $note->getId();\n } catch (\\Exception $e) {\n $this->log->error('[Hubspot] Failed to create note', [\n 'objectId' => $objectId,\n 'noteObject' => $noteObject->getObjectType(),\n 'reason' => $e->getMessage(),\n ]);\n\n \\Sentry::captureException($e);\n }\n\n return null;\n }\n\n public function updateEngagement(string $objectId, array $engagement, array $metadata): void\n {\n $this->getInstance()->engagements()->update($objectId, $engagement, $metadata);\n }\n\n public function getEngagementData(string $engagementId): array\n {\n $engagement = $this->getInstance()->engagements()->get($engagementId);\n\n return $engagement->toArray();\n }\n\n public function createEngagement(array $engagement, array $associations, array $metadata): Response\n {\n return $this->getInstance()\n ->engagements()\n ->create($engagement, $associations, $metadata);\n }\n\n public function isUnauthorizedException(\\Exception $e): bool\n {\n // Check for specific HubSpot API exception types first\n if ($e instanceof BadRequest) {\n // BadRequest can contain 401 status codes\n return $e->getCode() === 401;\n }\n\n // Check for HTTP client exceptions with status codes\n if ($e instanceof \\GuzzleHttp\\Exception\\RequestException && $e->hasResponse()) {\n $response = $e->getResponse();\n if ($response !== null) {\n return $response->getStatusCode() === 401;\n }\n }\n\n // Check for Guzzle HTTP exceptions\n if ($e instanceof \\GuzzleHttp\\Exception\\ClientException) {\n return $e->getCode() === 401;\n }\n\n // Fallback to string matching as last resort, but be more specific\n $message = strtolower($e->getMessage());\n\n return str_contains($message, '401 unauthorized') ||\n str_contains($message, 'http 401') ||\n str_contains($message, 'status code 401') ||\n (preg_match('/\\b401\\b/', $message) && str_contains($message, 'unauthorized'));\n }\n\n /**\n * Validates and refreshes the access token if needed before API requests.\n * This ensures long-running processes don't fail due to token expiration.\n *\n * @throws SocialAccountTokenInvalidException\n */\n public function ensureValidToken(): void\n {\n if ($this->oauthAccount === null) {\n return;\n }\n\n $newToken = $this->tokenManager->ensureValidToken($this->oauthAccount);\n if ($newToken !== null) {\n $this->accessToken = $newToken;\n }\n }\n\n public function getConfig()\n {\n return $this->config;\n }\n\n // returns only active (archived=false)\n public function getOwners(): array\n {\n return $this->getNewInstance()->crm()->owners()->getAll();\n }\n\n /**\n * @param bool $archived\n *\n * @return array<Owner>|[]\n */\n public function getOwnersArchived(bool $archived = true): array\n {\n $endpoint = '/crm/v3/owners';\n $queryParams = [\n 'archived' => $archived ? 'true' : 'false',\n ];\n $queryString = http_build_query($queryParams);\n\n $owners = [];\n\n try {\n $response = $this->makeRequest(endpoint: $endpoint, queryString: $queryString);\n $responseData = $response?->toArray();\n\n foreach ($responseData['results'] as $result) {\n try {\n $owners[] = Owner::create($result);\n } catch (Throwable $e) {\n $this->log->error('[HubSpot] Failed to process owner data', [\n 'result' => $result,\n 'error' => $e->getMessage(),\n ]);\n\n continue;\n }\n }\n } catch (Throwable $e) {\n $this->log->error('HubSpot] Failed to fetch owners', [\n 'archived' => $archived,\n 'error' => $e->getMessage(),\n ]);\n\n return [];\n }\n\n return $owners;\n }\n\n public function getMeeting(string $engagementId): ObjectWithAssociations\n {\n return $this->getNewInstance()->crm()->objects()->basicApi()\n ->getById('meeting', $engagementId, null, 'contact,company,deal');\n }\n\n public function deleteEngagement(string $engagementId): void\n {\n $this->getInstance()->engagements()->delete((int) $engagementId);\n }\n\n public function getAssociationsData(array $ids, string $fromObject, string $toObject): array\n {\n $associationData = [];\n $idChunks = array_chunk($ids, self::ASSOCIATIONS_BATCH_SIZE_LIMIT);\n\n foreach ($idChunks as $idChunk) {\n try {\n $batchInput = new \\HubSpot\\Client\\Crm\\Associations\\Model\\BatchInputPublicObjectId();\n $batchInput->setInputs(array_map(function ($id) {\n $publicObjectId = new \\HubSpot\\Client\\Crm\\Associations\\Model\\PublicObjectId();\n $publicObjectId->setId($id);\n\n return $publicObjectId;\n }, $idChunk));\n\n $associatedObjectsData = $this\n ->getNewInstance()\n ->crm()\n ->associations()\n ->batchApi()\n ->read($fromObject, $toObject, $batchInput);\n\n if ($associatedObjectsData instanceof \\HubSpot\\Client\\Crm\\Associations\\Model\\BatchResponsePublicAssociationMulti) {\n foreach ($associatedObjectsData->getResults() as $association) {\n $from = $association->getFrom()->getId();\n $toAssociations = $association->getTo();\n\n if (! empty($toAssociations)) {\n $associationData[$from] = array_map(function ($item) {\n return $item->getId();\n }, $toAssociations);\n }\n }\n }\n } catch (\\Exception $e) {\n $this->log->error('[Hubspot] Failed to fetch associations', [\n 'from_object' => $fromObject,\n 'to_object' => $toObject,\n 'reason' => $e->getMessage(),\n ]);\n }\n }\n\n return $associationData;\n }\n\n /**\n * @throws \\Exception\n */\n private function getNoteAssociationType(NoteObject $noteObject): string\n {\n return match($noteObject) {\n NoteObject::Opportunity => 'note_to_deal',\n NoteObject::Lead, NoteObject::Contact => 'note_to_contact', // or 'note_to_lead' if your portal supports it\n NoteObject::Account => 'note_to_company',\n NoteObject::Call, NoteObject::Event => throw new \\Exception('Not supported'),\n };\n }\n\n /**\n * @throws \\Exception\n */\n private function getNoteObject(NoteObject $noteObject): string\n {\n return match($noteObject) {\n NoteObject::Opportunity => 'deal',\n NoteObject::Lead, NoteObject::Contact => 'contact',\n NoteObject::Account => 'company',\n NoteObject::Call, NoteObject::Event => throw new \\Exception('Not supported'),\n };\n }\n\n public function addAssociations(string $objectType, string $associationType, array $payload): Response\n {\n $endpoint = \"/crm/v4/associations/$objectType/$associationType/batch/create\";\n\n return $this->makeRequest($endpoint, 'POST', $payload);\n }\n\n public function removeAssociations(string $objectType, string $associationType, array $payload): Response\n {\n $endpoint = \"/crm/v4/associations/$objectType/$associationType/batch/archive\";\n\n return $this->makeRequest($endpoint, 'POST', $payload);\n }\n}","role_description":"text entry area","is_enabled":true,"is_focused":true,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Project","depth":3,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Project","depth":3,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"New File or Directory…","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Expand Selected","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Collapse All","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Options","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
1521951907897961092
|
6701901348398533693
|
click
|
accessibility
|
NULL
|
Project: faVsco.js, menu
master, menu
Start Listen Project: faVsco.js, menu
master, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Show Replace Field
Search History
retry_error
New Line
Match Case
Words
Regex
Replace History
Replace
New Line
Preserve case
0 results
Previous Occurrence
Next Occurrence
Filter Search Results
Open in Window, Multiple Cursors
Click to highlight
Close
Sync Changes
Hide This Notification
Code changed:
Hide
699
Previous Highlighted Error
Next Highlighted Error
[2026-05-07 12:52:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"fa8a3008-d298-4682-bbbc-fdc77520e0d7","trace_id":"7cfb2afb-9fc4-4a77-81be-65dce93c7d80"}
[2026-05-07 12:52:08] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"fa8a3008-d298-4682-bbbc-fdc77520e0d7","trace_id":"7cfb2afb-9fc4-4a77-81be-65dce93c7d80"}
[2026-05-07 12:52:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"fa8a3008-d298-4682-bbbc-fdc77520e0d7","trace_id":"7cfb2afb-9fc4-4a77-81be-65dce93c7d80"}
[2026-05-07 12:52:12] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"932ced9d-9804-48ed-976a-1f8bf5e75707","trace_id":"21bf320c-58f3-4082-831d-9f07f6c6a669"}
[2026-05-07 12:52:12] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"932ced9d-9804-48ed-976a-1f8bf5e75707","trace_id":"21bf320c-58f3-4082-831d-9f07f6c6a669"}
[2026-05-07 12:52:17] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1499,"provider":"hubspot"} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:17] local.INFO: [SocialAccountService] Token retrieved {"socialAccountId":1499,"provider":"hubspot"} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:17] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:17] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {"crm_provider":"hubspot","crm_owner":148,"team_id":2} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:17] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.55,"average_seconds_per_request":0.55} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:18] local.NOTICE: Monitoring start {"correlation_id":"ae3ec78f-432c-4e22-b73b-0413af73d9f3","trace_id":"c2feb517-0f2b-4ad9-bce5-4d57476a164b"}
[2026-05-07 12:52:18] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.51,"average_seconds_per_request":0.51} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:18] local.NOTICE: Monitoring end {"correlation_id":"ae3ec78f-432c-4e22-b73b-0413af73d9f3","trace_id":"c2feb517-0f2b-4ad9-bce5-4d57476a164b"}
[2026-05-07 12:52:18] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.48,"average_seconds_per_request":0.48} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:19] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.49,"average_seconds_per_request":0.49} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:19] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.49,"average_seconds_per_request":0.49} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"2bf2f73f-007c-4909-925e-f1749fbf87b3","trace_id":"8429123c-d92c-48d9-a154-29bc0aa0e2a1"}
[2026-05-07 12:52:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"2bf2f73f-007c-4909-925e-f1749fbf87b3","trace_id":"8429123c-d92c-48d9-a154-29bc0aa0e2a1"}
[2026-05-07 12:52:20] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.48,"average_seconds_per_request":0.48} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:20] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.62,"average_seconds_per_request":0.62} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:21] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.78,"average_seconds_per_request":0.78} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:22] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":1.21,"average_seconds_per_request":1.21} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:23] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.53,"average_seconds_per_request":0.53} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:25] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8","trace_id":"64ccac6b-34f7-45ed-a8ac-b63adbb19107"}
[2026-05-07 12:52:25] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8","trace_id":"64ccac6b-34f7-45ed-a8ac-b63adbb19107"}
[2026-05-07 12:52:26] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8","trace_id":"64ccac6b-34f7-45ed-a8ac-b63adbb19107"}
[2026-05-07 12:52:26] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8","trace_id":"64ccac6b-34f7-45ed-a8ac-b63adbb19107"}
[2026-05-07 12:52:28] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:count","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"6e1a36d0-a87a-455f-88b9-04f16718ea33","trace_id":"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c"}
[2026-05-07 12:52:28] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:50:00, 2026-05-07 12:52:00] {"correlation_id":"6e1a36d0-a87a-455f-88b9-04f16718ea33","trace_id":"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c"}
[2026-05-07 12:52:28] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:50:00, 2026-05-07 12:52:00] {"correlation_id":"6e1a36d0-a87a-455f-88b9-04f16718ea33","trace_id":"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c"}
[2026-05-07 12:52:28] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:count","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"6e1a36d0-a87a-455f-88b9-04f16718ea33","trace_id":"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c"}
[2026-05-07 12:52:31] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:create","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"80549428-beea-4a6c-97d3-818ca0f059f3","trace_id":"55ddd59b-073b-4331-8cdb-baa869dcff70"}
[2026-05-07 12:52:31] local.INFO: [EmailSchedule] STARTING batch create {"host":"docker_lamp_1"} {"correlation_id":"80549428-beea-4a6c-97d3-818ca0f059f3","trace_id":"55ddd59b-073b-4331-8cdb-baa869dcff70"}
[2026-05-07 12:52:31] local.INFO: [EmailSchedule] FINISHED batch create {"host":"docker_lamp_1"} {"correlation_id":"80549428-beea-4a6c-97d3-818ca0f059f3","trace_id":"55ddd59b-073b-4331-8cdb-baa869dcff70"}
[2026-05-07 12:52:31] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:create","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"80549428-beea-4a6c-97d3-818ca0f059f3","trace_id":"55ddd59b-073b-4331-8cdb-baa869dcff70"}
[2026-05-07 12:52:32] local.INFO: [Jiminny\Jobs\Mailbox\CreateBatches] processed 2 inboxes and created 0 batches {"userId":null,"batchSize":30,"maxBatches":1000} {"correlation_id":"92242bd6-7014-4487-a50b-1570e1a88e7a","trace_id":"55ddd59b-073b-4331-8cdb-baa869dcff70"}
[2026-05-07 12:52:39] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"activity:sync","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"d467eace-3254-4ecc-8d8e-a94688d6d3ad","trace_id":"5105ca8f-3c0d-4798-b748-5a7d6fbd7531"}
[2026-05-07 12:52:39] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"activity:sync","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"d467eace-3254-4ecc-8d8e-a94688d6d3ad","trace_id":"5105ca8f-3c0d-4798-b748-5a7d6fbd7531"}
[2026-05-07 12:53:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"04363b29-2f82-470a-89d0-c5ce4f4779d7","trace_id":"3c76a1f1-3348-4e2b-897c-4a216ca95147"}
[2026-05-07 12:53:08] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"04363b29-2f82-470a-89d0-c5ce4f4779d7","trace_id":"3c76a1f1-3348-4e2b-897c-4a216ca95147"}
[2026-05-07 12:53:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"04363b29-2f82-470a-89d0-c5ce4f4779d7","trace_id":"3c76a1f1-3348-4e2b-897c-4a216ca95147"}
[2026-05-07 12:53:11] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"5ebbecd0-866c-443f-965f-b6ac03735379","trace_id":"e0a724a5-bb4b-4fe6-9fe9-36ea1c3f0326"}
[2026-05-07 12:53:11] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"5ebbecd0-866c-443f-965f-b6ac03735379","trace_id":"e0a724a5-bb4b-4fe6-9fe9-36ea1c3f0326"}
[2026-05-07 12:53:18] local.NOTICE: Monitoring start {"correlation_id":"f39f0d3c-a292-41cb-8834-45dae1f8cf47","trace_id":"b6e7e2a7-85af-401d-afc6-bec2bdab34d7"}
[2026-05-07 12:53:18] local.NOTICE: Monitoring end {"correlation_id":"f39f0d3c-a292-41cb-8834-45dae1f8cf47","trace_id":"b6e7e2a7-85af-401d-afc6-bec2bdab34d7"}
[2026-05-07 12:53:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"419bb747-2669-496f-944b-1073496cc271","trace_id":"4cb913a4-ef75-422b-80eb-fbfb988521ed"}
[2026-05-07 12:53:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"419bb747-2669-496f-944b-1073496cc271","trace_id":"4cb913a4-ef75-422b-80eb-fbfb988521ed"}
[2026-05-07 12:53:22] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"f4805c97-9344-4111-8be2-2b1efeae07bb","trace_id":"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22"}
[2026-05-07 12:53:22] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"f4805c97-9344-4111-8be2-2b1efeae07bb","trace_id":"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22"}
[2026-05-07 12:53:22] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"f4805c97-9344-4111-8be2-2b1efeae07bb","trace_id":"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22"}
[2026-05-07 12:53:22] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"f4805c97-9344-4111-8be2-2b1efeae07bb","trace_id":"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22"}
[2026-05-07 12:53:25] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:retry-failed","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"2eadb06b-2c2e-4a7f-8920-77bd30d6cd7f","trace_id":"75f27a23-2021-41a5-9e5f-4b1cb4f143a6"}
[2026-05-07 12:53:25] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:retry-failed","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"2eadb06b-2c2e-4a7f-8920-77bd30d6cd7f","trace_id":"75f27a23-2021-41a5-9e5f-4b1cb4f143a6"}
[2026-05-07 12:54:06] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"ad151521-f676-4351-a70b-f44dc0b94990","trace_id":"17e39c4c-85cb-49a4-815e-b7315a8c2249"}
[2026-05-07 12:54:06] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"ad151521-f676-4351-a70b-f44dc0b94990","trace_id":"17e39c4c-85cb-49a4-815e-b7315a8c2249"}
[2026-05-07 12:54:06] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"ad151521-f676-4351-a70b-f44dc0b94990","trace_id":"17e39c4c-85cb-49a4-815e-b7315a8c2249"}
[2026-05-07 12:54:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"ed0583cf-03c6-4696-b859-876c8efa4473","trace_id":"3f9e0a3c-2178-4885-95eb-8618b8cfc042"}
[2026-05-07 12:54:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"ed0583cf-03c6-4696-b859-876c8efa4473","trace_id":"3f9e0a3c-2178-4885-95eb-8618b8cfc042"}
[2026-05-07 12:54:10] local.NOTICE: Monitoring start {"correlation_id":"7142250a-b897-4620-8ff7-fd9b3a1f3802","trace_id":"597def1e-ca38-4cc4-8890-fdcd5baff948"}
[2026-05-07 12:54:10] local.NOTICE: Monitoring end {"correlation_id":"7142250a-b897-4620-8ff7-fd9b3a1f3802","trace_id":"597def1e-ca38-4cc4-8890-fdcd5baff948"}
[2026-05-07 12:54:12] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"cb2ada48-0200-4eb3-a8c5-6cb8ea43ec0d","trace_id":"73937bdc-10b9-4508-9ef2-86420fe774fc"}
[2026-05-07 12:54:12] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"cb2ada48-0200-4eb3-a8c5-6cb8ea43ec0d","trace_id":"73937bdc-10b9-4508-9ef2-86420fe774fc"}
[2026-05-07 12:54:14] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"8f1d8932-2839-4256-99ab-1fd13e8381c6","trace_id":"cc090767-edc2-4a89-90c2-116f1737de7f"}
[2026-05-07 12:54:14] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"8f1d8932-2839-4256-99ab-1fd13e8381c6","trace_id":"cc090767-edc2-4a89-90c2-116f1737de7f"}
[2026-05-07 12:54:14] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"8f1d8932-2839-4256-99ab-1fd13e8381c6","trace_id":"cc090767-edc2-4a89-90c2-116f1737de7f"}
[2026-05-07 12:54:14] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"8f1d8932-2839-4256-99ab-1fd13e8381c6","trace_id":"cc090767-edc2-4a89-90c2-116f1737de7f"}
[2026-05-07 12:54:16] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:count","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"9d324c6d-5b36-46ee-89c6-f95f86bf3f39","trace_id":"860cdff0-9356-4e94-84cc-e011a74ba56c"}
[2026-05-07 12:54:16] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:52:00, 2026-05-07 12:54:00] {"correlation_id":"9d324c6d-5b36-46ee-89c6-f95f86bf3f39","trace_id":"860cdff0-9356-4e94-84cc-e011a74ba56c"}
[2026-05-07 12:54:16] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:52:00, 2026-05-07 12:54:00] {"correlation_id":"9d324c6d-5b36-46ee-89c6-f95f86bf3f39","trace_id":"860cdff0-9356-4e94-84cc-e011a74ba56c"}
[2026-05-07 12:54:16] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:count","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"9d324c6d-5b36-46ee-89c6-f95f86bf3f39","trace_id":"860cdff0-9356-4e94-84cc-e011a74ba56c"}
[2026-05-07 12:54:18] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"activity:aircall:check-and-renew","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"c2009a88-eea6-4954-8642-ef5d9cb56b42","trace_id":"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab"}
[2026-05-07 12:54:18] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1496,"provider":"aircall"} {"correlation_id":"c2009a88-eea6-4954-8642-ef5d9cb56b42","trace_id":"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab"}
[2026-05-07 12:54:18] local.INFO: [SocialAccountService] Token retrieved {"socialAccountId":1496,"provider":"aircall"} {"correlation_id":"c2009a88-eea6-4954-8642-ef5d9cb56b42","trace_id":"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab"}
[2026-05-07 12:54:18] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"c2009a88-eea6-4954-8642-ef5d9cb56b42","trace_id":"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab"}
[2026-05-07 12:54:19] local.ERROR: [Aircall] Re-activating webhooks failed {"team_id":1,"reason":"{\"message\":\"Forbidden\"}"} {"correlation_id":"c2009a88-eea6-4954-8642-ef5d9cb56b42","trace_id":"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab"}
[2026-05-07 12:54:19] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"activity:aircall:check-and-renew","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"c2009a88-eea6-4954-8642-ef5d9cb56b42","trace_id":"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab"}
[2026-05-07 12:54:21] local.INFO: [RetryFailedDownloads] Starting {"options":{"from":null,"to":null,"help":false,"silent":false,"quiet":false,"verbose":false,"version":false,"ansi":null,"no-interaction":false,"env":null}} {"correlation_id":"825ef2d7-b5f8-45cd-b19d-20a179b06934","trace_id":"5825a6c8-14c9-4bec-b688-d4895cfc41cc"}
[2026-05-07 12:55:05] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"c0dc8e25-7a51-4023-be61-d0abd6d72e37","trace_id":"16b8fa3e-92b1-465e-82d4-642a2d14c7c5"}
[2026-05-07 12:55:05] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"c0dc8e25-7a51-4023-be61-d0abd6d72e37","trace_id":"16b8fa3e-92b1-465e-82d4-642a2d14c7c5"}
[2026-05-07 12:55:05] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"c0dc8e25-7a51-4023-be61-d0abd6d72e37","trace_id":"16b8fa3e-92b1-465e-82d4-642a2d14c7c5"}
[2026-05-07 12:55:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"1c65fdd1-1f79-435d-b469-add46ddafd63","trace_id":"62f2a3bb-3be7-4c76-a9dd-222bfb895fab"}
[2026-05-07 12:55:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"1c65fdd1-1f79-435d-b469-add46ddafd63","trace_id":"62f2a3bb-3be7-4c76-a9dd-222bfb895fab"}
[2026-05-07 12:55:11] local.NOTICE: Monitoring start {"correlation_id":"f115f9bc-bb59-4fc9-8c9f-8b69baba1a55","trace_id":"e75cb5c6-6dd8-4000-8d26-4418020c7cfe"}
[2026-05-07 12:55:11] local.NOTICE: Monitoring end {"correlation_id":"f115f9bc-bb59-4fc9-8c9f-8b69baba1a55","trace_id":"e75cb5c6-6dd8-4000-8d26-4418020c7cfe"}
[2026-05-07 12:55:14] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"dba5c474-4d40-44da-baf2-f8b30db9a2f5","trace_id":"adb45622-1fb0-457c-bf20-8dcceab2d62a"}
[2026-05-07 12:55:14] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"dba5c474-4d40-44da-baf2-f8b30db9a2f5","trace_id":"adb45622-1fb0-457c-bf20-8dcceab2d62a"}
[2026-05-07 12:55:16] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"22c96a8e-4424-4a1f-b349-206276eefe4c","trace_id":"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c"}
[2026-05-07 12:55:16] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"22c96a8e-4424-4a1f-b349-206276eefe4c","trace_id":"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c"}
[2026-05-07 12:55:16] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"22c96a8e-4424-4a1f-b349-206276eefe4c","trace_id":"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c"}
[2026-05-07 12:55:16] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"22c96a8e-4424-4a1f-b349-206276eefe4c","trace_id":"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c"}
[2026-05-07 12:55:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"activity:purge-stale","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"5f958e8d-1d01-4144-abd6-2513e5524ad3","trace_id":"828bc5b7-e2aa-4443-901f-38dd94bb7cc5"}
[2026-05-07 12:55:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"activity:purge-stale","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"5f958e8d-1d01-4144-abd6-2513e5524ad3","trace_id":"828bc5b7-e2aa-4443-901f-38dd94bb7cc5"}
[2026-05-07 12:55:22] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:text-relay:sync","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"6bd1c9cb-cd9a-42a9-87fe-45cb7bac687a","trace_id":"0f2f5d66-c4c9-46a5-a31b-6937663ce1ad"}
[2026-05-07 12:55:22] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:text-relay:sync","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"6bd1c9cb-cd9a-42a9-87fe-45cb7bac687a","trace_id":"0f2f5d66-c4c9-46a5-a31b-6937663ce1ad"}
[2026-05-07 12:55:24] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:pre-meeting-notification","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"c5dd8132-d7e1-4caa-84d1-0a50d02df8da","trace_id":"bc7341c5-b8e2-48ea-9670-7ec375363180"}
[2026-05-07 12:55:24] local.INFO: Running pre-meeting notification command {"correlation_id":"c5dd8132-d7e1-4caa-84d1-0a50d02df8da","trace_id":"bc7341c5-b8e2-48ea-9670-7ec375363180"}
[2026-05-07 12:55:24] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:pre-meeting-notification","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"c5dd8132-d7e1-4caa-84d1-0a50d02df8da","trace_id":"bc7341c5-b8e2-48ea-9670-7ec375363180"}
[2026-05-07 12:55:26] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:start","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0","trace_id":"efb1619f-4185-4319-9bfb-305cee0b6bfc"}
[2026-05-07 12:55:26] local.INFO: Running conference:monitor:start command for activities in (2026-05-07 12:45:00, 2026-05-07 12:50:00] {"correlation_id":"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0","trace_id":"efb1619f-4185-4319-9bfb-305cee0b6bfc"}
[2026-05-07 12:55:26] local.INFO: [conference:monitor:start] No activities found in (2026-05-07 12:45:00, 2026-05-07 12:50:00] {"correlation_id":"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0","trace_id":"efb1619f-4185-4319-9bfb-305cee0b6bfc"}
[2026-05-07 12:55:26] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:start","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0","trace_id":"efb1619f-4185-4319-9bfb-305cee0b6bfc"}
[2026-05-07 12:55:28] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:end","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"3792b31a-080a-4fe4-9823-5602361325ba","trace_id":"41a2fde1-48f6-4667-84b7-a2f93e9ad2da"}
[2026-05-07 12:55:28] local.INFO: conference:monitor:end:Jiminny\Console\Commands\Activities\MonitorMeetingEndCommand::logActivitiesEnded {"from":"12:50","to":"12:55"} {"correlation_id":"3792b31a-080a-4fe4-9823-5602361325ba","trace_id":"41a2fde1-48f6-4667-84b7-a2f93e9ad2da"}
[2026-05-07 12:55:28] local.INFO: conference:monitor:end:Jiminny\Console\Commands\Activities\MonitorMeetingEndCommand::logActivitiesWithUnfinishedSession {"from":"02:45","to":"02:50"} {"correlation_id":"3792b31a-080a-4fe4-9823-5602361325ba","trace_id":"41a2fde1-48f6-4667-84b7-a2f93e9ad2da"}
[2026-05-07 12:55:28] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:end","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"3792b31a-080a-4fe4-9823-5602361325ba","trace_id":"41a2fde1-48f6-4667-84b7-a2f93e9ad2da"}
[2026-05-07 12:55:30] local.NOTICE: Repairing HubSpot tokens start {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:30] local.INFO: Trying to refresh HubSpot token {"account_id":59,"updated_at":"2025-10-03 09:32:05"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:30] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:30] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":59,"provider":"hubspot","refreshToken":"97b78f6e2cc49965c00c2492b602b02708b1392551e6b3f113fbaa48992af90b","state":"full-refresh"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.ERROR: Failed to refresh HubSpot token {"account_id":59,"updated_at":"2025-10-03 09:32:05","reason":"missing or invalid refresh token","previous":""} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.INFO: Trying to refresh HubSpot token {"account_id":306,"updated_at":"2023-11-27 09:30:03"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":306,"provider":"hubspot","refreshToken":"6fa6aa8cc641d131231acc3470f5c03cb3b07b2e580fb18f8acb3b1dbb72549b","state":"full-refresh"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.ERROR: Failed to refresh HubSpot token {"account_id":306,"updated_at":"2023-11-27 09:30:03","reason":"missing or invalid refresh token","previous":""} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.INFO: Trying to refresh HubSpot token {"account_id":1372,"updated_at":"2025-10-02 14:47:06"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1372,"provider":"hubspot","refreshToken":"9aa73948c761da29dce46c177cf9aee1fde483a44169ca38723f9f0597d7a8c4","state":"full-refresh"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:32] local.ERROR: Failed to refresh HubSpot token {"account_id":1372,"updated_at":"2025-10-02 14:47:06","reason":"missing or invalid refresh token","previous":""} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:32] local.NOTICE: Repairing HubSpot tokens end {"total":3,"fixed":0,"failed":3} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:40] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"crm:bullhorn:ping","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"5e676ae4-5d63-49d4-9001-559088adf06b","trace_id":"2fcce073-dd68-4c99-b7c4-b9e03c20b8e4"}
[2026-05-07 12:55:40] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:pre-meeting-reminder","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"1f830896-8142-41d1-bfc9-4cbb9179ffda","trace_id":"e348a096-7f37-4308-a6d8-66131e8be901"}
[2026-05-07 12:55:40] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"crm:bullhorn:ping","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"5e676ae4-5d63-49d4-9001-559088adf06b","trace_id":"2fcce073-dd68-4c99-b7c4-b9e03c20b8e4"}
[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Command] Starting polling service {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Service starting {"memory_limit":"256M","max_execution_time":"0","initial_memory_mb":62.0} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Acquired polling lock {"expires_at":"2026-05-07T12:57:40.609671Z"} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:40] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:40] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:pre-meeting-reminder","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"1f830896-8142-41d1-bfc9-4cbb9179ffda","trace_id":"e348a096-7f37-4308-a6d8-66131e8be901"}
[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:45] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:45] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:46] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:51] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:51] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:51] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:06] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:06] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:06] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"2d8b30b4-87aa-480f-9b9e-5a9c709b742a","trace_id":"25b7be6c-1faf-430b-a724-a4ff28773a31"}
[2026-05-07 12:56:08] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"2d8b30b4-87aa-480f-9b9e-5a9c709b742a","trace_id":"25b7be6c-1faf-430b-a724-a4ff28773a31"}
[2026-05-07 12:56:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"2d8b30b4-87aa-480f-9b9e-5a9c709b742a","trace_id":"25b7be6c-1faf-430b-a724-a4ff28773a31"}
[2026-05-07 12:56:10] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"efd336d7-db4d-459e-b6e7-bf73454e955e","trace_id":"0a82c3d5-0417-48c8-b88f-70ec33e2326a"}
[2026-05-07 12:56:10] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"efd336d7-db4d-459e-b6e7-bf73454e955e","trace_id":"0a82c3d5-0417-48c8-b88f-70ec33e2326a"}
[2026-05-07 12:56:12] local.NOTICE: Monitoring start {"correlation_id":"68481576-8ca6-4ee5-821b-07374702971d","trace_id":"c73eac09-5d20-425f-9c22-bd6c65fc60c9"}
[2026-05-07 12:56:12] local.NOTICE: Monitoring end {"correlation_id":"68481576-8ca6-4ee5-821b-07374702971d","trace_id":"c73eac09-5d20-425f-9c22-bd6c65fc60c9"}
[2026-05-07 12:56:17] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"bd0cdc75-b5c2-4dbb-bc44-e36c96813d24","trace_id":"f688cd98-c171-4e30-8c72-afc14f040861"}
[2026-05-07 12:56:17] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"bd0cdc75-b5c2-4dbb-bc44-e36c96813d24","trace_id":"f688cd98-c171-4e30-8c72-afc14f040861"}
[2026-05-07 12:56:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"f01636a9-4059-4ab0-9ad2-b078d42cedbd","trace_id":"fea938d8-aedc-40ec-b8c2-2f487e1ac808"}
[2026-05-07 12:56:20] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"f01636a9-4059-4ab0-9ad2-b078d42cedbd","trace_id":"fea938d8-aedc-40ec-b8c2-2f487e1ac808"}
[2026-05-07 12:56:20] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"f01636a9-4059-4ab0-9ad2-b078d42cedbd","trace_id":"fea938d8-aedc-40ec-b8c2-2f487e1ac808"}
[2026-05-07 12:56:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"f01636a9-4059-4ab0-9ad2-b078d42cedbd","trace_id":"fea938d8-aedc-40ec-b8c2-2f487e1ac808"}
[2026-05-07 12:56:23] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:count","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"d4558901-264d-4238-8589-62a137bac1fd","trace_id":"38e6b5dc-ebd6-46a7-8224-7374d4e58630"}
[2026-05-07 12:56:23] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:54:00, 2026-05-07 12:56:00] {"correlation_id":"d4558901-264d-4238-8589-62a137bac1fd","trace_id":"38e6b5dc-ebd6-46a7-8224-7374d4e58630"}
[2026-05-07 12:56:23] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:54:00, 2026-05-07 12:56:00] {"correlation_id":"d4558901-264d-4238-8589-62a137bac1fd","trace_id":"38e6b5dc-ebd6-46a7-8224-7374d4e58630"}
[2026-05-07 12:56:23] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:count","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"d4558901-264d-4238-8589-62a137bac1fd","trace_id":"38e6b5dc-ebd6-46a7-8224-7374d4e58630"}
[2026-05-07 12:56:24] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"crm:sync-hubspot-objects","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"7bfaf9be-0ca1-4170-a0c9-83e0ed61881c","trace_id":"ba7f9eee-8dcb-4c94-acb0-18f9363757ad"}
[2026-05-07 12:56:24] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"crm:sync-hubspot-objects","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"7bfaf9be-0ca1-4170-a0c9-83e0ed61881c","trace_id":"ba7f9eee-8dcb-4c94-acb0-18f9363757ad"}
[2026-05-07 12:56:26] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"activity:notify-not-logged","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"2541e0fa-1117-4863-9523-d723b5821a24","trace_id":"d9600320-5133-4938-bdd1-2256dfdf8db4"}
[2026-05-07 12:56:26] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"activity:notify-not-logged","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"2541e0fa-1117-4863-9523-d723b5821a24","trace_id":"d9600320-5133-4938-bdd1-2256dfdf8db4"}
[2026-05-07 12:56:35] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:sync","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"e444f776-37db-4c6d-b30e-20b01a089de7","trace_id":"1168869e-e07c-4702-a046-42fc95a91f6d"}
[2026-05-07 12:56:36] local.INFO: [EmailSchedule] STARTING Inbox Sync {"host":"docker_lamp_1"} {"correlation_id":"e444f776-37db-4c6d-b30e-20b01a089de7","trace_id":"1168869e-e07c-4702-a046-42fc95a91f6d"}
[2026-05-07 12:56:36] local.INFO: [EmailSchedule] FINISHED Inbox Sync {"host":"docker_lamp_1","events":2} {"correlation_id":"e444f776-37db-4c6d-b30e-20b01a089de7","trace_id":"1168869e-e07c-4702-a046-42fc95a91f6d"}
[2026-05-07 12:56:36] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:sync","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"e444f776-37db-4c6d-b30e-20b01a089de7","trace_id":"1168869e-e07c-4702-a046-42fc95a91f6d"}
[2026-05-07 12:56:36] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:36] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:36] local.INFO: [HubSpot Journal Auth] Requesting new client credentials token {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:37] local.INFO: [HubSpot Journal Auth] Successfully obtained new access token {"expires_in":1800,"cached_for":1500} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:37] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:37] local.WARNING: [HubSpot Journal Polling] Maximum empty results reached, stopping {"empty_results":5,"max_empty_results":5} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:37] local.WARNING: [HubSpot Journal Polling] Maximum empty results reached, stopping {"empty_results":5,"max_empty_results":5} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:37] local.INFO: [HubSpot Journal Polling] Service ending {"runtime_seconds":57,"total_cycles":5,"files_downloaded":0,"empty_files":0,"other_portal_skipped":0,"total_events":0,"events_per_file":0,"avg_api_ms":238.3,"avg_download_ms":0.0,"avg_transform_ms":0.0,"avg_process_ms":0.0,"peak_memory_mb":99.73} {"correlation_id"...
|
4202
|
NULL
|
NULL
|
NULL
|
|
4205
|
NULL
|
0
|
2026-05-07T13:16:24.010084+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-07/1778 /Users/lukas/.screenpipe/data/data/2026-05-07/1778159784010_m2.jpg...
|
PhpStorm
|
faVsco.js – Client.php
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
master, menu
Start Listen Project: faVsco.js, menu
master, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Show Replace Field
Search History
retry_error
New Line
Match Case
Words
Regex
Replace History
Replace
New Line
Preserve case
0 results
Previous Occurrence
Next Occurrence
Filter Search Results
Open in Window, Multiple Cursors
Click to highlight
Close
Sync Changes
Hide This Notification
Code changed:
Hide
699
Previous Highlighted Error
Next Highlighted Error
[2026-05-07 12:52:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"fa8a3008-d298-4682-bbbc-fdc77520e0d7","trace_id":"7cfb2afb-9fc4-4a77-81be-65dce93c7d80"}
[2026-05-07 12:52:08] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"fa8a3008-d298-4682-bbbc-fdc77520e0d7","trace_id":"7cfb2afb-9fc4-4a77-81be-65dce93c7d80"}
[2026-05-07 12:52:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"fa8a3008-d298-4682-bbbc-fdc77520e0d7","trace_id":"7cfb2afb-9fc4-4a77-81be-65dce93c7d80"}
[2026-05-07 12:52:12] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"932ced9d-9804-48ed-976a-1f8bf5e75707","trace_id":"21bf320c-58f3-4082-831d-9f07f6c6a669"}
[2026-05-07 12:52:12] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"932ced9d-9804-48ed-976a-1f8bf5e75707","trace_id":"21bf320c-58f3-4082-831d-9f07f6c6a669"}
[2026-05-07 12:52:17] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1499,"provider":"hubspot"} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:17] local.INFO: [SocialAccountService] Token retrieved {"socialAccountId":1499,"provider":"hubspot"} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:17] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:17] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {"crm_provider":"hubspot","crm_owner":148,"team_id":2} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:17] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.55,"average_seconds_per_request":0.55} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:18] local.NOTICE: Monitoring start {"correlation_id":"ae3ec78f-432c-4e22-b73b-0413af73d9f3","trace_id":"c2feb517-0f2b-4ad9-bce5-4d57476a164b"}
[2026-05-07 12:52:18] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.51,"average_seconds_per_request":0.51} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:18] local.NOTICE: Monitoring end {"correlation_id":"ae3ec78f-432c-4e22-b73b-0413af73d9f3","trace_id":"c2feb517-0f2b-4ad9-bce5-4d57476a164b"}
[2026-05-07 12:52:18] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.48,"average_seconds_per_request":0.48} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:19] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.49,"average_seconds_per_request":0.49} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:19] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.49,"average_seconds_per_request":0.49} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"2bf2f73f-007c-4909-925e-f1749fbf87b3","trace_id":"8429123c-d92c-48d9-a154-29bc0aa0e2a1"}
[2026-05-07 12:52:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"2bf2f73f-007c-4909-925e-f1749fbf87b3","trace_id":"8429123c-d92c-48d9-a154-29bc0aa0e2a1"}
[2026-05-07 12:52:20] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.48,"average_seconds_per_request":0.48} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:20] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.62,"average_seconds_per_request":0.62} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:21] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.78,"average_seconds_per_request":0.78} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:22] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":1.21,"average_seconds_per_request":1.21} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:23] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.53,"average_seconds_per_request":0.53} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:25] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8","trace_id":"64ccac6b-34f7-45ed-a8ac-b63adbb19107"}
[2026-05-07 12:52:25] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8","trace_id":"64ccac6b-34f7-45ed-a8ac-b63adbb19107"}
[2026-05-07 12:52:26] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8","trace_id":"64ccac6b-34f7-45ed-a8ac-b63adbb19107"}
[2026-05-07 12:52:26] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8","trace_id":"64ccac6b-34f7-45ed-a8ac-b63adbb19107"}
[2026-05-07 12:52:28] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:count","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"6e1a36d0-a87a-455f-88b9-04f16718ea33","trace_id":"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c"}
[2026-05-07 12:52:28] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:50:00, 2026-05-07 12:52:00] {"correlation_id":"6e1a36d0-a87a-455f-88b9-04f16718ea33","trace_id":"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c"}
[2026-05-07 12:52:28] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:50:00, 2026-05-07 12:52:00] {"correlation_id":"6e1a36d0-a87a-455f-88b9-04f16718ea33","trace_id":"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c"}
[2026-05-07 12:52:28] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:count","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"6e1a36d0-a87a-455f-88b9-04f16718ea33","trace_id":"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c"}
[2026-05-07 12:52:31] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:create","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"80549428-beea-4a6c-97d3-818ca0f059f3","trace_id":"55ddd59b-073b-4331-8cdb-baa869dcff70"}
[2026-05-07 12:52:31] local.INFO: [EmailSchedule] STARTING batch create {"host":"docker_lamp_1"} {"correlation_id":"80549428-beea-4a6c-97d3-818ca0f059f3","trace_id":"55ddd59b-073b-4331-8cdb-baa869dcff70"}
[2026-05-07 12:52:31] local.INFO: [EmailSchedule] FINISHED batch create {"host":"docker_lamp_1"} {"correlation_id":"80549428-beea-4a6c-97d3-818ca0f059f3","trace_id":"55ddd59b-073b-4331-8cdb-baa869dcff70"}
[2026-05-07 12:52:31] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:create","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"80549428-beea-4a6c-97d3-818ca0f059f3","trace_id":"55ddd59b-073b-4331-8cdb-baa869dcff70"}
[2026-05-07 12:52:32] local.INFO: [Jiminny\Jobs\Mailbox\CreateBatches] processed 2 inboxes and created 0 batches {"userId":null,"batchSize":30,"maxBatches":1000} {"correlation_id":"92242bd6-7014-4487-a50b-1570e1a88e7a","trace_id":"55ddd59b-073b-4331-8cdb-baa869dcff70"}
[2026-05-07 12:52:39] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"activity:sync","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"d467eace-3254-4ecc-8d8e-a94688d6d3ad","trace_id":"5105ca8f-3c0d-4798-b748-5a7d6fbd7531"}
[2026-05-07 12:52:39] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"activity:sync","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"d467eace-3254-4ecc-8d8e-a94688d6d3ad","trace_id":"5105ca8f-3c0d-4798-b748-5a7d6fbd7531"}
[2026-05-07 12:53:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"04363b29-2f82-470a-89d0-c5ce4f4779d7","trace_id":"3c76a1f1-3348-4e2b-897c-4a216ca95147"}
[2026-05-07 12:53:08] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"04363b29-2f82-470a-89d0-c5ce4f4779d7","trace_id":"3c76a1f1-3348-4e2b-897c-4a216ca95147"}
[2026-05-07 12:53:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"04363b29-2f82-470a-89d0-c5ce4f4779d7","trace_id":"3c76a1f1-3348-4e2b-897c-4a216ca95147"}
[2026-05-07 12:53:11] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"5ebbecd0-866c-443f-965f-b6ac03735379","trace_id":"e0a724a5-bb4b-4fe6-9fe9-36ea1c3f0326"}
[2026-05-07 12:53:11] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"5ebbecd0-866c-443f-965f-b6ac03735379","trace_id":"e0a724a5-bb4b-4fe6-9fe9-36ea1c3f0326"}
[2026-05-07 12:53:18] local.NOTICE: Monitoring start {"correlation_id":"f39f0d3c-a292-41cb-8834-45dae1f8cf47","trace_id":"b6e7e2a7-85af-401d-afc6-bec2bdab34d7"}
[2026-05-07 12:53:18] local.NOTICE: Monitoring end {"correlation_id":"f39f0d3c-a292-41cb-8834-45dae1f8cf47","trace_id":"b6e7e2a7-85af-401d-afc6-bec2bdab34d7"}
[2026-05-07 12:53:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"419bb747-2669-496f-944b-1073496cc271","trace_id":"4cb913a4-ef75-422b-80eb-fbfb988521ed"}
[2026-05-07 12:53:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"419bb747-2669-496f-944b-1073496cc271","trace_id":"4cb913a4-ef75-422b-80eb-fbfb988521ed"}
[2026-05-07 12:53:22] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"f4805c97-9344-4111-8be2-2b1efeae07bb","trace_id":"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22"}
[2026-05-07 12:53:22] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"f4805c97-9344-4111-8be2-2b1efeae07bb","trace_id":"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22"}
[2026-05-07 12:53:22] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"f4805c97-9344-4111-8be2-2b1efeae07bb","trace_id":"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22"}
[2026-05-07 12:53:22] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"f4805c97-9344-4111-8be2-2b1efeae07bb","trace_id":"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22"}
[2026-05-07 12:53:25] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:retry-failed","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"2eadb06b-2c2e-4a7f-8920-77bd30d6cd7f","trace_id":"75f27a23-2021-41a5-9e5f-4b1cb4f143a6"}
[2026-05-07 12:53:25] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:retry-failed","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"2eadb06b-2c2e-4a7f-8920-77bd30d6cd7f","trace_id":"75f27a23-2021-41a5-9e5f-4b1cb4f143a6"}
[2026-05-07 12:54:06] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"ad151521-f676-4351-a70b-f44dc0b94990","trace_id":"17e39c4c-85cb-49a4-815e-b7315a8c2249"}
[2026-05-07 12:54:06] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"ad151521-f676-4351-a70b-f44dc0b94990","trace_id":"17e39c4c-85cb-49a4-815e-b7315a8c2249"}
[2026-05-07 12:54:06] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"ad151521-f676-4351-a70b-f44dc0b94990","trace_id":"17e39c4c-85cb-49a4-815e-b7315a8c2249"}
[2026-05-07 12:54:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"ed0583cf-03c6-4696-b859-876c8efa4473","trace_id":"3f9e0a3c-2178-4885-95eb-8618b8cfc042"}
[2026-05-07 12:54:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"ed0583cf-03c6-4696-b859-876c8efa4473","trace_id":"3f9e0a3c-2178-4885-95eb-8618b8cfc042"}
[2026-05-07 12:54:10] local.NOTICE: Monitoring start {"correlation_id":"7142250a-b897-4620-8ff7-fd9b3a1f3802","trace_id":"597def1e-ca38-4cc4-8890-fdcd5baff948"}
[2026-05-07 12:54:10] local.NOTICE: Monitoring end {"correlation_id":"7142250a-b897-4620-8ff7-fd9b3a1f3802","trace_id":"597def1e-ca38-4cc4-8890-fdcd5baff948"}
[2026-05-07 12:54:12] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"cb2ada48-0200-4eb3-a8c5-6cb8ea43ec0d","trace_id":"73937bdc-10b9-4508-9ef2-86420fe774fc"}
[2026-05-07 12:54:12] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"cb2ada48-0200-4eb3-a8c5-6cb8ea43ec0d","trace_id":"73937bdc-10b9-4508-9ef2-86420fe774fc"}
[2026-05-07 12:54:14] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"8f1d8932-2839-4256-99ab-1fd13e8381c6","trace_id":"cc090767-edc2-4a89-90c2-116f1737de7f"}
[2026-05-07 12:54:14] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"8f1d8932-2839-4256-99ab-1fd13e8381c6","trace_id":"cc090767-edc2-4a89-90c2-116f1737de7f"}
[2026-05-07 12:54:14] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"8f1d8932-2839-4256-99ab-1fd13e8381c6","trace_id":"cc090767-edc2-4a89-90c2-116f1737de7f"}
[2026-05-07 12:54:14] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"8f1d8932-2839-4256-99ab-1fd13e8381c6","trace_id":"cc090767-edc2-4a89-90c2-116f1737de7f"}
[2026-05-07 12:54:16] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:count","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"9d324c6d-5b36-46ee-89c6-f95f86bf3f39","trace_id":"860cdff0-9356-4e94-84cc-e011a74ba56c"}
[2026-05-07 12:54:16] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:52:00, 2026-05-07 12:54:00] {"correlation_id":"9d324c6d-5b36-46ee-89c6-f95f86bf3f39","trace_id":"860cdff0-9356-4e94-84cc-e011a74ba56c"}
[2026-05-07 12:54:16] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:52:00, 2026-05-07 12:54:00] {"correlation_id":"9d324c6d-5b36-46ee-89c6-f95f86bf3f39","trace_id":"860cdff0-9356-4e94-84cc-e011a74ba56c"}
[2026-05-07 12:54:16] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:count","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"9d324c6d-5b36-46ee-89c6-f95f86bf3f39","trace_id":"860cdff0-9356-4e94-84cc-e011a74ba56c"}
[2026-05-07 12:54:18] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"activity:aircall:check-and-renew","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"c2009a88-eea6-4954-8642-ef5d9cb56b42","trace_id":"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab"}
[2026-05-07 12:54:18] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1496,"provider":"aircall"} {"correlation_id":"c2009a88-eea6-4954-8642-ef5d9cb56b42","trace_id":"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab"}
[2026-05-07 12:54:18] local.INFO: [SocialAccountService] Token retrieved {"socialAccountId":1496,"provider":"aircall"} {"correlation_id":"c2009a88-eea6-4954-8642-ef5d9cb56b42","trace_id":"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab"}
[2026-05-07 12:54:18] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"c2009a88-eea6-4954-8642-ef5d9cb56b42","trace_id":"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab"}
[2026-05-07 12:54:19] local.ERROR: [Aircall] Re-activating webhooks failed {"team_id":1,"reason":"{\"message\":\"Forbidden\"}"} {"correlation_id":"c2009a88-eea6-4954-8642-ef5d9cb56b42","trace_id":"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab"}
[2026-05-07 12:54:19] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"activity:aircall:check-and-renew","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"c2009a88-eea6-4954-8642-ef5d9cb56b42","trace_id":"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab"}
[2026-05-07 12:54:21] local.INFO: [RetryFailedDownloads] Starting {"options":{"from":null,"to":null,"help":false,"silent":false,"quiet":false,"verbose":false,"version":false,"ansi":null,"no-interaction":false,"env":null}} {"correlation_id":"825ef2d7-b5f8-45cd-b19d-20a179b06934","trace_id":"5825a6c8-14c9-4bec-b688-d4895cfc41cc"}
[2026-05-07 12:55:05] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"c0dc8e25-7a51-4023-be61-d0abd6d72e37","trace_id":"16b8fa3e-92b1-465e-82d4-642a2d14c7c5"}
[2026-05-07 12:55:05] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"c0dc8e25-7a51-4023-be61-d0abd6d72e37","trace_id":"16b8fa3e-92b1-465e-82d4-642a2d14c7c5"}
[2026-05-07 12:55:05] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"c0dc8e25-7a51-4023-be61-d0abd6d72e37","trace_id":"16b8fa3e-92b1-465e-82d4-642a2d14c7c5"}
[2026-05-07 12:55:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"1c65fdd1-1f79-435d-b469-add46ddafd63","trace_id":"62f2a3bb-3be7-4c76-a9dd-222bfb895fab"}
[2026-05-07 12:55:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"1c65fdd1-1f79-435d-b469-add46ddafd63","trace_id":"62f2a3bb-3be7-4c76-a9dd-222bfb895fab"}
[2026-05-07 12:55:11] local.NOTICE: Monitoring start {"correlation_id":"f115f9bc-bb59-4fc9-8c9f-8b69baba1a55","trace_id":"e75cb5c6-6dd8-4000-8d26-4418020c7cfe"}
[2026-05-07 12:55:11] local.NOTICE: Monitoring end {"correlation_id":"f115f9bc-bb59-4fc9-8c9f-8b69baba1a55","trace_id":"e75cb5c6-6dd8-4000-8d26-4418020c7cfe"}
[2026-05-07 12:55:14] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"dba5c474-4d40-44da-baf2-f8b30db9a2f5","trace_id":"adb45622-1fb0-457c-bf20-8dcceab2d62a"}
[2026-05-07 12:55:14] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"dba5c474-4d40-44da-baf2-f8b30db9a2f5","trace_id":"adb45622-1fb0-457c-bf20-8dcceab2d62a"}
[2026-05-07 12:55:16] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"22c96a8e-4424-4a1f-b349-206276eefe4c","trace_id":"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c"}
[2026-05-07 12:55:16] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"22c96a8e-4424-4a1f-b349-206276eefe4c","trace_id":"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c"}
[2026-05-07 12:55:16] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"22c96a8e-4424-4a1f-b349-206276eefe4c","trace_id":"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c"}
[2026-05-07 12:55:16] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"22c96a8e-4424-4a1f-b349-206276eefe4c","trace_id":"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c"}
[2026-05-07 12:55:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"activity:purge-stale","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"5f958e8d-1d01-4144-abd6-2513e5524ad3","trace_id":"828bc5b7-e2aa-4443-901f-38dd94bb7cc5"}
[2026-05-07 12:55:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"activity:purge-stale","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"5f958e8d-1d01-4144-abd6-2513e5524ad3","trace_id":"828bc5b7-e2aa-4443-901f-38dd94bb7cc5"}
[2026-05-07 12:55:22] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:text-relay:sync","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"6bd1c9cb-cd9a-42a9-87fe-45cb7bac687a","trace_id":"0f2f5d66-c4c9-46a5-a31b-6937663ce1ad"}
[2026-05-07 12:55:22] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:text-relay:sync","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"6bd1c9cb-cd9a-42a9-87fe-45cb7bac687a","trace_id":"0f2f5d66-c4c9-46a5-a31b-6937663ce1ad"}
[2026-05-07 12:55:24] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:pre-meeting-notification","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"c5dd8132-d7e1-4caa-84d1-0a50d02df8da","trace_id":"bc7341c5-b8e2-48ea-9670-7ec375363180"}
[2026-05-07 12:55:24] local.INFO: Running pre-meeting notification command {"correlation_id":"c5dd8132-d7e1-4caa-84d1-0a50d02df8da","trace_id":"bc7341c5-b8e2-48ea-9670-7ec375363180"}
[2026-05-07 12:55:24] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:pre-meeting-notification","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"c5dd8132-d7e1-4caa-84d1-0a50d02df8da","trace_id":"bc7341c5-b8e2-48ea-9670-7ec375363180"}
[2026-05-07 12:55:26] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:start","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0","trace_id":"efb1619f-4185-4319-9bfb-305cee0b6bfc"}
[2026-05-07 12:55:26] local.INFO: Running conference:monitor:start command for activities in (2026-05-07 12:45:00, 2026-05-07 12:50:00] {"correlation_id":"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0","trace_id":"efb1619f-4185-4319-9bfb-305cee0b6bfc"}
[2026-05-07 12:55:26] local.INFO: [conference:monitor:start] No activities found in (2026-05-07 12:45:00, 2026-05-07 12:50:00] {"correlation_id":"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0","trace_id":"efb1619f-4185-4319-9bfb-305cee0b6bfc"}
[2026-05-07 12:55:26] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:start","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0","trace_id":"efb1619f-4185-4319-9bfb-305cee0b6bfc"}
[2026-05-07 12:55:28] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:end","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"3792b31a-080a-4fe4-9823-5602361325ba","trace_id":"41a2fde1-48f6-4667-84b7-a2f93e9ad2da"}
[2026-05-07 12:55:28] local.INFO: conference:monitor:end:Jiminny\Console\Commands\Activities\MonitorMeetingEndCommand::logActivitiesEnded {"from":"12:50","to":"12:55"} {"correlation_id":"3792b31a-080a-4fe4-9823-5602361325ba","trace_id":"41a2fde1-48f6-4667-84b7-a2f93e9ad2da"}
[2026-05-07 12:55:28] local.INFO: conference:monitor:end:Jiminny\Console\Commands\Activities\MonitorMeetingEndCommand::logActivitiesWithUnfinishedSession {"from":"02:45","to":"02:50"} {"correlation_id":"3792b31a-080a-4fe4-9823-5602361325ba","trace_id":"41a2fde1-48f6-4667-84b7-a2f93e9ad2da"}
[2026-05-07 12:55:28] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:end","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"3792b31a-080a-4fe4-9823-5602361325ba","trace_id":"41a2fde1-48f6-4667-84b7-a2f93e9ad2da"}
[2026-05-07 12:55:30] local.NOTICE: Repairing HubSpot tokens start {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:30] local.INFO: Trying to refresh HubSpot token {"account_id":59,"updated_at":"2025-10-03 09:32:05"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:30] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:30] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":59,"provider":"hubspot","refreshToken":"97b78f6e2cc49965c00c2492b602b02708b1392551e6b3f113fbaa48992af90b","state":"full-refresh"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.ERROR: Failed to refresh HubSpot token {"account_id":59,"updated_at":"2025-10-03 09:32:05","reason":"missing or invalid refresh token","previous":""} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.INFO: Trying to refresh HubSpot token {"account_id":306,"updated_at":"2023-11-27 09:30:03"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":306,"provider":"hubspot","refreshToken":"6fa6aa8cc641d131231acc3470f5c03cb3b07b2e580fb18f8acb3b1dbb72549b","state":"full-refresh"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.ERROR: Failed to refresh HubSpot token {"account_id":306,"updated_at":"2023-11-27 09:30:03","reason":"missing or invalid refresh token","previous":""} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.INFO: Trying to refresh HubSpot token {"account_id":1372,"updated_at":"2025-10-02 14:47:06"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1372,"provider":"hubspot","refreshToken":"9aa73948c761da29dce46c177cf9aee1fde483a44169ca38723f9f0597d7a8c4","state":"full-refresh"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:32] local.ERROR: Failed to refresh HubSpot token {"account_id":1372,"updated_at":"2025-10-02 14:47:06","reason":"missing or invalid refresh token","previous":""} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:32] local.NOTICE: Repairing HubSpot tokens end {"total":3,"fixed":0,"failed":3} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:40] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"crm:bullhorn:ping","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"5e676ae4-5d63-49d4-9001-559088adf06b","trace_id":"2fcce073-dd68-4c99-b7c4-b9e03c20b8e4"}
[2026-05-07 12:55:40] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:pre-meeting-reminder","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"1f830896-8142-41d1-bfc9-4cbb9179ffda","trace_id":"e348a096-7f37-4308-a6d8-66131e8be901"}
[2026-05-07 12:55:40] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"crm:bullhorn:ping","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"5e676ae4-5d63-49d4-9001-559088adf06b","trace_id":"2fcce073-dd68-4c99-b7c4-b9e03c20b8e4"}
[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Command] Starting polling service {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Service starting {"memory_limit":"256M","max_execution_time":"0","initial_memory_mb":62.0} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Acquired polling lock {"expires_at":"2026-05-07T12:57:40.609671Z"} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:40] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:40] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:pre-meeting-reminder","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"1f830896-8142-41d1-bfc9-4cbb9179ffda","trace_id":"e348a096-7f37-4308-a6d8-66131e8be901"}
[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:45] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:45] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:46] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:51] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:51] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:51] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:06] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:06] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:06] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"2d8b30b4-87aa-480f-9b9e-5a9c709b742a","trace_id":"25b7be6c-1faf-430b-a724-a4ff28773a31"}
[2026-05-07 12:56:08] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"2d8b30b4-87aa-480f-9b9e-5a9c709b742a","trace_id":"25b7be6c-1faf-430b-a724-a4ff28773a31"}
[2026-05-07 12:56:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"2d8b30b4-87aa-480f-9b9e-5a9c709b742a","trace_id":"25b7be6c-1faf-430b-a724-a4ff28773a31"}
[2026-05-07 12:56:10] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"efd336d7-db4d-459e-b6e7-bf73454e955e","trace_id":"0a82c3d5-0417-48c8-b88f-70ec33e2326a"}
[2026-05-07 12:56:10] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"efd336d7-db4d-459e-b6e7-bf73454e955e","trace_id":"0a82c3d5-0417-48c8-b88f-70ec33e2326a"}
[2026-05-07 12:56:12] local.NOTICE: Monitoring start {"correlation_id":"68481576-8ca6-4ee5-821b-07374702971d","trace_id":"c73eac09-5d20-425f-9c22-bd6c65fc60c9"}
[2026-05-07 12:56:12] local.NOTICE: Monitoring end {"correlation_id":"68481576-8ca6-4ee5-821b-07374702971d","trace_id":"c73eac09-5d20-425f-9c22-bd6c65fc60c9"}
[2026-05-07 12:56:17] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"bd0cdc75-b5c2-4dbb-bc44-e36c96813d24","trace_id":"f688cd98-c171-4e30-8c72-afc14f040861"}
[2026-05-07 12:56:17] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"bd0cdc75-b5c2-4dbb-bc44-e36c96813d24","trace_id":"f688cd98-c171-4e30-8c72-afc14f040861"}
[2026-05-07 12:56:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"f01636a9-4059-4ab0-9ad2-b078d42cedbd","trace_id":"fea938d8-aedc-40ec-b8c2-2f487e1ac808"}
[2026-05-07 12:56:20] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"f01636a9-4059-4ab0-9ad2-b078d42cedbd","trace_id":"fea938d8-aedc-40ec-b8c2-2f487e1ac808"}
[2026-05-07 12:56:20] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"f01636a9-4059-4ab0-9ad2-b078d42cedbd","trace_id":"fea938d8-aedc-40ec-b8c2-2f487e1ac808"}
[2026-05-07 12:56:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"f01636a9-4059-4ab0-9ad2-b078d42cedbd","trace_id":"fea938d8-aedc-40ec-b8c2-2f487e1ac808"}
[2026-05-07 12:56:23] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:count","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"d4558901-264d-4238-8589-62a137bac1fd","trace_id":"38e6b5dc-ebd6-46a7-8224-7374d4e58630"}
[2026-05-07 12:56:23] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:54:00, 2026-05-07 12:56:00] {"correlation_id":"d4558901-264d-4238-8589-62a137bac1fd","trace_id":"38e6b5dc-ebd6-46a7-8224-7374d4e58630"}
[2026-05-07 12:56:23] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:54:00, 2026-05-07 12:56:00] {"correlation_id":"d4558901-264d-4238-8589-62a137bac1fd","trace_id":"38e6b5dc-ebd6-46a7-8224-7374d4e58630"}
[2026-05-07 12:56:23] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:count","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"d4558901-264d-4238-8589-62a137bac1fd","trace_id":"38e6b5dc-ebd6-46a7-8224-7374d4e58630"}
[2026-05-07 12:56:24] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"crm:sync-hubspot-objects","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"7bfaf9be-0ca1-4170-a0c9-83e0ed61881c","trace_id":"ba7f9eee-8dcb-4c94-acb0-18f9363757ad"}
[2026-05-07 12:56:24] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"crm:sync-hubspot-objects","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"7bfaf9be-0ca1-4170-a0c9-83e0ed61881c","trace_id":"ba7f9eee-8dcb-4c94-acb0-18f9363757ad"}
[2026-05-07 12:56:26] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"activity:notify-not-logged","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"2541e0fa-1117-4863-9523-d723b5821a24","trace_id":"d9600320-5133-4938-bdd1-2256dfdf8db4"}
[2026-05-07 12:56:26] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"activity:notify-not-logged","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"2541e0fa-1117-4863-9523-d723b5821a24","trace_id":"d9600320-5133-4938-bdd1-2256dfdf8db4"}
[2026-05-07 12:56:35] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:sync","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"e444f776-37db-4c6d-b30e-20b01a089de7","trace_id":"1168869e-e07c-4702-a046-42fc95a91f6d"}
[2026-05-07 12:56:36] local.INFO: [EmailSchedule] STARTING Inbox Sync {"host":"docker_lamp_1"} {"correlation_id":"e444f776-37db-4c6d-b30e-20b01a089de7","trace_id":"1168869e-e07c-4702-a046-42fc95a91f6d"}
[2026-05-07 12:56:36] local.INFO: [EmailSchedule] FINISHED Inbox Sync {"host":"docker_lamp_1","events":2} {"correlation_id":"e444f776-37db-4c6d-b30e-20b01a089de7","trace_id":"1168869e-e07c-4702-a046-42fc95a91f6d"}
[2026-05-07 12:56:36] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:sync","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"e444f776-37db-4c6d-b30e-20b01a089de7","trace_id":"1168869e-e07c-4702-a046-42fc95a91f6d"}
[2026-05-07 12:56:36] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:36] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:36] local.INFO: [HubSpot Journal Auth] Requesting new client credentials token {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:37] local.INFO: [HubSpot Journal Auth] Successfully obtained new access token {"expires_in":1800,"cached_for":1500} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:37] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:37] local.WARNING: [HubSpot Journal Polling] Maximum empty results reached, stopping {"empty_results":5,"max_empty_results":5} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:37] local.WARNING: [HubSpot Journal Polling] Maximum empty results reached, stopping {"empty_results":5,"max_empty_results":5} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:37] local.INFO: [HubSpot Journal Polling] Service ending {"runtime_seconds":57,"total_cycles":5,"files_downloaded":0,"empty_files":0,"other_portal_skipped":0,"total_events":0,"events_per_file":0,"avg_api_ms":238.3,"avg_download_ms":0.0,"avg_transform_ms":0.0,"avg_process_ms":0.0,"peak_memory_mb":99.73} {"correlation_id"...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"bounds":{"left":0.025930852,"top":0.019952115,"width":0.03856383,"height":0.025538707},"on_screen":true,"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"master, menu","depth":5,"bounds":{"left":0.064494684,"top":0.019952115,"width":0.040226065,"height":0.025538707},"on_screen":true,"help_text":"Git Branch: master<br/>Some incoming commits are not fetched<br/>","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Start Listening for PHP Debug Connections","depth":5,"bounds":{"left":0.8081782,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"AskJiminnyReportActivityServiceTest","depth":6,"bounds":{"left":0.8234708,"top":0.019952115,"width":0.09208777,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'AskJiminnyReportActivityServiceTest'","depth":6,"bounds":{"left":0.9155585,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'AskJiminnyReportActivityServiceTest'","depth":6,"bounds":{"left":0.9268617,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More Actions","depth":6,"bounds":{"left":0.9381649,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JetBrains AI","depth":5,"bounds":{"left":0.96609044,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Search Everywhere","depth":5,"bounds":{"left":0.9773936,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"IDE and Project Settings","depth":5,"bounds":{"left":0.9886968,"top":0.019952115,"width":0.011303186,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Show Replace Field","depth":4,"bounds":{"left":0.39926863,"top":0.105347164,"width":0.008643617,"height":0.01915403},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Search History","depth":3,"bounds":{"left":0.4119016,"top":0.10454908,"width":0.00731383,"height":0.017557861},"on_screen":true,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"retry_error","depth":4,"bounds":{"left":0.42287233,"top":0.10454908,"width":0.043882977,"height":0.015961692},"on_screen":true,"value":"retry_error","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"New Line","depth":3,"bounds":{"left":0.47573137,"top":0.10454908,"width":0.00731383,"height":0.017557861},"on_screen":true,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Match Case","depth":3,"bounds":{"left":0.48570478,"top":0.10454908,"width":0.00731383,"height":0.017557861},"on_screen":true,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Words","depth":3,"bounds":{"left":0.4943484,"top":0.10454908,"width":0.00731383,"height":0.017557861},"on_screen":true,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Regex","depth":3,"bounds":{"left":0.50299203,"top":0.10454908,"width":0.00731383,"height":0.017557861},"on_screen":true,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Replace History","depth":3,"bounds":{"left":0.27027926,"top":1.0,"width":0.00731383,"height":0.0},"on_screen":false,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"Replace","depth":4,"on_screen":false,"role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"New Line","depth":3,"bounds":{"left":0.27027926,"top":1.0,"width":0.00731383,"height":0.0},"on_screen":false,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Preserve case","depth":3,"bounds":{"left":0.27027926,"top":1.0,"width":0.00731383,"height":0.0},"on_screen":false,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"0 results","depth":4,"bounds":{"left":0.51662236,"top":0.103751,"width":0.025598405,"height":0.017557861},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Previous Occurrence","depth":4,"bounds":{"left":0.5422208,"top":0.10295291,"width":0.008643617,"height":0.01915403},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Occurrence","depth":4,"bounds":{"left":0.55086434,"top":0.10295291,"width":0.008643617,"height":0.01915403},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Filter Search Results","depth":4,"bounds":{"left":0.55950797,"top":0.10295291,"width":0.008643617,"height":0.01915403},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Open in Window, Multiple Cursors","depth":4,"bounds":{"left":0.5681516,"top":0.10295291,"width":0.008643617,"height":0.01915403},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Click to highlight","depth":4,"on_screen":false,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close","depth":4,"bounds":{"left":0.6988032,"top":0.10295291,"width":0.008643617,"height":0.01915403},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.042220745,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"699","depth":4,"bounds":{"left":0.6831782,"top":0.13407822,"width":0.012632979,"height":0.015163607},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"bounds":{"left":0.6974734,"top":0.13248204,"width":0.00731383,"height":0.018355945},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Highlighted Error","depth":4,"bounds":{"left":0.70478725,"top":0.13248204,"width":0.006981383,"height":0.018355945},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"[2026-05-07 12:52:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"fa8a3008-d298-4682-bbbc-fdc77520e0d7\",\"trace_id\":\"7cfb2afb-9fc4-4a77-81be-65dce93c7d80\"}\n[2026-05-07 12:52:08] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"fa8a3008-d298-4682-bbbc-fdc77520e0d7\",\"trace_id\":\"7cfb2afb-9fc4-4a77-81be-65dce93c7d80\"}\n[2026-05-07 12:52:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"fa8a3008-d298-4682-bbbc-fdc77520e0d7\",\"trace_id\":\"7cfb2afb-9fc4-4a77-81be-65dce93c7d80\"}\n[2026-05-07 12:52:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"932ced9d-9804-48ed-976a-1f8bf5e75707\",\"trace_id\":\"21bf320c-58f3-4082-831d-9f07f6c6a669\"}\n[2026-05-07 12:52:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"932ced9d-9804-48ed-976a-1f8bf5e75707\",\"trace_id\":\"21bf320c-58f3-4082-831d-9f07f6c6a669\"}\n[2026-05-07 12:52:17] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:17] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:17] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:17] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":148,\"team_id\":2} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:17] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.55,\"average_seconds_per_request\":0.55} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:18] local.NOTICE: Monitoring start {\"correlation_id\":\"ae3ec78f-432c-4e22-b73b-0413af73d9f3\",\"trace_id\":\"c2feb517-0f2b-4ad9-bce5-4d57476a164b\"}\n[2026-05-07 12:52:18] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.51,\"average_seconds_per_request\":0.51} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:18] local.NOTICE: Monitoring end {\"correlation_id\":\"ae3ec78f-432c-4e22-b73b-0413af73d9f3\",\"trace_id\":\"c2feb517-0f2b-4ad9-bce5-4d57476a164b\"}\n[2026-05-07 12:52:18] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.48,\"average_seconds_per_request\":0.48} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:19] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.49,\"average_seconds_per_request\":0.49} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:19] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.49,\"average_seconds_per_request\":0.49} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"2bf2f73f-007c-4909-925e-f1749fbf87b3\",\"trace_id\":\"8429123c-d92c-48d9-a154-29bc0aa0e2a1\"}\n[2026-05-07 12:52:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"2bf2f73f-007c-4909-925e-f1749fbf87b3\",\"trace_id\":\"8429123c-d92c-48d9-a154-29bc0aa0e2a1\"}\n[2026-05-07 12:52:20] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.48,\"average_seconds_per_request\":0.48} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:20] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.62,\"average_seconds_per_request\":0.62} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:21] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.78,\"average_seconds_per_request\":0.78} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:22] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":1.21,\"average_seconds_per_request\":1.21} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:23] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.53,\"average_seconds_per_request\":0.53} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8\",\"trace_id\":\"64ccac6b-34f7-45ed-a8ac-b63adbb19107\"}\n[2026-05-07 12:52:25] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8\",\"trace_id\":\"64ccac6b-34f7-45ed-a8ac-b63adbb19107\"}\n[2026-05-07 12:52:26] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8\",\"trace_id\":\"64ccac6b-34f7-45ed-a8ac-b63adbb19107\"}\n[2026-05-07 12:52:26] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8\",\"trace_id\":\"64ccac6b-34f7-45ed-a8ac-b63adbb19107\"}\n[2026-05-07 12:52:28] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"6e1a36d0-a87a-455f-88b9-04f16718ea33\",\"trace_id\":\"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c\"}\n[2026-05-07 12:52:28] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:50:00, 2026-05-07 12:52:00] {\"correlation_id\":\"6e1a36d0-a87a-455f-88b9-04f16718ea33\",\"trace_id\":\"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c\"}\n[2026-05-07 12:52:28] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:50:00, 2026-05-07 12:52:00] {\"correlation_id\":\"6e1a36d0-a87a-455f-88b9-04f16718ea33\",\"trace_id\":\"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c\"}\n[2026-05-07 12:52:28] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"6e1a36d0-a87a-455f-88b9-04f16718ea33\",\"trace_id\":\"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c\"}\n[2026-05-07 12:52:31] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:create\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"80549428-beea-4a6c-97d3-818ca0f059f3\",\"trace_id\":\"55ddd59b-073b-4331-8cdb-baa869dcff70\"}\n[2026-05-07 12:52:31] local.INFO: [EmailSchedule] STARTING batch create {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"80549428-beea-4a6c-97d3-818ca0f059f3\",\"trace_id\":\"55ddd59b-073b-4331-8cdb-baa869dcff70\"}\n[2026-05-07 12:52:31] local.INFO: [EmailSchedule] FINISHED batch create {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"80549428-beea-4a6c-97d3-818ca0f059f3\",\"trace_id\":\"55ddd59b-073b-4331-8cdb-baa869dcff70\"}\n[2026-05-07 12:52:31] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:create\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"80549428-beea-4a6c-97d3-818ca0f059f3\",\"trace_id\":\"55ddd59b-073b-4331-8cdb-baa869dcff70\"}\n[2026-05-07 12:52:32] local.INFO: [Jiminny\\Jobs\\Mailbox\\CreateBatches] processed 2 inboxes and created 0 batches {\"userId\":null,\"batchSize\":30,\"maxBatches\":1000} {\"correlation_id\":\"92242bd6-7014-4487-a50b-1570e1a88e7a\",\"trace_id\":\"55ddd59b-073b-4331-8cdb-baa869dcff70\"}\n[2026-05-07 12:52:39] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"d467eace-3254-4ecc-8d8e-a94688d6d3ad\",\"trace_id\":\"5105ca8f-3c0d-4798-b748-5a7d6fbd7531\"}\n[2026-05-07 12:52:39] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"d467eace-3254-4ecc-8d8e-a94688d6d3ad\",\"trace_id\":\"5105ca8f-3c0d-4798-b748-5a7d6fbd7531\"}\n[2026-05-07 12:53:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"04363b29-2f82-470a-89d0-c5ce4f4779d7\",\"trace_id\":\"3c76a1f1-3348-4e2b-897c-4a216ca95147\"}\n[2026-05-07 12:53:08] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"04363b29-2f82-470a-89d0-c5ce4f4779d7\",\"trace_id\":\"3c76a1f1-3348-4e2b-897c-4a216ca95147\"}\n[2026-05-07 12:53:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"04363b29-2f82-470a-89d0-c5ce4f4779d7\",\"trace_id\":\"3c76a1f1-3348-4e2b-897c-4a216ca95147\"}\n[2026-05-07 12:53:11] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"5ebbecd0-866c-443f-965f-b6ac03735379\",\"trace_id\":\"e0a724a5-bb4b-4fe6-9fe9-36ea1c3f0326\"}\n[2026-05-07 12:53:11] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"5ebbecd0-866c-443f-965f-b6ac03735379\",\"trace_id\":\"e0a724a5-bb4b-4fe6-9fe9-36ea1c3f0326\"}\n[2026-05-07 12:53:18] local.NOTICE: Monitoring start {\"correlation_id\":\"f39f0d3c-a292-41cb-8834-45dae1f8cf47\",\"trace_id\":\"b6e7e2a7-85af-401d-afc6-bec2bdab34d7\"}\n[2026-05-07 12:53:18] local.NOTICE: Monitoring end {\"correlation_id\":\"f39f0d3c-a292-41cb-8834-45dae1f8cf47\",\"trace_id\":\"b6e7e2a7-85af-401d-afc6-bec2bdab34d7\"}\n[2026-05-07 12:53:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"419bb747-2669-496f-944b-1073496cc271\",\"trace_id\":\"4cb913a4-ef75-422b-80eb-fbfb988521ed\"}\n[2026-05-07 12:53:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"419bb747-2669-496f-944b-1073496cc271\",\"trace_id\":\"4cb913a4-ef75-422b-80eb-fbfb988521ed\"}\n[2026-05-07 12:53:22] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"f4805c97-9344-4111-8be2-2b1efeae07bb\",\"trace_id\":\"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22\"}\n[2026-05-07 12:53:22] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"f4805c97-9344-4111-8be2-2b1efeae07bb\",\"trace_id\":\"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22\"}\n[2026-05-07 12:53:22] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"f4805c97-9344-4111-8be2-2b1efeae07bb\",\"trace_id\":\"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22\"}\n[2026-05-07 12:53:22] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"f4805c97-9344-4111-8be2-2b1efeae07bb\",\"trace_id\":\"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22\"}\n[2026-05-07 12:53:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"2eadb06b-2c2e-4a7f-8920-77bd30d6cd7f\",\"trace_id\":\"75f27a23-2021-41a5-9e5f-4b1cb4f143a6\"}\n[2026-05-07 12:53:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"2eadb06b-2c2e-4a7f-8920-77bd30d6cd7f\",\"trace_id\":\"75f27a23-2021-41a5-9e5f-4b1cb4f143a6\"}\n[2026-05-07 12:54:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"ad151521-f676-4351-a70b-f44dc0b94990\",\"trace_id\":\"17e39c4c-85cb-49a4-815e-b7315a8c2249\"}\n[2026-05-07 12:54:06] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"ad151521-f676-4351-a70b-f44dc0b94990\",\"trace_id\":\"17e39c4c-85cb-49a4-815e-b7315a8c2249\"}\n[2026-05-07 12:54:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"ad151521-f676-4351-a70b-f44dc0b94990\",\"trace_id\":\"17e39c4c-85cb-49a4-815e-b7315a8c2249\"}\n[2026-05-07 12:54:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"ed0583cf-03c6-4696-b859-876c8efa4473\",\"trace_id\":\"3f9e0a3c-2178-4885-95eb-8618b8cfc042\"}\n[2026-05-07 12:54:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"ed0583cf-03c6-4696-b859-876c8efa4473\",\"trace_id\":\"3f9e0a3c-2178-4885-95eb-8618b8cfc042\"}\n[2026-05-07 12:54:10] local.NOTICE: Monitoring start {\"correlation_id\":\"7142250a-b897-4620-8ff7-fd9b3a1f3802\",\"trace_id\":\"597def1e-ca38-4cc4-8890-fdcd5baff948\"}\n[2026-05-07 12:54:10] local.NOTICE: Monitoring end {\"correlation_id\":\"7142250a-b897-4620-8ff7-fd9b3a1f3802\",\"trace_id\":\"597def1e-ca38-4cc4-8890-fdcd5baff948\"}\n[2026-05-07 12:54:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"cb2ada48-0200-4eb3-a8c5-6cb8ea43ec0d\",\"trace_id\":\"73937bdc-10b9-4508-9ef2-86420fe774fc\"}\n[2026-05-07 12:54:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"cb2ada48-0200-4eb3-a8c5-6cb8ea43ec0d\",\"trace_id\":\"73937bdc-10b9-4508-9ef2-86420fe774fc\"}\n[2026-05-07 12:54:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"8f1d8932-2839-4256-99ab-1fd13e8381c6\",\"trace_id\":\"cc090767-edc2-4a89-90c2-116f1737de7f\"}\n[2026-05-07 12:54:14] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"8f1d8932-2839-4256-99ab-1fd13e8381c6\",\"trace_id\":\"cc090767-edc2-4a89-90c2-116f1737de7f\"}\n[2026-05-07 12:54:14] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"8f1d8932-2839-4256-99ab-1fd13e8381c6\",\"trace_id\":\"cc090767-edc2-4a89-90c2-116f1737de7f\"}\n[2026-05-07 12:54:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"8f1d8932-2839-4256-99ab-1fd13e8381c6\",\"trace_id\":\"cc090767-edc2-4a89-90c2-116f1737de7f\"}\n[2026-05-07 12:54:16] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"9d324c6d-5b36-46ee-89c6-f95f86bf3f39\",\"trace_id\":\"860cdff0-9356-4e94-84cc-e011a74ba56c\"}\n[2026-05-07 12:54:16] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:52:00, 2026-05-07 12:54:00] {\"correlation_id\":\"9d324c6d-5b36-46ee-89c6-f95f86bf3f39\",\"trace_id\":\"860cdff0-9356-4e94-84cc-e011a74ba56c\"}\n[2026-05-07 12:54:16] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:52:00, 2026-05-07 12:54:00] {\"correlation_id\":\"9d324c6d-5b36-46ee-89c6-f95f86bf3f39\",\"trace_id\":\"860cdff0-9356-4e94-84cc-e011a74ba56c\"}\n[2026-05-07 12:54:16] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"9d324c6d-5b36-46ee-89c6-f95f86bf3f39\",\"trace_id\":\"860cdff0-9356-4e94-84cc-e011a74ba56c\"}\n[2026-05-07 12:54:18] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:aircall:check-and-renew\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"c2009a88-eea6-4954-8642-ef5d9cb56b42\",\"trace_id\":\"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab\"}\n[2026-05-07 12:54:18] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1496,\"provider\":\"aircall\"} {\"correlation_id\":\"c2009a88-eea6-4954-8642-ef5d9cb56b42\",\"trace_id\":\"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab\"}\n[2026-05-07 12:54:18] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1496,\"provider\":\"aircall\"} {\"correlation_id\":\"c2009a88-eea6-4954-8642-ef5d9cb56b42\",\"trace_id\":\"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab\"}\n[2026-05-07 12:54:18] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"c2009a88-eea6-4954-8642-ef5d9cb56b42\",\"trace_id\":\"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab\"}\n[2026-05-07 12:54:19] local.ERROR: [Aircall] Re-activating webhooks failed {\"team_id\":1,\"reason\":\"{\\\"message\\\":\\\"Forbidden\\\"}\"} {\"correlation_id\":\"c2009a88-eea6-4954-8642-ef5d9cb56b42\",\"trace_id\":\"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab\"}\n[2026-05-07 12:54:19] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:aircall:check-and-renew\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"c2009a88-eea6-4954-8642-ef5d9cb56b42\",\"trace_id\":\"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab\"}\n[2026-05-07 12:54:21] local.INFO: [RetryFailedDownloads] Starting {\"options\":{\"from\":null,\"to\":null,\"help\":false,\"silent\":false,\"quiet\":false,\"verbose\":false,\"version\":false,\"ansi\":null,\"no-interaction\":false,\"env\":null}} {\"correlation_id\":\"825ef2d7-b5f8-45cd-b19d-20a179b06934\",\"trace_id\":\"5825a6c8-14c9-4bec-b688-d4895cfc41cc\"}\n[2026-05-07 12:55:05] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"c0dc8e25-7a51-4023-be61-d0abd6d72e37\",\"trace_id\":\"16b8fa3e-92b1-465e-82d4-642a2d14c7c5\"}\n[2026-05-07 12:55:05] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"c0dc8e25-7a51-4023-be61-d0abd6d72e37\",\"trace_id\":\"16b8fa3e-92b1-465e-82d4-642a2d14c7c5\"}\n[2026-05-07 12:55:05] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"c0dc8e25-7a51-4023-be61-d0abd6d72e37\",\"trace_id\":\"16b8fa3e-92b1-465e-82d4-642a2d14c7c5\"}\n[2026-05-07 12:55:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"1c65fdd1-1f79-435d-b469-add46ddafd63\",\"trace_id\":\"62f2a3bb-3be7-4c76-a9dd-222bfb895fab\"}\n[2026-05-07 12:55:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"1c65fdd1-1f79-435d-b469-add46ddafd63\",\"trace_id\":\"62f2a3bb-3be7-4c76-a9dd-222bfb895fab\"}\n[2026-05-07 12:55:11] local.NOTICE: Monitoring start {\"correlation_id\":\"f115f9bc-bb59-4fc9-8c9f-8b69baba1a55\",\"trace_id\":\"e75cb5c6-6dd8-4000-8d26-4418020c7cfe\"}\n[2026-05-07 12:55:11] local.NOTICE: Monitoring end {\"correlation_id\":\"f115f9bc-bb59-4fc9-8c9f-8b69baba1a55\",\"trace_id\":\"e75cb5c6-6dd8-4000-8d26-4418020c7cfe\"}\n[2026-05-07 12:55:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"dba5c474-4d40-44da-baf2-f8b30db9a2f5\",\"trace_id\":\"adb45622-1fb0-457c-bf20-8dcceab2d62a\"}\n[2026-05-07 12:55:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"dba5c474-4d40-44da-baf2-f8b30db9a2f5\",\"trace_id\":\"adb45622-1fb0-457c-bf20-8dcceab2d62a\"}\n[2026-05-07 12:55:16] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"22c96a8e-4424-4a1f-b349-206276eefe4c\",\"trace_id\":\"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c\"}\n[2026-05-07 12:55:16] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"22c96a8e-4424-4a1f-b349-206276eefe4c\",\"trace_id\":\"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c\"}\n[2026-05-07 12:55:16] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"22c96a8e-4424-4a1f-b349-206276eefe4c\",\"trace_id\":\"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c\"}\n[2026-05-07 12:55:16] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"22c96a8e-4424-4a1f-b349-206276eefe4c\",\"trace_id\":\"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c\"}\n[2026-05-07 12:55:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:purge-stale\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"5f958e8d-1d01-4144-abd6-2513e5524ad3\",\"trace_id\":\"828bc5b7-e2aa-4443-901f-38dd94bb7cc5\"}\n[2026-05-07 12:55:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:purge-stale\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"5f958e8d-1d01-4144-abd6-2513e5524ad3\",\"trace_id\":\"828bc5b7-e2aa-4443-901f-38dd94bb7cc5\"}\n[2026-05-07 12:55:22] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:text-relay:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"6bd1c9cb-cd9a-42a9-87fe-45cb7bac687a\",\"trace_id\":\"0f2f5d66-c4c9-46a5-a31b-6937663ce1ad\"}\n[2026-05-07 12:55:22] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:text-relay:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"6bd1c9cb-cd9a-42a9-87fe-45cb7bac687a\",\"trace_id\":\"0f2f5d66-c4c9-46a5-a31b-6937663ce1ad\"}\n[2026-05-07 12:55:24] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:pre-meeting-notification\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"c5dd8132-d7e1-4caa-84d1-0a50d02df8da\",\"trace_id\":\"bc7341c5-b8e2-48ea-9670-7ec375363180\"}\n[2026-05-07 12:55:24] local.INFO: Running pre-meeting notification command {\"correlation_id\":\"c5dd8132-d7e1-4caa-84d1-0a50d02df8da\",\"trace_id\":\"bc7341c5-b8e2-48ea-9670-7ec375363180\"}\n[2026-05-07 12:55:24] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:pre-meeting-notification\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"c5dd8132-d7e1-4caa-84d1-0a50d02df8da\",\"trace_id\":\"bc7341c5-b8e2-48ea-9670-7ec375363180\"}\n[2026-05-07 12:55:26] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:start\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0\",\"trace_id\":\"efb1619f-4185-4319-9bfb-305cee0b6bfc\"}\n[2026-05-07 12:55:26] local.INFO: Running conference:monitor:start command for activities in (2026-05-07 12:45:00, 2026-05-07 12:50:00] {\"correlation_id\":\"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0\",\"trace_id\":\"efb1619f-4185-4319-9bfb-305cee0b6bfc\"}\n[2026-05-07 12:55:26] local.INFO: [conference:monitor:start] No activities found in (2026-05-07 12:45:00, 2026-05-07 12:50:00] {\"correlation_id\":\"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0\",\"trace_id\":\"efb1619f-4185-4319-9bfb-305cee0b6bfc\"}\n[2026-05-07 12:55:26] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:start\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0\",\"trace_id\":\"efb1619f-4185-4319-9bfb-305cee0b6bfc\"}\n[2026-05-07 12:55:28] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:end\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"3792b31a-080a-4fe4-9823-5602361325ba\",\"trace_id\":\"41a2fde1-48f6-4667-84b7-a2f93e9ad2da\"}\n[2026-05-07 12:55:28] local.INFO: conference:monitor:end:Jiminny\\Console\\Commands\\Activities\\MonitorMeetingEndCommand::logActivitiesEnded {\"from\":\"12:50\",\"to\":\"12:55\"} {\"correlation_id\":\"3792b31a-080a-4fe4-9823-5602361325ba\",\"trace_id\":\"41a2fde1-48f6-4667-84b7-a2f93e9ad2da\"}\n[2026-05-07 12:55:28] local.INFO: conference:monitor:end:Jiminny\\Console\\Commands\\Activities\\MonitorMeetingEndCommand::logActivitiesWithUnfinishedSession {\"from\":\"02:45\",\"to\":\"02:50\"} {\"correlation_id\":\"3792b31a-080a-4fe4-9823-5602361325ba\",\"trace_id\":\"41a2fde1-48f6-4667-84b7-a2f93e9ad2da\"}\n[2026-05-07 12:55:28] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:end\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"3792b31a-080a-4fe4-9823-5602361325ba\",\"trace_id\":\"41a2fde1-48f6-4667-84b7-a2f93e9ad2da\"}\n[2026-05-07 12:55:30] local.NOTICE: Repairing HubSpot tokens start {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:30] local.INFO: Trying to refresh HubSpot token {\"account_id\":59,\"updated_at\":\"2025-10-03 09:32:05\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:30] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:30] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":59,\"provider\":\"hubspot\",\"refreshToken\":\"97b78f6e2cc49965c00c2492b602b02708b1392551e6b3f113fbaa48992af90b\",\"state\":\"full-refresh\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.ERROR: Failed to refresh HubSpot token {\"account_id\":59,\"updated_at\":\"2025-10-03 09:32:05\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.INFO: Trying to refresh HubSpot token {\"account_id\":306,\"updated_at\":\"2023-11-27 09:30:03\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":306,\"provider\":\"hubspot\",\"refreshToken\":\"6fa6aa8cc641d131231acc3470f5c03cb3b07b2e580fb18f8acb3b1dbb72549b\",\"state\":\"full-refresh\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.ERROR: Failed to refresh HubSpot token {\"account_id\":306,\"updated_at\":\"2023-11-27 09:30:03\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.INFO: Trying to refresh HubSpot token {\"account_id\":1372,\"updated_at\":\"2025-10-02 14:47:06\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1372,\"provider\":\"hubspot\",\"refreshToken\":\"9aa73948c761da29dce46c177cf9aee1fde483a44169ca38723f9f0597d7a8c4\",\"state\":\"full-refresh\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:32] local.ERROR: Failed to refresh HubSpot token {\"account_id\":1372,\"updated_at\":\"2025-10-02 14:47:06\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:32] local.NOTICE: Repairing HubSpot tokens end {\"total\":3,\"fixed\":0,\"failed\":3} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:40] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"crm:bullhorn:ping\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"5e676ae4-5d63-49d4-9001-559088adf06b\",\"trace_id\":\"2fcce073-dd68-4c99-b7c4-b9e03c20b8e4\"}\n[2026-05-07 12:55:40] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:pre-meeting-reminder\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"1f830896-8142-41d1-bfc9-4cbb9179ffda\",\"trace_id\":\"e348a096-7f37-4308-a6d8-66131e8be901\"}\n[2026-05-07 12:55:40] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"crm:bullhorn:ping\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"5e676ae4-5d63-49d4-9001-559088adf06b\",\"trace_id\":\"2fcce073-dd68-4c99-b7c4-b9e03c20b8e4\"}\n[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Command] Starting polling service {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Service starting {\"memory_limit\":\"256M\",\"max_execution_time\":\"0\",\"initial_memory_mb\":62.0} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Acquired polling lock {\"expires_at\":\"2026-05-07T12:57:40.609671Z\"} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:40] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:40] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:pre-meeting-reminder\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"1f830896-8142-41d1-bfc9-4cbb9179ffda\",\"trace_id\":\"e348a096-7f37-4308-a6d8-66131e8be901\"}\n[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:45] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:45] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:46] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:51] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:51] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:51] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:06] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:06] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:06] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"2d8b30b4-87aa-480f-9b9e-5a9c709b742a\",\"trace_id\":\"25b7be6c-1faf-430b-a724-a4ff28773a31\"}\n[2026-05-07 12:56:08] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"2d8b30b4-87aa-480f-9b9e-5a9c709b742a\",\"trace_id\":\"25b7be6c-1faf-430b-a724-a4ff28773a31\"}\n[2026-05-07 12:56:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"2d8b30b4-87aa-480f-9b9e-5a9c709b742a\",\"trace_id\":\"25b7be6c-1faf-430b-a724-a4ff28773a31\"}\n[2026-05-07 12:56:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"efd336d7-db4d-459e-b6e7-bf73454e955e\",\"trace_id\":\"0a82c3d5-0417-48c8-b88f-70ec33e2326a\"}\n[2026-05-07 12:56:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"efd336d7-db4d-459e-b6e7-bf73454e955e\",\"trace_id\":\"0a82c3d5-0417-48c8-b88f-70ec33e2326a\"}\n[2026-05-07 12:56:12] local.NOTICE: Monitoring start {\"correlation_id\":\"68481576-8ca6-4ee5-821b-07374702971d\",\"trace_id\":\"c73eac09-5d20-425f-9c22-bd6c65fc60c9\"}\n[2026-05-07 12:56:12] local.NOTICE: Monitoring end {\"correlation_id\":\"68481576-8ca6-4ee5-821b-07374702971d\",\"trace_id\":\"c73eac09-5d20-425f-9c22-bd6c65fc60c9\"}\n[2026-05-07 12:56:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"bd0cdc75-b5c2-4dbb-bc44-e36c96813d24\",\"trace_id\":\"f688cd98-c171-4e30-8c72-afc14f040861\"}\n[2026-05-07 12:56:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"bd0cdc75-b5c2-4dbb-bc44-e36c96813d24\",\"trace_id\":\"f688cd98-c171-4e30-8c72-afc14f040861\"}\n[2026-05-07 12:56:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"f01636a9-4059-4ab0-9ad2-b078d42cedbd\",\"trace_id\":\"fea938d8-aedc-40ec-b8c2-2f487e1ac808\"}\n[2026-05-07 12:56:20] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"f01636a9-4059-4ab0-9ad2-b078d42cedbd\",\"trace_id\":\"fea938d8-aedc-40ec-b8c2-2f487e1ac808\"}\n[2026-05-07 12:56:20] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"f01636a9-4059-4ab0-9ad2-b078d42cedbd\",\"trace_id\":\"fea938d8-aedc-40ec-b8c2-2f487e1ac808\"}\n[2026-05-07 12:56:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"f01636a9-4059-4ab0-9ad2-b078d42cedbd\",\"trace_id\":\"fea938d8-aedc-40ec-b8c2-2f487e1ac808\"}\n[2026-05-07 12:56:23] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"d4558901-264d-4238-8589-62a137bac1fd\",\"trace_id\":\"38e6b5dc-ebd6-46a7-8224-7374d4e58630\"}\n[2026-05-07 12:56:23] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:54:00, 2026-05-07 12:56:00] {\"correlation_id\":\"d4558901-264d-4238-8589-62a137bac1fd\",\"trace_id\":\"38e6b5dc-ebd6-46a7-8224-7374d4e58630\"}\n[2026-05-07 12:56:23] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:54:00, 2026-05-07 12:56:00] {\"correlation_id\":\"d4558901-264d-4238-8589-62a137bac1fd\",\"trace_id\":\"38e6b5dc-ebd6-46a7-8224-7374d4e58630\"}\n[2026-05-07 12:56:23] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"d4558901-264d-4238-8589-62a137bac1fd\",\"trace_id\":\"38e6b5dc-ebd6-46a7-8224-7374d4e58630\"}\n[2026-05-07 12:56:24] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"crm:sync-hubspot-objects\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"7bfaf9be-0ca1-4170-a0c9-83e0ed61881c\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:24] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"crm:sync-hubspot-objects\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"7bfaf9be-0ca1-4170-a0c9-83e0ed61881c\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:26] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:notify-not-logged\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"2541e0fa-1117-4863-9523-d723b5821a24\",\"trace_id\":\"d9600320-5133-4938-bdd1-2256dfdf8db4\"}\n[2026-05-07 12:56:26] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:notify-not-logged\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"2541e0fa-1117-4863-9523-d723b5821a24\",\"trace_id\":\"d9600320-5133-4938-bdd1-2256dfdf8db4\"}\n[2026-05-07 12:56:35] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"e444f776-37db-4c6d-b30e-20b01a089de7\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:36] local.INFO: [EmailSchedule] STARTING Inbox Sync {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"e444f776-37db-4c6d-b30e-20b01a089de7\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:36] local.INFO: [EmailSchedule] FINISHED Inbox Sync {\"host\":\"docker_lamp_1\",\"events\":2} {\"correlation_id\":\"e444f776-37db-4c6d-b30e-20b01a089de7\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:36] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"e444f776-37db-4c6d-b30e-20b01a089de7\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:36] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:36] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:36] local.INFO: [HubSpot Journal Auth] Requesting new client credentials token {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:37] local.INFO: [HubSpot Journal Auth] Successfully obtained new access token {\"expires_in\":1800,\"cached_for\":1500} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:37] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:37] local.WARNING: [HubSpot Journal Polling] Maximum empty results reached, stopping {\"empty_results\":5,\"max_empty_results\":5} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:37] local.WARNING: [HubSpot Journal Polling] Maximum empty results reached, stopping {\"empty_results\":5,\"max_empty_results\":5} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:37] local.INFO: [HubSpot Journal Polling] Service ending {\"runtime_seconds\":57,\"total_cycles\":5,\"files_downloaded\":0,\"empty_files\":0,\"other_portal_skipped\":0,\"total_events\":0,\"events_per_file\":0,\"avg_api_ms\":238.3,\"avg_download_ms\":0.0,\"avg_transform_ms\":0.0,\"avg_process_ms\":0.0,\"peak_memory_mb\":99.73} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:37] local.INFO: [HubSpot Journal Polling] Released polling lock {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:50] local.INFO: [Commands/AsyncUpdateEsEntities] Starting ES update worker {\"pid\":37119,\"workerId\":\"\",\"target\":\"activities\"} {\"correlation_id\":\"902cef33-4733-4b2a-9693-affb8645cecc\",\"trace_id\":\"4ffe2bb8-67c6-422a-a846-319973cc0259\"}\n[2026-05-07 12:56:50] local.INFO: [SyncHubspotObjects] Starting sync {\"team\":\"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4\",\"usage\":23195976,\"real_usage\":65011712,\"pid\":37113} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:50] local.INFO: [Sync Mailbox] Sync start {\"inbox_id\":59} {\"correlation_id\":\"20256b2c-2b69-48f6-bdd3-61d047eb0b0d\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:50] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:50] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:50] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:50] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1499,\"provider\":\"hubspot\",\"refreshToken\":\"96f94c623a404e02ebdbf07f1b75707bb6cdbf848cbf45d418baf608c41a8d86\",\"state\":\"connected\"} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:50] local.INFO: [Inbox service] Skipping METADATA SYNC for inbox 59 due to unauthorized access to the mailbox {\"correlation_id\":\"20256b2c-2b69-48f6-bdd3-61d047eb0b0d\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:50] local.INFO: [Sync Mailbox] Sync complete {\"inbox_id\":59} {\"correlation_id\":\"20256b2c-2b69-48f6-bdd3-61d047eb0b0d\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:50] local.INFO: [Sync Mailbox] Sync start {\"inbox_id\":212} {\"correlation_id\":\"b6c31853-3729-4780-a52b-ebcce17d41b9\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:50] local.INFO: [Inbox service] Skipping METADATA SYNC for inbox 212 due to unauthorized access to the mailbox {\"correlation_id\":\"b6c31853-3729-4780-a52b-ebcce17d41b9\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:50] local.INFO: [Sync Mailbox] Sync complete {\"inbox_id\":212} {\"correlation_id\":\"b6c31853-3729-4780-a52b-ebcce17d41b9\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:51] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:51] local.INFO: [SocialAccountObserver] Access token was modified, encrypting {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:51] local.INFO: [SocialAccountService] Token refreshed {\"socialAccountId\":1499,\"provider\":\"hubspot\",\"state\":\"connected\"} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:51] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":148,\"team_id\":2} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:51] local.INFO: [HubSpot] Syncing opportunities using strategy: lastModified {\"team\":2} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/deals/search\",\"total_requests\":0,\"total_records_fetched\":0,\"total_elapsed_seconds\":0.3,\"average_seconds_per_request\":0} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.INFO: [SyncHubspotObjects] Sync finished {\"team\":\"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4\",\"provider\":\"hubspot\",\"status\":\"completed\",\"duration_ms\":1854.64,\"usage\":24199288,\"real_usage\":65011712,\"pid\":37113} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.ERROR: Jiminny\\Services\\Crm\\Hubspot\\Pagination\\HubspotPaginationService::getPaginatedDataGenerator(): Return value must be of type Generator, none returned {\"exception\":\"[object] (TypeError(code: 0): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService::getPaginatedDataGenerator(): Return value must be of type Generator, none returned at /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php:82)\n[stacktrace]\n#0 /home/jiminny/app/Services/Crm/Hubspot/Client.php(194): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->getPaginatedDataGenerator(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), Array, 'deals', 0, 0, NULL)\n#1 /home/jiminny/app/Services/Crm/Hubspot/OpportunitySyncStrategy/HubspotSyncStrategyBase.php(55): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client->getPaginatedDataGenerator(Array, 'deals', 0, 0, NULL)\n#2 /home/jiminny/app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php(73): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\OpportunitySyncStrategy\\\\HubspotSyncStrategyBase->fetchOpportunities(Array, 0, NULL)\n#3 /home/jiminny/app/Jobs/Crm/SyncHubspotObjects.php(118): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service->syncOpportunities(Array)\n#4 /home/jiminny/app/Jobs/Crm/SyncHubspotObjects.php(86): Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects->syncHubspotCrmObjects(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service), Object(Illuminate\\\\Support\\\\Carbon))\n#5 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects->handle(Object(Jiminny\\\\Services\\\\ResolveTeamCrmConnection), Object(Illuminate\\\\Log\\\\LogManager), Object(Jiminny\\\\Repositories\\\\TeamRepository))\n#6 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#7 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#8 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#9 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#10 /home/jiminny/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(129): Illuminate\\\\Container\\\\Container->call(Array)\n#11 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\\\Bus\\\\Dispatcher->Illuminate\\\\Bus\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#12 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\\\\Pipeline\\\\Pipeline->Illuminate\\\\Pipeline\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#13 /home/jiminny/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(133): Illuminate\\\\Pipeline\\\\Pipeline->then(Object(Closure))\n#14 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(136): Illuminate\\\\Bus\\\\Dispatcher->dispatchNow(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects), false)\n#15 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\\\Queue\\\\CallQueuedHandler->Illuminate\\\\Queue\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#16 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\\\\Pipeline\\\\Pipeline->Illuminate\\\\Pipeline\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#17 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(129): Illuminate\\\\Pipeline\\\\Pipeline->then(Object(Closure))\n#18 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(70): Illuminate\\\\Queue\\\\CallQueuedHandler->dispatchThroughMiddleware(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#19 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Jobs/Job.php(102): Illuminate\\\\Queue\\\\CallQueuedHandler->call(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Array)\n#20 /home/jiminny/app/Queue/Worker/Worker.php(71): Illuminate\\\\Queue\\\\Jobs\\\\Job->fire()\n#21 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(435): Jiminny\\\\Queue\\\\Worker\\\\Worker->process('redis', Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#22 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(201): Illuminate\\\\Queue\\\\Worker->runJob(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), 'redis', Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#23 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(148): Illuminate\\\\Queue\\\\Worker->daemon('redis', 'crm-sync,crm-up...', Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#24 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(131): Illuminate\\\\Queue\\\\Console\\\\WorkCommand->runWorker('redis', 'crm-sync,crm-up...')\n#25 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Illuminate\\\\Queue\\\\Console\\\\WorkCommand->handle()\n#26 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#27 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#28 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#29 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#30 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(211): Illuminate\\\\Container\\\\Container->call(Array)\n#31 /home/jiminny/vendor/symfony/console/Command/Command.php(341): Illuminate\\\\Console\\\\Command->execute(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#32 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(180): Symfony\\\\Component\\\\Console\\\\Command\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#33 /home/jiminny/vendor/symfony/console/Application.php(1117): Illuminate\\\\Console\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#34 /home/jiminny/vendor/symfony/console/Application.php(356): Symfony\\\\Component\\\\Console\\\\Application->doRunCommand(Object(Illuminate\\\\Queue\\\\Console\\\\WorkCommand), Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#35 /home/jiminny/vendor/symfony/console/Application.php(195): Symfony\\\\Component\\\\Console\\\\Application->doRun(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#36 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(198): Symfony\\\\Component\\\\Console\\\\Application->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#37 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1235): Illuminate\\\\Foundation\\\\Console\\\\Kernel->handle(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#38 /home/jiminny/artisan(13): Illuminate\\\\Foundation\\\\Application->handleCommand(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput))\n#39 {main}\n\"} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.INFO: [SyncHubspotObjects] Starting sync {\"team\":\"b2d49a54-b645-4637-a7ae-a86cfce6e8e4\",\"usage\":25235152,\"real_usage\":65011712,\"pid\":37113} {\"correlation_id\":\"0d3cf2b0-a245-4a83-9bd5-1c5788b85738\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.WARNING: [HubSpot] Account not connected for user {\"userId\":\"2ac0447f-3c8c-4ce0-baeb-b63ddb76fa9b\",\"account\":null} {\"correlation_id\":\"0d3cf2b0-a245-4a83-9bd5-1c5788b85738\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {\"crm_provider\":\"hubspot\",\"crm_owner\":130,\"team_id\":42} {\"correlation_id\":\"0d3cf2b0-a245-4a83-9bd5-1c5788b85738\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":42} {\"correlation_id\":\"0d3cf2b0-a245-4a83-9bd5-1c5788b85738\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":42} {\"correlation_id\":\"0d3cf2b0-a245-4a83-9bd5-1c5788b85738\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.INFO: [SyncHubspotObjects] Sync finished {\"team\":\"b2d49a54-b645-4637-a7ae-a86cfce6e8e4\",\"provider\":\"hubspot\",\"status\":\"disconnected\",\"duration_ms\":70.53,\"usage\":25225384,\"real_usage\":65011712,\"pid\":37113,\"reason\":\"Social account for HubSpot cannot be found. Please login to Jiminny to connect.\"} {\"correlation_id\":\"0d3cf2b0-a245-4a83-9bd5-1c5788b85738\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Starting sync {\"team\":\"b2b115eb-93ce-4d1b-929c-173757df8fba\",\"usage\":25263936,\"real_usage\":65011712,\"pid\":37113} {\"correlation_id\":\"1e46be79-1db4-4829-b19c-1548141a94e0\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.WARNING: [HubSpot] Account not connected for user {\"userId\":\"33e34a7a-1c02-4f04-87ac-22c3a385e6e3\",\"account\":{\"Jiminny\\\\Models\\\\SocialAccount\":{\"id\":306,\"sociable_id\":109,\"provider_user_id\":\"11348452\",\"expires\":1701077403,\"refresh_token_expires\":null,\"provider\":\"hubspot\",\"state\":\"full-refresh\",\"auth_scope\":null,\"retry_after\":null,\"created_at\":\"2020-09-01 16:59:04\",\"updated_at\":\"2023-11-27 09:30:03\"}}} {\"correlation_id\":\"1e46be79-1db4-4829-b19c-1548141a94e0\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {\"crm_provider\":\"hubspot\",\"crm_owner\":109,\"team_id\":29} {\"correlation_id\":\"1e46be79-1db4-4829-b19c-1548141a94e0\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":29} {\"correlation_id\":\"1e46be79-1db4-4829-b19c-1548141a94e0\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":29} {\"correlation_id\":\"1e46be79-1db4-4829-b19c-1548141a94e0\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Sync finished {\"team\":\"b2b115eb-93ce-4d1b-929c-173757df8fba\",\"provider\":\"hubspot\",\"status\":\"disconnected\",\"duration_ms\":47.7,\"usage\":25451952,\"real_usage\":65011712,\"pid\":37113,\"reason\":\"Your HubSpot account has become disconnected. Please login to Jiminny to reconnect.\"} {\"correlation_id\":\"1e46be79-1db4-4829-b19c-1548141a94e0\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Starting sync {\"team\":\"c6b9d6b0-b48d-4832-a68c-a57d60651888\",\"usage\":25490320,\"real_usage\":65011712,\"pid\":37113} {\"correlation_id\":\"0da4e096-9534-4a72-bc1f-8e61561d8e37\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.WARNING: [HubSpot] Account not connected for user {\"userId\":\"71e3aac5-fb66-47c5-a236-2d051ae3e319\",\"account\":null} {\"correlation_id\":\"0da4e096-9534-4a72-bc1f-8e61561d8e37\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {\"crm_provider\":\"hubspot\",\"crm_owner\":256,\"team_id\":49} {\"correlation_id\":\"0da4e096-9534-4a72-bc1f-8e61561d8e37\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":49} {\"correlation_id\":\"0da4e096-9534-4a72-bc1f-8e61561d8e37\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":49} {\"correlation_id\":\"0da4e096-9534-4a72-bc1f-8e61561d8e37\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Sync finished {\"team\":\"c6b9d6b0-b48d-4832-a68c-a57d60651888\",\"provider\":\"hubspot\",\"status\":\"disconnected\",\"duration_ms\":44.12,\"usage\":25547952,\"real_usage\":65011712,\"pid\":37113,\"reason\":\"Social account for HubSpot cannot be found. Please login to Jiminny to connect.\"} {\"correlation_id\":\"0da4e096-9534-4a72-bc1f-8e61561d8e37\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Starting sync {\"team\":\"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4\",\"usage\":25587032,\"real_usage\":65011712,\"pid\":37113} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":148,\"team_id\":2} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [HubSpot] Syncing opportunities using strategy: lastModified {\"team\":2} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/deals/search\",\"total_requests\":0,\"total_records_fetched\":0,\"total_elapsed_seconds\":0.28,\"average_seconds_per_request\":0} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Sync finished {\"team\":\"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4\",\"provider\":\"hubspot\",\"status\":\"completed\",\"duration_ms\":412.19,\"usage\":25739960,\"real_usage\":65011712,\"pid\":37113} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.ERROR: Jiminny\\Services\\Crm\\Hubspot\\Pagination\\HubspotPaginationService::getPaginatedDataGenerator(): Return value must be of type Generator, none returned {\"exception\":\"[object] (TypeError(code: 0): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService::getPaginatedDataGenerator(): Return value must be of type Generator, none returned at /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php:82)\n[stacktrace]\n#0 /home/jiminny/app/Services/Crm/Hubspot/Client.php(194): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->getPaginatedDataGenerator(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), Array, 'deals', 0, 0, NULL)\n#1 /home/jiminny/app/Services/Crm/Hubspot/OpportunitySyncStrategy/HubspotSyncStrategyBase.php(55): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client->getPaginatedDataGenerator(Array, 'deals', 0, 0, NULL)\n#2 /home/jiminny/app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php(73): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\OpportunitySyncStrategy\\\\HubspotSyncStrategyBase->fetchOpportunities(Array, 0, NULL)\n#3 /home/jiminny/app/Jobs/Crm/SyncHubspotObjects.php(118): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service->syncOpportunities(Array)\n#4 /home/jiminny/app/Jobs/Crm/SyncHubspotObjects.php(86): Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects->syncHubspotCrmObjects(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service), Object(Illuminate\\\\Support\\\\Carbon))\n#5 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects->handle(Object(Jiminny\\\\Services\\\\ResolveTeamCrmConnection), Object(Illuminate\\\\Log\\\\LogManager), Object(Jiminny\\\\Repositories\\\\TeamRepository))\n#6 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#7 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#8 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#9 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#10 /home/jiminny/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(129): Illuminate\\\\Container\\\\Container->call(Array)\n#11 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\\\Bus\\\\Dispatcher->Illuminate\\\\Bus\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#12 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\\\\Pipeline\\\\Pipeline->Illuminate\\\\Pipeline\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#13 /home/jiminny/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(133): Illuminate\\\\Pipeline\\\\Pipeline->then(Object(Closure))\n#14 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(136): Illuminate\\\\Bus\\\\Dispatcher->dispatchNow(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects), false)\n#15 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\\\Queue\\\\CallQueuedHandler->Illuminate\\\\Queue\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#16 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\\\\Pipeline\\\\Pipeline->Illuminate\\\\Pipeline\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#17 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(129): Illuminate\\\\Pipeline\\\\Pipeline->then(Object(Closure))\n#18 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(70): Illuminate\\\\Queue\\\\CallQueuedHandler->dispatchThroughMiddleware(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#19 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Jobs/Job.php(102): Illuminate\\\\Queue\\\\CallQueuedHandler->call(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Array)\n#20 /home/jiminny/app/Queue/Worker/Worker.php(71): Illuminate\\\\Queue\\\\Jobs\\\\Job->fire()\n#21 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(435): Jiminny\\\\Queue\\\\Worker\\\\Worker->process('redis', Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#22 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(201): Illuminate\\\\Queue\\\\Worker->runJob(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), 'redis', Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#23 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(148): Illuminate\\\\Queue\\\\Worker->daemon('redis', 'crm-sync,crm-up...', Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#24 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(131): Illuminate\\\\Queue\\\\Console\\\\WorkCommand->runWorker('redis', 'crm-sync,crm-up...')\n#25 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Illuminate\\\\Queue\\\\Console\\\\WorkCommand->handle()\n#26 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#27 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#28 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#29 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#30 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(211): Illuminate\\\\Container\\\\Container->call(Array)\n#31 /home/jiminny/vendor/symfony/console/Command/Command.php(341): Illuminate\\\\Console\\\\Command->execute(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#32 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(180): Symfony\\\\Component\\\\Console\\\\Command\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#33 /home/jiminny/vendor/symfony/console/Application.php(1117): Illuminate\\\\Console\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#34 /home/jiminny/vendor/symfony/console/Application.php(356): Symfony\\\\Component\\\\Console\\\\Application->doRunCommand(Object(Illuminate\\\\Queue\\\\Console\\\\WorkCommand), Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#35 /home/jiminny/vendor/symfony/console/Application.php(195): Symfony\\\\Component\\\\Console\\\\Application->doRun(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#36 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(198): Symfony\\\\Component\\\\Console\\\\Application->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#37 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1235): Illuminate\\\\Foundation\\\\Console\\\\Kernel->handle(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#38 /home/jiminny/artisan(13): Illuminate\\\\Foundation\\\\Application->handleCommand(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput))\n#39 {main}\n\"} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Starting sync {\"team\":\"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4\",\"usage\":25172624,\"real_usage\":65011712,\"pid\":37113} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":148,\"team_id\":2} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [HubSpot] Syncing opportunities using strategy: lastModified {\"team\":2} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/deals/search\",\"total_requests\":0,\"total_records_fetched\":0,\"total_elapsed_seconds\":0.23,\"average_seconds_per_request\":0} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Sync finished {\"team\":\"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4\",\"provider\":\"hubspot\",\"status\":\"completed\",\"duration_ms\":291.83,\"usage\":25225088,\"real_usage\":65011712,\"pid\":37113} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:54] local.ERROR: Jiminny\\Services\\Crm\\Hubspot\\Pagination\\HubspotPaginationService::getPaginatedDataGenerator(): Return value must be of type Generator, none returned {\"exception\":\"[object] (TypeError(code: 0): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService::getPaginatedDataGenerator(): Return value must be of type Generator, none returned at /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php:82)\n[stacktrace]\n#0 /home/jiminny/app/Services/Crm/Hubspot/Client.php(194): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->getPaginatedDataGenerator(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), Array, 'deals', 0, 0, NULL)\n#1 /home/jiminny/app/Services/Crm/Hubspot/OpportunitySyncStrategy/HubspotSyncStrategyBase.php(55): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client->getPaginatedDataGenerator(Array, 'deals', 0, 0, NULL)\n#2 /home/jiminny/app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php(73): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\OpportunitySyncStrategy\\\\HubspotSyncStrategyBase->fetchOpportunities(Array, 0, NULL)\n#3 /home/jiminny/app/Jobs/Crm/SyncHubspotObjects.php(118): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service->syncOpportunities(Array)\n#4 /home/jiminny/app/Jobs/Crm/SyncHubspotObjects.php(86): Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects->syncHubspotCrmObjects(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service), Object(Illuminate\\\\Support\\\\Carbon))\n#5 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects->handle(Object(Jiminny\\\\Services\\\\ResolveTeamCrmConnection), Object(Illuminate\\\\Log\\\\LogManager), Object(Jiminny\\\\Repositories\\\\TeamRepository))\n#6 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#7 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#8 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#9 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#10 /home/jiminny/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(129): Illuminate\\\\Container\\\\Container->call(Array)\n#11 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\\\Bus\\\\Dispatcher->Illuminate\\\\Bus\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#12 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\\\\Pipeline\\\\Pipeline->Illuminate\\\\Pipeline\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#13 /home/jiminny/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(133): Illuminate\\\\Pipeline\\\\Pipeline->then(Object(Closure))\n#14 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(136): Illuminate\\\\Bus\\\\Dispatcher->dispatchNow(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects), false)\n#15 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\\\Queue\\\\CallQueuedHandler->Illuminate\\\\Queue\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#16 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\\\\Pipeline\\\\Pipeline->Illuminate\\\\Pipeline\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#17 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(129): Illuminate\\\\Pipeline\\\\Pipeline->then(Object(Closure))\n#18 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(70): Illuminate\\\\Queue\\\\CallQueuedHandler->dispatchThroughMiddleware(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#19 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Jobs/Job.php(102): Illuminate\\\\Queue\\\\CallQueuedHandler->call(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Array)\n#20 /home/jiminny/app/Queue/Worker/Worker.php(71): Illuminate\\\\Queue\\\\Jobs\\\\Job->fire()\n#21 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(435): Jiminny\\\\Queue\\\\Worker\\\\Worker->process('redis', Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#22 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(201): Illuminate\\\\Queue\\\\Worker->runJob(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), 'redis', Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#23 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(148): Illuminate\\\\Queue\\\\Worker->daemon('redis', 'crm-sync,crm-up...', Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#24 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(131): Illuminate\\\\Queue\\\\Console\\\\WorkCommand->runWorker('redis', 'crm-sync,crm-up...')\n#25 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Illuminate\\\\Queue\\\\Console\\\\WorkCommand->handle()\n#26 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#27 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#28 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#29 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#30 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(211): Illuminate\\\\Container\\\\Container->call(Array)\n#31 /home/jiminny/vendor/symfony/console/Command/Command.php(341): Illuminate\\\\Console\\\\Command->execute(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#32 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(180): Symfony\\\\Component\\\\Console\\\\Command\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#33 /home/jiminny/vendor/symfony/console/Application.php(1117): Illuminate\\\\Console\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#34 /home/jiminny/vendor/symfony/console/Application.php(356): Symfony\\\\Component\\\\Console\\\\Application->doRunCommand(Object(Illuminate\\\\Queue\\\\Console\\\\WorkCommand), Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#35 /home/jiminny/vendor/symfony/console/Application.php(195): Symfony\\\\Component\\\\Console\\\\Application->doRun(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#36 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(198): Symfony\\\\Component\\\\Console\\\\Application->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#37 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1235): Illuminate\\\\Foundation\\\\Console\\\\Kernel->handle(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#38 /home/jiminny/artisan(13): Illuminate\\\\Foundation\\\\Application->handleCommand(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput))\n#39 {main}\n\"} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:57:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"854299be-d77a-48bc-870c-b78333916d69\",\"trace_id\":\"89c1eb6c-bc78-419c-9304-b770093d5692\"}\n[2026-05-07 12:57:06] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"854299be-d77a-48bc-870c-b78333916d69\",\"trace_id\":\"89c1eb6c-bc78-419c-9304-b770093d5692\"}\n[2026-05-07 12:57:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"854299be-d77a-48bc-870c-b78333916d69\",\"trace_id\":\"89c1eb6c-bc78-419c-9304-b770093d5692\"}\n[2026-05-07 12:57:16] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"c4e512a3-a227-4569-bcd2-3258a9142d46\",\"trace_id\":\"016bf668-6712-4c0f-8c8c-c2e411a37889\"}\n[2026-05-07 12:57:16] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"c4e512a3-a227-4569-bcd2-3258a9142d46\",\"trace_id\":\"016bf668-6712-4c0f-8c8c-c2e411a37889\"}\n[2026-05-07 12:57:19] local.NOTICE: Monitoring start {\"correlation_id\":\"4c2d4775-716d-4ca6-b94d-cb17dace29a7\",\"trace_id\":\"e969e10d-e5f0-44c6-9767-97a70e05cfe5\"}\n[2026-05-07 12:57:19] local.NOTICE: Monitoring end {\"correlation_id\":\"4c2d4775-716d-4ca6-b94d-cb17dace29a7\",\"trace_id\":\"e969e10d-e5f0-44c6-9767-97a70e05cfe5\"}\n[2026-05-07 12:57:22] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"d03e9546-bfd0-44c6-84ee-299b1e6c14a2\",\"trace_id\":\"acbab6e5-17fc-4b11-907d-ff87322285d7\"}\n[2026-05-07 12:57:22] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"d03e9546-bfd0-44c6-84ee-299b1e6c14a2\",\"trace_id\":\"acbab6e5-17fc-4b11-907d-ff87322285d7\"}\n[2026-05-07 12:57:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"a2c0095a-18b2-427e-825b-c68c9dbf63a1\",\"trace_id\":\"9b170d6a-ed10-4a41-af79-684c99021967\"}\n[2026-05-07 12:57:25] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"a2c0095a-18b2-427e-825b-c68c9dbf63a1\",\"trace_id\":\"9b170d6a-ed10-4a41-af79-684c99021967\"}\n[2026-05-07 12:57:25] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"a2c0095a-18b2-427e-825b-c68c9dbf63a1\",\"trace_id\":\"9b170d6a-ed10-4a41-af79-684c99021967\"}\n[2026-05-07 12:57:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"a2c0095a-18b2-427e-825b-c68c9dbf63a1\",\"trace_id\":\"9b170d6a-ed10-4a41-af79-684c99021967\"}\n[2026-05-07 12:57:27] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:create\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"c4e70056-ceab-4c44-874a-8042963ce3ea\",\"trace_id\":\"011a70aa-ebb2-4ca8-aef6-4b4cca233da7\"}\n[2026-05-07 12:57:27] local.INFO: [EmailSchedule] STARTING batch create {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"c4e70056-ceab-4c44-874a-8042963ce3ea\",\"trace_id\":\"011a70aa-ebb2-4ca8-aef6-4b4cca233da7\"}\n[2026-05-07 12:57:27] local.INFO: [EmailSchedule] FINISHED batch create {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"c4e70056-ceab-4c44-874a-8042963ce3ea\",\"trace_id\":\"011a70aa-ebb2-4ca8-aef6-4b4cca233da7\"}\n[2026-05-07 12:57:27] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:create\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"c4e70056-ceab-4c44-874a-8042963ce3ea\",\"trace_id\":\"011a70aa-ebb2-4ca8-aef6-4b4cca233da7\"}\n[2026-05-07 12:57:28] local.INFO: [Jiminny\\Jobs\\Mailbox\\CreateBatches] processed 2 inboxes and created 0 batches {\"userId\":null,\"batchSize\":30,\"maxBatches\":1000} {\"correlation_id\":\"c296bf83-9f7c-4228-b6f5-99db6040fa01\",\"trace_id\":\"011a70aa-ebb2-4ca8-aef6-4b4cca233da7\"}\n[2026-05-07 12:58:06] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"a9e2de8b-b538-437e-bbe7-82636da81995\",\"trace_id\":\"e517ae80-e149-490c-b719-309e898b3c93\"}\n[2026-05-07 12:58:06] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"a9e2de8b-b538-437e-bbe7-82636da81995\",\"trace_id\":\"e517ae80-e149-490c-b719-309e898b3c93\"}\n[2026-05-07 12:58:06] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"a9e2de8b-b538-437e-bbe7-82636da81995\",\"trace_id\":\"e517ae80-e149-490c-b719-309e898b3c93\"}\n[2026-05-07 12:58:06] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":148,\"team_id\":2} {\"correlation_id\":\"a9e2de8b-b538-437e-bbe7-82636da81995\",\"trace_id\":\"e517ae80-e149-490c-b719-309e898b3c93\"}\n[2026-05-07 12:58:06] local.ERROR: Client error: `POST https://api.hubapi.com/crm/v3/objects/contact/search` resulted in a `429 Too Many Requests` response:\n{\"status\":\"error\",\"message\":\"You have reached your secondly limit.\",\"errorType\":\"RATE_LIMIT\",\"correlationId\":\"019e0284-5 (truncated...)\n {\"exception\":\"[object] (SevenShores\\\\Hubspot\\\\Exceptions\\\\BadRequest(code: 429): Client error: `POST https://api.hubapi.com/crm/v3/objects/contact/search` resulted in a `429 Too Many Requests` response:\n{\\\"status\\\":\\\"error\\\",\\\"message\\\":\\\"You have reached your secondly limit.\\\",\\\"errorType\\\":\\\"RATE_LIMIT\\\",\\\"correlationId\\\":\\\"019e0284-5 (truncated...)\n at /home/jiminny/vendor/hubspot/hubspot-php/src/Exceptions/HubspotException.php:24)\n[stacktrace]\n#0 /home/jiminny/vendor/hubspot/hubspot-php/src/Http/Client.php(125): SevenShores\\\\Hubspot\\\\Exceptions\\\\HubspotException::create(Object(GuzzleHttp\\\\Exception\\\\ClientException))\n#1 /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php(163): SevenShores\\\\Hubspot\\\\Http\\\\Client->request('POST', 'https://api.hub...', Array)\n#2 /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php(51): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->executeSearchRequest(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), 'https://api.hub...', Array, Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\PaginationState))\n#3 /home/jiminny/app/Services/Crm/Hubspot/Client.php(194): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->getPaginatedDataGenerator(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), Array, 'contact', 0, 0, NULL)\n#4 /home/jiminny/app/Services/Crm/Hubspot/Client.php(175): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client->getPaginatedDataGenerator(Array, 'contact', 0, 0, NULL)\n#5 /home/jiminny/app/Services/Crm/Hubspot/Service.php(1203): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client->getPaginatedData(Array, 'contact')\n#6 /home/jiminny/app/Console/Commands/JiminnyDebugCommand.php(353): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service->matchByName('Robot')\n#7 /home/jiminny/app/Console/Commands/JiminnyDebugCommand.php(44): Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand->rateLimit()\n#8 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand->handle(Object(Jiminny\\\\Jobs\\\\JobDispatcher), Object(Jiminny\\\\Services\\\\Kiosk\\\\AutomatedReports\\\\AutomatedReportsService), Object(Jiminny\\\\Repositories\\\\AutomatedReportsRepository), Object(Jiminny\\\\Services\\\\UserPilot\\\\UserPilotClient))\n#9 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#10 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#11 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#12 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#13 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(211): Illuminate\\\\Container\\\\Container->call(Array)\n#14 /home/jiminny/vendor/symfony/console/Command/Command.php(341): Illuminate\\\\Console\\\\Command->execute(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#15 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(180): Symfony\\\\Component\\\\Console\\\\Command\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#16 /home/jiminny/vendor/symfony/console/Application.php(1117): Illuminate\\\\Console\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#17 /home/jiminny/vendor/symfony/console/Application.php(356): Symfony\\\\Component\\\\Console\\\\Application->doRunCommand(Object(Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand), Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#18 /home/jiminny/vendor/symfony/console/Application.php(195): Symfony\\\\Component\\\\Console\\\\Application->doRun(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#19 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(198): Symfony\\\\Component\\\\Console\\\\Application->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#20 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1235): Illuminate\\\\Foundation\\\\Console\\\\Kernel->handle(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#21 /home/jiminny/artisan(13): Illuminate\\\\Foundation\\\\Application->handleCommand(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput))\n#22 {main}\n\n[previous exception] [object] (GuzzleHttp\\\\Exception\\\\ClientException(code: 429): Client error: `POST https://api.hubapi.com/crm/v3/objects/contact/search` resulted in a `429 Too Many Requests` response:\n{\\\"status\\\":\\\"error\\\",\\\"message\\\":\\\"You have reached your secondly limit.\\\",\\\"errorType\\\":\\\"RATE_LIMIT\\\",\\\"correlationId\\\":\\\"019e0284-5 (truncated...)\n at /home/jiminny/vendor/guzzlehttp/guzzle/src/Exception/RequestException.php:111)\n[stacktrace]\n#0 /home/jiminny/vendor/guzzlehttp/guzzle/src/Middleware.php(72): GuzzleHttp\\\\Exception\\\\RequestException::create(Object(GuzzleHttp\\\\Psr7\\\\Request), Object(GuzzleHttp\\\\Psr7\\\\Response), NULL, Array, NULL)\n#1 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(209): GuzzleHttp\\\\Middleware::GuzzleHttp\\\\{closure}(Object(GuzzleHttp\\\\Psr7\\\\Response))\n#2 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(158): GuzzleHttp\\\\Promise\\\\Promise::callHandler(1, Object(GuzzleHttp\\\\Psr7\\\\Response), NULL)\n#3 /home/jiminny/vendor/guzzlehttp/promises/src/TaskQueue.php(52): GuzzleHttp\\\\Promise\\\\Promise::GuzzleHttp\\\\Promise\\\\{closure}()\n#4 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(251): GuzzleHttp\\\\Promise\\\\TaskQueue->run(true)\n#5 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(227): GuzzleHttp\\\\Promise\\\\Promise->invokeWaitFn()\n#6 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(272): GuzzleHttp\\\\Promise\\\\Promise->waitIfPending()\n#7 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(229): GuzzleHttp\\\\Promise\\\\Promise->invokeWaitList()\n#8 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(69): GuzzleHttp\\\\Promise\\\\Promise->waitIfPending()\n#9 /home/jiminny/vendor/guzzlehttp/guzzle/src/Client.php(189): GuzzleHttp\\\\Promise\\\\Promise->wait()\n#10 /home/jiminny/vendor/hubspot/hubspot-php/src/Http/Client.php(113): GuzzleHttp\\\\Client->request('POST', 'https://api.hub...', Array)\n#11 /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php(163): SevenShores\\\\Hubspot\\\\Http\\\\Client->request('POST', 'https://api.hub...', Array)\n#12 /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php(51): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->executeSearchRequest(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), 'https://api.hub...', Array, Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\PaginationState))\n#13 /home/jiminny/app/Services/Crm/Hubspot/Client.php(194): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->getPaginatedDataGenerator(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), Array, 'contact', 0, 0, NULL)\n#14 /home/jiminny/app/Services/Crm/Hubspot/Client.php(175): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client->getPaginatedDataGenerator(Array, 'contact', 0, 0, NULL)\n#15 /home/jiminny/app/Services/Crm/Hubspot/Service.php(1203): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client->getPaginatedData(Array, 'contact')\n#16 /home/jiminny/app/Console/Commands/JiminnyDebugCommand.php(353): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service->matchByName('Robot')\n#17 /home/jiminny/app/Console/Commands/JiminnyDebugCommand.php(44): Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand->rateLimit()\n#18 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand->handle(Object(Jiminny\\\\Jobs\\\\JobDispatcher), Object(Jiminny\\\\Services\\\\Kiosk\\\\AutomatedReports\\\\AutomatedReportsService), Object(Jiminny\\\\Repositories\\\\AutomatedReportsRepository), Object(Jiminny\\\\Services\\\\UserPilot\\\\UserPilotClient))\n#19 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#20 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#21 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#22 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#23 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(211): Illuminate\\\\Container\\\\Container->call(Array)\n#24 /home/jiminny/vendor/symfony/console/Command/Command.php(341): Illuminate\\\\Console\\\\Command->execute(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#25 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(180): Symfony\\\\Component\\\\Console\\\\Command\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#26 /home/jiminny/vendor/symfony/console/Application.php(1117): Illuminate\\\\Console\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#27 /home/jiminny/vendor/symfony/console/Application.php(356): Symfony\\\\Component\\\\Console\\\\Application->doRunCommand(Object(Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand), Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#28 /home/jiminny/vendor/symfony/console/Application.php(195): Symfony\\\\Component\\\\Console\\\\Application->doRun(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#29 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(198): Symfony\\\\Component\\\\Console\\\\Application->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#30 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1235): Illuminate\\\\Foundation\\\\Console\\\\Kernel->handle(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#31 /home/jiminny/artisan(13): Illuminate\\\\Foundation\\\\Application->handleCommand(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput))\n#32 {main}\n\"} {\"correlation_id\":\"a9e2de8b-b538-437e-bbe7-82636da81995\",\"trace_id\":\"e517ae80-e149-490c-b719-309e898b3c93\"}\n[2026-05-07 12:58:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"fb59e309-d2cc-4fe0-9db2-544112c25477\",\"trace_id\":\"28ccdd4f-bf3a-4545-bc8a-d94188f8204f\"}\n[2026-05-07 12:58:10] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"fb59e309-d2cc-4fe0-9db2-544112c25477\",\"trace_id\":\"28ccdd4f-bf3a-4545-bc8a-d94188f8204f\"}\n[2026-05-07 12:58:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"fb59e309-d2cc-4fe0-9db2-544112c25477\",\"trace_id\":\"28ccdd4f-bf3a-4545-bc8a-d94188f8204f\"}\n[2026-05-07 12:58:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"bff14f9f-db1d-4b6c-bd92-ca810b31790a\",\"trace_id\":\"ed08145b-94b8-4585-8e81-0ad478d038dc\"}\n[2026-05-07 12:58:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"bff14f9f-db1d-4b6c-bd92-ca810b31790a\",\"trace_id\":\"ed08145b-94b8-4585-8e81-0ad478d038dc\"}\n[2026-05-07 12:58:16] local.NOTICE: Monitoring start {\"correlation_id\":\"54ed6493-c74e-4491-b2ff-9404528f1525\",\"trace_id\":\"9a1f78c0-6e74-482c-a091-8367df3d0f70\"}\n[2026-05-07 12:58:16] local.NOTICE: Monitoring end {\"correlation_id\":\"54ed6493-c74e-4491-b2ff-9404528f1525\",\"trace_id\":\"9a1f78c0-6e74-482c-a091-8367df3d0f70\"}\n[2026-05-07 12:58:24] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"7f141a32-060d-4123-bf20-8a8d7abc1482\",\"trace_id\":\"f7fdcb6b-932a-4f6b-ad95-f111628d6cf7\"}\n[2026-05-07 12:58:24] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"7f141a32-060d-4123-bf20-8a8d7abc1482\",\"trace_id\":\"f7fdcb6b-932a-4f6b-ad95-f111628d6cf7\"}\n[2026-05-07 12:58:36] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"f586fc15-711b-4199-8fdf-dcd2df95af0c\",\"trace_id\":\"828fb459-3b7f-4196-a690-12fc9ce99b1d\"}\n[2026-05-07 12:58:36] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"f586fc15-711b-4199-8fdf-dcd2df95af0c\",\"trace_id\":\"828fb459-3b7f-4196-a690-12fc9ce99b1d\"}\n[2026-05-07 12:58:37] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"f586fc15-711b-4199-8fdf-dcd2df95af0c\",\"trace_id\":\"828fb459-3b7f-4196-a690-12fc9ce99b1d\"}\n[2026-05-07 12:58:37] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"f586fc15-711b-4199-8fdf-dcd2df95af0c\",\"trace_id\":\"828fb459-3b7f-4196-a690-12fc9ce99b1d\"}\n[2026-05-07 12:58:40] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"01d4e25d-56d5-4c89-bc29-d873e21cc16f\",\"trace_id\":\"ee1fe1ac-362b-47c1-9db2-7915a30cf0f2\"}\n[2026-05-07 12:58:40] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:56:00, 2026-05-07 12:58:00] {\"correlation_id\":\"01d4e25d-56d5-4c89-bc29-d873e21cc16f\",\"trace_id\":\"ee1fe1ac-362b-47c1-9db2-7915a30cf0f2\"}\n[2026-05-07 12:58:40] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:56:00, 2026-05-07 12:58:00] {\"correlation_id\":\"01d4e25d-56d5-4c89-bc29-d873e21cc16f\",\"trace_id\":\"ee1fe1ac-362b-47c1-9db2-7915a30cf0f2\"}\n[2026-05-07 12:58:40] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"01d4e25d-56d5-4c89-bc29-d873e21cc16f\",\"trace_id\":\"ee1fe1ac-362b-47c1-9db2-7915a30cf0f2\"}\n[2026-05-07 12:58:48] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"924e149e-3462-4043-87da-00838220b970\",\"trace_id\":\"7d0922db-8131-4a52-a0c5-2a7a78df42e8\"}\n[2026-05-07 12:58:48] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"calendar:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:48] local.NOTICE: Calendar sync start {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:48] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"924e149e-3462-4043-87da-00838220b970\",\"trace_id\":\"7d0922db-8131-4a52-a0c5-2a7a78df42e8\"}\n[2026-05-07 12:58:49] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1393,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:49] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1393,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:49] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:49] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1393,\"provider\":\"google\",\"refreshToken\":\"5aa7e2d96b53201cd16fca5d2e4ef3ad03320971fc064781d18aee3ae7b99fbf\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1393,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Account has been deleted\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1393,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1387,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1387,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1387,\"provider\":\"google\",\"refreshToken\":\"8157ac6de94842937194009e9c50e459253600f799dacf6a40755ffdbeb5bba6\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1387,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Account has been deleted\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1387,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1348,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1348,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1348,\"provider\":\"google\",\"refreshToken\":\"9e7d13d3032d0cb1b79d8e95aef01383e8e91eb52ff8ee960c8a0b6b95cd8c73\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1348,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Bad Request\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1348,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1361,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1361,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1361,\"provider\":\"google\",\"refreshToken\":\"6c843da199c2b9907445329304fcc4ec5057a4ee748d8299641764395c08e1fd\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1361,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Account has been deleted\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1361,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1310,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1310,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1310,\"provider\":\"google\",\"refreshToken\":\"e34818922c2830a660813a63f6169a4a9a992ae2cccd7dc8dd7796cfdb470ef1\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1310,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Bad Request\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1310,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1333,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1333,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1333,\"provider\":\"google\",\"refreshToken\":\"6c902986546d8e8da1dc539b046cdc1d458f519acc972e5b5f1d6a1a295165e0\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1333,\"provider\":\"google\",\"responseBody\":{\"error\":\"unauthorized_client\",\"error_description\":\"Unauthorized\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1333,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1368,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1368,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1368,\"provider\":\"google\",\"refreshToken\":\"d2f128898ff8543bd16b69cfae37896ab85119b0f5ed2b431d739593bb600333\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1368,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Bad Request\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1368,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1365,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1365,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1365,\"provider\":\"google\",\"refreshToken\":\"7676e4a9afcd082b413248ab5ec6e487021fec6a9bdf315860a59cefad9caad8\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1365,\"provider\":\"google\",\"responseBody\":{\"error\":\"unauthorized_client\",\"error_description\":\"Unauthorized\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1365,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1364,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1364,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1364,\"provider\":\"google\",\"refreshToken\":\"dd5882ebce76e645292ce33ae74238abbb77c0a4ecc6a2bfe723cad82e72ba8e\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1364,\"provider\":\"google\",\"responseBody\":{\"error\":\"unauthorized_client\",\"error_description\":\"Unauthorized\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1364,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1370,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1370,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1370,\"provider\":\"office\",\"refreshToken\":\"b7ee8035306d0043cea6e00e7c4fe14f745e44074a1194db62a31cdf8b70af3e\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1370,\"provider\":\"office\",\"responseBody\":\"{\\\"error\\\":\\\"invalid_client\\\",\\\"error_description\\\":\\\"AADSTS7000215: Invalid client secret provided. Ensure the secret being sent in the request is the client secret value, not the client secret ID, for a secret added to app 'bbcbb2ef-6200-4fae-82bd-d81f5dd738da'. Trace ID: ef9bb388-453e-4744-a2e1-95e49ced1700 Correlation ID: 3b889c73-f943-4048-ba3b-63ac50581245 Timestamp: 2026-05-07 12:58:53Z\\\",\\\"error_codes\\\":[7000215],\\\"timestamp\\\":\\\"2026-05-07 12:58:53Z\\\",\\\"trace_id\\\":\\\"ef9bb388-453e-4744-a2e1-95e49ced1700\\\",\\\"correlation_id\\\":\\\"3b889c73-f943-4048-ba3b-63ac50581245\\\",\\\"error_uri\\\":\\\"https://login.microsoftonline.com/error?code=7000215\\\"}\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1370,\"provider\":\"office\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1202,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1202,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1202,\"provider\":\"office\",\"refreshToken\":\"b458799ccc29b21a6e2eb5260fdb63e49ccba21bf942a3973fb63799bd7f0afe\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1202,\"provider\":\"office\",\"responseBody\":\"{\\\"error\\\":\\\"invalid_client\\\",\\\"error_description\\\":\\\"AADSTS7000215: Invalid client secret provided. Ensure the secret being sent in the request is the client secret value, not the client secret ID, for a secret added to app 'bbcbb2ef-6200-4fae-82bd-d81f5dd738da'. Trace ID: 0b8181c0-c858-4d17-af69-c23b7f5a0a00 Correlation ID: 2ce9e931-f423-4048-b1d7-ae1910cd4834 Timestamp: 2026-05-07 12:58:54Z\\\",\\\"error_codes\\\":[7000215],\\\"timestamp\\\":\\\"2026-05-07 12:58:54Z\\\",\\\"trace_id\\\":\\\"0b8181c0-c858-4d17-af69-c23b7f5a0a00\\\",\\\"correlation_id\\\":\\\"2ce9e931-f423-4048-b1d7-ae1910cd4834\\\",\\\"error_uri\\\":\\\"https://login.microsoftonline.com/error?code=7000215\\\"}\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1202,\"provider\":\"office\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1502,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1502,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: Calendar sync job dispatched {\"calendar_id\":501} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1300,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1300,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1300,\"provider\":\"google\",\"refreshToken\":\"4b811db0725fd9602a95943519a7da935e2a5065da7d9ebfcb170752e3e1ddb8\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1300,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Account has been deleted\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1300,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1409,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1409,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1409,\"provider\":\"google\",\"refreshToken\":\"e2a3f2d06894894eed1ee87d9db1ace77d4d42ee6e1288a8940ad2c10333b0c4\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1409,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Bad Request\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1409,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1352,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1352,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1352,\"provider\":\"google\",\"refreshToken\":\"dd4b16b00fdc1216da6b717c02338c073636e29162826b2de6db3f064fc029eb\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1352,\"provider\":\"google\",\"responseBody\":{\"error\":\"unauthorized_client\",\"error_description\":\"Unauthorized\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1352,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1296,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1296,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1296,\"provider\":\"office\",\"refreshToken\":\"011ae723c9d800c674e0b4be76f49fc046dac7d501b66c59ef0d9549cfa56ae5\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1296,\"provider\":\"office\",\"responseBody\":\"{\\\"error\\\":\\\"invalid_client\\\",\\\"error_description\\\":\\\"AADSTS7000215: Invalid client secret provided. Ensure the secret being sent in the request is the client secret value, not the client secret ID, for a secret added to app 'bbcbb2ef-6200-4fae-82bd-d81f5dd738da'. Trace ID: 4f38b1ca-479e-445c-8db5-29366d0a0c00 Correlation ID: d0a4d623-1a23-4fcc-aebf-ccafeed44a92 Timestamp: 2026-05-07 12:58:56Z\\\",\\\"error_codes\\\":[7000215],\\\"timestamp\\\":\\\"2026-05-07 12:58:56Z\\\",\\\"trace_id\\\":\\\"4f38b1ca-479e-445c-8db5-29366d0a0c00\\\",\\\"correlation_id\\\":\\\"d0a4d623-1a23-4fcc-aebf-ccafeed44a92\\\",\\\"error_uri\\\":\\\"https://login.microsoftonline.com/error?code=7000215\\\"}\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1296,\"provider\":\"office\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":391,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":391,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":391,\"provider\":\"office\",\"refreshToken\":\"00045eebae0f39b34887c6d53f92ae78064f7145e1f4b67754aebd03cfb2d881\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1502,\"provider\":\"google\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1502,\"provider\":\"google\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [Calendar] Processing sync {\"calendarId\":\"a33076c1-8d97-431a-99f0-85c9524e118b\",\"from\":null,\"to\":null,\"delta\":\"CIiFh8TP44kDEIiFh8TP44kDGAUgkZvkzgIokZvkzgI=\",\"last_sync\":\"2024-12-09 07:12:53\",\"dateMode\":\"daily\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"integration-app\",\"crm_owner\":1695,\"team_id\":3143} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1502,\"provider\":\"google\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1502,\"provider\":\"google\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":391,\"provider\":\"office\",\"responseBody\":\"{\\\"error\\\":\\\"invalid_client\\\",\\\"error_description\\\":\\\"AADSTS7000215: Invalid client secret provided. Ensure the secret being sent in the request is the client secret value, not the client secret ID, for a secret added to app 'bbcbb2ef-6200-4fae-82bd-d81f5dd738da'. Trace ID: 1791a948-a974-424b-9246-7fedfa913b00 Correlation ID: b0e7bf62-d69e-49dd-b7c9-9550f0bd2aec Timestamp: 2026-05-07 12:58:56Z\\\",\\\"error_codes\\\":[7000215],\\\"timestamp\\\":\\\"2026-05-07 12:58:56Z\\\",\\\"trace_id\\\":\\\"1791a948-a974-424b-9246-7fedfa913b00\\\",\\\"correlation_id\\\":\\\"b0e7bf62-d69e-49dd-b7c9-9550f0bd2aec\\\",\\\"error_uri\\\":\\\"https://login.microsoftonline.com/error?code=7000215\\\"}\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":391,\"provider\":\"office\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1271,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1271,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1271,\"provider\":\"office\",\"refreshToken\":\"118cde2c06993147b07ccaec4cbcd5026a819dea6c71081166a492933e392afb\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [Google Calendar] Failed to watch channel for calendar {\"calendarId\":\"a33076c1-8d97-431a-99f0-85c9524e118b\",\"code\":400,\"reason\":\"{\n \\\"error\\\": {\n \\\"errors\\\": [\n {\n \\\"domain\\\": \\\"global\\\",\n \\\"reason\\\": \\\"push.webhookUrlNotHttps\\\",\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n ],\n \\\"code\\\": 400,\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n}\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.WARNING: [Calendar] Sync failed {\"calendarId\":\"a33076c1-8d97-431a-99f0-85c9524e118b\",\"code\":400,\"reason\":\"{\n \\\"error\\\": {\n \\\"errors\\\": [\n {\n \\\"domain\\\": \\\"global\\\",\n \\\"reason\\\": \\\"push.webhookUrlNotHttps\\\",\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n ],\n \\\"code\\\": 400,\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n}\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1271,\"provider\":\"office\",\"responseBody\":\"{\\\"error\\\":\\\"invalid_client\\\",\\\"error_description\\\":\\\"AADSTS7000215: Invalid client secret provided. Ensure the secret being sent in the request is the client secret value, not the client secret ID, for a secret added to app 'bbcbb2ef-6200-4fae-82bd-d81f5dd738da'. Trace ID: 2be27598-8820-475c-b6ca-a30513720c00 Correlation ID: d3ed2a98-4aa9-4a63-819b-d36fd20b8d62 Timestamp: 2026-05-07 12:58:57Z\\\",\\\"error_codes\\\":[7000215],\\\"timestamp\\\":\\\"2026-05-07 12:58:57Z\\\",\\\"trace_id\\\":\\\"2be27598-8820-475c-b6ca-a30513720c00\\\",\\\"correlation_id\\\":\\\"d3ed2a98-4aa9-4a63-819b-d36fd20b8d62\\\",\\\"error_uri\\\":\\\"https://login.microsoftonline.com/error?code=7000215\\\"}\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1271,\"provider\":\"office\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1351,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1351,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1351,\"provider\":\"google\",\"refreshToken\":\"4271d15b9e60a606439caddc68337f783e472c85b03dacff14d1b6dfded9051c\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1351,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Bad Request\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1351,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1366,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1366,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1366,\"provider\":\"google\",\"refreshToken\":\"ae21385059b2eebfd43f68aecd56eccd702a1aabb6598f1f7ab594ed8af491b4\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1366,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Bad Request\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1366,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1115,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1115,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: Calendar sync job dispatched {\"calendar_id\":378} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:58] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1421,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:58] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1421,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:58] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:58] local.INFO: Calendar sync job dispatched {\"calendar_id\":504} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:58] local.NOTICE: Calendar sync end {\"retrieved_calendars\":31,\"processed_calendars\":3} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:58] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"calendar:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1115,\"provider\":\"google\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1115,\"provider\":\"google\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [Calendar] Processing sync {\"calendarId\":\"2676cb6d-f86c-427e-bf78-591e388e3c1e\",\"from\":null,\"to\":null,\"delta\":\"CJ_x49O3jpIDEJ_x49O3jpIDGAUgw67KlwMow67KlwM=\",\"last_sync\":\"2026-01-19 07:48:40\",\"dateMode\":\"daily\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.WARNING: [Pipedrive] Account not connected for user {\"userId\":\"e6538737-e7b4-455f-a37a-3e79b665a220\",\"account\":{\"Jiminny\\\\Models\\\\SocialAccount\":{\"id\":1116,\"sociable_id\":241,\"provider_user_id\":\"19555731\",\"expires\":1775683749,\"refresh_token_expires\":null,\"provider\":\"pipedrive\",\"state\":\"full-refresh\",\"auth_scope\":\"base,deals:full,activities:full,contacts:full,search:read\",\"retry_after\":null,\"created_at\":\"2023-09-08 09:44:29\",\"updated_at\":\"2026-04-08 22:58:34\"}}} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {\"crm_provider\":\"pipedrive\",\"crm_owner\":241,\"team_id\":19} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {\"crm_provider\":\"pipedrive\",\"team_id\":19} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {\"crm_provider\":\"pipedrive\",\"team_id\":19} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.WARNING: [Calendar] CRM disconnected for user so events will not be matched {\"provider\":\"pipedrive\",\"user_id\":241,\"message\":\"Your Pipedrive account has become disconnected. Please login to Jiminny to reconnect.\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1115,\"provider\":\"google\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1115,\"provider\":\"google\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [Google Calendar] Failed to watch channel for calendar {\"calendarId\":\"2676cb6d-f86c-427e-bf78-591e388e3c1e\",\"code\":400,\"reason\":\"{\n \\\"error\\\": {\n \\\"errors\\\": [\n {\n \\\"domain\\\": \\\"global\\\",\n \\\"reason\\\": \\\"push.webhookUrlNotHttps\\\",\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n ],\n \\\"code\\\": 400,\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n}\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.WARNING: [Calendar] Sync failed {\"calendarId\":\"2676cb6d-f86c-427e-bf78-591e388e3c1e\",\"code\":400,\"reason\":\"{\n \\\"error\\\": {\n \\\"errors\\\": [\n {\n \\\"domain\\\": \\\"global\\\",\n \\\"reason\\\": \\\"push.webhookUrlNotHttps\\\",\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n ],\n \\\"code\\\": 400,\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n}\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1421,\"provider\":\"office\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1421,\"provider\":\"office\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [Calendar] Processing sync {\"calendarId\":\"9e8b1a2c-1a8f-42bd-b161-810fc0baf540\",\"from\":null,\"to\":null,\"delta\":\"R0usmcdvmMuZCBYV0hguCHhwR3crxfEuMI8zGlf-bMYpCFtdxXvSJWTlnqQvu_jjoOrOYL2VG9rZwFHCERHxGfGEK3CmQX6x8MJG3ZbBXGuVIS6C7u-doY5maMRdsfnrHIAEMJd4Bs_WMfMH4tDJ8j9aul7DHDEJaP7w0PoPPpcoxu4nEk4vk-MolJBEgkSrayEewuBs5JVItUX9lUY2tA.yO2roNQ4Vdm6hBgoutuphGchuzbvsk7aqt5wHfcyeFQ\",\"last_sync\":\"2026-05-06 15:58:35\",\"dateMode\":\"daily\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":89,\"team_id\":2} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [MS Office Calendar] Skipping delta sync for daily mode {\"calendarId\":\"9e8b1a2c-1a8f-42bd-b161-810fc0baf540\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:59:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"cb5f9d32-02db-4883-a5c9-a5b86c1a2fbb\",\"trace_id\":\"4fb8a9a0-53b1-414a-813d-a259b89f3203\"}\n[2026-05-07 12:59:06] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"cb5f9d32-02db-4883-a5c9-a5b86c1a2fbb\",\"trace_id\":\"4fb8a9a0-53b1-414a-813d-a259b89f3203\"}\n[2026-05-07 12:59:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"cb5f9d32-02db-4883-a5c9-a5b86c1a2fbb\",\"trace_id\":\"4fb8a9a0-53b1-414a-813d-a259b89f3203\"}\n[2026-05-07 12:59:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"64313a2b-3a92-4419-ae59-caabfc9e9731\",\"trace_id\":\"16443bac-2196-4257-88bc-59445729f276\"}\n[2026-05-07 12:59:09] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"64313a2b-3a92-4419-ae59-caabfc9e9731\",\"trace_id\":\"16443bac-2196-4257-88bc-59445729f276\"}\n[2026-05-07 12:59:11] local.NOTICE: Monitoring start {\"correlation_id\":\"7678c2ca-049f-44e4-acce-2e711f8d7d40\",\"trace_id\":\"54ef3d3c-f1ea-4a01-aed2-db19a6739a06\"}\n[2026-05-07 12:59:11] local.NOTICE: Monitoring end {\"correlation_id\":\"7678c2ca-049f-44e4-acce-2e711f8d7d40\",\"trace_id\":\"54ef3d3c-f1ea-4a01-aed2-db19a6739a06\"}\n[2026-05-07 12:59:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"44d7c1a1-dfc9-4401-9f63-ad8b5bff9942\",\"trace_id\":\"9f6f5f38-60f5-4869-bfd2-f366d52eaa00\"}\n[2026-05-07 12:59:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"44d7c1a1-dfc9-4401-9f63-ad8b5bff9942\",\"trace_id\":\"9f6f5f38-60f5-4869-bfd2-f366d52eaa00\"}\n[2026-05-07 12:59:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"f90f3b8c-5161-4963-a963-a40284567af1\",\"trace_id\":\"94731c50-8ce2-44ec-ace6-2d46fb00fdb1\"}\n[2026-05-07 12:59:15] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"f90f3b8c-5161-4963-a963-a40284567af1\",\"trace_id\":\"94731c50-8ce2-44ec-ace6-2d46fb00fdb1\"}\n[2026-05-07 12:59:15] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"f90f3b8c-5161-4963-a963-a40284567af1\",\"trace_id\":\"94731c50-8ce2-44ec-ace6-2d46fb00fdb1\"}\n[2026-05-07 12:59:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"f90f3b8c-5161-4963-a963-a40284567af1\",\"trace_id\":\"94731c50-8ce2-44ec-ace6-2d46fb00fdb1\"}\n[2026-05-07 13:00:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"6f98d5e3-0aa8-496e-853a-a77b7a8b74ec\",\"trace_id\":\"b63e8546-4347-49f0-ad1a-92f4e4504843\"}\n[2026-05-07 13:00:10] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"6f98d5e3-0aa8-496e-853a-a77b7a8b74ec\",\"trace_id\":\"b63e8546-4347-49f0-ad1a-92f4e4504843\"}\n[2026-05-07 13:00:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"6f98d5e3-0aa8-496e-853a-a77b7a8b74ec\",\"trace_id\":\"b63e8546-4347-49f0-ad1a-92f4e4504843\"}\n[2026-05-07 13:00:13] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"50260ccd-f119-47b0-baee-514de27801f2\",\"trace_id\":\"40e651df-62f6-4c3a-83ab-842112ec3ece\"}\n[2026-05-07 13:00:13] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"50260ccd-f119-47b0-baee-514de27801f2\",\"trace_id\":\"40e651df-62f6-4c3a-83ab-842112ec3ece\"}\n[2026-05-07 13:00:17] local.NOTICE: Monitoring start {\"correlation_id\":\"f6104856-aca3-4e7b-964e-bba66d730eb3\",\"trace_id\":\"98f34b7b-f715-49cb-8d3a-4e74c1118445\"}\n[2026-05-07 13:00:17] local.NOTICE: Monitoring end {\"correlation_id\":\"f6104856-aca3-4e7b-964e-bba66d730eb3\",\"trace_id\":\"98f34b7b-f715-49cb-8d3a-4e74c1118445\"}\n[2026-05-07 13:00:19] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"b4a9e9a2-968c-429b-8fa8-67dd59bb297f\",\"trace_id\":\"ed6a83d0-8edb-4392-8717-26d91ffde80b\"}\n[2026-05-07 13:00:19] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"b4a9e9a2-968c-429b-8fa8-67dd59bb297f\",\"trace_id\":\"ed6a83d0-8edb-4392-8717-26d91ffde80b\"}\n[2026-05-07 13:00:21] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"b11474b2-8b19-4a2f-89c3-621fde9d3b1f\",\"trace_id\":\"8018d825-0809-411b-9b2a-078e2da6bacb\"}\n[2026-05-07 13:00:21] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"b11474b2-8b19-4a2f-89c3-621fde9d3b1f\",\"trace_id\":\"8018d825-0809-411b-9b2a-078e2da6bacb\"}\n[2026-05-07 13:00:21] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"b11474b2-8b19-4a2f-89c3-621fde9d3b1f\",\"trace_id\":\"8018d825-0809-411b-9b2a-078e2da6bacb\"}\n[2026-05-07 13:00:21] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"b11474b2-8b19-4a2f-89c3-621fde9d3b1f\",\"trace_id\":\"8018d825-0809-411b-9b2a-078e2da6bacb\"}\n[2026-05-07 13:00:23] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"d3b79f58-f9c8-4063-ac7e-7a0445cd1111\",\"trace_id\":\"802cf505-95fb-4f92-8c1b-79aa3ac53084\"}\n[2026-05-07 13:00:23] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:58:00, 2026-05-07 13:00:00] {\"correlation_id\":\"d3b79f58-f9c8-4063-ac7e-7a0445cd1111\",\"trace_id\":\"802cf505-95fb-4f92-8c1b-79aa3ac53084\"}\n[2026-05-07 13:00:23] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:58:00, 2026-05-07 13:00:00] {\"correlation_id\":\"d3b79f58-f9c8-4063-ac7e-7a0445cd1111\",\"trace_id\":\"802cf505-95fb-4f92-8c1b-79aa3ac53084\"}\n[2026-05-07 13:00:23] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"d3b79f58-f9c8-4063-ac7e-7a0445cd1111\",\"trace_id\":\"802cf505-95fb-4f92-8c1b-79aa3ac53084\"}\n[2026-05-07 13:00:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:purge-stale\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"32bad9c1-861c-4a46-bece-585cc1170bfd\",\"trace_id\":\"0c20e20f-6a91-4346-9455-5cd1451c32a1\"}\n[2026-05-07 13:00:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:purge-stale\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"32bad9c1-861c-4a46-bece-585cc1170bfd\",\"trace_id\":\"0c20e20f-6a91-4346-9455-5cd1451c32a1\"}\n[2026-05-07 13:00:29] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:text-relay:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"c9d4f687-1643-431e-9377-2573a2e593fd\",\"trace_id\":\"02fab433-9c9a-49f7-b836-2b8a42551912\"}\n[2026-05-07 13:00:30] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:text-relay:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"c9d4f687-1643-431e-9377-2573a2e593fd\",\"trace_id\":\"02fab433-9c9a-49f7-b836-2b8a42551912\"}\n[2026-05-07 13:00:33] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:pre-meeting-notification\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"57870bb4-45e8-47d8-b192-21d3297d2208\",\"trace_id\":\"ba8e9eac-2dc9-4ed8-bbf1-4a35aedb9efb\"}\n[2026-05-07 13:00:33] local.INFO: Running pre-meeting notification command {\"correlation_id\":\"57870bb4-45e8-47d8-b192-21d3297d2208\",\"trace_id\":\"ba8e9eac-2dc9-4ed8-bbf1-4a35aedb9efb\"}\n[2026-05-07 13:00:33] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:pre-meeting-notification\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"57870bb4-45e8-47d8-b192-21d3297d2208\",\"trace_id\":\"ba8e9eac-2dc9-4ed8-bbf1-4a35aedb9efb\"}\n[2026-05-07 13:00:35] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:start\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"6aeb181b-8314-4d45-aff7-e378793b04d9\",\"trace_id\":\"8ffc66f1-af64-4a58-8ce8-481b3a299dbb\"}\n[2026-05-07 13:00:35] local.INFO: Running conference:monitor:start command for activities in (2026-05-07 12:50:00, 2026-05-07 12:55:00] {\"correlation_id\":\"6aeb181b-8314-4d45-aff7-e378793b04d9\",\"trace_id\":\"8ffc66f1-af64-4a58-8ce8-481b3a299dbb\"}\n[2026-05-07 13:00:35] local.INFO: [conference:monitor:start] No activities found in (2026-05-07 12:50:00, 2026-05-07 12:55:00] {\"correlation_id\":\"6aeb181b-8314-4d45-aff7-e378793b04d9\",\"trace_id\":\"8ffc66f1-af64-4a58-8ce8-481b3a299dbb\"}\n[2026-05-07 13:00:35] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:start\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"6aeb181b-8314-4d45-aff7-e378793b04d9\",\"trace_id\":\"8ffc66f1-af64-4a58-8ce8-481b3a299dbb\"}\n[2026-05-07 13:00:37] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:end\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"888d4f67-ad14-4457-b51d-2cf8b2d315f9\",\"trace_id\":\"eaf4b0b3-0414-4563-b227-ce9c6a2e5b7e\"}\n[2026-05-07 13:00:37] local.INFO: conference:monitor:end:Jiminny\\Console\\Commands\\Activities\\MonitorMeetingEndCommand::logActivitiesEnded {\"from\":\"12:55\",\"to\":\"13:00\"} {\"correlation_id\":\"888d4f67-ad14-4457-b51d-2cf8b2d315f9\",\"trace_id\":\"eaf4b0b3-0414-4563-b227-ce9c6a2e5b7e\"}\n[2026-05-07 13:00:37] local.INFO: conference:monitor:end:Jiminny\\Console\\Commands\\Activities\\MonitorMeetingEndCommand::logActivitiesWithUnfinishedSession {\"from\":\"02:50\",\"to\":\"02:55\"} {\"correlation_id\":\"888d4f67-ad14-4457-b51d-2cf8b2d315f9\",\"trace_id\":\"eaf4b0b3-0414-4563-b227-ce9c6a2e5b7e\"}\n[2026-05-07 13:00:37] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:end\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"888d4f67-ad14-4457-b51d-2cf8b2d315f9\",\"trace_id\":\"eaf4b0b3-0414-4563-b227-ce9c6a2e5b7e\"}\n[2026-05-07 13:00:39] local.NOTICE: Repairing HubSpot tokens start {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:39] local.INFO: Trying to refresh HubSpot token {\"account_id\":59,\"updated_at\":\"2025-10-03 09:32:05\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:39] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:39] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":59,\"provider\":\"hubspot\",\"refreshToken\":\"97b78f6e2cc49965c00c2492b602b02708b1392551e6b3f113fbaa48992af90b\",\"state\":\"full-refresh\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:39] local.ERROR: Failed to refresh HubSpot token {\"account_id\":59,\"updated_at\":\"2025-10-03 09:32:05\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:39] local.INFO: Trying to refresh HubSpot token {\"account_id\":306,\"updated_at\":\"2023-11-27 09:30:03\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:39] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:39] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":306,\"provider\":\"hubspot\",\"refreshToken\":\"6fa6aa8cc641d131231acc3470f5c03cb3b07b2e580fb18f8acb3b1dbb72549b\",\"state\":\"full-refresh\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:40] local.ERROR: Failed to refresh HubSpot token {\"account_id\":306,\"updated_at\":\"2023-11-27 09:30:03\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:40] local.INFO: Trying to refresh HubSpot token {\"account_id\":1372,\"updated_at\":\"2025-10-02 14:47:06\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:40] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:40] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1372,\"provider\":\"hubspot\",\"refreshToken\":\"9aa73948c761da29dce46c177cf9aee1fde483a44169ca38723f9f0597d7a8c4\",\"state\":\"full-refresh\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:40] local.ERROR: Failed to refresh HubSpot token {\"account_id\":1372,\"updated_at\":\"2025-10-02 14:47:06\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:40] local.NOTICE: Repairing HubSpot tokens end {\"total\":3,\"fixed\":0,\"failed\":3} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:45] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"jiminny:transcription:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"b619cc55-b4ef-4913-ab44-6bce51933f7e\",\"trace_id\":\"7cacb418-6e9c-410b-bf3a-15bdf1837908\"}\n[2026-05-07 13:00:45] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:pre-meeting-reminder\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"a765990f-ffe2-44e0-967f-816f5452ce69\",\"trace_id\":\"9aee0f3f-7668-455f-b207-181b58848478\"}\n[2026-05-07 13:00:45] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"jiminny:transcription:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"b619cc55-b4ef-4913-ab44-6bce51933f7e\",\"trace_id\":\"7cacb418-6e9c-410b-bf3a-15bdf1837908\"}\n[2026-05-07 13:00:45] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:45] local.INFO: [HubSpot Journal Command] Starting polling service {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:45] local.INFO: [HubSpot Journal Polling] Service starting {\"memory_limit\":\"256M\",\"max_execution_time\":\"0\",\"initial_memory_mb\":62.0} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:45] local.INFO: [HubSpot Journal Polling] Acquired polling lock {\"expires_at\":\"2026-05-07T13:02:45.724437Z\"} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:45] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:45] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:45] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:pre-meeting-reminder\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"a765990f-ffe2-44e0-967f-816f5452ce69\",\"trace_id\":\"9aee0f3f-7668-455f-b207-181b58848478\"}\n[2026-05-07 13:00:45] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:49] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"crm:reset-governor\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"055b4798-a759-4621-9e0b-652f8ee69ea1\",\"trace_id\":\"10911ef4-48d1-404a-9345-ecf0f5cb9977\"}\n[2026-05-07 13:00:49] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"crm:reset-governor\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"055b4798-a759-4621-9e0b-652f8ee69ea1\",\"trace_id\":\"10911ef4-48d1-404a-9345-ecf0f5cb9977\"}\n[2026-05-07 13:00:51] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:51] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:51] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:53] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:53] local.INFO: Dispatching activity sync job {\"import_id\":812331,\"provider\":\"twilio-flex\",\"team\":\"jiminny\"} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:53] local.INFO: Dispatching activity sync job {\"import_id\":812332,\"provider\":\"xant\",\"team\":\"jiminny\"} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:53] local.INFO: Dispatching activity sync job {\"import_id\":812333,\"provider\":\"apollo\",\"team\":\"jiminny\"} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:53] local.INFO: Dispatching activity sync job {\"import_id\":812334,\"provider\":\"groove\",\"team\":\"jiminny\"} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:53] local.INFO: Dispatching activity sync job {\"import_id\":812335,\"provider\":\"twilio-video\",\"team\":\"jiminny\"} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:53] local.INFO: Dispatching activity sync job {\"import_id\":812336,\"provider\":\"hubspot\",\"team\":\"hubspot\"} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:53] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.WARNING: [Salesforce] Account not connected for user {\"userId\":\"cdf8b554-d951-4758-bc2b-c1b85d1cd0b9\",\"account\":null} {\"correlation_id\":\"fb068e24-e135-4914-9973-94f1a0f5dae2\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {\"crm_provider\":\"salesforce\",\"crm_owner\":3,\"team_id\":1} {\"correlation_id\":\"fb068e24-e135-4914-9973-94f1a0f5dae2\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {\"crm_provider\":\"salesforce\",\"team_id\":1} {\"correlation_id\":\"fb068e24-e135-4914-9973-94f1a0f5dae2\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {\"crm_provider\":\"salesforce\",\"team_id\":1} {\"correlation_id\":\"fb068e24-e135-4914-9973-94f1a0f5dae2\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.ALERT: [SyncActivity] Failed {\"import_id\":812331,\"provider\":\"twilio-flex\",\"provider_id\":317,\"team\":\"jiminny\",\"team_id\":1,\"reason\":\"Social account for Salesforce cannot be found. Please login to Jiminny to connect.\",\"file\":\"/home/jiminny/app/Services/Crm/BaseService.php\",\"line\":646} {\"correlation_id\":\"fb068e24-e135-4914-9973-94f1a0f5dae2\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"fe9470d4-bc5a-4195-919d-e4908e439f7c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"fe9470d4-bc5a-4195-919d-e4908e439f7c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"fe9470d4-bc5a-4195-919d-e4908e439f7c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:56] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:56] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:56] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:56] local.ALERT: [SyncActivity] Failed {\"import_id\":812332,\"provider\":\"xant\",\"provider_id\":161,\"team\":\"jiminny\",\"team_id\":1,\"reason\":\"Activity Provider account not connected.\",\"file\":\"/home/jiminny/app/Services/Activity/ActivityProviderService.php\",\"line\":174} {\"correlation_id\":\"fe9470d4-bc5a-4195-919d-e4908e439f7c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:56] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"e3a8ef92-20c7-4698-a07d-1aa2c21ac82c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:56] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"e3a8ef92-20c7-4698-a07d-1aa2c21ac82c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:56] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"e3a8ef92-20c7-4698-a07d-1aa2c21ac82c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:56] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:fail-stalled\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"441dabbc-0c1f-4d49-871c-08f96adbed01\",\"trace_id\":\"13597461-50ff-4a40-a329-255430126395\"}\n[2026-05-07 13:00:56] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:fail-stalled\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"441dabbc-0c1f-4d49-871c-08f96adbed01\",\"trace_id\":\"13597461-50ff-4a40-a329-255430126395\"}\n[2026-05-07 13:00:57] local.ALERT: [SyncActivity] Failed {\"import_id\":812333,\"provider\":\"apollo\",\"provider_id\":441,\"team\":\"jiminny\",\"team_id\":1,\"reason\":\"Activity Provider account not connected.\",\"file\":\"/home/jiminny/app/Services/Activity/ActivityProviderService.php\",\"line\":174} {\"correlation_id\":\"e3a8ef92-20c7-4698-a07d-1aa2c21ac82c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:57] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"1a0b64ee-3927-48e6-8ae3-fda14f35babb\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:57] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"1a0b64ee-3927-48e6-8ae3-fda14f35babb\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:57] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"1a0b64ee-3927-48e6-8ae3-fda14f35babb\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:57] local.ALERT: [SyncActivity] Failed {\"import_id\":812334,\"provider\":\"groove\",\"provider_id\":228,\"team\":\"jiminny\",\"team_id\":1,\"reason\":\"Activity Provider account not connected.\",\"file\":\"/home/jiminny/app/Services/Activity/ActivityProviderService.php\",\"line\":174} {\"correlation_id\":\"1a0b64ee-3927-48e6-8ae3-fda14f35babb\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:57] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"5e6fecb1-9905-4ab2-a494-e6d8215430c0\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:57] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"5e6fecb1-9905-4ab2-a494-e6d8215430c0\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:57] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"5e6fecb1-9905-4ab2-a494-e6d8215430c0\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.ALERT: [SyncActivity] Failed {\"import_id\":812335,\"provider\":\"twilio-video\",\"provider_id\":243,\"team\":\"jiminny\",\"team_id\":1,\"reason\":\"Activity Provider account not connected.\",\"file\":\"/home/jiminny/app/Services/Activity/ActivityProviderService.php\",\"line\":174} {\"correlation_id\":\"5e6fecb1-9905-4ab2-a494-e6d8215430c0\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":89,\"team_id\":2} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":408,\"provider\":\"hubspot\"} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":408,\"provider\":\"hubspot\"} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [SyncActivity] Start {\"import_id\":812336,\"provider\":\"hubspot\",\"provider_id\":31,\"team\":\"hubspot\",\"team_id\":2} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [HubSpot] Search calls for period {\"from\":\"2026-05-07 12:44:00\",\"to\":\"2026-05-07 13:00:00\"} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [SyncActivity] End {\"import_id\":812336,\"provider\":\"hubspot\",\"provider_id\":31,\"team\":\"hubspot\",\"team_id\":2} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [SyncActivity] Memory usage {\"import_id\":812336,\"provider\":\"hubspot\",\"provider_id\":31,\"team\":\"hubspot\",\"team_id\":2,\"memory_usage\":27230632,\"memory_real_usage\":67108864,\"pid\":37116} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:59] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"jiminny:transcription:retry-stuck\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"1db560c5-5d8c-419a-bfb0-e761473ecf44\",\"trace_id\":\"79eb494e-fd21-4171-b59d-d7d47358f1fb\"}\n[2026-05-07 13:00:59] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"jiminny:transcription:retry-stuck\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"1db560c5-5d8c-419a-bfb0-e761473ecf44\",\"trace_id\":\"79eb494e-fd21-4171-b59d-d7d47358f1fb\"}\n[2026-05-07 13:01:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"73c0e9d6-7ef5-4040-8e35-0a9bb4028abf\",\"trace_id\":\"55b51c26-06b9-4b59-b444-53017b805b30\"}\n[2026-05-07 13:01:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"73c0e9d6-7ef5-4040-8e35-0a9bb4028abf\",\"trace_id\":\"55b51c26-06b9-4b59-b444-53017b805b30\"}\n[2026-05-07 13:01:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"5a7e717c-f314-4601-b1b8-fd550703f463\",\"trace_id\":\"a64281e5-027f-4856-a3e3-4f176c58eb6e\"}\n[2026-05-07 13:01:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"5a7e717c-f314-4601-b1b8-fd550703f463\",\"trace_id\":\"a64281e5-027f-4856-a3e3-4f176c58eb6e\"}\n[2026-05-07 13:01:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"0c425954-2696-4890-97b7-219ccc38cf46\",\"trace_id\":\"d609b364-f3b6-4b85-babb-67caf96efdb1\"}\n[2026-05-07 13:01:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"0c425954-2696-4890-97b7-219ccc38cf46\",\"trace_id\":\"d609b364-f3b6-4b85-babb-67caf96efdb1\"}\n[2026-05-07 13:01:11] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:11] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:11] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"a6bad97b-3db2-4dd6-839f-fcd485f06e65\",\"trace_id\":\"dcdde4a9-962c-46d1-9386-42adb54efbbf\"}\n[2026-05-07 13:01:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"a6bad97b-3db2-4dd6-839f-fcd485f06e65\",\"trace_id\":\"dcdde4a9-962c-46d1-9386-42adb54efbbf\"}\n[2026-05-07 13:01:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"2893478e-8c43-4719-a2e8-7c9c0e0783e9\",\"trace_id\":\"3fc8f1f0-0727-42f1-8ee6-f2b32bd8834b\"}\n[2026-05-07 13:01:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"2893478e-8c43-4719-a2e8-7c9c0e0783e9\",\"trace_id\":\"3fc8f1f0-0727-42f1-8ee6-f2b32bd8834b\"}\n[2026-05-07 13:01:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"64f52ca1-b54e-46da-a760-73dbdf407eaf\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:17] local.INFO: Dispatching activity sync job {\"import_id\":812337,\"provider\":\"hubspot\",\"team\":\"hubspot\"} {\"correlation_id\":\"64f52ca1-b54e-46da-a760-73dbdf407eaf\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"64f52ca1-b54e-46da-a760-73dbdf407eaf\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"crm:bullhorn:ping\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"3c44e0a7-ec5d-4206-a925-69f6e0783c2a\",\"trace_id\":\"60cf7a36-37ca-4ac4-a632-f317578d908f\"}\n[2026-05-07 13:01:19] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"crm:bullhorn:ping\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"3c44e0a7-ec5d-4206-a925-69f6e0783c2a\",\"trace_id\":\"60cf7a36-37ca-4ac4-a632-f317578d908f\"}\n[2026-05-07 13:01:19] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":89,\"team_id\":2} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":408,\"provider\":\"hubspot\"} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":408,\"provider\":\"hubspot\"} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [SyncActivity] Start {\"import_id\":812337,\"provider\":\"hubspot\",\"provider_id\":31,\"team\":\"hubspot\",\"team_id\":2} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [HubSpot] Search calls for period {\"from\":\"2026-05-07 12:00:00\",\"to\":\"2026-05-07 13:00:00\"} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:20] local.INFO: [SyncActivity] End {\"import_id\":812337,\"provider\":\"hubspot\",\"provider_id\":31,\"team\":\"hubspot\",\"team_id\":2} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:20] local.INFO: [SyncActivity] Memory usage {\"import_id\":812337,\"provider\":\"hubspot\",\"provider_id\":31,\"team\":\"hubspot\",\"team_id\":2,\"memory_usage\":27392888,\"memory_real_usage\":67108864,\"pid\":37116} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:21] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"nudges:send\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"55ebbc10-80bf-4724-ac64-678f6ef891cc\",\"trace_id\":\"f5392dc4-b352-4cae-b82a-004f77bbaf26\"}\n[2026-05-07 13:01:21] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"nudges:send\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"55ebbc10-80bf-4724-ac64-678f6ef891cc\",\"trace_id\":\"f5392dc4-b352-4cae-b82a-004f77bbaf26\"}\n[2026-05-07 13:01:23] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"jiminny:playlists:normalize-sort\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"9e29cfb5-b7fc-41bc-a9fd-a160d2253806\",\"trace_id\":\"3e180d83-299d-4c6c-bdda-d5a8ac156efc\"}\n[2026-05-07 13:01:23] local.INFO: [Jiminny\\Component\\Playlist\\Command\\NormalizeSortCommand::handle] starting. {\"playlists\":[]} {\"correlation_id\":\"9e29cfb5-b7fc-41bc-a9fd-a160d2253806\",\"trace_id\":\"3e180d83-299d-4c6c-bdda-d5a8ac156efc\"}\n[2026-05-07 13:01:23] local.INFO: [Jiminny\\Component\\Playlist\\Command\\NormalizeSortCommand::handle] finished. {\"normalizedPlaylists\":[],\"deletedPlaylists\":[]} {\"correlation_id\":\"9e29cfb5-b7fc-41bc-a9fd-a160d2253806\",\"trace_id\":\"3e180d83-299d-4c6c-bdda-d5a8ac156efc\"}\n[2026-05-07 13:01:23] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"jiminny:playlists:normalize-sort\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"9e29cfb5-b7fc-41bc-a9fd-a160d2253806\",\"trace_id\":\"3e180d83-299d-4c6c-bdda-d5a8ac156efc\"}\n[2026-05-07 13:01:41] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:41] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:41] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:41] local.WARNING: [HubSpot Journal Polling] Maximum empty results reached, stopping {\"empty_results\":5,\"max_empty_results\":5} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:41] local.WARNING: [HubSpot Journal Polling] Maximum empty results reached, stopping {\"empty_results\":5,\"max_empty_results\":5} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:41] local.INFO: [HubSpot Journal Polling] Service ending {\"runtime_seconds\":56,\"total_cycles\":5,\"files_downloaded\":0,\"empty_files\":0,\"other_portal_skipped\":0,\"total_events\":0,\"events_per_file\":0,\"avg_api_ms\":181.3,\"avg_download_ms\":0.0,\"avg_transform_ms\":0.0,\"avg_process_ms\":0.0,\"peak_memory_mb\":99.73} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:41] local.INFO: [HubSpot Journal Polling] Released polling lock {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:02:05] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"fe3480ce-754b-4304-b661-e4ac7234a778\",\"trace_id\":\"619e9c15-f95f-47ce-af85-6d78a6698327\"}\n[2026-05-07 13:02:05] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"fe3480ce-754b-4304-b661-e4ac7234a778\",\"trace_id\":\"619e9c15-f95f-47ce-af85-6d78a6698327\"}\n[2026-05-07 13:02:05] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"fe3480ce-754b-4304-b661-e4ac7234a778\",\"trace_id\":\"619e9c15-f95f-47ce-af85-6d78a6698327\"}\n[2026-05-07 13:02:07] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"aa98bf14-5737-4097-9f53-ac6833fb7983\",\"trace_id\":\"2f858b11-1073-43d4-996a-57e259ec2795\"}\n[2026-05-07 13:02:07] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"aa98bf14-5737-4097-9f53-ac6833fb7983\",\"trace_id\":\"2f858b11-1073-43d4-996a-57e259ec2795\"}\n[2026-05-07 13:02:08] local.NOTICE: Monitoring start {\"correlation_id\":\"25c588be-ddd6-41f1-8db8-ae28f3dd5bf5\",\"trace_id\":\"58b4c110-21ab-4c22-be4f-5be3534cd17d\"}\n[2026-05-07 13:02:08] local.NOTICE: Monitoring end {\"correlation_id\":\"25c588be-ddd6-41f1-8db8-ae28f3dd5bf5\",\"trace_id\":\"58b4c110-21ab-4c22-be4f-5be3534cd17d\"}\n[2026-05-07 13:02:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"5e453d7a-4daf-4001-b100-6aa9485d0353\",\"trace_id\":\"d97e1107-3696-4acf-95db-9cc7f37412e1\"}\n[2026-05-07 13:02:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"5e453d7a-4daf-4001-b100-6aa9485d0353\",\"trace_id\":\"d97e1107-3696-4acf-95db-9cc7f37412e1\"}\n[2026-05-07 13:02:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"3fab4dfb-f0ae-4c2c-a882-e09a1ad3ee9b\",\"trace_id\":\"3a66f9c4-3f01-40e2-aee2-e77fdabe793f\"}\n[2026-05-07 13:02:12] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"3fab4dfb-f0ae-4c2c-a882-e09a1ad3ee9b\",\"trace_id\":\"3a66f9c4-3f01-40e2-aee2-e77fdabe793f\"}\n[2026-05-07 13:02:12] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"3fab4dfb-f0ae-4c2c-a882-e09a1ad3ee9b\",\"trace_id\":\"3a66f9c4-3f01-40e2-aee2-e77fdabe793f\"}\n[2026-05-07 13:02:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"3fab4dfb-f0ae-4c2c-a882-e09a1ad3ee9b\",\"trace_id\":\"3a66f9c4-3f01-40e2-aee2-e77fdabe793f\"}\n[2026-05-07 13:02:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"63252e6d-894f-4cb9-818a-0034bf3545cb\",\"trace_id\":\"7ddf2e72-9174-4623-a622-1a5c9ee952c5\"}\n[2026-05-07 13:02:15] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 13:00:00, 2026-05-07 13:02:00] {\"correlation_id\":\"63252e6d-894f-4cb9-818a-0034bf3545cb\",\"trace_id\":\"7ddf2e72-9174-4623-a622-1a5c9ee952c5\"}\n[2026-05-07 13:02:15] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 13:00:00, 2026-05-07 13:02:00] {\"correlation_id\":\"63252e6d-894f-4cb9-818a-0034bf3545cb\",\"trace_id\":\"7ddf2e72-9174-4623-a622-1a5c9ee952c5\"}\n[2026-05-07 13:02:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"63252e6d-894f-4cb9-818a-0034bf3545cb\",\"trace_id\":\"7ddf2e72-9174-4623-a622-1a5c9ee952c5\"}\n[2026-05-07 13:02:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:create\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"cf65b2c4-c602-432d-8087-d0c0fb7f8e80\",\"trace_id\":\"b7b39317-045c-4475-879e-3d399e23fc3e\"}\n[2026-05-07 13:02:17] local.INFO: [EmailSchedule] STARTING batch create {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"cf65b2c4-c602-432d-8087-d0c0fb7f8e80\",\"trace_id\":\"b7b39317-045c-4475-879e-3d399e23fc3e\"}\n[2026-05-07 13:02:17] local.INFO: [EmailSchedule] FINISHED batch create {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"cf65b2c4-c602-432d-8087-d0c0fb7f8e80\",\"trace_id\":\"b7b39317-045c-4475-879e-3d399e23fc3e\"}\n[2026-05-07 13:02:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:create\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"cf65b2c4-c602-432d-8087-d0c0fb7f8e80\",\"trace_id\":\"b7b39317-045c-4475-879e-3d399e23fc3e\"}\n[2026-05-07 13:02:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"c481124d-04ae-43fb-b1d3-a4282f7af7ff\",\"trace_id\":\"d2d083d1-7cee-4d21-b80e-4485361d9969\"}\n[2026-05-07 13:02:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"c481124d-04ae-43fb-b1d3-a4282f7af7ff\",\"trace_id\":\"d2d083d1-7cee-4d21-b80e-4485361d9969\"}\n[2026-05-07 13:02:20] local.INFO: [Jiminny\\Jobs\\Mailbox\\CreateBatches] processed 2 inboxes and created 0 batches {\"userId\":null,\"batchSize\":30,\"maxBatches\":1000} {\"correlation_id\":\"3e2ef780-0c9d-4c30-9dc9-92315055c632\",\"trace_id\":\"b7b39317-045c-4475-879e-3d399e23fc3e\"}\n[2026-05-07 13:03:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"8cb6c7bf-4a2d-4960-bf8f-0368643fec27\",\"trace_id\":\"68c67cd4-9b92-4e41-bc1e-ebb282ea5211\"}\n[2026-05-07 13:03:06] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"8cb6c7bf-4a2d-4960-bf8f-0368643fec27\",\"trace_id\":\"68c67cd4-9b92-4e41-bc1e-ebb282ea5211\"}\n[2026-05-07 13:03:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"8cb6c7bf-4a2d-4960-bf8f-0368643fec27\",\"trace_id\":\"68c67cd4-9b92-4e41-bc1e-ebb282ea5211\"}\n[2026-05-07 13:03:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"b18dc815-6c91-43df-b083-125316724586\",\"trace_id\":\"62a636e8-4128-49eb-b99b-15efcfb37267\"}\n[2026-05-07 13:03:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"b18dc815-6c91-43df-b083-125316724586\",\"trace_id\":\"62a636e8-4128-49eb-b99b-15efcfb37267\"}\n[2026-05-07 13:03:10] local.NOTICE: Monitoring start {\"correlation_id\":\"d74c3e14-fd1a-4cab-9892-e9e924af1144\",\"trace_id\":\"29547049-25f5-4b62-a603-276e1de3dde8\"}\n[2026-05-07 13:03:10] local.NOTICE: Monitoring end {\"correlation_id\":\"d74c3e14-fd1a-4cab-9892-e9e924af1144\",\"trace_id\":\"29547049-25f5-4b62-a603-276e1de3dde8\"}\n[2026-05-07 13:03:13] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"bd7a8c2f-3f0b-48e9-86c2-0f01f2cfd9e8\",\"trace_id\":\"a3d1ecb5-4122-43c1-98ca-5d74c3dc989c\"}\n[2026-05-07 13:03:13] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"bd7a8c2f-3f0b-48e9-86c2-0f01f2cfd9e8\",\"trace_id\":\"a3d1ecb5-4122-43c1-98ca-5d74c3dc989c\"}\n[2026-05-07 13:03:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"4b20eb61-2970-4a63-8ee0-b392f7406a78\",\"trace_id\":\"892c9d93-c280-4b3f-a97a-bf1266f5c090\"}\n[2026-05-07 13:03:14] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"4b20eb61-2970-4a63-8ee0-b392f7406a78\",\"trace_id\":\"892c9d93-c280-4b3f-a97a-bf1266f5c090\"}\n[2026-05-07 13:03:14] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"4b20eb61-2970-4a63-8ee0-b392f7406a78\",\"trace_id\":\"892c9d93-c280-4b3f-a97a-bf1266f5c090\"}\n[2026-05-07 13:03:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"4b20eb61-2970-4a63-8ee0-b392f7406a78\",\"trace_id\":\"892c9d93-c280-4b3f-a97a-bf1266f5c090\"}\n[2026-05-07 13:03:18] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"6a165ea3-f101-4ac9-bfcc-e7ad618ac645\",\"trace_id\":\"383367e5-a337-4793-be1c-a88a2a6fa2e5\"}\n[2026-05-07 13:03:18] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"6a165ea3-f101-4ac9-bfcc-e7ad618ac645\",\"trace_id\":\"383367e5-a337-4793-be1c-a88a2a6fa2e5\"}","depth":4,"on_screen":true,"value":"[2026-05-07 12:52:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"fa8a3008-d298-4682-bbbc-fdc77520e0d7\",\"trace_id\":\"7cfb2afb-9fc4-4a77-81be-65dce93c7d80\"}\n[2026-05-07 12:52:08] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"fa8a3008-d298-4682-bbbc-fdc77520e0d7\",\"trace_id\":\"7cfb2afb-9fc4-4a77-81be-65dce93c7d80\"}\n[2026-05-07 12:52:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"fa8a3008-d298-4682-bbbc-fdc77520e0d7\",\"trace_id\":\"7cfb2afb-9fc4-4a77-81be-65dce93c7d80\"}\n[2026-05-07 12:52:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"932ced9d-9804-48ed-976a-1f8bf5e75707\",\"trace_id\":\"21bf320c-58f3-4082-831d-9f07f6c6a669\"}\n[2026-05-07 12:52:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"932ced9d-9804-48ed-976a-1f8bf5e75707\",\"trace_id\":\"21bf320c-58f3-4082-831d-9f07f6c6a669\"}\n[2026-05-07 12:52:17] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:17] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:17] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:17] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":148,\"team_id\":2} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:17] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.55,\"average_seconds_per_request\":0.55} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:18] local.NOTICE: Monitoring start {\"correlation_id\":\"ae3ec78f-432c-4e22-b73b-0413af73d9f3\",\"trace_id\":\"c2feb517-0f2b-4ad9-bce5-4d57476a164b\"}\n[2026-05-07 12:52:18] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.51,\"average_seconds_per_request\":0.51} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:18] local.NOTICE: Monitoring end {\"correlation_id\":\"ae3ec78f-432c-4e22-b73b-0413af73d9f3\",\"trace_id\":\"c2feb517-0f2b-4ad9-bce5-4d57476a164b\"}\n[2026-05-07 12:52:18] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.48,\"average_seconds_per_request\":0.48} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:19] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.49,\"average_seconds_per_request\":0.49} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:19] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.49,\"average_seconds_per_request\":0.49} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"2bf2f73f-007c-4909-925e-f1749fbf87b3\",\"trace_id\":\"8429123c-d92c-48d9-a154-29bc0aa0e2a1\"}\n[2026-05-07 12:52:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"2bf2f73f-007c-4909-925e-f1749fbf87b3\",\"trace_id\":\"8429123c-d92c-48d9-a154-29bc0aa0e2a1\"}\n[2026-05-07 12:52:20] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.48,\"average_seconds_per_request\":0.48} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:20] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.62,\"average_seconds_per_request\":0.62} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:21] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.78,\"average_seconds_per_request\":0.78} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:22] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":1.21,\"average_seconds_per_request\":1.21} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:23] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/contact/search\",\"total_requests\":1,\"total_records_fetched\":1,\"total_elapsed_seconds\":0.53,\"average_seconds_per_request\":0.53} {\"correlation_id\":\"84c9b84a-9f60-4e35-956a-ead94112d174\",\"trace_id\":\"07a542c8-266e-40e4-97ec-725d0fd3192d\"}\n[2026-05-07 12:52:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8\",\"trace_id\":\"64ccac6b-34f7-45ed-a8ac-b63adbb19107\"}\n[2026-05-07 12:52:25] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8\",\"trace_id\":\"64ccac6b-34f7-45ed-a8ac-b63adbb19107\"}\n[2026-05-07 12:52:26] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8\",\"trace_id\":\"64ccac6b-34f7-45ed-a8ac-b63adbb19107\"}\n[2026-05-07 12:52:26] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8\",\"trace_id\":\"64ccac6b-34f7-45ed-a8ac-b63adbb19107\"}\n[2026-05-07 12:52:28] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"6e1a36d0-a87a-455f-88b9-04f16718ea33\",\"trace_id\":\"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c\"}\n[2026-05-07 12:52:28] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:50:00, 2026-05-07 12:52:00] {\"correlation_id\":\"6e1a36d0-a87a-455f-88b9-04f16718ea33\",\"trace_id\":\"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c\"}\n[2026-05-07 12:52:28] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:50:00, 2026-05-07 12:52:00] {\"correlation_id\":\"6e1a36d0-a87a-455f-88b9-04f16718ea33\",\"trace_id\":\"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c\"}\n[2026-05-07 12:52:28] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"6e1a36d0-a87a-455f-88b9-04f16718ea33\",\"trace_id\":\"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c\"}\n[2026-05-07 12:52:31] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:create\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"80549428-beea-4a6c-97d3-818ca0f059f3\",\"trace_id\":\"55ddd59b-073b-4331-8cdb-baa869dcff70\"}\n[2026-05-07 12:52:31] local.INFO: [EmailSchedule] STARTING batch create {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"80549428-beea-4a6c-97d3-818ca0f059f3\",\"trace_id\":\"55ddd59b-073b-4331-8cdb-baa869dcff70\"}\n[2026-05-07 12:52:31] local.INFO: [EmailSchedule] FINISHED batch create {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"80549428-beea-4a6c-97d3-818ca0f059f3\",\"trace_id\":\"55ddd59b-073b-4331-8cdb-baa869dcff70\"}\n[2026-05-07 12:52:31] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:create\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"80549428-beea-4a6c-97d3-818ca0f059f3\",\"trace_id\":\"55ddd59b-073b-4331-8cdb-baa869dcff70\"}\n[2026-05-07 12:52:32] local.INFO: [Jiminny\\Jobs\\Mailbox\\CreateBatches] processed 2 inboxes and created 0 batches {\"userId\":null,\"batchSize\":30,\"maxBatches\":1000} {\"correlation_id\":\"92242bd6-7014-4487-a50b-1570e1a88e7a\",\"trace_id\":\"55ddd59b-073b-4331-8cdb-baa869dcff70\"}\n[2026-05-07 12:52:39] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"d467eace-3254-4ecc-8d8e-a94688d6d3ad\",\"trace_id\":\"5105ca8f-3c0d-4798-b748-5a7d6fbd7531\"}\n[2026-05-07 12:52:39] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"d467eace-3254-4ecc-8d8e-a94688d6d3ad\",\"trace_id\":\"5105ca8f-3c0d-4798-b748-5a7d6fbd7531\"}\n[2026-05-07 12:53:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"04363b29-2f82-470a-89d0-c5ce4f4779d7\",\"trace_id\":\"3c76a1f1-3348-4e2b-897c-4a216ca95147\"}\n[2026-05-07 12:53:08] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"04363b29-2f82-470a-89d0-c5ce4f4779d7\",\"trace_id\":\"3c76a1f1-3348-4e2b-897c-4a216ca95147\"}\n[2026-05-07 12:53:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"04363b29-2f82-470a-89d0-c5ce4f4779d7\",\"trace_id\":\"3c76a1f1-3348-4e2b-897c-4a216ca95147\"}\n[2026-05-07 12:53:11] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"5ebbecd0-866c-443f-965f-b6ac03735379\",\"trace_id\":\"e0a724a5-bb4b-4fe6-9fe9-36ea1c3f0326\"}\n[2026-05-07 12:53:11] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"5ebbecd0-866c-443f-965f-b6ac03735379\",\"trace_id\":\"e0a724a5-bb4b-4fe6-9fe9-36ea1c3f0326\"}\n[2026-05-07 12:53:18] local.NOTICE: Monitoring start {\"correlation_id\":\"f39f0d3c-a292-41cb-8834-45dae1f8cf47\",\"trace_id\":\"b6e7e2a7-85af-401d-afc6-bec2bdab34d7\"}\n[2026-05-07 12:53:18] local.NOTICE: Monitoring end {\"correlation_id\":\"f39f0d3c-a292-41cb-8834-45dae1f8cf47\",\"trace_id\":\"b6e7e2a7-85af-401d-afc6-bec2bdab34d7\"}\n[2026-05-07 12:53:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"419bb747-2669-496f-944b-1073496cc271\",\"trace_id\":\"4cb913a4-ef75-422b-80eb-fbfb988521ed\"}\n[2026-05-07 12:53:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"419bb747-2669-496f-944b-1073496cc271\",\"trace_id\":\"4cb913a4-ef75-422b-80eb-fbfb988521ed\"}\n[2026-05-07 12:53:22] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"f4805c97-9344-4111-8be2-2b1efeae07bb\",\"trace_id\":\"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22\"}\n[2026-05-07 12:53:22] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"f4805c97-9344-4111-8be2-2b1efeae07bb\",\"trace_id\":\"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22\"}\n[2026-05-07 12:53:22] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"f4805c97-9344-4111-8be2-2b1efeae07bb\",\"trace_id\":\"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22\"}\n[2026-05-07 12:53:22] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"f4805c97-9344-4111-8be2-2b1efeae07bb\",\"trace_id\":\"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22\"}\n[2026-05-07 12:53:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"2eadb06b-2c2e-4a7f-8920-77bd30d6cd7f\",\"trace_id\":\"75f27a23-2021-41a5-9e5f-4b1cb4f143a6\"}\n[2026-05-07 12:53:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"2eadb06b-2c2e-4a7f-8920-77bd30d6cd7f\",\"trace_id\":\"75f27a23-2021-41a5-9e5f-4b1cb4f143a6\"}\n[2026-05-07 12:54:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"ad151521-f676-4351-a70b-f44dc0b94990\",\"trace_id\":\"17e39c4c-85cb-49a4-815e-b7315a8c2249\"}\n[2026-05-07 12:54:06] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"ad151521-f676-4351-a70b-f44dc0b94990\",\"trace_id\":\"17e39c4c-85cb-49a4-815e-b7315a8c2249\"}\n[2026-05-07 12:54:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"ad151521-f676-4351-a70b-f44dc0b94990\",\"trace_id\":\"17e39c4c-85cb-49a4-815e-b7315a8c2249\"}\n[2026-05-07 12:54:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"ed0583cf-03c6-4696-b859-876c8efa4473\",\"trace_id\":\"3f9e0a3c-2178-4885-95eb-8618b8cfc042\"}\n[2026-05-07 12:54:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"ed0583cf-03c6-4696-b859-876c8efa4473\",\"trace_id\":\"3f9e0a3c-2178-4885-95eb-8618b8cfc042\"}\n[2026-05-07 12:54:10] local.NOTICE: Monitoring start {\"correlation_id\":\"7142250a-b897-4620-8ff7-fd9b3a1f3802\",\"trace_id\":\"597def1e-ca38-4cc4-8890-fdcd5baff948\"}\n[2026-05-07 12:54:10] local.NOTICE: Monitoring end {\"correlation_id\":\"7142250a-b897-4620-8ff7-fd9b3a1f3802\",\"trace_id\":\"597def1e-ca38-4cc4-8890-fdcd5baff948\"}\n[2026-05-07 12:54:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"cb2ada48-0200-4eb3-a8c5-6cb8ea43ec0d\",\"trace_id\":\"73937bdc-10b9-4508-9ef2-86420fe774fc\"}\n[2026-05-07 12:54:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"cb2ada48-0200-4eb3-a8c5-6cb8ea43ec0d\",\"trace_id\":\"73937bdc-10b9-4508-9ef2-86420fe774fc\"}\n[2026-05-07 12:54:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"8f1d8932-2839-4256-99ab-1fd13e8381c6\",\"trace_id\":\"cc090767-edc2-4a89-90c2-116f1737de7f\"}\n[2026-05-07 12:54:14] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"8f1d8932-2839-4256-99ab-1fd13e8381c6\",\"trace_id\":\"cc090767-edc2-4a89-90c2-116f1737de7f\"}\n[2026-05-07 12:54:14] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"8f1d8932-2839-4256-99ab-1fd13e8381c6\",\"trace_id\":\"cc090767-edc2-4a89-90c2-116f1737de7f\"}\n[2026-05-07 12:54:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"8f1d8932-2839-4256-99ab-1fd13e8381c6\",\"trace_id\":\"cc090767-edc2-4a89-90c2-116f1737de7f\"}\n[2026-05-07 12:54:16] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"9d324c6d-5b36-46ee-89c6-f95f86bf3f39\",\"trace_id\":\"860cdff0-9356-4e94-84cc-e011a74ba56c\"}\n[2026-05-07 12:54:16] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:52:00, 2026-05-07 12:54:00] {\"correlation_id\":\"9d324c6d-5b36-46ee-89c6-f95f86bf3f39\",\"trace_id\":\"860cdff0-9356-4e94-84cc-e011a74ba56c\"}\n[2026-05-07 12:54:16] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:52:00, 2026-05-07 12:54:00] {\"correlation_id\":\"9d324c6d-5b36-46ee-89c6-f95f86bf3f39\",\"trace_id\":\"860cdff0-9356-4e94-84cc-e011a74ba56c\"}\n[2026-05-07 12:54:16] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"9d324c6d-5b36-46ee-89c6-f95f86bf3f39\",\"trace_id\":\"860cdff0-9356-4e94-84cc-e011a74ba56c\"}\n[2026-05-07 12:54:18] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:aircall:check-and-renew\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"c2009a88-eea6-4954-8642-ef5d9cb56b42\",\"trace_id\":\"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab\"}\n[2026-05-07 12:54:18] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1496,\"provider\":\"aircall\"} {\"correlation_id\":\"c2009a88-eea6-4954-8642-ef5d9cb56b42\",\"trace_id\":\"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab\"}\n[2026-05-07 12:54:18] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1496,\"provider\":\"aircall\"} {\"correlation_id\":\"c2009a88-eea6-4954-8642-ef5d9cb56b42\",\"trace_id\":\"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab\"}\n[2026-05-07 12:54:18] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"c2009a88-eea6-4954-8642-ef5d9cb56b42\",\"trace_id\":\"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab\"}\n[2026-05-07 12:54:19] local.ERROR: [Aircall] Re-activating webhooks failed {\"team_id\":1,\"reason\":\"{\\\"message\\\":\\\"Forbidden\\\"}\"} {\"correlation_id\":\"c2009a88-eea6-4954-8642-ef5d9cb56b42\",\"trace_id\":\"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab\"}\n[2026-05-07 12:54:19] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:aircall:check-and-renew\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"c2009a88-eea6-4954-8642-ef5d9cb56b42\",\"trace_id\":\"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab\"}\n[2026-05-07 12:54:21] local.INFO: [RetryFailedDownloads] Starting {\"options\":{\"from\":null,\"to\":null,\"help\":false,\"silent\":false,\"quiet\":false,\"verbose\":false,\"version\":false,\"ansi\":null,\"no-interaction\":false,\"env\":null}} {\"correlation_id\":\"825ef2d7-b5f8-45cd-b19d-20a179b06934\",\"trace_id\":\"5825a6c8-14c9-4bec-b688-d4895cfc41cc\"}\n[2026-05-07 12:55:05] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"c0dc8e25-7a51-4023-be61-d0abd6d72e37\",\"trace_id\":\"16b8fa3e-92b1-465e-82d4-642a2d14c7c5\"}\n[2026-05-07 12:55:05] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"c0dc8e25-7a51-4023-be61-d0abd6d72e37\",\"trace_id\":\"16b8fa3e-92b1-465e-82d4-642a2d14c7c5\"}\n[2026-05-07 12:55:05] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"c0dc8e25-7a51-4023-be61-d0abd6d72e37\",\"trace_id\":\"16b8fa3e-92b1-465e-82d4-642a2d14c7c5\"}\n[2026-05-07 12:55:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"1c65fdd1-1f79-435d-b469-add46ddafd63\",\"trace_id\":\"62f2a3bb-3be7-4c76-a9dd-222bfb895fab\"}\n[2026-05-07 12:55:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"1c65fdd1-1f79-435d-b469-add46ddafd63\",\"trace_id\":\"62f2a3bb-3be7-4c76-a9dd-222bfb895fab\"}\n[2026-05-07 12:55:11] local.NOTICE: Monitoring start {\"correlation_id\":\"f115f9bc-bb59-4fc9-8c9f-8b69baba1a55\",\"trace_id\":\"e75cb5c6-6dd8-4000-8d26-4418020c7cfe\"}\n[2026-05-07 12:55:11] local.NOTICE: Monitoring end {\"correlation_id\":\"f115f9bc-bb59-4fc9-8c9f-8b69baba1a55\",\"trace_id\":\"e75cb5c6-6dd8-4000-8d26-4418020c7cfe\"}\n[2026-05-07 12:55:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"dba5c474-4d40-44da-baf2-f8b30db9a2f5\",\"trace_id\":\"adb45622-1fb0-457c-bf20-8dcceab2d62a\"}\n[2026-05-07 12:55:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"dba5c474-4d40-44da-baf2-f8b30db9a2f5\",\"trace_id\":\"adb45622-1fb0-457c-bf20-8dcceab2d62a\"}\n[2026-05-07 12:55:16] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"22c96a8e-4424-4a1f-b349-206276eefe4c\",\"trace_id\":\"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c\"}\n[2026-05-07 12:55:16] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"22c96a8e-4424-4a1f-b349-206276eefe4c\",\"trace_id\":\"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c\"}\n[2026-05-07 12:55:16] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"22c96a8e-4424-4a1f-b349-206276eefe4c\",\"trace_id\":\"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c\"}\n[2026-05-07 12:55:16] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"22c96a8e-4424-4a1f-b349-206276eefe4c\",\"trace_id\":\"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c\"}\n[2026-05-07 12:55:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:purge-stale\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"5f958e8d-1d01-4144-abd6-2513e5524ad3\",\"trace_id\":\"828bc5b7-e2aa-4443-901f-38dd94bb7cc5\"}\n[2026-05-07 12:55:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:purge-stale\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"5f958e8d-1d01-4144-abd6-2513e5524ad3\",\"trace_id\":\"828bc5b7-e2aa-4443-901f-38dd94bb7cc5\"}\n[2026-05-07 12:55:22] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:text-relay:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"6bd1c9cb-cd9a-42a9-87fe-45cb7bac687a\",\"trace_id\":\"0f2f5d66-c4c9-46a5-a31b-6937663ce1ad\"}\n[2026-05-07 12:55:22] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:text-relay:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"6bd1c9cb-cd9a-42a9-87fe-45cb7bac687a\",\"trace_id\":\"0f2f5d66-c4c9-46a5-a31b-6937663ce1ad\"}\n[2026-05-07 12:55:24] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:pre-meeting-notification\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"c5dd8132-d7e1-4caa-84d1-0a50d02df8da\",\"trace_id\":\"bc7341c5-b8e2-48ea-9670-7ec375363180\"}\n[2026-05-07 12:55:24] local.INFO: Running pre-meeting notification command {\"correlation_id\":\"c5dd8132-d7e1-4caa-84d1-0a50d02df8da\",\"trace_id\":\"bc7341c5-b8e2-48ea-9670-7ec375363180\"}\n[2026-05-07 12:55:24] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:pre-meeting-notification\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"c5dd8132-d7e1-4caa-84d1-0a50d02df8da\",\"trace_id\":\"bc7341c5-b8e2-48ea-9670-7ec375363180\"}\n[2026-05-07 12:55:26] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:start\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0\",\"trace_id\":\"efb1619f-4185-4319-9bfb-305cee0b6bfc\"}\n[2026-05-07 12:55:26] local.INFO: Running conference:monitor:start command for activities in (2026-05-07 12:45:00, 2026-05-07 12:50:00] {\"correlation_id\":\"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0\",\"trace_id\":\"efb1619f-4185-4319-9bfb-305cee0b6bfc\"}\n[2026-05-07 12:55:26] local.INFO: [conference:monitor:start] No activities found in (2026-05-07 12:45:00, 2026-05-07 12:50:00] {\"correlation_id\":\"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0\",\"trace_id\":\"efb1619f-4185-4319-9bfb-305cee0b6bfc\"}\n[2026-05-07 12:55:26] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:start\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0\",\"trace_id\":\"efb1619f-4185-4319-9bfb-305cee0b6bfc\"}\n[2026-05-07 12:55:28] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:end\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"3792b31a-080a-4fe4-9823-5602361325ba\",\"trace_id\":\"41a2fde1-48f6-4667-84b7-a2f93e9ad2da\"}\n[2026-05-07 12:55:28] local.INFO: conference:monitor:end:Jiminny\\Console\\Commands\\Activities\\MonitorMeetingEndCommand::logActivitiesEnded {\"from\":\"12:50\",\"to\":\"12:55\"} {\"correlation_id\":\"3792b31a-080a-4fe4-9823-5602361325ba\",\"trace_id\":\"41a2fde1-48f6-4667-84b7-a2f93e9ad2da\"}\n[2026-05-07 12:55:28] local.INFO: conference:monitor:end:Jiminny\\Console\\Commands\\Activities\\MonitorMeetingEndCommand::logActivitiesWithUnfinishedSession {\"from\":\"02:45\",\"to\":\"02:50\"} {\"correlation_id\":\"3792b31a-080a-4fe4-9823-5602361325ba\",\"trace_id\":\"41a2fde1-48f6-4667-84b7-a2f93e9ad2da\"}\n[2026-05-07 12:55:28] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:end\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"3792b31a-080a-4fe4-9823-5602361325ba\",\"trace_id\":\"41a2fde1-48f6-4667-84b7-a2f93e9ad2da\"}\n[2026-05-07 12:55:30] local.NOTICE: Repairing HubSpot tokens start {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:30] local.INFO: Trying to refresh HubSpot token {\"account_id\":59,\"updated_at\":\"2025-10-03 09:32:05\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:30] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:30] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":59,\"provider\":\"hubspot\",\"refreshToken\":\"97b78f6e2cc49965c00c2492b602b02708b1392551e6b3f113fbaa48992af90b\",\"state\":\"full-refresh\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.ERROR: Failed to refresh HubSpot token {\"account_id\":59,\"updated_at\":\"2025-10-03 09:32:05\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.INFO: Trying to refresh HubSpot token {\"account_id\":306,\"updated_at\":\"2023-11-27 09:30:03\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":306,\"provider\":\"hubspot\",\"refreshToken\":\"6fa6aa8cc641d131231acc3470f5c03cb3b07b2e580fb18f8acb3b1dbb72549b\",\"state\":\"full-refresh\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.ERROR: Failed to refresh HubSpot token {\"account_id\":306,\"updated_at\":\"2023-11-27 09:30:03\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.INFO: Trying to refresh HubSpot token {\"account_id\":1372,\"updated_at\":\"2025-10-02 14:47:06\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:31] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1372,\"provider\":\"hubspot\",\"refreshToken\":\"9aa73948c761da29dce46c177cf9aee1fde483a44169ca38723f9f0597d7a8c4\",\"state\":\"full-refresh\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:32] local.ERROR: Failed to refresh HubSpot token {\"account_id\":1372,\"updated_at\":\"2025-10-02 14:47:06\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:32] local.NOTICE: Repairing HubSpot tokens end {\"total\":3,\"fixed\":0,\"failed\":3} {\"correlation_id\":\"e31362f8-5362-478d-911d-099b61f96cd2\",\"trace_id\":\"2587b5d0-6bef-40a5-afd5-a15003b7cf95\"}\n[2026-05-07 12:55:40] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"crm:bullhorn:ping\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"5e676ae4-5d63-49d4-9001-559088adf06b\",\"trace_id\":\"2fcce073-dd68-4c99-b7c4-b9e03c20b8e4\"}\n[2026-05-07 12:55:40] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:pre-meeting-reminder\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"1f830896-8142-41d1-bfc9-4cbb9179ffda\",\"trace_id\":\"e348a096-7f37-4308-a6d8-66131e8be901\"}\n[2026-05-07 12:55:40] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"crm:bullhorn:ping\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"5e676ae4-5d63-49d4-9001-559088adf06b\",\"trace_id\":\"2fcce073-dd68-4c99-b7c4-b9e03c20b8e4\"}\n[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Command] Starting polling service {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Service starting {\"memory_limit\":\"256M\",\"max_execution_time\":\"0\",\"initial_memory_mb\":62.0} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Acquired polling lock {\"expires_at\":\"2026-05-07T12:57:40.609671Z\"} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:40] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:40] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:pre-meeting-reminder\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"1f830896-8142-41d1-bfc9-4cbb9179ffda\",\"trace_id\":\"e348a096-7f37-4308-a6d8-66131e8be901\"}\n[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:45] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:45] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:46] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:51] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:51] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:55:51] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:06] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:06] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:06] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"2d8b30b4-87aa-480f-9b9e-5a9c709b742a\",\"trace_id\":\"25b7be6c-1faf-430b-a724-a4ff28773a31\"}\n[2026-05-07 12:56:08] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"2d8b30b4-87aa-480f-9b9e-5a9c709b742a\",\"trace_id\":\"25b7be6c-1faf-430b-a724-a4ff28773a31\"}\n[2026-05-07 12:56:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"2d8b30b4-87aa-480f-9b9e-5a9c709b742a\",\"trace_id\":\"25b7be6c-1faf-430b-a724-a4ff28773a31\"}\n[2026-05-07 12:56:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"efd336d7-db4d-459e-b6e7-bf73454e955e\",\"trace_id\":\"0a82c3d5-0417-48c8-b88f-70ec33e2326a\"}\n[2026-05-07 12:56:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"efd336d7-db4d-459e-b6e7-bf73454e955e\",\"trace_id\":\"0a82c3d5-0417-48c8-b88f-70ec33e2326a\"}\n[2026-05-07 12:56:12] local.NOTICE: Monitoring start {\"correlation_id\":\"68481576-8ca6-4ee5-821b-07374702971d\",\"trace_id\":\"c73eac09-5d20-425f-9c22-bd6c65fc60c9\"}\n[2026-05-07 12:56:12] local.NOTICE: Monitoring end {\"correlation_id\":\"68481576-8ca6-4ee5-821b-07374702971d\",\"trace_id\":\"c73eac09-5d20-425f-9c22-bd6c65fc60c9\"}\n[2026-05-07 12:56:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"bd0cdc75-b5c2-4dbb-bc44-e36c96813d24\",\"trace_id\":\"f688cd98-c171-4e30-8c72-afc14f040861\"}\n[2026-05-07 12:56:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"bd0cdc75-b5c2-4dbb-bc44-e36c96813d24\",\"trace_id\":\"f688cd98-c171-4e30-8c72-afc14f040861\"}\n[2026-05-07 12:56:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"f01636a9-4059-4ab0-9ad2-b078d42cedbd\",\"trace_id\":\"fea938d8-aedc-40ec-b8c2-2f487e1ac808\"}\n[2026-05-07 12:56:20] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"f01636a9-4059-4ab0-9ad2-b078d42cedbd\",\"trace_id\":\"fea938d8-aedc-40ec-b8c2-2f487e1ac808\"}\n[2026-05-07 12:56:20] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"f01636a9-4059-4ab0-9ad2-b078d42cedbd\",\"trace_id\":\"fea938d8-aedc-40ec-b8c2-2f487e1ac808\"}\n[2026-05-07 12:56:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"f01636a9-4059-4ab0-9ad2-b078d42cedbd\",\"trace_id\":\"fea938d8-aedc-40ec-b8c2-2f487e1ac808\"}\n[2026-05-07 12:56:23] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"d4558901-264d-4238-8589-62a137bac1fd\",\"trace_id\":\"38e6b5dc-ebd6-46a7-8224-7374d4e58630\"}\n[2026-05-07 12:56:23] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:54:00, 2026-05-07 12:56:00] {\"correlation_id\":\"d4558901-264d-4238-8589-62a137bac1fd\",\"trace_id\":\"38e6b5dc-ebd6-46a7-8224-7374d4e58630\"}\n[2026-05-07 12:56:23] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:54:00, 2026-05-07 12:56:00] {\"correlation_id\":\"d4558901-264d-4238-8589-62a137bac1fd\",\"trace_id\":\"38e6b5dc-ebd6-46a7-8224-7374d4e58630\"}\n[2026-05-07 12:56:23] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"d4558901-264d-4238-8589-62a137bac1fd\",\"trace_id\":\"38e6b5dc-ebd6-46a7-8224-7374d4e58630\"}\n[2026-05-07 12:56:24] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"crm:sync-hubspot-objects\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"7bfaf9be-0ca1-4170-a0c9-83e0ed61881c\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:24] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"crm:sync-hubspot-objects\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"7bfaf9be-0ca1-4170-a0c9-83e0ed61881c\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:26] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:notify-not-logged\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"2541e0fa-1117-4863-9523-d723b5821a24\",\"trace_id\":\"d9600320-5133-4938-bdd1-2256dfdf8db4\"}\n[2026-05-07 12:56:26] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:notify-not-logged\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"2541e0fa-1117-4863-9523-d723b5821a24\",\"trace_id\":\"d9600320-5133-4938-bdd1-2256dfdf8db4\"}\n[2026-05-07 12:56:35] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"e444f776-37db-4c6d-b30e-20b01a089de7\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:36] local.INFO: [EmailSchedule] STARTING Inbox Sync {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"e444f776-37db-4c6d-b30e-20b01a089de7\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:36] local.INFO: [EmailSchedule] FINISHED Inbox Sync {\"host\":\"docker_lamp_1\",\"events\":2} {\"correlation_id\":\"e444f776-37db-4c6d-b30e-20b01a089de7\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:36] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"e444f776-37db-4c6d-b30e-20b01a089de7\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:36] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:36] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:36] local.INFO: [HubSpot Journal Auth] Requesting new client credentials token {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:37] local.INFO: [HubSpot Journal Auth] Successfully obtained new access token {\"expires_in\":1800,\"cached_for\":1500} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:37] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:37] local.WARNING: [HubSpot Journal Polling] Maximum empty results reached, stopping {\"empty_results\":5,\"max_empty_results\":5} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:37] local.WARNING: [HubSpot Journal Polling] Maximum empty results reached, stopping {\"empty_results\":5,\"max_empty_results\":5} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:37] local.INFO: [HubSpot Journal Polling] Service ending {\"runtime_seconds\":57,\"total_cycles\":5,\"files_downloaded\":0,\"empty_files\":0,\"other_portal_skipped\":0,\"total_events\":0,\"events_per_file\":0,\"avg_api_ms\":238.3,\"avg_download_ms\":0.0,\"avg_transform_ms\":0.0,\"avg_process_ms\":0.0,\"peak_memory_mb\":99.73} {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:37] local.INFO: [HubSpot Journal Polling] Released polling lock {\"correlation_id\":\"fa65a15d-da5b-4c86-ae85-c16937786996\",\"trace_id\":\"7e655fe3-04eb-4a0f-b056-eb64e9c75a80\"}\n[2026-05-07 12:56:50] local.INFO: [Commands/AsyncUpdateEsEntities] Starting ES update worker {\"pid\":37119,\"workerId\":\"\",\"target\":\"activities\"} {\"correlation_id\":\"902cef33-4733-4b2a-9693-affb8645cecc\",\"trace_id\":\"4ffe2bb8-67c6-422a-a846-319973cc0259\"}\n[2026-05-07 12:56:50] local.INFO: [SyncHubspotObjects] Starting sync {\"team\":\"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4\",\"usage\":23195976,\"real_usage\":65011712,\"pid\":37113} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:50] local.INFO: [Sync Mailbox] Sync start {\"inbox_id\":59} {\"correlation_id\":\"20256b2c-2b69-48f6-bdd3-61d047eb0b0d\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:50] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:50] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:50] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:50] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1499,\"provider\":\"hubspot\",\"refreshToken\":\"96f94c623a404e02ebdbf07f1b75707bb6cdbf848cbf45d418baf608c41a8d86\",\"state\":\"connected\"} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:50] local.INFO: [Inbox service] Skipping METADATA SYNC for inbox 59 due to unauthorized access to the mailbox {\"correlation_id\":\"20256b2c-2b69-48f6-bdd3-61d047eb0b0d\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:50] local.INFO: [Sync Mailbox] Sync complete {\"inbox_id\":59} {\"correlation_id\":\"20256b2c-2b69-48f6-bdd3-61d047eb0b0d\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:50] local.INFO: [Sync Mailbox] Sync start {\"inbox_id\":212} {\"correlation_id\":\"b6c31853-3729-4780-a52b-ebcce17d41b9\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:50] local.INFO: [Inbox service] Skipping METADATA SYNC for inbox 212 due to unauthorized access to the mailbox {\"correlation_id\":\"b6c31853-3729-4780-a52b-ebcce17d41b9\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:50] local.INFO: [Sync Mailbox] Sync complete {\"inbox_id\":212} {\"correlation_id\":\"b6c31853-3729-4780-a52b-ebcce17d41b9\",\"trace_id\":\"1168869e-e07c-4702-a046-42fc95a91f6d\"}\n[2026-05-07 12:56:51] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:51] local.INFO: [SocialAccountObserver] Access token was modified, encrypting {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:51] local.INFO: [SocialAccountService] Token refreshed {\"socialAccountId\":1499,\"provider\":\"hubspot\",\"state\":\"connected\"} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:51] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":148,\"team_id\":2} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:51] local.INFO: [HubSpot] Syncing opportunities using strategy: lastModified {\"team\":2} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/deals/search\",\"total_requests\":0,\"total_records_fetched\":0,\"total_elapsed_seconds\":0.3,\"average_seconds_per_request\":0} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.INFO: [SyncHubspotObjects] Sync finished {\"team\":\"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4\",\"provider\":\"hubspot\",\"status\":\"completed\",\"duration_ms\":1854.64,\"usage\":24199288,\"real_usage\":65011712,\"pid\":37113} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.ERROR: Jiminny\\Services\\Crm\\Hubspot\\Pagination\\HubspotPaginationService::getPaginatedDataGenerator(): Return value must be of type Generator, none returned {\"exception\":\"[object] (TypeError(code: 0): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService::getPaginatedDataGenerator(): Return value must be of type Generator, none returned at /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php:82)\n[stacktrace]\n#0 /home/jiminny/app/Services/Crm/Hubspot/Client.php(194): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->getPaginatedDataGenerator(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), Array, 'deals', 0, 0, NULL)\n#1 /home/jiminny/app/Services/Crm/Hubspot/OpportunitySyncStrategy/HubspotSyncStrategyBase.php(55): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client->getPaginatedDataGenerator(Array, 'deals', 0, 0, NULL)\n#2 /home/jiminny/app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php(73): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\OpportunitySyncStrategy\\\\HubspotSyncStrategyBase->fetchOpportunities(Array, 0, NULL)\n#3 /home/jiminny/app/Jobs/Crm/SyncHubspotObjects.php(118): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service->syncOpportunities(Array)\n#4 /home/jiminny/app/Jobs/Crm/SyncHubspotObjects.php(86): Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects->syncHubspotCrmObjects(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service), Object(Illuminate\\\\Support\\\\Carbon))\n#5 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects->handle(Object(Jiminny\\\\Services\\\\ResolveTeamCrmConnection), Object(Illuminate\\\\Log\\\\LogManager), Object(Jiminny\\\\Repositories\\\\TeamRepository))\n#6 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#7 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#8 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#9 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#10 /home/jiminny/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(129): Illuminate\\\\Container\\\\Container->call(Array)\n#11 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\\\Bus\\\\Dispatcher->Illuminate\\\\Bus\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#12 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\\\\Pipeline\\\\Pipeline->Illuminate\\\\Pipeline\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#13 /home/jiminny/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(133): Illuminate\\\\Pipeline\\\\Pipeline->then(Object(Closure))\n#14 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(136): Illuminate\\\\Bus\\\\Dispatcher->dispatchNow(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects), false)\n#15 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\\\Queue\\\\CallQueuedHandler->Illuminate\\\\Queue\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#16 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\\\\Pipeline\\\\Pipeline->Illuminate\\\\Pipeline\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#17 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(129): Illuminate\\\\Pipeline\\\\Pipeline->then(Object(Closure))\n#18 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(70): Illuminate\\\\Queue\\\\CallQueuedHandler->dispatchThroughMiddleware(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#19 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Jobs/Job.php(102): Illuminate\\\\Queue\\\\CallQueuedHandler->call(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Array)\n#20 /home/jiminny/app/Queue/Worker/Worker.php(71): Illuminate\\\\Queue\\\\Jobs\\\\Job->fire()\n#21 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(435): Jiminny\\\\Queue\\\\Worker\\\\Worker->process('redis', Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#22 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(201): Illuminate\\\\Queue\\\\Worker->runJob(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), 'redis', Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#23 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(148): Illuminate\\\\Queue\\\\Worker->daemon('redis', 'crm-sync,crm-up...', Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#24 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(131): Illuminate\\\\Queue\\\\Console\\\\WorkCommand->runWorker('redis', 'crm-sync,crm-up...')\n#25 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Illuminate\\\\Queue\\\\Console\\\\WorkCommand->handle()\n#26 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#27 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#28 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#29 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#30 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(211): Illuminate\\\\Container\\\\Container->call(Array)\n#31 /home/jiminny/vendor/symfony/console/Command/Command.php(341): Illuminate\\\\Console\\\\Command->execute(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#32 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(180): Symfony\\\\Component\\\\Console\\\\Command\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#33 /home/jiminny/vendor/symfony/console/Application.php(1117): Illuminate\\\\Console\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#34 /home/jiminny/vendor/symfony/console/Application.php(356): Symfony\\\\Component\\\\Console\\\\Application->doRunCommand(Object(Illuminate\\\\Queue\\\\Console\\\\WorkCommand), Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#35 /home/jiminny/vendor/symfony/console/Application.php(195): Symfony\\\\Component\\\\Console\\\\Application->doRun(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#36 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(198): Symfony\\\\Component\\\\Console\\\\Application->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#37 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1235): Illuminate\\\\Foundation\\\\Console\\\\Kernel->handle(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#38 /home/jiminny/artisan(13): Illuminate\\\\Foundation\\\\Application->handleCommand(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput))\n#39 {main}\n\"} {\"correlation_id\":\"ed0ddf67-6a40-4958-913f-a055eee12af4\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.INFO: [SyncHubspotObjects] Starting sync {\"team\":\"b2d49a54-b645-4637-a7ae-a86cfce6e8e4\",\"usage\":25235152,\"real_usage\":65011712,\"pid\":37113} {\"correlation_id\":\"0d3cf2b0-a245-4a83-9bd5-1c5788b85738\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.WARNING: [HubSpot] Account not connected for user {\"userId\":\"2ac0447f-3c8c-4ce0-baeb-b63ddb76fa9b\",\"account\":null} {\"correlation_id\":\"0d3cf2b0-a245-4a83-9bd5-1c5788b85738\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {\"crm_provider\":\"hubspot\",\"crm_owner\":130,\"team_id\":42} {\"correlation_id\":\"0d3cf2b0-a245-4a83-9bd5-1c5788b85738\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":42} {\"correlation_id\":\"0d3cf2b0-a245-4a83-9bd5-1c5788b85738\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":42} {\"correlation_id\":\"0d3cf2b0-a245-4a83-9bd5-1c5788b85738\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:52] local.INFO: [SyncHubspotObjects] Sync finished {\"team\":\"b2d49a54-b645-4637-a7ae-a86cfce6e8e4\",\"provider\":\"hubspot\",\"status\":\"disconnected\",\"duration_ms\":70.53,\"usage\":25225384,\"real_usage\":65011712,\"pid\":37113,\"reason\":\"Social account for HubSpot cannot be found. Please login to Jiminny to connect.\"} {\"correlation_id\":\"0d3cf2b0-a245-4a83-9bd5-1c5788b85738\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Starting sync {\"team\":\"b2b115eb-93ce-4d1b-929c-173757df8fba\",\"usage\":25263936,\"real_usage\":65011712,\"pid\":37113} {\"correlation_id\":\"1e46be79-1db4-4829-b19c-1548141a94e0\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.WARNING: [HubSpot] Account not connected for user {\"userId\":\"33e34a7a-1c02-4f04-87ac-22c3a385e6e3\",\"account\":{\"Jiminny\\\\Models\\\\SocialAccount\":{\"id\":306,\"sociable_id\":109,\"provider_user_id\":\"11348452\",\"expires\":1701077403,\"refresh_token_expires\":null,\"provider\":\"hubspot\",\"state\":\"full-refresh\",\"auth_scope\":null,\"retry_after\":null,\"created_at\":\"2020-09-01 16:59:04\",\"updated_at\":\"2023-11-27 09:30:03\"}}} {\"correlation_id\":\"1e46be79-1db4-4829-b19c-1548141a94e0\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {\"crm_provider\":\"hubspot\",\"crm_owner\":109,\"team_id\":29} {\"correlation_id\":\"1e46be79-1db4-4829-b19c-1548141a94e0\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":29} {\"correlation_id\":\"1e46be79-1db4-4829-b19c-1548141a94e0\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":29} {\"correlation_id\":\"1e46be79-1db4-4829-b19c-1548141a94e0\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Sync finished {\"team\":\"b2b115eb-93ce-4d1b-929c-173757df8fba\",\"provider\":\"hubspot\",\"status\":\"disconnected\",\"duration_ms\":47.7,\"usage\":25451952,\"real_usage\":65011712,\"pid\":37113,\"reason\":\"Your HubSpot account has become disconnected. Please login to Jiminny to reconnect.\"} {\"correlation_id\":\"1e46be79-1db4-4829-b19c-1548141a94e0\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Starting sync {\"team\":\"c6b9d6b0-b48d-4832-a68c-a57d60651888\",\"usage\":25490320,\"real_usage\":65011712,\"pid\":37113} {\"correlation_id\":\"0da4e096-9534-4a72-bc1f-8e61561d8e37\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.WARNING: [HubSpot] Account not connected for user {\"userId\":\"71e3aac5-fb66-47c5-a236-2d051ae3e319\",\"account\":null} {\"correlation_id\":\"0da4e096-9534-4a72-bc1f-8e61561d8e37\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {\"crm_provider\":\"hubspot\",\"crm_owner\":256,\"team_id\":49} {\"correlation_id\":\"0da4e096-9534-4a72-bc1f-8e61561d8e37\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":49} {\"correlation_id\":\"0da4e096-9534-4a72-bc1f-8e61561d8e37\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":49} {\"correlation_id\":\"0da4e096-9534-4a72-bc1f-8e61561d8e37\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Sync finished {\"team\":\"c6b9d6b0-b48d-4832-a68c-a57d60651888\",\"provider\":\"hubspot\",\"status\":\"disconnected\",\"duration_ms\":44.12,\"usage\":25547952,\"real_usage\":65011712,\"pid\":37113,\"reason\":\"Social account for HubSpot cannot be found. Please login to Jiminny to connect.\"} {\"correlation_id\":\"0da4e096-9534-4a72-bc1f-8e61561d8e37\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Starting sync {\"team\":\"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4\",\"usage\":25587032,\"real_usage\":65011712,\"pid\":37113} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":148,\"team_id\":2} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [HubSpot] Syncing opportunities using strategy: lastModified {\"team\":2} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/deals/search\",\"total_requests\":0,\"total_records_fetched\":0,\"total_elapsed_seconds\":0.28,\"average_seconds_per_request\":0} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Sync finished {\"team\":\"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4\",\"provider\":\"hubspot\",\"status\":\"completed\",\"duration_ms\":412.19,\"usage\":25739960,\"real_usage\":65011712,\"pid\":37113} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.ERROR: Jiminny\\Services\\Crm\\Hubspot\\Pagination\\HubspotPaginationService::getPaginatedDataGenerator(): Return value must be of type Generator, none returned {\"exception\":\"[object] (TypeError(code: 0): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService::getPaginatedDataGenerator(): Return value must be of type Generator, none returned at /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php:82)\n[stacktrace]\n#0 /home/jiminny/app/Services/Crm/Hubspot/Client.php(194): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->getPaginatedDataGenerator(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), Array, 'deals', 0, 0, NULL)\n#1 /home/jiminny/app/Services/Crm/Hubspot/OpportunitySyncStrategy/HubspotSyncStrategyBase.php(55): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client->getPaginatedDataGenerator(Array, 'deals', 0, 0, NULL)\n#2 /home/jiminny/app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php(73): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\OpportunitySyncStrategy\\\\HubspotSyncStrategyBase->fetchOpportunities(Array, 0, NULL)\n#3 /home/jiminny/app/Jobs/Crm/SyncHubspotObjects.php(118): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service->syncOpportunities(Array)\n#4 /home/jiminny/app/Jobs/Crm/SyncHubspotObjects.php(86): Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects->syncHubspotCrmObjects(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service), Object(Illuminate\\\\Support\\\\Carbon))\n#5 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects->handle(Object(Jiminny\\\\Services\\\\ResolveTeamCrmConnection), Object(Illuminate\\\\Log\\\\LogManager), Object(Jiminny\\\\Repositories\\\\TeamRepository))\n#6 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#7 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#8 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#9 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#10 /home/jiminny/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(129): Illuminate\\\\Container\\\\Container->call(Array)\n#11 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\\\Bus\\\\Dispatcher->Illuminate\\\\Bus\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#12 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\\\\Pipeline\\\\Pipeline->Illuminate\\\\Pipeline\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#13 /home/jiminny/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(133): Illuminate\\\\Pipeline\\\\Pipeline->then(Object(Closure))\n#14 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(136): Illuminate\\\\Bus\\\\Dispatcher->dispatchNow(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects), false)\n#15 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\\\Queue\\\\CallQueuedHandler->Illuminate\\\\Queue\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#16 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\\\\Pipeline\\\\Pipeline->Illuminate\\\\Pipeline\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#17 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(129): Illuminate\\\\Pipeline\\\\Pipeline->then(Object(Closure))\n#18 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(70): Illuminate\\\\Queue\\\\CallQueuedHandler->dispatchThroughMiddleware(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#19 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Jobs/Job.php(102): Illuminate\\\\Queue\\\\CallQueuedHandler->call(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Array)\n#20 /home/jiminny/app/Queue/Worker/Worker.php(71): Illuminate\\\\Queue\\\\Jobs\\\\Job->fire()\n#21 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(435): Jiminny\\\\Queue\\\\Worker\\\\Worker->process('redis', Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#22 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(201): Illuminate\\\\Queue\\\\Worker->runJob(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), 'redis', Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#23 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(148): Illuminate\\\\Queue\\\\Worker->daemon('redis', 'crm-sync,crm-up...', Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#24 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(131): Illuminate\\\\Queue\\\\Console\\\\WorkCommand->runWorker('redis', 'crm-sync,crm-up...')\n#25 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Illuminate\\\\Queue\\\\Console\\\\WorkCommand->handle()\n#26 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#27 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#28 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#29 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#30 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(211): Illuminate\\\\Container\\\\Container->call(Array)\n#31 /home/jiminny/vendor/symfony/console/Command/Command.php(341): Illuminate\\\\Console\\\\Command->execute(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#32 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(180): Symfony\\\\Component\\\\Console\\\\Command\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#33 /home/jiminny/vendor/symfony/console/Application.php(1117): Illuminate\\\\Console\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#34 /home/jiminny/vendor/symfony/console/Application.php(356): Symfony\\\\Component\\\\Console\\\\Application->doRunCommand(Object(Illuminate\\\\Queue\\\\Console\\\\WorkCommand), Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#35 /home/jiminny/vendor/symfony/console/Application.php(195): Symfony\\\\Component\\\\Console\\\\Application->doRun(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#36 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(198): Symfony\\\\Component\\\\Console\\\\Application->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#37 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1235): Illuminate\\\\Foundation\\\\Console\\\\Kernel->handle(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#38 /home/jiminny/artisan(13): Illuminate\\\\Foundation\\\\Application->handleCommand(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput))\n#39 {main}\n\"} {\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\",\"correlation_id\":\"ccfcef46-d2f0-4646-925b-6f1bf46fd46d\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Starting sync {\"team\":\"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4\",\"usage\":25172624,\"real_usage\":65011712,\"pid\":37113} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":148,\"team_id\":2} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [HubSpot] Syncing opportunities using strategy: lastModified {\"team\":2} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/deals/search\",\"total_requests\":0,\"total_records_fetched\":0,\"total_elapsed_seconds\":0.23,\"average_seconds_per_request\":0} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:53] local.INFO: [SyncHubspotObjects] Sync finished {\"team\":\"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4\",\"provider\":\"hubspot\",\"status\":\"completed\",\"duration_ms\":291.83,\"usage\":25225088,\"real_usage\":65011712,\"pid\":37113} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:56:54] local.ERROR: Jiminny\\Services\\Crm\\Hubspot\\Pagination\\HubspotPaginationService::getPaginatedDataGenerator(): Return value must be of type Generator, none returned {\"exception\":\"[object] (TypeError(code: 0): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService::getPaginatedDataGenerator(): Return value must be of type Generator, none returned at /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php:82)\n[stacktrace]\n#0 /home/jiminny/app/Services/Crm/Hubspot/Client.php(194): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->getPaginatedDataGenerator(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), Array, 'deals', 0, 0, NULL)\n#1 /home/jiminny/app/Services/Crm/Hubspot/OpportunitySyncStrategy/HubspotSyncStrategyBase.php(55): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client->getPaginatedDataGenerator(Array, 'deals', 0, 0, NULL)\n#2 /home/jiminny/app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php(73): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\OpportunitySyncStrategy\\\\HubspotSyncStrategyBase->fetchOpportunities(Array, 0, NULL)\n#3 /home/jiminny/app/Jobs/Crm/SyncHubspotObjects.php(118): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service->syncOpportunities(Array)\n#4 /home/jiminny/app/Jobs/Crm/SyncHubspotObjects.php(86): Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects->syncHubspotCrmObjects(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service), Object(Illuminate\\\\Support\\\\Carbon))\n#5 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects->handle(Object(Jiminny\\\\Services\\\\ResolveTeamCrmConnection), Object(Illuminate\\\\Log\\\\LogManager), Object(Jiminny\\\\Repositories\\\\TeamRepository))\n#6 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#7 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#8 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#9 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#10 /home/jiminny/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(129): Illuminate\\\\Container\\\\Container->call(Array)\n#11 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\\\Bus\\\\Dispatcher->Illuminate\\\\Bus\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#12 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\\\\Pipeline\\\\Pipeline->Illuminate\\\\Pipeline\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#13 /home/jiminny/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(133): Illuminate\\\\Pipeline\\\\Pipeline->then(Object(Closure))\n#14 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(136): Illuminate\\\\Bus\\\\Dispatcher->dispatchNow(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects), false)\n#15 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\\\Queue\\\\CallQueuedHandler->Illuminate\\\\Queue\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#16 /home/jiminny/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\\\\Pipeline\\\\Pipeline->Illuminate\\\\Pipeline\\\\{closure}(Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#17 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(129): Illuminate\\\\Pipeline\\\\Pipeline->then(Object(Closure))\n#18 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(70): Illuminate\\\\Queue\\\\CallQueuedHandler->dispatchThroughMiddleware(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Object(Jiminny\\\\Jobs\\\\Crm\\\\SyncHubspotObjects))\n#19 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Jobs/Job.php(102): Illuminate\\\\Queue\\\\CallQueuedHandler->call(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Array)\n#20 /home/jiminny/app/Queue/Worker/Worker.php(71): Illuminate\\\\Queue\\\\Jobs\\\\Job->fire()\n#21 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(435): Jiminny\\\\Queue\\\\Worker\\\\Worker->process('redis', Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#22 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(201): Illuminate\\\\Queue\\\\Worker->runJob(Object(Illuminate\\\\Queue\\\\Jobs\\\\RedisJob), 'redis', Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#23 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(148): Illuminate\\\\Queue\\\\Worker->daemon('redis', 'crm-sync,crm-up...', Object(Illuminate\\\\Queue\\\\WorkerOptions))\n#24 /home/jiminny/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(131): Illuminate\\\\Queue\\\\Console\\\\WorkCommand->runWorker('redis', 'crm-sync,crm-up...')\n#25 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Illuminate\\\\Queue\\\\Console\\\\WorkCommand->handle()\n#26 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#27 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#28 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#29 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#30 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(211): Illuminate\\\\Container\\\\Container->call(Array)\n#31 /home/jiminny/vendor/symfony/console/Command/Command.php(341): Illuminate\\\\Console\\\\Command->execute(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#32 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(180): Symfony\\\\Component\\\\Console\\\\Command\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#33 /home/jiminny/vendor/symfony/console/Application.php(1117): Illuminate\\\\Console\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#34 /home/jiminny/vendor/symfony/console/Application.php(356): Symfony\\\\Component\\\\Console\\\\Application->doRunCommand(Object(Illuminate\\\\Queue\\\\Console\\\\WorkCommand), Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#35 /home/jiminny/vendor/symfony/console/Application.php(195): Symfony\\\\Component\\\\Console\\\\Application->doRun(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#36 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(198): Symfony\\\\Component\\\\Console\\\\Application->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#37 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1235): Illuminate\\\\Foundation\\\\Console\\\\Kernel->handle(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#38 /home/jiminny/artisan(13): Illuminate\\\\Foundation\\\\Application->handleCommand(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput))\n#39 {main}\n\"} {\"correlation_id\":\"eb2b7ebe-9423-4dbc-a38b-e01816fd6aea\",\"trace_id\":\"ba7f9eee-8dcb-4c94-acb0-18f9363757ad\"}\n[2026-05-07 12:57:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"854299be-d77a-48bc-870c-b78333916d69\",\"trace_id\":\"89c1eb6c-bc78-419c-9304-b770093d5692\"}\n[2026-05-07 12:57:06] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"854299be-d77a-48bc-870c-b78333916d69\",\"trace_id\":\"89c1eb6c-bc78-419c-9304-b770093d5692\"}\n[2026-05-07 12:57:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"854299be-d77a-48bc-870c-b78333916d69\",\"trace_id\":\"89c1eb6c-bc78-419c-9304-b770093d5692\"}\n[2026-05-07 12:57:16] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"c4e512a3-a227-4569-bcd2-3258a9142d46\",\"trace_id\":\"016bf668-6712-4c0f-8c8c-c2e411a37889\"}\n[2026-05-07 12:57:16] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"c4e512a3-a227-4569-bcd2-3258a9142d46\",\"trace_id\":\"016bf668-6712-4c0f-8c8c-c2e411a37889\"}\n[2026-05-07 12:57:19] local.NOTICE: Monitoring start {\"correlation_id\":\"4c2d4775-716d-4ca6-b94d-cb17dace29a7\",\"trace_id\":\"e969e10d-e5f0-44c6-9767-97a70e05cfe5\"}\n[2026-05-07 12:57:19] local.NOTICE: Monitoring end {\"correlation_id\":\"4c2d4775-716d-4ca6-b94d-cb17dace29a7\",\"trace_id\":\"e969e10d-e5f0-44c6-9767-97a70e05cfe5\"}\n[2026-05-07 12:57:22] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"d03e9546-bfd0-44c6-84ee-299b1e6c14a2\",\"trace_id\":\"acbab6e5-17fc-4b11-907d-ff87322285d7\"}\n[2026-05-07 12:57:22] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"d03e9546-bfd0-44c6-84ee-299b1e6c14a2\",\"trace_id\":\"acbab6e5-17fc-4b11-907d-ff87322285d7\"}\n[2026-05-07 12:57:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"a2c0095a-18b2-427e-825b-c68c9dbf63a1\",\"trace_id\":\"9b170d6a-ed10-4a41-af79-684c99021967\"}\n[2026-05-07 12:57:25] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"a2c0095a-18b2-427e-825b-c68c9dbf63a1\",\"trace_id\":\"9b170d6a-ed10-4a41-af79-684c99021967\"}\n[2026-05-07 12:57:25] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"a2c0095a-18b2-427e-825b-c68c9dbf63a1\",\"trace_id\":\"9b170d6a-ed10-4a41-af79-684c99021967\"}\n[2026-05-07 12:57:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"a2c0095a-18b2-427e-825b-c68c9dbf63a1\",\"trace_id\":\"9b170d6a-ed10-4a41-af79-684c99021967\"}\n[2026-05-07 12:57:27] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:create\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"c4e70056-ceab-4c44-874a-8042963ce3ea\",\"trace_id\":\"011a70aa-ebb2-4ca8-aef6-4b4cca233da7\"}\n[2026-05-07 12:57:27] local.INFO: [EmailSchedule] STARTING batch create {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"c4e70056-ceab-4c44-874a-8042963ce3ea\",\"trace_id\":\"011a70aa-ebb2-4ca8-aef6-4b4cca233da7\"}\n[2026-05-07 12:57:27] local.INFO: [EmailSchedule] FINISHED batch create {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"c4e70056-ceab-4c44-874a-8042963ce3ea\",\"trace_id\":\"011a70aa-ebb2-4ca8-aef6-4b4cca233da7\"}\n[2026-05-07 12:57:27] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:create\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"c4e70056-ceab-4c44-874a-8042963ce3ea\",\"trace_id\":\"011a70aa-ebb2-4ca8-aef6-4b4cca233da7\"}\n[2026-05-07 12:57:28] local.INFO: [Jiminny\\Jobs\\Mailbox\\CreateBatches] processed 2 inboxes and created 0 batches {\"userId\":null,\"batchSize\":30,\"maxBatches\":1000} {\"correlation_id\":\"c296bf83-9f7c-4228-b6f5-99db6040fa01\",\"trace_id\":\"011a70aa-ebb2-4ca8-aef6-4b4cca233da7\"}\n[2026-05-07 12:58:06] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"a9e2de8b-b538-437e-bbe7-82636da81995\",\"trace_id\":\"e517ae80-e149-490c-b719-309e898b3c93\"}\n[2026-05-07 12:58:06] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"a9e2de8b-b538-437e-bbe7-82636da81995\",\"trace_id\":\"e517ae80-e149-490c-b719-309e898b3c93\"}\n[2026-05-07 12:58:06] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"a9e2de8b-b538-437e-bbe7-82636da81995\",\"trace_id\":\"e517ae80-e149-490c-b719-309e898b3c93\"}\n[2026-05-07 12:58:06] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":148,\"team_id\":2} {\"correlation_id\":\"a9e2de8b-b538-437e-bbe7-82636da81995\",\"trace_id\":\"e517ae80-e149-490c-b719-309e898b3c93\"}\n[2026-05-07 12:58:06] local.ERROR: Client error: `POST https://api.hubapi.com/crm/v3/objects/contact/search` resulted in a `429 Too Many Requests` response:\n{\"status\":\"error\",\"message\":\"You have reached your secondly limit.\",\"errorType\":\"RATE_LIMIT\",\"correlationId\":\"019e0284-5 (truncated...)\n {\"exception\":\"[object] (SevenShores\\\\Hubspot\\\\Exceptions\\\\BadRequest(code: 429): Client error: `POST https://api.hubapi.com/crm/v3/objects/contact/search` resulted in a `429 Too Many Requests` response:\n{\\\"status\\\":\\\"error\\\",\\\"message\\\":\\\"You have reached your secondly limit.\\\",\\\"errorType\\\":\\\"RATE_LIMIT\\\",\\\"correlationId\\\":\\\"019e0284-5 (truncated...)\n at /home/jiminny/vendor/hubspot/hubspot-php/src/Exceptions/HubspotException.php:24)\n[stacktrace]\n#0 /home/jiminny/vendor/hubspot/hubspot-php/src/Http/Client.php(125): SevenShores\\\\Hubspot\\\\Exceptions\\\\HubspotException::create(Object(GuzzleHttp\\\\Exception\\\\ClientException))\n#1 /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php(163): SevenShores\\\\Hubspot\\\\Http\\\\Client->request('POST', 'https://api.hub...', Array)\n#2 /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php(51): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->executeSearchRequest(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), 'https://api.hub...', Array, Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\PaginationState))\n#3 /home/jiminny/app/Services/Crm/Hubspot/Client.php(194): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->getPaginatedDataGenerator(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), Array, 'contact', 0, 0, NULL)\n#4 /home/jiminny/app/Services/Crm/Hubspot/Client.php(175): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client->getPaginatedDataGenerator(Array, 'contact', 0, 0, NULL)\n#5 /home/jiminny/app/Services/Crm/Hubspot/Service.php(1203): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client->getPaginatedData(Array, 'contact')\n#6 /home/jiminny/app/Console/Commands/JiminnyDebugCommand.php(353): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service->matchByName('Robot')\n#7 /home/jiminny/app/Console/Commands/JiminnyDebugCommand.php(44): Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand->rateLimit()\n#8 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand->handle(Object(Jiminny\\\\Jobs\\\\JobDispatcher), Object(Jiminny\\\\Services\\\\Kiosk\\\\AutomatedReports\\\\AutomatedReportsService), Object(Jiminny\\\\Repositories\\\\AutomatedReportsRepository), Object(Jiminny\\\\Services\\\\UserPilot\\\\UserPilotClient))\n#9 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#10 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#11 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#12 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#13 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(211): Illuminate\\\\Container\\\\Container->call(Array)\n#14 /home/jiminny/vendor/symfony/console/Command/Command.php(341): Illuminate\\\\Console\\\\Command->execute(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#15 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(180): Symfony\\\\Component\\\\Console\\\\Command\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#16 /home/jiminny/vendor/symfony/console/Application.php(1117): Illuminate\\\\Console\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#17 /home/jiminny/vendor/symfony/console/Application.php(356): Symfony\\\\Component\\\\Console\\\\Application->doRunCommand(Object(Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand), Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#18 /home/jiminny/vendor/symfony/console/Application.php(195): Symfony\\\\Component\\\\Console\\\\Application->doRun(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#19 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(198): Symfony\\\\Component\\\\Console\\\\Application->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#20 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1235): Illuminate\\\\Foundation\\\\Console\\\\Kernel->handle(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#21 /home/jiminny/artisan(13): Illuminate\\\\Foundation\\\\Application->handleCommand(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput))\n#22 {main}\n\n[previous exception] [object] (GuzzleHttp\\\\Exception\\\\ClientException(code: 429): Client error: `POST https://api.hubapi.com/crm/v3/objects/contact/search` resulted in a `429 Too Many Requests` response:\n{\\\"status\\\":\\\"error\\\",\\\"message\\\":\\\"You have reached your secondly limit.\\\",\\\"errorType\\\":\\\"RATE_LIMIT\\\",\\\"correlationId\\\":\\\"019e0284-5 (truncated...)\n at /home/jiminny/vendor/guzzlehttp/guzzle/src/Exception/RequestException.php:111)\n[stacktrace]\n#0 /home/jiminny/vendor/guzzlehttp/guzzle/src/Middleware.php(72): GuzzleHttp\\\\Exception\\\\RequestException::create(Object(GuzzleHttp\\\\Psr7\\\\Request), Object(GuzzleHttp\\\\Psr7\\\\Response), NULL, Array, NULL)\n#1 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(209): GuzzleHttp\\\\Middleware::GuzzleHttp\\\\{closure}(Object(GuzzleHttp\\\\Psr7\\\\Response))\n#2 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(158): GuzzleHttp\\\\Promise\\\\Promise::callHandler(1, Object(GuzzleHttp\\\\Psr7\\\\Response), NULL)\n#3 /home/jiminny/vendor/guzzlehttp/promises/src/TaskQueue.php(52): GuzzleHttp\\\\Promise\\\\Promise::GuzzleHttp\\\\Promise\\\\{closure}()\n#4 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(251): GuzzleHttp\\\\Promise\\\\TaskQueue->run(true)\n#5 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(227): GuzzleHttp\\\\Promise\\\\Promise->invokeWaitFn()\n#6 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(272): GuzzleHttp\\\\Promise\\\\Promise->waitIfPending()\n#7 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(229): GuzzleHttp\\\\Promise\\\\Promise->invokeWaitList()\n#8 /home/jiminny/vendor/guzzlehttp/promises/src/Promise.php(69): GuzzleHttp\\\\Promise\\\\Promise->waitIfPending()\n#9 /home/jiminny/vendor/guzzlehttp/guzzle/src/Client.php(189): GuzzleHttp\\\\Promise\\\\Promise->wait()\n#10 /home/jiminny/vendor/hubspot/hubspot-php/src/Http/Client.php(113): GuzzleHttp\\\\Client->request('POST', 'https://api.hub...', Array)\n#11 /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php(163): SevenShores\\\\Hubspot\\\\Http\\\\Client->request('POST', 'https://api.hub...', Array)\n#12 /home/jiminny/app/Services/Crm/Hubspot/Pagination/HubspotPaginationService.php(51): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->executeSearchRequest(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), 'https://api.hub...', Array, Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\PaginationState))\n#13 /home/jiminny/app/Services/Crm/Hubspot/Client.php(194): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Pagination\\\\HubspotPaginationService->getPaginatedDataGenerator(Object(Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client), Array, 'contact', 0, 0, NULL)\n#14 /home/jiminny/app/Services/Crm/Hubspot/Client.php(175): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client->getPaginatedDataGenerator(Array, 'contact', 0, 0, NULL)\n#15 /home/jiminny/app/Services/Crm/Hubspot/Service.php(1203): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Client->getPaginatedData(Array, 'contact')\n#16 /home/jiminny/app/Console/Commands/JiminnyDebugCommand.php(353): Jiminny\\\\Services\\\\Crm\\\\Hubspot\\\\Service->matchByName('Robot')\n#17 /home/jiminny/app/Console/Commands/JiminnyDebugCommand.php(44): Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand->rateLimit()\n#18 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand->handle(Object(Jiminny\\\\Jobs\\\\JobDispatcher), Object(Jiminny\\\\Services\\\\Kiosk\\\\AutomatedReports\\\\AutomatedReportsService), Object(Jiminny\\\\Repositories\\\\AutomatedReportsRepository), Object(Jiminny\\\\Services\\\\UserPilot\\\\UserPilotClient))\n#19 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\\\Container\\\\BoundMethod::Illuminate\\\\Container\\\\{closure}()\n#20 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\\\Container\\\\Util::unwrapIfClosure(Object(Closure))\n#21 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\\\Container\\\\BoundMethod::callBoundMethod(Object(Illuminate\\\\Foundation\\\\Application), Array, Object(Closure))\n#22 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\\\Container\\\\BoundMethod::call(Object(Illuminate\\\\Foundation\\\\Application), Array, Array, NULL)\n#23 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(211): Illuminate\\\\Container\\\\Container->call(Array)\n#24 /home/jiminny/vendor/symfony/console/Command/Command.php(341): Illuminate\\\\Console\\\\Command->execute(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#25 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(180): Symfony\\\\Component\\\\Console\\\\Command\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Illuminate\\\\Console\\\\OutputStyle))\n#26 /home/jiminny/vendor/symfony/console/Application.php(1117): Illuminate\\\\Console\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#27 /home/jiminny/vendor/symfony/console/Application.php(356): Symfony\\\\Component\\\\Console\\\\Application->doRunCommand(Object(Jiminny\\\\Console\\\\Commands\\\\JiminnyDebugCommand), Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#28 /home/jiminny/vendor/symfony/console/Application.php(195): Symfony\\\\Component\\\\Console\\\\Application->doRun(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#29 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(198): Symfony\\\\Component\\\\Console\\\\Application->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#30 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1235): Illuminate\\\\Foundation\\\\Console\\\\Kernel->handle(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\n#31 /home/jiminny/artisan(13): Illuminate\\\\Foundation\\\\Application->handleCommand(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput))\n#32 {main}\n\"} {\"correlation_id\":\"a9e2de8b-b538-437e-bbe7-82636da81995\",\"trace_id\":\"e517ae80-e149-490c-b719-309e898b3c93\"}\n[2026-05-07 12:58:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"fb59e309-d2cc-4fe0-9db2-544112c25477\",\"trace_id\":\"28ccdd4f-bf3a-4545-bc8a-d94188f8204f\"}\n[2026-05-07 12:58:10] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"fb59e309-d2cc-4fe0-9db2-544112c25477\",\"trace_id\":\"28ccdd4f-bf3a-4545-bc8a-d94188f8204f\"}\n[2026-05-07 12:58:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"fb59e309-d2cc-4fe0-9db2-544112c25477\",\"trace_id\":\"28ccdd4f-bf3a-4545-bc8a-d94188f8204f\"}\n[2026-05-07 12:58:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"bff14f9f-db1d-4b6c-bd92-ca810b31790a\",\"trace_id\":\"ed08145b-94b8-4585-8e81-0ad478d038dc\"}\n[2026-05-07 12:58:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"bff14f9f-db1d-4b6c-bd92-ca810b31790a\",\"trace_id\":\"ed08145b-94b8-4585-8e81-0ad478d038dc\"}\n[2026-05-07 12:58:16] local.NOTICE: Monitoring start {\"correlation_id\":\"54ed6493-c74e-4491-b2ff-9404528f1525\",\"trace_id\":\"9a1f78c0-6e74-482c-a091-8367df3d0f70\"}\n[2026-05-07 12:58:16] local.NOTICE: Monitoring end {\"correlation_id\":\"54ed6493-c74e-4491-b2ff-9404528f1525\",\"trace_id\":\"9a1f78c0-6e74-482c-a091-8367df3d0f70\"}\n[2026-05-07 12:58:24] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"7f141a32-060d-4123-bf20-8a8d7abc1482\",\"trace_id\":\"f7fdcb6b-932a-4f6b-ad95-f111628d6cf7\"}\n[2026-05-07 12:58:24] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"7f141a32-060d-4123-bf20-8a8d7abc1482\",\"trace_id\":\"f7fdcb6b-932a-4f6b-ad95-f111628d6cf7\"}\n[2026-05-07 12:58:36] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"f586fc15-711b-4199-8fdf-dcd2df95af0c\",\"trace_id\":\"828fb459-3b7f-4196-a690-12fc9ce99b1d\"}\n[2026-05-07 12:58:36] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"f586fc15-711b-4199-8fdf-dcd2df95af0c\",\"trace_id\":\"828fb459-3b7f-4196-a690-12fc9ce99b1d\"}\n[2026-05-07 12:58:37] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"f586fc15-711b-4199-8fdf-dcd2df95af0c\",\"trace_id\":\"828fb459-3b7f-4196-a690-12fc9ce99b1d\"}\n[2026-05-07 12:58:37] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"f586fc15-711b-4199-8fdf-dcd2df95af0c\",\"trace_id\":\"828fb459-3b7f-4196-a690-12fc9ce99b1d\"}\n[2026-05-07 12:58:40] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"01d4e25d-56d5-4c89-bc29-d873e21cc16f\",\"trace_id\":\"ee1fe1ac-362b-47c1-9db2-7915a30cf0f2\"}\n[2026-05-07 12:58:40] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:56:00, 2026-05-07 12:58:00] {\"correlation_id\":\"01d4e25d-56d5-4c89-bc29-d873e21cc16f\",\"trace_id\":\"ee1fe1ac-362b-47c1-9db2-7915a30cf0f2\"}\n[2026-05-07 12:58:40] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:56:00, 2026-05-07 12:58:00] {\"correlation_id\":\"01d4e25d-56d5-4c89-bc29-d873e21cc16f\",\"trace_id\":\"ee1fe1ac-362b-47c1-9db2-7915a30cf0f2\"}\n[2026-05-07 12:58:40] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"01d4e25d-56d5-4c89-bc29-d873e21cc16f\",\"trace_id\":\"ee1fe1ac-362b-47c1-9db2-7915a30cf0f2\"}\n[2026-05-07 12:58:48] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"924e149e-3462-4043-87da-00838220b970\",\"trace_id\":\"7d0922db-8131-4a52-a0c5-2a7a78df42e8\"}\n[2026-05-07 12:58:48] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"calendar:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:48] local.NOTICE: Calendar sync start {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:48] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"924e149e-3462-4043-87da-00838220b970\",\"trace_id\":\"7d0922db-8131-4a52-a0c5-2a7a78df42e8\"}\n[2026-05-07 12:58:49] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1393,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:49] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1393,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:49] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:49] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1393,\"provider\":\"google\",\"refreshToken\":\"5aa7e2d96b53201cd16fca5d2e4ef3ad03320971fc064781d18aee3ae7b99fbf\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1393,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Account has been deleted\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1393,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1387,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1387,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1387,\"provider\":\"google\",\"refreshToken\":\"8157ac6de94842937194009e9c50e459253600f799dacf6a40755ffdbeb5bba6\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1387,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Account has been deleted\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1387,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1348,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1348,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1348,\"provider\":\"google\",\"refreshToken\":\"9e7d13d3032d0cb1b79d8e95aef01383e8e91eb52ff8ee960c8a0b6b95cd8c73\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1348,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Bad Request\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1348,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1361,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:50] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1361,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1361,\"provider\":\"google\",\"refreshToken\":\"6c843da199c2b9907445329304fcc4ec5057a4ee748d8299641764395c08e1fd\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1361,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Account has been deleted\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1361,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1310,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1310,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1310,\"provider\":\"google\",\"refreshToken\":\"e34818922c2830a660813a63f6169a4a9a992ae2cccd7dc8dd7796cfdb470ef1\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1310,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Bad Request\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1310,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1333,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1333,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1333,\"provider\":\"google\",\"refreshToken\":\"6c902986546d8e8da1dc539b046cdc1d458f519acc972e5b5f1d6a1a295165e0\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1333,\"provider\":\"google\",\"responseBody\":{\"error\":\"unauthorized_client\",\"error_description\":\"Unauthorized\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:51] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1333,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1368,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1368,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1368,\"provider\":\"google\",\"refreshToken\":\"d2f128898ff8543bd16b69cfae37896ab85119b0f5ed2b431d739593bb600333\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1368,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Bad Request\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1368,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1365,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1365,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1365,\"provider\":\"google\",\"refreshToken\":\"7676e4a9afcd082b413248ab5ec6e487021fec6a9bdf315860a59cefad9caad8\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1365,\"provider\":\"google\",\"responseBody\":{\"error\":\"unauthorized_client\",\"error_description\":\"Unauthorized\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1365,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1364,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1364,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:52] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1364,\"provider\":\"google\",\"refreshToken\":\"dd5882ebce76e645292ce33ae74238abbb77c0a4ecc6a2bfe723cad82e72ba8e\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1364,\"provider\":\"google\",\"responseBody\":{\"error\":\"unauthorized_client\",\"error_description\":\"Unauthorized\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1364,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1370,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1370,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1370,\"provider\":\"office\",\"refreshToken\":\"b7ee8035306d0043cea6e00e7c4fe14f745e44074a1194db62a31cdf8b70af3e\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1370,\"provider\":\"office\",\"responseBody\":\"{\\\"error\\\":\\\"invalid_client\\\",\\\"error_description\\\":\\\"AADSTS7000215: Invalid client secret provided. Ensure the secret being sent in the request is the client secret value, not the client secret ID, for a secret added to app 'bbcbb2ef-6200-4fae-82bd-d81f5dd738da'. Trace ID: ef9bb388-453e-4744-a2e1-95e49ced1700 Correlation ID: 3b889c73-f943-4048-ba3b-63ac50581245 Timestamp: 2026-05-07 12:58:53Z\\\",\\\"error_codes\\\":[7000215],\\\"timestamp\\\":\\\"2026-05-07 12:58:53Z\\\",\\\"trace_id\\\":\\\"ef9bb388-453e-4744-a2e1-95e49ced1700\\\",\\\"correlation_id\\\":\\\"3b889c73-f943-4048-ba3b-63ac50581245\\\",\\\"error_uri\\\":\\\"https://login.microsoftonline.com/error?code=7000215\\\"}\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1370,\"provider\":\"office\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1202,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1202,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:53] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1202,\"provider\":\"office\",\"refreshToken\":\"b458799ccc29b21a6e2eb5260fdb63e49ccba21bf942a3973fb63799bd7f0afe\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1202,\"provider\":\"office\",\"responseBody\":\"{\\\"error\\\":\\\"invalid_client\\\",\\\"error_description\\\":\\\"AADSTS7000215: Invalid client secret provided. Ensure the secret being sent in the request is the client secret value, not the client secret ID, for a secret added to app 'bbcbb2ef-6200-4fae-82bd-d81f5dd738da'. Trace ID: 0b8181c0-c858-4d17-af69-c23b7f5a0a00 Correlation ID: 2ce9e931-f423-4048-b1d7-ae1910cd4834 Timestamp: 2026-05-07 12:58:54Z\\\",\\\"error_codes\\\":[7000215],\\\"timestamp\\\":\\\"2026-05-07 12:58:54Z\\\",\\\"trace_id\\\":\\\"0b8181c0-c858-4d17-af69-c23b7f5a0a00\\\",\\\"correlation_id\\\":\\\"2ce9e931-f423-4048-b1d7-ae1910cd4834\\\",\\\"error_uri\\\":\\\"https://login.microsoftonline.com/error?code=7000215\\\"}\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1202,\"provider\":\"office\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1502,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1502,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: Calendar sync job dispatched {\"calendar_id\":501} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1300,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1300,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1300,\"provider\":\"google\",\"refreshToken\":\"4b811db0725fd9602a95943519a7da935e2a5065da7d9ebfcb170752e3e1ddb8\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1300,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Account has been deleted\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1300,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1409,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1409,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:54] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1409,\"provider\":\"google\",\"refreshToken\":\"e2a3f2d06894894eed1ee87d9db1ace77d4d42ee6e1288a8940ad2c10333b0c4\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1409,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Bad Request\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1409,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1352,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1352,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1352,\"provider\":\"google\",\"refreshToken\":\"dd4b16b00fdc1216da6b717c02338c073636e29162826b2de6db3f064fc029eb\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1352,\"provider\":\"google\",\"responseBody\":{\"error\":\"unauthorized_client\",\"error_description\":\"Unauthorized\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1352,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1296,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1296,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:55] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1296,\"provider\":\"office\",\"refreshToken\":\"011ae723c9d800c674e0b4be76f49fc046dac7d501b66c59ef0d9549cfa56ae5\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1296,\"provider\":\"office\",\"responseBody\":\"{\\\"error\\\":\\\"invalid_client\\\",\\\"error_description\\\":\\\"AADSTS7000215: Invalid client secret provided. Ensure the secret being sent in the request is the client secret value, not the client secret ID, for a secret added to app 'bbcbb2ef-6200-4fae-82bd-d81f5dd738da'. Trace ID: 4f38b1ca-479e-445c-8db5-29366d0a0c00 Correlation ID: d0a4d623-1a23-4fcc-aebf-ccafeed44a92 Timestamp: 2026-05-07 12:58:56Z\\\",\\\"error_codes\\\":[7000215],\\\"timestamp\\\":\\\"2026-05-07 12:58:56Z\\\",\\\"trace_id\\\":\\\"4f38b1ca-479e-445c-8db5-29366d0a0c00\\\",\\\"correlation_id\\\":\\\"d0a4d623-1a23-4fcc-aebf-ccafeed44a92\\\",\\\"error_uri\\\":\\\"https://login.microsoftonline.com/error?code=7000215\\\"}\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1296,\"provider\":\"office\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":391,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":391,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":391,\"provider\":\"office\",\"refreshToken\":\"00045eebae0f39b34887c6d53f92ae78064f7145e1f4b67754aebd03cfb2d881\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1502,\"provider\":\"google\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1502,\"provider\":\"google\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [Calendar] Processing sync {\"calendarId\":\"a33076c1-8d97-431a-99f0-85c9524e118b\",\"from\":null,\"to\":null,\"delta\":\"CIiFh8TP44kDEIiFh8TP44kDGAUgkZvkzgIokZvkzgI=\",\"last_sync\":\"2024-12-09 07:12:53\",\"dateMode\":\"daily\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"integration-app\",\"crm_owner\":1695,\"team_id\":3143} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1502,\"provider\":\"google\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1502,\"provider\":\"google\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":391,\"provider\":\"office\",\"responseBody\":\"{\\\"error\\\":\\\"invalid_client\\\",\\\"error_description\\\":\\\"AADSTS7000215: Invalid client secret provided. Ensure the secret being sent in the request is the client secret value, not the client secret ID, for a secret added to app 'bbcbb2ef-6200-4fae-82bd-d81f5dd738da'. Trace ID: 1791a948-a974-424b-9246-7fedfa913b00 Correlation ID: b0e7bf62-d69e-49dd-b7c9-9550f0bd2aec Timestamp: 2026-05-07 12:58:56Z\\\",\\\"error_codes\\\":[7000215],\\\"timestamp\\\":\\\"2026-05-07 12:58:56Z\\\",\\\"trace_id\\\":\\\"1791a948-a974-424b-9246-7fedfa913b00\\\",\\\"correlation_id\\\":\\\"b0e7bf62-d69e-49dd-b7c9-9550f0bd2aec\\\",\\\"error_uri\\\":\\\"https://login.microsoftonline.com/error?code=7000215\\\"}\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":391,\"provider\":\"office\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1271,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1271,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:56] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1271,\"provider\":\"office\",\"refreshToken\":\"118cde2c06993147b07ccaec4cbcd5026a819dea6c71081166a492933e392afb\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [Google Calendar] Failed to watch channel for calendar {\"calendarId\":\"a33076c1-8d97-431a-99f0-85c9524e118b\",\"code\":400,\"reason\":\"{\n \\\"error\\\": {\n \\\"errors\\\": [\n {\n \\\"domain\\\": \\\"global\\\",\n \\\"reason\\\": \\\"push.webhookUrlNotHttps\\\",\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n ],\n \\\"code\\\": 400,\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n}\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.WARNING: [Calendar] Sync failed {\"calendarId\":\"a33076c1-8d97-431a-99f0-85c9524e118b\",\"code\":400,\"reason\":\"{\n \\\"error\\\": {\n \\\"errors\\\": [\n {\n \\\"domain\\\": \\\"global\\\",\n \\\"reason\\\": \\\"push.webhookUrlNotHttps\\\",\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n ],\n \\\"code\\\": 400,\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n}\"} {\"correlation_id\":\"415d01eb-54ca-4663-adfe-384b7045952d\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1271,\"provider\":\"office\",\"responseBody\":\"{\\\"error\\\":\\\"invalid_client\\\",\\\"error_description\\\":\\\"AADSTS7000215: Invalid client secret provided. Ensure the secret being sent in the request is the client secret value, not the client secret ID, for a secret added to app 'bbcbb2ef-6200-4fae-82bd-d81f5dd738da'. Trace ID: 2be27598-8820-475c-b6ca-a30513720c00 Correlation ID: d3ed2a98-4aa9-4a63-819b-d36fd20b8d62 Timestamp: 2026-05-07 12:58:57Z\\\",\\\"error_codes\\\":[7000215],\\\"timestamp\\\":\\\"2026-05-07 12:58:57Z\\\",\\\"trace_id\\\":\\\"2be27598-8820-475c-b6ca-a30513720c00\\\",\\\"correlation_id\\\":\\\"d3ed2a98-4aa9-4a63-819b-d36fd20b8d62\\\",\\\"error_uri\\\":\\\"https://login.microsoftonline.com/error?code=7000215\\\"}\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1271,\"provider\":\"office\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1351,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1351,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1351,\"provider\":\"google\",\"refreshToken\":\"4271d15b9e60a606439caddc68337f783e472c85b03dacff14d1b6dfded9051c\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1351,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Bad Request\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1351,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1366,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1366,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1366,\"provider\":\"google\",\"refreshToken\":\"ae21385059b2eebfd43f68aecd56eccd702a1aabb6598f1f7ab594ed8af491b4\",\"state\":\"full-refresh\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1366,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Bad Request\"}} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1366,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1115,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1115,\"provider\":\"google\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:57] local.INFO: Calendar sync job dispatched {\"calendar_id\":378} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:58] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1421,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:58] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1421,\"provider\":\"office\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:58] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:58] local.INFO: Calendar sync job dispatched {\"calendar_id\":504} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:58] local.NOTICE: Calendar sync end {\"retrieved_calendars\":31,\"processed_calendars\":3} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:58] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"calendar:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"54027c3b-4bdf-435b-9414-9b8b7cd9633f\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1115,\"provider\":\"google\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1115,\"provider\":\"google\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [Calendar] Processing sync {\"calendarId\":\"2676cb6d-f86c-427e-bf78-591e388e3c1e\",\"from\":null,\"to\":null,\"delta\":\"CJ_x49O3jpIDEJ_x49O3jpIDGAUgw67KlwMow67KlwM=\",\"last_sync\":\"2026-01-19 07:48:40\",\"dateMode\":\"daily\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.WARNING: [Pipedrive] Account not connected for user {\"userId\":\"e6538737-e7b4-455f-a37a-3e79b665a220\",\"account\":{\"Jiminny\\\\Models\\\\SocialAccount\":{\"id\":1116,\"sociable_id\":241,\"provider_user_id\":\"19555731\",\"expires\":1775683749,\"refresh_token_expires\":null,\"provider\":\"pipedrive\",\"state\":\"full-refresh\",\"auth_scope\":\"base,deals:full,activities:full,contacts:full,search:read\",\"retry_after\":null,\"created_at\":\"2023-09-08 09:44:29\",\"updated_at\":\"2026-04-08 22:58:34\"}}} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {\"crm_provider\":\"pipedrive\",\"crm_owner\":241,\"team_id\":19} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {\"crm_provider\":\"pipedrive\",\"team_id\":19} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {\"crm_provider\":\"pipedrive\",\"team_id\":19} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.WARNING: [Calendar] CRM disconnected for user so events will not be matched {\"provider\":\"pipedrive\",\"user_id\":241,\"message\":\"Your Pipedrive account has become disconnected. Please login to Jiminny to reconnect.\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1115,\"provider\":\"google\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1115,\"provider\":\"google\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [Google Calendar] Failed to watch channel for calendar {\"calendarId\":\"2676cb6d-f86c-427e-bf78-591e388e3c1e\",\"code\":400,\"reason\":\"{\n \\\"error\\\": {\n \\\"errors\\\": [\n {\n \\\"domain\\\": \\\"global\\\",\n \\\"reason\\\": \\\"push.webhookUrlNotHttps\\\",\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n ],\n \\\"code\\\": 400,\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n}\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.WARNING: [Calendar] Sync failed {\"calendarId\":\"2676cb6d-f86c-427e-bf78-591e388e3c1e\",\"code\":400,\"reason\":\"{\n \\\"error\\\": {\n \\\"errors\\\": [\n {\n \\\"domain\\\": \\\"global\\\",\n \\\"reason\\\": \\\"push.webhookUrlNotHttps\\\",\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n ],\n \\\"code\\\": 400,\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n}\"} {\"correlation_id\":\"bd5351f8-4f39-4199-98f5-aa39a1b90962\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1421,\"provider\":\"office\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1421,\"provider\":\"office\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [Calendar] Processing sync {\"calendarId\":\"9e8b1a2c-1a8f-42bd-b161-810fc0baf540\",\"from\":null,\"to\":null,\"delta\":\"R0usmcdvmMuZCBYV0hguCHhwR3crxfEuMI8zGlf-bMYpCFtdxXvSJWTlnqQvu_jjoOrOYL2VG9rZwFHCERHxGfGEK3CmQX6x8MJG3ZbBXGuVIS6C7u-doY5maMRdsfnrHIAEMJd4Bs_WMfMH4tDJ8j9aul7DHDEJaP7w0PoPPpcoxu4nEk4vk-MolJBEgkSrayEewuBs5JVItUX9lUY2tA.yO2roNQ4Vdm6hBgoutuphGchuzbvsk7aqt5wHfcyeFQ\",\"last_sync\":\"2026-05-06 15:58:35\",\"dateMode\":\"daily\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":89,\"team_id\":2} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:58:59] local.INFO: [MS Office Calendar] Skipping delta sync for daily mode {\"calendarId\":\"9e8b1a2c-1a8f-42bd-b161-810fc0baf540\"} {\"correlation_id\":\"b382839b-ba3d-4d03-ab01-70b4f861ddc1\",\"trace_id\":\"9fcbd6a2-9d29-44c4-ba3f-4f06ce898d62\"}\n[2026-05-07 12:59:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"cb5f9d32-02db-4883-a5c9-a5b86c1a2fbb\",\"trace_id\":\"4fb8a9a0-53b1-414a-813d-a259b89f3203\"}\n[2026-05-07 12:59:06] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"cb5f9d32-02db-4883-a5c9-a5b86c1a2fbb\",\"trace_id\":\"4fb8a9a0-53b1-414a-813d-a259b89f3203\"}\n[2026-05-07 12:59:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"cb5f9d32-02db-4883-a5c9-a5b86c1a2fbb\",\"trace_id\":\"4fb8a9a0-53b1-414a-813d-a259b89f3203\"}\n[2026-05-07 12:59:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"64313a2b-3a92-4419-ae59-caabfc9e9731\",\"trace_id\":\"16443bac-2196-4257-88bc-59445729f276\"}\n[2026-05-07 12:59:09] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"64313a2b-3a92-4419-ae59-caabfc9e9731\",\"trace_id\":\"16443bac-2196-4257-88bc-59445729f276\"}\n[2026-05-07 12:59:11] local.NOTICE: Monitoring start {\"correlation_id\":\"7678c2ca-049f-44e4-acce-2e711f8d7d40\",\"trace_id\":\"54ef3d3c-f1ea-4a01-aed2-db19a6739a06\"}\n[2026-05-07 12:59:11] local.NOTICE: Monitoring end {\"correlation_id\":\"7678c2ca-049f-44e4-acce-2e711f8d7d40\",\"trace_id\":\"54ef3d3c-f1ea-4a01-aed2-db19a6739a06\"}\n[2026-05-07 12:59:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"44d7c1a1-dfc9-4401-9f63-ad8b5bff9942\",\"trace_id\":\"9f6f5f38-60f5-4869-bfd2-f366d52eaa00\"}\n[2026-05-07 12:59:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"44d7c1a1-dfc9-4401-9f63-ad8b5bff9942\",\"trace_id\":\"9f6f5f38-60f5-4869-bfd2-f366d52eaa00\"}\n[2026-05-07 12:59:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"f90f3b8c-5161-4963-a963-a40284567af1\",\"trace_id\":\"94731c50-8ce2-44ec-ace6-2d46fb00fdb1\"}\n[2026-05-07 12:59:15] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"f90f3b8c-5161-4963-a963-a40284567af1\",\"trace_id\":\"94731c50-8ce2-44ec-ace6-2d46fb00fdb1\"}\n[2026-05-07 12:59:15] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"f90f3b8c-5161-4963-a963-a40284567af1\",\"trace_id\":\"94731c50-8ce2-44ec-ace6-2d46fb00fdb1\"}\n[2026-05-07 12:59:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"f90f3b8c-5161-4963-a963-a40284567af1\",\"trace_id\":\"94731c50-8ce2-44ec-ace6-2d46fb00fdb1\"}\n[2026-05-07 13:00:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"6f98d5e3-0aa8-496e-853a-a77b7a8b74ec\",\"trace_id\":\"b63e8546-4347-49f0-ad1a-92f4e4504843\"}\n[2026-05-07 13:00:10] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"6f98d5e3-0aa8-496e-853a-a77b7a8b74ec\",\"trace_id\":\"b63e8546-4347-49f0-ad1a-92f4e4504843\"}\n[2026-05-07 13:00:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"6f98d5e3-0aa8-496e-853a-a77b7a8b74ec\",\"trace_id\":\"b63e8546-4347-49f0-ad1a-92f4e4504843\"}\n[2026-05-07 13:00:13] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"50260ccd-f119-47b0-baee-514de27801f2\",\"trace_id\":\"40e651df-62f6-4c3a-83ab-842112ec3ece\"}\n[2026-05-07 13:00:13] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"50260ccd-f119-47b0-baee-514de27801f2\",\"trace_id\":\"40e651df-62f6-4c3a-83ab-842112ec3ece\"}\n[2026-05-07 13:00:17] local.NOTICE: Monitoring start {\"correlation_id\":\"f6104856-aca3-4e7b-964e-bba66d730eb3\",\"trace_id\":\"98f34b7b-f715-49cb-8d3a-4e74c1118445\"}\n[2026-05-07 13:00:17] local.NOTICE: Monitoring end {\"correlation_id\":\"f6104856-aca3-4e7b-964e-bba66d730eb3\",\"trace_id\":\"98f34b7b-f715-49cb-8d3a-4e74c1118445\"}\n[2026-05-07 13:00:19] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"b4a9e9a2-968c-429b-8fa8-67dd59bb297f\",\"trace_id\":\"ed6a83d0-8edb-4392-8717-26d91ffde80b\"}\n[2026-05-07 13:00:19] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"b4a9e9a2-968c-429b-8fa8-67dd59bb297f\",\"trace_id\":\"ed6a83d0-8edb-4392-8717-26d91ffde80b\"}\n[2026-05-07 13:00:21] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"b11474b2-8b19-4a2f-89c3-621fde9d3b1f\",\"trace_id\":\"8018d825-0809-411b-9b2a-078e2da6bacb\"}\n[2026-05-07 13:00:21] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"b11474b2-8b19-4a2f-89c3-621fde9d3b1f\",\"trace_id\":\"8018d825-0809-411b-9b2a-078e2da6bacb\"}\n[2026-05-07 13:00:21] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"b11474b2-8b19-4a2f-89c3-621fde9d3b1f\",\"trace_id\":\"8018d825-0809-411b-9b2a-078e2da6bacb\"}\n[2026-05-07 13:00:21] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"b11474b2-8b19-4a2f-89c3-621fde9d3b1f\",\"trace_id\":\"8018d825-0809-411b-9b2a-078e2da6bacb\"}\n[2026-05-07 13:00:23] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"d3b79f58-f9c8-4063-ac7e-7a0445cd1111\",\"trace_id\":\"802cf505-95fb-4f92-8c1b-79aa3ac53084\"}\n[2026-05-07 13:00:23] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:58:00, 2026-05-07 13:00:00] {\"correlation_id\":\"d3b79f58-f9c8-4063-ac7e-7a0445cd1111\",\"trace_id\":\"802cf505-95fb-4f92-8c1b-79aa3ac53084\"}\n[2026-05-07 13:00:23] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:58:00, 2026-05-07 13:00:00] {\"correlation_id\":\"d3b79f58-f9c8-4063-ac7e-7a0445cd1111\",\"trace_id\":\"802cf505-95fb-4f92-8c1b-79aa3ac53084\"}\n[2026-05-07 13:00:23] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"d3b79f58-f9c8-4063-ac7e-7a0445cd1111\",\"trace_id\":\"802cf505-95fb-4f92-8c1b-79aa3ac53084\"}\n[2026-05-07 13:00:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:purge-stale\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"32bad9c1-861c-4a46-bece-585cc1170bfd\",\"trace_id\":\"0c20e20f-6a91-4346-9455-5cd1451c32a1\"}\n[2026-05-07 13:00:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:purge-stale\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"32bad9c1-861c-4a46-bece-585cc1170bfd\",\"trace_id\":\"0c20e20f-6a91-4346-9455-5cd1451c32a1\"}\n[2026-05-07 13:00:29] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:text-relay:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"c9d4f687-1643-431e-9377-2573a2e593fd\",\"trace_id\":\"02fab433-9c9a-49f7-b836-2b8a42551912\"}\n[2026-05-07 13:00:30] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:text-relay:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"c9d4f687-1643-431e-9377-2573a2e593fd\",\"trace_id\":\"02fab433-9c9a-49f7-b836-2b8a42551912\"}\n[2026-05-07 13:00:33] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:pre-meeting-notification\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"57870bb4-45e8-47d8-b192-21d3297d2208\",\"trace_id\":\"ba8e9eac-2dc9-4ed8-bbf1-4a35aedb9efb\"}\n[2026-05-07 13:00:33] local.INFO: Running pre-meeting notification command {\"correlation_id\":\"57870bb4-45e8-47d8-b192-21d3297d2208\",\"trace_id\":\"ba8e9eac-2dc9-4ed8-bbf1-4a35aedb9efb\"}\n[2026-05-07 13:00:33] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:pre-meeting-notification\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"57870bb4-45e8-47d8-b192-21d3297d2208\",\"trace_id\":\"ba8e9eac-2dc9-4ed8-bbf1-4a35aedb9efb\"}\n[2026-05-07 13:00:35] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:start\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"6aeb181b-8314-4d45-aff7-e378793b04d9\",\"trace_id\":\"8ffc66f1-af64-4a58-8ce8-481b3a299dbb\"}\n[2026-05-07 13:00:35] local.INFO: Running conference:monitor:start command for activities in (2026-05-07 12:50:00, 2026-05-07 12:55:00] {\"correlation_id\":\"6aeb181b-8314-4d45-aff7-e378793b04d9\",\"trace_id\":\"8ffc66f1-af64-4a58-8ce8-481b3a299dbb\"}\n[2026-05-07 13:00:35] local.INFO: [conference:monitor:start] No activities found in (2026-05-07 12:50:00, 2026-05-07 12:55:00] {\"correlation_id\":\"6aeb181b-8314-4d45-aff7-e378793b04d9\",\"trace_id\":\"8ffc66f1-af64-4a58-8ce8-481b3a299dbb\"}\n[2026-05-07 13:00:35] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:start\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"6aeb181b-8314-4d45-aff7-e378793b04d9\",\"trace_id\":\"8ffc66f1-af64-4a58-8ce8-481b3a299dbb\"}\n[2026-05-07 13:00:37] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:end\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"888d4f67-ad14-4457-b51d-2cf8b2d315f9\",\"trace_id\":\"eaf4b0b3-0414-4563-b227-ce9c6a2e5b7e\"}\n[2026-05-07 13:00:37] local.INFO: conference:monitor:end:Jiminny\\Console\\Commands\\Activities\\MonitorMeetingEndCommand::logActivitiesEnded {\"from\":\"12:55\",\"to\":\"13:00\"} {\"correlation_id\":\"888d4f67-ad14-4457-b51d-2cf8b2d315f9\",\"trace_id\":\"eaf4b0b3-0414-4563-b227-ce9c6a2e5b7e\"}\n[2026-05-07 13:00:37] local.INFO: conference:monitor:end:Jiminny\\Console\\Commands\\Activities\\MonitorMeetingEndCommand::logActivitiesWithUnfinishedSession {\"from\":\"02:50\",\"to\":\"02:55\"} {\"correlation_id\":\"888d4f67-ad14-4457-b51d-2cf8b2d315f9\",\"trace_id\":\"eaf4b0b3-0414-4563-b227-ce9c6a2e5b7e\"}\n[2026-05-07 13:00:37] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:end\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"888d4f67-ad14-4457-b51d-2cf8b2d315f9\",\"trace_id\":\"eaf4b0b3-0414-4563-b227-ce9c6a2e5b7e\"}\n[2026-05-07 13:00:39] local.NOTICE: Repairing HubSpot tokens start {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:39] local.INFO: Trying to refresh HubSpot token {\"account_id\":59,\"updated_at\":\"2025-10-03 09:32:05\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:39] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:39] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":59,\"provider\":\"hubspot\",\"refreshToken\":\"97b78f6e2cc49965c00c2492b602b02708b1392551e6b3f113fbaa48992af90b\",\"state\":\"full-refresh\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:39] local.ERROR: Failed to refresh HubSpot token {\"account_id\":59,\"updated_at\":\"2025-10-03 09:32:05\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:39] local.INFO: Trying to refresh HubSpot token {\"account_id\":306,\"updated_at\":\"2023-11-27 09:30:03\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:39] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:39] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":306,\"provider\":\"hubspot\",\"refreshToken\":\"6fa6aa8cc641d131231acc3470f5c03cb3b07b2e580fb18f8acb3b1dbb72549b\",\"state\":\"full-refresh\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:40] local.ERROR: Failed to refresh HubSpot token {\"account_id\":306,\"updated_at\":\"2023-11-27 09:30:03\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:40] local.INFO: Trying to refresh HubSpot token {\"account_id\":1372,\"updated_at\":\"2025-10-02 14:47:06\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:40] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:40] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1372,\"provider\":\"hubspot\",\"refreshToken\":\"9aa73948c761da29dce46c177cf9aee1fde483a44169ca38723f9f0597d7a8c4\",\"state\":\"full-refresh\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:40] local.ERROR: Failed to refresh HubSpot token {\"account_id\":1372,\"updated_at\":\"2025-10-02 14:47:06\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:40] local.NOTICE: Repairing HubSpot tokens end {\"total\":3,\"fixed\":0,\"failed\":3} {\"correlation_id\":\"c7b4a8f4-7f10-401b-8d76-be978e462783\",\"trace_id\":\"42a77369-3041-4c40-ba73-331193e6c43e\"}\n[2026-05-07 13:00:45] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"jiminny:transcription:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"b619cc55-b4ef-4913-ab44-6bce51933f7e\",\"trace_id\":\"7cacb418-6e9c-410b-bf3a-15bdf1837908\"}\n[2026-05-07 13:00:45] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:pre-meeting-reminder\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"a765990f-ffe2-44e0-967f-816f5452ce69\",\"trace_id\":\"9aee0f3f-7668-455f-b207-181b58848478\"}\n[2026-05-07 13:00:45] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"jiminny:transcription:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"b619cc55-b4ef-4913-ab44-6bce51933f7e\",\"trace_id\":\"7cacb418-6e9c-410b-bf3a-15bdf1837908\"}\n[2026-05-07 13:00:45] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:45] local.INFO: [HubSpot Journal Command] Starting polling service {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:45] local.INFO: [HubSpot Journal Polling] Service starting {\"memory_limit\":\"256M\",\"max_execution_time\":\"0\",\"initial_memory_mb\":62.0} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:45] local.INFO: [HubSpot Journal Polling] Acquired polling lock {\"expires_at\":\"2026-05-07T13:02:45.724437Z\"} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:45] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:45] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:45] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:pre-meeting-reminder\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"a765990f-ffe2-44e0-967f-816f5452ce69\",\"trace_id\":\"9aee0f3f-7668-455f-b207-181b58848478\"}\n[2026-05-07 13:00:45] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:49] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"crm:reset-governor\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"055b4798-a759-4621-9e0b-652f8ee69ea1\",\"trace_id\":\"10911ef4-48d1-404a-9345-ecf0f5cb9977\"}\n[2026-05-07 13:00:49] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"crm:reset-governor\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"055b4798-a759-4621-9e0b-652f8ee69ea1\",\"trace_id\":\"10911ef4-48d1-404a-9345-ecf0f5cb9977\"}\n[2026-05-07 13:00:51] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:51] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:51] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:53] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:53] local.INFO: Dispatching activity sync job {\"import_id\":812331,\"provider\":\"twilio-flex\",\"team\":\"jiminny\"} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:53] local.INFO: Dispatching activity sync job {\"import_id\":812332,\"provider\":\"xant\",\"team\":\"jiminny\"} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:53] local.INFO: Dispatching activity sync job {\"import_id\":812333,\"provider\":\"apollo\",\"team\":\"jiminny\"} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:53] local.INFO: Dispatching activity sync job {\"import_id\":812334,\"provider\":\"groove\",\"team\":\"jiminny\"} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:53] local.INFO: Dispatching activity sync job {\"import_id\":812335,\"provider\":\"twilio-video\",\"team\":\"jiminny\"} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:53] local.INFO: Dispatching activity sync job {\"import_id\":812336,\"provider\":\"hubspot\",\"team\":\"hubspot\"} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:53] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"dd8cdea2-20f7-42a7-a492-f85b6037fbec\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.WARNING: [Salesforce] Account not connected for user {\"userId\":\"cdf8b554-d951-4758-bc2b-c1b85d1cd0b9\",\"account\":null} {\"correlation_id\":\"fb068e24-e135-4914-9973-94f1a0f5dae2\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {\"crm_provider\":\"salesforce\",\"crm_owner\":3,\"team_id\":1} {\"correlation_id\":\"fb068e24-e135-4914-9973-94f1a0f5dae2\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {\"crm_provider\":\"salesforce\",\"team_id\":1} {\"correlation_id\":\"fb068e24-e135-4914-9973-94f1a0f5dae2\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {\"crm_provider\":\"salesforce\",\"team_id\":1} {\"correlation_id\":\"fb068e24-e135-4914-9973-94f1a0f5dae2\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.ALERT: [SyncActivity] Failed {\"import_id\":812331,\"provider\":\"twilio-flex\",\"provider_id\":317,\"team\":\"jiminny\",\"team_id\":1,\"reason\":\"Social account for Salesforce cannot be found. Please login to Jiminny to connect.\",\"file\":\"/home/jiminny/app/Services/Crm/BaseService.php\",\"line\":646} {\"correlation_id\":\"fb068e24-e135-4914-9973-94f1a0f5dae2\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"fe9470d4-bc5a-4195-919d-e4908e439f7c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"fe9470d4-bc5a-4195-919d-e4908e439f7c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:55] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"fe9470d4-bc5a-4195-919d-e4908e439f7c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:56] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:56] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:56] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:00:56] local.ALERT: [SyncActivity] Failed {\"import_id\":812332,\"provider\":\"xant\",\"provider_id\":161,\"team\":\"jiminny\",\"team_id\":1,\"reason\":\"Activity Provider account not connected.\",\"file\":\"/home/jiminny/app/Services/Activity/ActivityProviderService.php\",\"line\":174} {\"correlation_id\":\"fe9470d4-bc5a-4195-919d-e4908e439f7c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:56] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"e3a8ef92-20c7-4698-a07d-1aa2c21ac82c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:56] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"e3a8ef92-20c7-4698-a07d-1aa2c21ac82c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:56] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"e3a8ef92-20c7-4698-a07d-1aa2c21ac82c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:56] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:fail-stalled\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"441dabbc-0c1f-4d49-871c-08f96adbed01\",\"trace_id\":\"13597461-50ff-4a40-a329-255430126395\"}\n[2026-05-07 13:00:56] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:fail-stalled\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"441dabbc-0c1f-4d49-871c-08f96adbed01\",\"trace_id\":\"13597461-50ff-4a40-a329-255430126395\"}\n[2026-05-07 13:00:57] local.ALERT: [SyncActivity] Failed {\"import_id\":812333,\"provider\":\"apollo\",\"provider_id\":441,\"team\":\"jiminny\",\"team_id\":1,\"reason\":\"Activity Provider account not connected.\",\"file\":\"/home/jiminny/app/Services/Activity/ActivityProviderService.php\",\"line\":174} {\"correlation_id\":\"e3a8ef92-20c7-4698-a07d-1aa2c21ac82c\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:57] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"1a0b64ee-3927-48e6-8ae3-fda14f35babb\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:57] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"1a0b64ee-3927-48e6-8ae3-fda14f35babb\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:57] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"1a0b64ee-3927-48e6-8ae3-fda14f35babb\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:57] local.ALERT: [SyncActivity] Failed {\"import_id\":812334,\"provider\":\"groove\",\"provider_id\":228,\"team\":\"jiminny\",\"team_id\":1,\"reason\":\"Activity Provider account not connected.\",\"file\":\"/home/jiminny/app/Services/Activity/ActivityProviderService.php\",\"line\":174} {\"correlation_id\":\"1a0b64ee-3927-48e6-8ae3-fda14f35babb\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:57] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"5e6fecb1-9905-4ab2-a494-e6d8215430c0\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:57] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1173,\"provider\":\"salesforce\"} {\"correlation_id\":\"5e6fecb1-9905-4ab2-a494-e6d8215430c0\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:57] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"5e6fecb1-9905-4ab2-a494-e6d8215430c0\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.ALERT: [SyncActivity] Failed {\"import_id\":812335,\"provider\":\"twilio-video\",\"provider_id\":243,\"team\":\"jiminny\",\"team_id\":1,\"reason\":\"Activity Provider account not connected.\",\"file\":\"/home/jiminny/app/Services/Activity/ActivityProviderService.php\",\"line\":174} {\"correlation_id\":\"5e6fecb1-9905-4ab2-a494-e6d8215430c0\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":89,\"team_id\":2} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":408,\"provider\":\"hubspot\"} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":408,\"provider\":\"hubspot\"} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [SyncActivity] Start {\"import_id\":812336,\"provider\":\"hubspot\",\"provider_id\":31,\"team\":\"hubspot\",\"team_id\":2} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [HubSpot] Search calls for period {\"from\":\"2026-05-07 12:44:00\",\"to\":\"2026-05-07 13:00:00\"} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [SyncActivity] End {\"import_id\":812336,\"provider\":\"hubspot\",\"provider_id\":31,\"team\":\"hubspot\",\"team_id\":2} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:58] local.INFO: [SyncActivity] Memory usage {\"import_id\":812336,\"provider\":\"hubspot\",\"provider_id\":31,\"team\":\"hubspot\",\"team_id\":2,\"memory_usage\":27230632,\"memory_real_usage\":67108864,\"pid\":37116} {\"correlation_id\":\"f6b9723f-8cbd-4ddc-8b89-9a346abe1f64\",\"trace_id\":\"2fa600c9-120a-4c94-82da-0530a90fc96c\"}\n[2026-05-07 13:00:59] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"jiminny:transcription:retry-stuck\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"1db560c5-5d8c-419a-bfb0-e761473ecf44\",\"trace_id\":\"79eb494e-fd21-4171-b59d-d7d47358f1fb\"}\n[2026-05-07 13:00:59] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"jiminny:transcription:retry-stuck\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"1db560c5-5d8c-419a-bfb0-e761473ecf44\",\"trace_id\":\"79eb494e-fd21-4171-b59d-d7d47358f1fb\"}\n[2026-05-07 13:01:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"73c0e9d6-7ef5-4040-8e35-0a9bb4028abf\",\"trace_id\":\"55b51c26-06b9-4b59-b444-53017b805b30\"}\n[2026-05-07 13:01:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"73c0e9d6-7ef5-4040-8e35-0a9bb4028abf\",\"trace_id\":\"55b51c26-06b9-4b59-b444-53017b805b30\"}\n[2026-05-07 13:01:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"5a7e717c-f314-4601-b1b8-fd550703f463\",\"trace_id\":\"a64281e5-027f-4856-a3e3-4f176c58eb6e\"}\n[2026-05-07 13:01:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"5a7e717c-f314-4601-b1b8-fd550703f463\",\"trace_id\":\"a64281e5-027f-4856-a3e3-4f176c58eb6e\"}\n[2026-05-07 13:01:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"0c425954-2696-4890-97b7-219ccc38cf46\",\"trace_id\":\"d609b364-f3b6-4b85-babb-67caf96efdb1\"}\n[2026-05-07 13:01:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"0c425954-2696-4890-97b7-219ccc38cf46\",\"trace_id\":\"d609b364-f3b6-4b85-babb-67caf96efdb1\"}\n[2026-05-07 13:01:11] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:11] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:11] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"a6bad97b-3db2-4dd6-839f-fcd485f06e65\",\"trace_id\":\"dcdde4a9-962c-46d1-9386-42adb54efbbf\"}\n[2026-05-07 13:01:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"a6bad97b-3db2-4dd6-839f-fcd485f06e65\",\"trace_id\":\"dcdde4a9-962c-46d1-9386-42adb54efbbf\"}\n[2026-05-07 13:01:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"2893478e-8c43-4719-a2e8-7c9c0e0783e9\",\"trace_id\":\"3fc8f1f0-0727-42f1-8ee6-f2b32bd8834b\"}\n[2026-05-07 13:01:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"2893478e-8c43-4719-a2e8-7c9c0e0783e9\",\"trace_id\":\"3fc8f1f0-0727-42f1-8ee6-f2b32bd8834b\"}\n[2026-05-07 13:01:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"64f52ca1-b54e-46da-a760-73dbdf407eaf\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:17] local.INFO: Dispatching activity sync job {\"import_id\":812337,\"provider\":\"hubspot\",\"team\":\"hubspot\"} {\"correlation_id\":\"64f52ca1-b54e-46da-a760-73dbdf407eaf\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"64f52ca1-b54e-46da-a760-73dbdf407eaf\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"crm:bullhorn:ping\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"3c44e0a7-ec5d-4206-a925-69f6e0783c2a\",\"trace_id\":\"60cf7a36-37ca-4ac4-a632-f317578d908f\"}\n[2026-05-07 13:01:19] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"crm:bullhorn:ping\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"3c44e0a7-ec5d-4206-a925-69f6e0783c2a\",\"trace_id\":\"60cf7a36-37ca-4ac4-a632-f317578d908f\"}\n[2026-05-07 13:01:19] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":89,\"team_id\":2} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":408,\"provider\":\"hubspot\"} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":408,\"provider\":\"hubspot\"} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [SyncActivity] Start {\"import_id\":812337,\"provider\":\"hubspot\",\"provider_id\":31,\"team\":\"hubspot\",\"team_id\":2} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:19] local.INFO: [HubSpot] Search calls for period {\"from\":\"2026-05-07 12:00:00\",\"to\":\"2026-05-07 13:00:00\"} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:20] local.INFO: [SyncActivity] End {\"import_id\":812337,\"provider\":\"hubspot\",\"provider_id\":31,\"team\":\"hubspot\",\"team_id\":2} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:20] local.INFO: [SyncActivity] Memory usage {\"import_id\":812337,\"provider\":\"hubspot\",\"provider_id\":31,\"team\":\"hubspot\",\"team_id\":2,\"memory_usage\":27392888,\"memory_real_usage\":67108864,\"pid\":37116} {\"correlation_id\":\"c17440cb-9db0-403b-a1ad-a1c7e45b75b3\",\"trace_id\":\"2d0db8fa-83be-4207-bfb6-099456ac234e\"}\n[2026-05-07 13:01:21] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"nudges:send\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"55ebbc10-80bf-4724-ac64-678f6ef891cc\",\"trace_id\":\"f5392dc4-b352-4cae-b82a-004f77bbaf26\"}\n[2026-05-07 13:01:21] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"nudges:send\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"55ebbc10-80bf-4724-ac64-678f6ef891cc\",\"trace_id\":\"f5392dc4-b352-4cae-b82a-004f77bbaf26\"}\n[2026-05-07 13:01:23] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"jiminny:playlists:normalize-sort\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"9e29cfb5-b7fc-41bc-a9fd-a160d2253806\",\"trace_id\":\"3e180d83-299d-4c6c-bdda-d5a8ac156efc\"}\n[2026-05-07 13:01:23] local.INFO: [Jiminny\\Component\\Playlist\\Command\\NormalizeSortCommand::handle] starting. {\"playlists\":[]} {\"correlation_id\":\"9e29cfb5-b7fc-41bc-a9fd-a160d2253806\",\"trace_id\":\"3e180d83-299d-4c6c-bdda-d5a8ac156efc\"}\n[2026-05-07 13:01:23] local.INFO: [Jiminny\\Component\\Playlist\\Command\\NormalizeSortCommand::handle] finished. {\"normalizedPlaylists\":[],\"deletedPlaylists\":[]} {\"correlation_id\":\"9e29cfb5-b7fc-41bc-a9fd-a160d2253806\",\"trace_id\":\"3e180d83-299d-4c6c-bdda-d5a8ac156efc\"}\n[2026-05-07 13:01:23] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"jiminny:playlists:normalize-sort\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"9e29cfb5-b7fc-41bc-a9fd-a160d2253806\",\"trace_id\":\"3e180d83-299d-4c6c-bdda-d5a8ac156efc\"}\n[2026-05-07 13:01:41] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:41] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:41] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:41] local.WARNING: [HubSpot Journal Polling] Maximum empty results reached, stopping {\"empty_results\":5,\"max_empty_results\":5} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:41] local.WARNING: [HubSpot Journal Polling] Maximum empty results reached, stopping {\"empty_results\":5,\"max_empty_results\":5} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:41] local.INFO: [HubSpot Journal Polling] Service ending {\"runtime_seconds\":56,\"total_cycles\":5,\"files_downloaded\":0,\"empty_files\":0,\"other_portal_skipped\":0,\"total_events\":0,\"events_per_file\":0,\"avg_api_ms\":181.3,\"avg_download_ms\":0.0,\"avg_transform_ms\":0.0,\"avg_process_ms\":0.0,\"peak_memory_mb\":99.73} {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:01:41] local.INFO: [HubSpot Journal Polling] Released polling lock {\"correlation_id\":\"5a8651dd-d434-467b-931e-1eda429d2b65\",\"trace_id\":\"4c1d2061-cc57-4b72-996d-389270f3539c\"}\n[2026-05-07 13:02:05] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"fe3480ce-754b-4304-b661-e4ac7234a778\",\"trace_id\":\"619e9c15-f95f-47ce-af85-6d78a6698327\"}\n[2026-05-07 13:02:05] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"fe3480ce-754b-4304-b661-e4ac7234a778\",\"trace_id\":\"619e9c15-f95f-47ce-af85-6d78a6698327\"}\n[2026-05-07 13:02:05] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"fe3480ce-754b-4304-b661-e4ac7234a778\",\"trace_id\":\"619e9c15-f95f-47ce-af85-6d78a6698327\"}\n[2026-05-07 13:02:07] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"aa98bf14-5737-4097-9f53-ac6833fb7983\",\"trace_id\":\"2f858b11-1073-43d4-996a-57e259ec2795\"}\n[2026-05-07 13:02:07] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"aa98bf14-5737-4097-9f53-ac6833fb7983\",\"trace_id\":\"2f858b11-1073-43d4-996a-57e259ec2795\"}\n[2026-05-07 13:02:08] local.NOTICE: Monitoring start {\"correlation_id\":\"25c588be-ddd6-41f1-8db8-ae28f3dd5bf5\",\"trace_id\":\"58b4c110-21ab-4c22-be4f-5be3534cd17d\"}\n[2026-05-07 13:02:08] local.NOTICE: Monitoring end {\"correlation_id\":\"25c588be-ddd6-41f1-8db8-ae28f3dd5bf5\",\"trace_id\":\"58b4c110-21ab-4c22-be4f-5be3534cd17d\"}\n[2026-05-07 13:02:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"5e453d7a-4daf-4001-b100-6aa9485d0353\",\"trace_id\":\"d97e1107-3696-4acf-95db-9cc7f37412e1\"}\n[2026-05-07 13:02:10] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"5e453d7a-4daf-4001-b100-6aa9485d0353\",\"trace_id\":\"d97e1107-3696-4acf-95db-9cc7f37412e1\"}\n[2026-05-07 13:02:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"3fab4dfb-f0ae-4c2c-a882-e09a1ad3ee9b\",\"trace_id\":\"3a66f9c4-3f01-40e2-aee2-e77fdabe793f\"}\n[2026-05-07 13:02:12] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"3fab4dfb-f0ae-4c2c-a882-e09a1ad3ee9b\",\"trace_id\":\"3a66f9c4-3f01-40e2-aee2-e77fdabe793f\"}\n[2026-05-07 13:02:12] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"3fab4dfb-f0ae-4c2c-a882-e09a1ad3ee9b\",\"trace_id\":\"3a66f9c4-3f01-40e2-aee2-e77fdabe793f\"}\n[2026-05-07 13:02:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"3fab4dfb-f0ae-4c2c-a882-e09a1ad3ee9b\",\"trace_id\":\"3a66f9c4-3f01-40e2-aee2-e77fdabe793f\"}\n[2026-05-07 13:02:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"63252e6d-894f-4cb9-818a-0034bf3545cb\",\"trace_id\":\"7ddf2e72-9174-4623-a622-1a5c9ee952c5\"}\n[2026-05-07 13:02:15] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 13:00:00, 2026-05-07 13:02:00] {\"correlation_id\":\"63252e6d-894f-4cb9-818a-0034bf3545cb\",\"trace_id\":\"7ddf2e72-9174-4623-a622-1a5c9ee952c5\"}\n[2026-05-07 13:02:15] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 13:00:00, 2026-05-07 13:02:00] {\"correlation_id\":\"63252e6d-894f-4cb9-818a-0034bf3545cb\",\"trace_id\":\"7ddf2e72-9174-4623-a622-1a5c9ee952c5\"}\n[2026-05-07 13:02:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"63252e6d-894f-4cb9-818a-0034bf3545cb\",\"trace_id\":\"7ddf2e72-9174-4623-a622-1a5c9ee952c5\"}\n[2026-05-07 13:02:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:create\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"cf65b2c4-c602-432d-8087-d0c0fb7f8e80\",\"trace_id\":\"b7b39317-045c-4475-879e-3d399e23fc3e\"}\n[2026-05-07 13:02:17] local.INFO: [EmailSchedule] STARTING batch create {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"cf65b2c4-c602-432d-8087-d0c0fb7f8e80\",\"trace_id\":\"b7b39317-045c-4475-879e-3d399e23fc3e\"}\n[2026-05-07 13:02:17] local.INFO: [EmailSchedule] FINISHED batch create {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"cf65b2c4-c602-432d-8087-d0c0fb7f8e80\",\"trace_id\":\"b7b39317-045c-4475-879e-3d399e23fc3e\"}\n[2026-05-07 13:02:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:create\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"cf65b2c4-c602-432d-8087-d0c0fb7f8e80\",\"trace_id\":\"b7b39317-045c-4475-879e-3d399e23fc3e\"}\n[2026-05-07 13:02:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"c481124d-04ae-43fb-b1d3-a4282f7af7ff\",\"trace_id\":\"d2d083d1-7cee-4d21-b80e-4485361d9969\"}\n[2026-05-07 13:02:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:sync\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"c481124d-04ae-43fb-b1d3-a4282f7af7ff\",\"trace_id\":\"d2d083d1-7cee-4d21-b80e-4485361d9969\"}\n[2026-05-07 13:02:20] local.INFO: [Jiminny\\Jobs\\Mailbox\\CreateBatches] processed 2 inboxes and created 0 batches {\"userId\":null,\"batchSize\":30,\"maxBatches\":1000} {\"correlation_id\":\"3e2ef780-0c9d-4c30-9dc9-92315055c632\",\"trace_id\":\"b7b39317-045c-4475-879e-3d399e23fc3e\"}\n[2026-05-07 13:03:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"8cb6c7bf-4a2d-4960-bf8f-0368643fec27\",\"trace_id\":\"68c67cd4-9b92-4e41-bc1e-ebb282ea5211\"}\n[2026-05-07 13:03:06] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"8cb6c7bf-4a2d-4960-bf8f-0368643fec27\",\"trace_id\":\"68c67cd4-9b92-4e41-bc1e-ebb282ea5211\"}\n[2026-05-07 13:03:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"8cb6c7bf-4a2d-4960-bf8f-0368643fec27\",\"trace_id\":\"68c67cd4-9b92-4e41-bc1e-ebb282ea5211\"}\n[2026-05-07 13:03:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"b18dc815-6c91-43df-b083-125316724586\",\"trace_id\":\"62a636e8-4128-49eb-b99b-15efcfb37267\"}\n[2026-05-07 13:03:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"b18dc815-6c91-43df-b083-125316724586\",\"trace_id\":\"62a636e8-4128-49eb-b99b-15efcfb37267\"}\n[2026-05-07 13:03:10] local.NOTICE: Monitoring start {\"correlation_id\":\"d74c3e14-fd1a-4cab-9892-e9e924af1144\",\"trace_id\":\"29547049-25f5-4b62-a603-276e1de3dde8\"}\n[2026-05-07 13:03:10] local.NOTICE: Monitoring end {\"correlation_id\":\"d74c3e14-fd1a-4cab-9892-e9e924af1144\",\"trace_id\":\"29547049-25f5-4b62-a603-276e1de3dde8\"}\n[2026-05-07 13:03:13] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"bd7a8c2f-3f0b-48e9-86c2-0f01f2cfd9e8\",\"trace_id\":\"a3d1ecb5-4122-43c1-98ca-5d74c3dc989c\"}\n[2026-05-07 13:03:13] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"bd7a8c2f-3f0b-48e9-86c2-0f01f2cfd9e8\",\"trace_id\":\"a3d1ecb5-4122-43c1-98ca-5d74c3dc989c\"}\n[2026-05-07 13:03:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"4b20eb61-2970-4a63-8ee0-b392f7406a78\",\"trace_id\":\"892c9d93-c280-4b3f-a97a-bf1266f5c090\"}\n[2026-05-07 13:03:14] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"4b20eb61-2970-4a63-8ee0-b392f7406a78\",\"trace_id\":\"892c9d93-c280-4b3f-a97a-bf1266f5c090\"}\n[2026-05-07 13:03:14] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"4b20eb61-2970-4a63-8ee0-b392f7406a78\",\"trace_id\":\"892c9d93-c280-4b3f-a97a-bf1266f5c090\"}\n[2026-05-07 13:03:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"4b20eb61-2970-4a63-8ee0-b392f7406a78\",\"trace_id\":\"892c9d93-c280-4b3f-a97a-bf1266f5c090\"}\n[2026-05-07 13:03:18] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryPeakBeforeCommandInMb\":99.727} {\"correlation_id\":\"6a165ea3-f101-4ac9-bfcc-e7ad618ac645\",\"trace_id\":\"383367e5-a337-4793-be1c-a88a2a6fa2e5\"}\n[2026-05-07 13:03:18] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:retry-failed\",\"memoryBeforeCommandInMb\":62.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.727,\"memoryPeakAfterCommandInMB\":99.727} {\"correlation_id\":\"6a165ea3-f101-4ac9-bfcc-e7ad618ac645\",\"trace_id\":\"383367e5-a337-4793-be1c-a88a2a6fa2e5\"}","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.042220745,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2","depth":4,"bounds":{"left":0.3487367,"top":0.2490024,"width":0.007978723,"height":0.015163607},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"68","depth":4,"bounds":{"left":0.3587101,"top":0.2490024,"width":0.010305851,"height":0.015163607},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"2","depth":4,"bounds":{"left":0.37101063,"top":0.2490024,"width":0.007978723,"height":0.015163607},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"bounds":{"left":0.3806516,"top":0.24740623,"width":0.00731383,"height":0.018355945},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Highlighted Error","depth":4,"bounds":{"left":0.3879654,"top":0.24740623,"width":0.006981383,"height":0.018355945},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Services\\Crm\\Hubspot;\n\nuse HubSpot\\Client\\Crm\\Deals\\ApiException as DealApiException;\nuse HubSpot\\Client\\Crm\\Contacts\\ApiException as ContactApiException;\nuse HubSpot\\Client\\Crm\\Companies\\ApiException as CompanyApiException;\nuse HubSpot\\Client\\Crm\\Contacts\\Model\\SimplePublicObjectWithAssociations as ContactsWithAssociations;\nuse HubSpot\\Client\\Crm\\Companies\\Model\\SimplePublicObjectWithAssociations as CompaniesWithAssociations;\nuse HubSpot\\Client\\Crm\\Deals\\Model\\SimplePublicObjectWithAssociations as DealWithAssociations;\nuse HubSpot\\Client\\Crm\\Objects\\Model\\SimplePublicObjectInput;\nuse HubSpot\\Client\\Crm\\Objects\\Model\\SimplePublicObjectWithAssociations as ObjectWithAssociations;\nuse HubSpot\\Client\\Crm\\Pipelines\\Model\\Error;\nuse HubSpot\\Client\\Crm\\Pipelines\\Model\\PipelineStage;\nuse HubSpot\\Client\\Crm\\Properties\\Model\\Property;\nuse HubSpot\\Discovery\\Discovery;\nuse Jiminny\\Component\\Utility\\Service\\ProviderRateLimiter;\nuse Jiminny\\Exceptions\\CrmException;\nuse Jiminny\\Exceptions\\RateLimitException;\nuse Jiminny\\Exceptions\\SocialAccountTokenInvalidException;\nuse Jiminny\\Jobs\\Crm\\NoteObject;\nuse Jiminny\\Models\\Crm\\Field;\nuse Jiminny\\Services\\Crm\\BaseClient;\nuse Jiminny\\Services\\Crm\\Hubspot\\DTO\\Response\\Owner;\nuse Jiminny\\Services\\SocialAccountService;\nuse SevenShores\\Hubspot\\Exceptions\\BadRequest;\nuse SevenShores\\Hubspot\\Exceptions\\HubspotException;\nuse SevenShores\\Hubspot\\Factory;\nuse SevenShores\\Hubspot\\Http\\Response;\nuse Jiminny\\Services\\Crm\\Hubspot\\Pagination\\HubspotPaginationService;\nuse Throwable;\n\n/**\n * @phpstan-type CrmFieldOption array{id:string, label:string, value?:string}\n */\nclass Client extends BaseClient implements HubspotClientInterface\n{\n public const string MIN_API_VERSION = '2';\n\n public const string BASE_URL = 'https://api.hubapi.com';\n\n public const int ASSOCIATIONS_BATCH_SIZE_LIMIT = 1000;\n\n private HubspotPaginationService $paginationService;\n private HubspotTokenManager $tokenManager;\n private ProviderRateLimiter $rateLimiter;\n\n public function __construct(\n SocialAccountService $socialAccountService,\n HubspotPaginationService $paginationService,\n HubspotTokenManager $tokenManager,\n ProviderRateLimiter $rateLimiter,\n ) {\n parent::__construct($socialAccountService);\n $this->paginationService = $paginationService;\n $this->tokenManager = $tokenManager;\n $this->rateLimiter = $rateLimiter;\n\n $this->setBaseUrl(self::BASE_URL);\n $this->setVersion(self::MIN_API_VERSION);\n }\n\n /**\n * Single entry point for every HubSpot API call. Enforces the per-portal\n * rate limit configured in the rate_limits table (morphed to the current\n * Configuration) and reacts to a real 429 from HubSpot by translating it\n * into a RateLimitException carrying Retry-After.\n *\n * Wrap any outbound HubSpot call (SDK or raw HTTP) like:\n *\n * $this->executeRequest(fn () => $this->getNewInstance()->crm()->...);\n *\n * @template T\n * @param callable(): T $apiCall\n * @return T\n *\n * @throws RateLimitException\n */\n private function executeRequest(callable $apiCall)\n {\n if (! $this->rateLimiter->canMakeRequest($this->config)) {\n $retryAfter = $this->rateLimiter->requestAvailableIn($this->config);\n\n $this->log->warning('[Hubspot] Rate limit exceeded, deferring request', [\n 'team_id' => $this->config->team_id,\n 'config_id' => $this->config->getId(),\n 'retry_after' => $retryAfter,\n ]);\n\n throw new RateLimitException(\n 'Hubspot rate limit reached for configuration ' . $this->config->getId(),\n $retryAfter,\n );\n }\n\n $this->rateLimiter->incrementRequestCount($this->config);\n\n try {\n return $apiCall();\n } catch (Throwable $e) {\n if ($this->isHubspotRateLimit($e)) {\n $retryAfter = $this->parseRetryAfter($e);\n\n $this->log->warning('[Hubspot] Received 429 from API', [\n 'team_id' => $this->config->team_id,\n 'config_id' => $this->config->getId(),\n 'retry_after' => $retryAfter,\n 'reason' => $e->getMessage(),\n ]);\n\n throw new RateLimitException('Hubspot returned 429', $retryAfter, $e);\n }\n\n throw $e;\n }\n }\n\n public function isHubspotRateLimit(Throwable $e): bool\n {\n return method_exists($e, 'getCode') && (int) $e->getCode() === 429;\n }\n\n public function parseRetryAfter(Throwable $e): int\n {\n if (method_exists($e, 'getResponseHeaders')) {\n $headers = $e->getResponseHeaders() ?: [];\n $value = $headers['Retry-After'] ?? $headers['retry-after'] ?? null;\n if (is_array($value)) {\n $value = $value[0] ?? null;\n }\n if (is_numeric($value)) {\n return (int) $value;\n }\n }\n\n return 10;\n }\n\n public function getMinimumApiVersion(): string\n {\n return self::MIN_API_VERSION;\n }\n\n public function getInstance(): Factory\n {\n return new Factory([\n 'key' => $this->accessToken,\n 'oauth2' => true,\n 'base_url' => $this->baseUrl,\n ]);\n }\n\n public function getNewInstance(): Discovery\n {\n return \\HubSpot\\Factory::createWithAccessToken($this->accessToken);\n }\n\n /**\n * Secondly and daily limits for Hubspot API\n *\n * Product Tier: Free & Starter | Professional & Enterprise | API add-on (any tier)\n * Burst: 100/10 seconds | 150/10 seconds | 200/10 seconds\n * Daily: 250,000 | 500,000 | 1,000,000\n *\n * Official documentation states: The search endpoints are rate limited to five requests per second.\n * Since with 5 RPS were still hitting secondly rate limits we lowered it to 4\n */\n public function getPaginatedData(array $payload, string $type, int $offset = 0): array\n {\n $total = 0;\n $lastId = null;\n $rows = [];\n foreach ($this->getPaginatedDataGenerator($payload, $type, $offset, $total, $lastId) as $row) {\n $rows[] = $row;\n }\n\n return ['results' => $rows, 'total' => $total, 'last_record' => $lastId];\n }\n\n /**\n * @throws HubspotException\n * @throws SocialAccountTokenInvalidException\n * @throws BadRequest\n */\n public function getPaginatedDataGenerator(\n array $payload,\n string $type,\n int $offset = 0,\n int &$total = 0,\n ?string &$lastRecordId = null\n ): \\Generator {\n return $this->paginationService->getPaginatedDataGenerator(\n $this,\n $payload,\n $type,\n $offset,\n $total,\n $lastRecordId\n );\n }\n\n /**\n * @throws DealApiException\n * @throws CrmException\n */\n public function getOpportunityById(string $crmId, array $fields): array\n {\n try {\n// $deal = $this->executeRequest(fn () => $this->getNewInstance()->crm()->deals()->basicApi()->getById(\n $deal = $this->getNewInstance()->crm()->deals()->basicApi()->getById(\n $crmId,\n implode(',', $fields),\n 'companies,contacts'\n );\n } catch (DealApiException $e) {\n $this->log->info('[Hubspot] Failed to fetch opportunity', [\n 'crm_id' => $crmId,\n 'reason' => $e->getMessage(),\n ]);\n\n throw $e;\n }\n\n if (! $deal instanceof DealWithAssociations) {\n throw new CrmException('Deal not found');\n }\n\n return [\n 'id' => $deal->getId(),\n 'properties' => $deal->getProperties(),\n 'associations' => $deal->getAssociations(),\n ];\n }\n\n /**\n * Generic batch read method for HubSpot objects\n *\n * @param string $objectType The object type ('deals', 'companies', 'contacts')\n * @param array<string> $crmIds Array of HubSpot object IDs (max 100)\n * @param array<string> $fields Array of property names to fetch\n *\n * @return array<string, array> Array keyed by CRM ID with object data\n */\n private function batchReadObjects(string $objectType, array $crmIds, array $fields): array\n {\n if (empty($crmIds)) {\n return [];\n }\n\n $this->validateBatchSize($objectType, $crmIds);\n $this->ensureValidToken();\n\n try {\n $batchConfig = $this->createBatchConfiguration($objectType);\n $batchReadRequest = $this->prepareBatchRequest($batchConfig, $crmIds, $fields);\n $response = $batchConfig['api']->read($batchReadRequest);\n\n $this->validateApiResponse($response, $objectType);\n\n $results = $this->processApiResults($response);\n $this->logBatchResults($objectType, $crmIds, $results);\n\n return $results;\n } catch (\\Throwable $e) {\n $this->handleBatchError($e, $objectType, $crmIds);\n }\n }\n\n private function validateBatchSize(string $objectType, array $crmIds): void\n {\n if (count($crmIds) > 100) {\n throw new \\InvalidArgumentException(\"Batch size cannot exceed 100 {$objectType}\");\n }\n }\n\n private function createBatchConfiguration(string $objectType): array\n {\n $configurations = [\n 'deals' => [\n 'batchReadRequest' => new \\HubSpot\\Client\\Crm\\Deals\\Model\\BatchReadInputSimplePublicObjectId(),\n 'inputClass' => \\HubSpot\\Client\\Crm\\Deals\\Model\\SimplePublicObjectId::class,\n 'api' => $this->getNewInstance()->crm()->deals()->batchApi(),\n ],\n 'companies' => [\n 'batchReadRequest' => new \\HubSpot\\Client\\Crm\\Companies\\Model\\BatchReadInputSimplePublicObjectId(),\n 'inputClass' => \\HubSpot\\Client\\Crm\\Companies\\Model\\SimplePublicObjectId::class,\n 'api' => $this->getNewInstance()->crm()->companies()->batchApi(),\n ],\n 'contacts' => [\n 'batchReadRequest' => new \\HubSpot\\Client\\Crm\\Contacts\\Model\\BatchReadInputSimplePublicObjectId(),\n 'inputClass' => \\HubSpot\\Client\\Crm\\Contacts\\Model\\SimplePublicObjectId::class,\n 'api' => $this->getNewInstance()->crm()->contacts()->batchApi(),\n ],\n ];\n\n if (! isset($configurations[$objectType])) {\n throw new \\InvalidArgumentException(\"Unsupported object type: {$objectType}\");\n }\n\n return $configurations[$objectType];\n }\n\n private function prepareBatchRequest(array $batchConfig, array $crmIds, array $fields): object\n {\n $batchReadRequest = $batchConfig['batchReadRequest'];\n $inputClass = $batchConfig['inputClass'];\n\n $inputs = array_map(function ($crmId) use ($inputClass) {\n $input = new $inputClass();\n $input->setId($crmId);\n\n return $input;\n }, $crmIds);\n\n $batchReadRequest->setInputs($inputs);\n $batchReadRequest->setProperties($fields);\n\n return $batchReadRequest;\n }\n\n private function validateApiResponse($response, string $objectType): void\n {\n if (! $response) {\n throw new CrmException(\"HubSpot API returned null response for {$objectType} batch read\");\n }\n }\n\n private function processApiResults($response): array\n {\n $results = [];\n $responseResults = $response->getResults();\n\n if ($responseResults) {\n foreach ($responseResults as $object) {\n if ($object && $object->getId()) {\n $results[$object->getId()] = [\n 'id' => $object->getId(),\n 'properties' => $object->getProperties() ?: [],\n ];\n }\n }\n }\n\n return $results;\n }\n\n private function logBatchResults(string $objectType, array $crmIds, array $results): void\n {\n $this->log->info(\"[HubSpot] Batch fetched {$objectType}\", [\n 'requested_count' => count($crmIds),\n 'returned_count' => count($results),\n 'crm_ids' => $crmIds,\n ]);\n }\n\n private function handleBatchError(\\Throwable $e, string $objectType, array $crmIds): void\n {\n $errorMessage = $e->getMessage() ?: 'Unknown error';\n $errorTrace = $e->getTraceAsString() ?: 'No trace available';\n\n $this->log->error(\"[HubSpot] Failed to batch fetch {$objectType}\", [\n 'crm_ids' => $crmIds,\n 'error' => $errorMessage,\n 'trace' => $errorTrace,\n ]);\n\n throw new CrmException(\"Failed to batch fetch {$objectType}: \" . $errorMessage);\n }\n\n /**\n * Batch read multiple opportunities by their CRM IDs\n *\n * @param array<string> $crmIds Array of HubSpot deal IDs (max 100)\n * @param array<string> $fields Array of property names to fetch\n *\n * @return array<string, array> Array keyed by CRM ID with opportunity data\n */\n public function getOpportunitiesByIds(array $crmIds, array $fields): array\n {\n return $this->batchReadObjects('deals', $crmIds, $fields);\n }\n\n /**\n * Batch read multiple companies by their CRM IDs\n *\n * @param array<string> $crmIds Array of HubSpot company IDs (max 100)\n * @param array<string> $fields Array of property names to fetch\n *\n * @return array<string, array> Array keyed by CRM ID with company data\n */\n public function getCompaniesByIds(array $crmIds, array $fields): array\n {\n return $this->batchReadObjects('companies', $crmIds, $fields);\n }\n\n /**\n * Batch read multiple contacts by their CRM IDs\n *\n * @param array<string> $crmIds Array of HubSpot contact IDs (max 100)\n * @param array<string> $fields Array of property names to fetch\n *\n * @return array<string, array> Array keyed by CRM ID with contact data\n */\n public function getContactsByIds(array $crmIds, array $fields): array\n {\n return $this->batchReadObjects('contacts', $crmIds, $fields);\n }\n\n /**\n * @throws CompanyApiException\n * @throws CrmException\n */\n public function getAccountById(string $crmId, array $fields): array\n {\n try {\n $company = $this->getNewInstance()->crm()->companies()->basicApi()->getById(\n $crmId,\n implode(',', $fields),\n );\n } catch (CompanyApiException $e) {\n $this->log->info('[Hubspot] Failed to fetch account', [\n 'crm_id' => $crmId,\n 'reason' => $e->getMessage(),\n ]);\n\n throw $e;\n }\n\n if (! $company instanceof CompaniesWithAssociations) {\n throw new CrmException('Account not found');\n }\n\n return [\n 'id' => $company->getId(),\n 'properties' => $company->getProperties(),\n ];\n }\n\n /**\n * @throws ContactApiException\n * @throws CrmException\n */\n public function getContactById(string $crmId, array $fields): array\n {\n try {\n $contact = $this->getNewInstance()->crm()->contacts()->basicApi()->getById(\n $crmId,\n implode(',', $fields)\n );\n } catch (ContactApiException $e) {\n $this->log->info('[Hubspot] Failed to fetch contact', [\n 'crm_id' => $crmId,\n 'reason' => $e->getMessage(),\n ]);\n\n throw $e;\n }\n\n if (! $contact instanceof ContactsWithAssociations) {\n throw new CrmException('Contact not found');\n }\n\n return [\n 'id' => $contact->getId(),\n 'properties' => $contact->getProperties(),\n ];\n }\n\n /**\n * This is email search request that Hubspot offers as GET (more generous quota)\n */\n public function getContactByEmail(string $email, array $fields = []): array\n {\n try {\n $contact = $this->getNewInstance()->crm()->contacts()->basicApi()->getById(\n $email,\n implode(',', $fields),\n null,\n false,\n 'email'\n );\n\n return [\n 'id' => $contact->getId(),\n 'properties' => $contact->getProperties(),\n ];\n } catch (ContactApiException $e) {\n $this->log->info('[Hubspot] Failed to fetch contact', [\n 'email' => $email,\n 'reason' => $e->getMessage(),\n ]);\n\n return [];\n }\n }\n\n /**\n * @throws CrmException\n */\n public function fetchProperty(string $objectType, string $propertyId): Property\n {\n $result = $this->getNewInstance()->crm()->properties()->coreApi()->getByName($objectType, $propertyId);\n\n if (! $result instanceof Property) {\n $this->log->error('[Hubspot] Failed to fetch property', [\n 'object_type' => $objectType,\n 'property_id' => $propertyId,\n 'reason' => $result->getMessage(),\n ]);\n\n throw new CrmException('Failed to fetch property');\n }\n\n return $result;\n }\n\n /**\n * @return array<CrmFieldOption>\n */\n public function fetchPropertyOptions(string $objectType, string $propertyId): array\n {\n /** @var array<CrmFieldOption> */\n return $this->fetchProperty($objectType, $propertyId)->getOptions();\n }\n\n /**\n * @return array<array{id:string, label:string, deleted:bool}>\n */\n public function fetchCallDispositions(): array\n {\n /** @var Response $response */\n $response = $this->getInstance()->engagements()->getCallDispositions();\n\n /**\n * @var array<array{\n * id:string,\n * label:string,\n * deleted: bool\n * }>\n */\n return $response->toArray();\n }\n\n /**\n * @return array<CrmFieldOption>\n */\n public function fetchOpportunityPipelineStages(): array\n {\n $stages = [];\n $apiResponse = $this->getNewInstance()->crm()->pipelines()->pipelinesApi()->getAll('deals');\n\n if ($apiResponse instanceof Error) {\n $this->log->error('[Hubspot] Failed to fetch opportunity pipelines', [\n 'reason' => $apiResponse->getMessage(),\n ]);\n\n return [];\n }\n\n foreach ($apiResponse->getResults() as $pipeline) {\n $pipelineStages = array_map(\n static function (PipelineStage $stage) {\n return [\n 'id' => $stage->getId(),\n 'label' => $stage->getLabel(),\n ];\n },\n $pipeline->getStages()\n );\n\n $stages = array_merge($stages, $pipelineStages);\n }\n\n return $stages;\n }\n\n public function fetchOpportunityPipelines(): array\n {\n $pipelines = [];\n\n try {\n $apiResponse = $this->makeRequest('/crm/v3/pipelines/deals');\n } catch (\\Exception $e) {\n $this->log->info('[Hubspot] Failed to fetch opportunity pipelines', [\n 'reason' => $e->getMessage(),\n ]);\n\n return [];\n }\n\n $response = $apiResponse->toArray();\n\n foreach ($response['results'] as $pipeline) {\n $pipelines[] = [\n 'id' => $pipeline['id'],\n 'label' => $pipeline['label'],\n ];\n }\n\n return $pipelines;\n }\n\n /**\n * @return array<CrmFieldOption>\n */\n public function fetchMeetingOutcomeFieldOptions(Field $field): array\n {\n return $field->getCrmProviderId() === 'meetingOutcome'\n ? $this->fetchMeetingOutcomeTypes()\n : $this->fetchCallActivityTypes();\n }\n\n public function fetchMeetingOutcomeTypes(): array\n {\n return $this->extractMeetingTypeOptions(\n 'https://api.hubapi.com/crm/v3/properties/meeting/hs_meeting_outcome'\n );\n }\n\n public function fetchCallActivityTypes(): array\n {\n return $this->extractMeetingTypeOptions(\n 'https://api.hubapi.com/crm/v3/properties/call/hs_activity_type'\n );\n }\n\n private function extractMeetingTypeOptions(string $endpoint): array\n {\n /** @var Response $response */\n $response = $this->getInstance()\n ->getClient()\n ->request('GET', $endpoint);\n\n /**\n * @var array<array{\n * value: string,\n * label: string,\n * displayOrder: int\n * }> $optionData\n */\n $optionData = $response->toArray()['options'] ?? [];\n\n $options = [];\n foreach ($optionData as $item) {\n $options[] = [\n 'id' => $item['value'],\n 'value' => $item['value'],\n 'label' => $item['label'],\n 'display_order' => $item['displayOrder'],\n ];\n }\n\n return $options;\n }\n\n /**\n * @return array<CrmFieldOption>\n */\n public function fetchDispositionFieldOptions(): array\n {\n $options = [];\n\n $dispositions = $this->fetchCallDispositions();\n\n foreach ($dispositions as $disposition) {\n if ($disposition['deleted'] !== false) {\n continue;\n }\n\n $option['value'] = $disposition['id'];\n $option['id'] = $disposition['id'];\n $option['label'] = $disposition['label'];\n\n $options[] = $option;\n }\n\n return $options;\n }\n\n /**\n * @return array<CrmFieldOption>\n */\n public function fetchOpportunityFieldOptions(Field $field): array\n {\n if ($field->isStageField()) {\n return $this->fetchOpportunityPipelineStages();\n }\n\n if ($field->isPipelineField()) {\n return $this->fetchOpportunityPipelines();\n }\n\n return $this->fetchPropertyOptions('deals', $field->getCrmProviderId());\n }\n\n /**\n * @throws BadRequest\n * @throws HubspotException\n */\n public function makeRequest(string $endpoint, $method = 'GET', $payload = [], ?string $queryString = null)\n {\n $endpoint = self::BASE_URL . $endpoint;\n\n if ($method === 'GET') {\n $response = $this->getInstance()->getClient()?->request(\n method: $method,\n endpoint: $endpoint,\n query_string: $queryString\n );\n } else {\n $response = $this->getInstance()->getClient()->request($method, $endpoint, [\n 'json' => ($payload),\n ]);\n }\n\n $max = $response->getHeaderLine('X-HubSpot-RateLimit-Max'); // \"110\"\n $remaining = $response->getHeaderLine('X-HubSpot-RateLimit-Remaining'); // \"109\"\n $interval = $response->getHeaderLine('X-HubSpot-RateLimit-Interval-Milliseconds'); // \"10000\"\n $body = json_decode((string) $response->getBody(), true);\n\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$max ' . PHP_EOL . print_r($max, true));\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$remaining ' . PHP_EOL . print_r($remaining, true));\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$interval ' . PHP_EOL . print_r($interval, true));\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$body ' . PHP_EOL . print_r($body, true));\n\n return $response;\n }\n\n /**\n * @throws BadRequest\n * @throws HubspotException\n */\n public function createMeeting(array $payload): Response\n {\n $endpoint = '/crm/v3/objects/meetings';\n\n return $this->makeRequest($endpoint, 'POST', $payload);\n }\n\n /**\n * @throws BadRequest\n * @throws HubspotException\n */\n public function updateMeeting(string $meetingId, array $payload): Response\n {\n $endpoint = '/crm/v3/objects/meetings/' . $meetingId;\n\n return $this->makeRequest($endpoint, 'PATCH', $payload);\n }\n\n /**\n * @throws \\Exception\n */\n public function createNote(\n string $body,\n string $ownerId,\n int $timestamp,\n string $objectId,\n NoteObject $noteObject\n ): ?string {\n try {\n $noteInput = new SimplePublicObjectInput([\n 'properties' => [\n 'hs_note_body' => $body,\n 'hubspot_owner_id' => $ownerId,\n 'hs_timestamp' => $timestamp,\n ],\n ]);\n\n // Create note\n $note = $this->getNewInstance()->crm()->objects()->basicApi()->create('note', $noteInput);\n\n $this->getNewInstance()->crm()->objects()->associationsApi()->create(\n 'note',\n $note->getId(),\n $this->getNoteObject($noteObject),\n $objectId,\n $this->getNoteAssociationType($noteObject),\n );\n\n return $note->getId();\n } catch (\\Exception $e) {\n $this->log->error('[Hubspot] Failed to create note', [\n 'objectId' => $objectId,\n 'noteObject' => $noteObject->getObjectType(),\n 'reason' => $e->getMessage(),\n ]);\n\n \\Sentry::captureException($e);\n }\n\n return null;\n }\n\n public function updateEngagement(string $objectId, array $engagement, array $metadata): void\n {\n $this->getInstance()->engagements()->update($objectId, $engagement, $metadata);\n }\n\n public function getEngagementData(string $engagementId): array\n {\n $engagement = $this->getInstance()->engagements()->get($engagementId);\n\n return $engagement->toArray();\n }\n\n public function createEngagement(array $engagement, array $associations, array $metadata): Response\n {\n return $this->getInstance()\n ->engagements()\n ->create($engagement, $associations, $metadata);\n }\n\n public function isUnauthorizedException(\\Exception $e): bool\n {\n // Check for specific HubSpot API exception types first\n if ($e instanceof BadRequest) {\n // BadRequest can contain 401 status codes\n return $e->getCode() === 401;\n }\n\n // Check for HTTP client exceptions with status codes\n if ($e instanceof \\GuzzleHttp\\Exception\\RequestException && $e->hasResponse()) {\n $response = $e->getResponse();\n if ($response !== null) {\n return $response->getStatusCode() === 401;\n }\n }\n\n // Check for Guzzle HTTP exceptions\n if ($e instanceof \\GuzzleHttp\\Exception\\ClientException) {\n return $e->getCode() === 401;\n }\n\n // Fallback to string matching as last resort, but be more specific\n $message = strtolower($e->getMessage());\n\n return str_contains($message, '401 unauthorized') ||\n str_contains($message, 'http 401') ||\n str_contains($message, 'status code 401') ||\n (preg_match('/\\b401\\b/', $message) && str_contains($message, 'unauthorized'));\n }\n\n /**\n * Validates and refreshes the access token if needed before API requests.\n * This ensures long-running processes don't fail due to token expiration.\n *\n * @throws SocialAccountTokenInvalidException\n */\n public function ensureValidToken(): void\n {\n if ($this->oauthAccount === null) {\n return;\n }\n\n $newToken = $this->tokenManager->ensureValidToken($this->oauthAccount);\n if ($newToken !== null) {\n $this->accessToken = $newToken;\n }\n }\n\n public function getConfig()\n {\n return $this->config;\n }\n\n // returns only active (archived=false)\n public function getOwners(): array\n {\n return $this->getNewInstance()->crm()->owners()->getAll();\n }\n\n /**\n * @param bool $archived\n *\n * @return array<Owner>|[]\n */\n public function getOwnersArchived(bool $archived = true): array\n {\n $endpoint = '/crm/v3/owners';\n $queryParams = [\n 'archived' => $archived ? 'true' : 'false',\n ];\n $queryString = http_build_query($queryParams);\n\n $owners = [];\n\n try {\n $response = $this->makeRequest(endpoint: $endpoint, queryString: $queryString);\n $responseData = $response?->toArray();\n\n foreach ($responseData['results'] as $result) {\n try {\n $owners[] = Owner::create($result);\n } catch (Throwable $e) {\n $this->log->error('[HubSpot] Failed to process owner data', [\n 'result' => $result,\n 'error' => $e->getMessage(),\n ]);\n\n continue;\n }\n }\n } catch (Throwable $e) {\n $this->log->error('HubSpot] Failed to fetch owners', [\n 'archived' => $archived,\n 'error' => $e->getMessage(),\n ]);\n\n return [];\n }\n\n return $owners;\n }\n\n public function getMeeting(string $engagementId): ObjectWithAssociations\n {\n return $this->getNewInstance()->crm()->objects()->basicApi()\n ->getById('meeting', $engagementId, null, 'contact,company,deal');\n }\n\n public function deleteEngagement(string $engagementId): void\n {\n $this->getInstance()->engagements()->delete((int) $engagementId);\n }\n\n public function getAssociationsData(array $ids, string $fromObject, string $toObject): array\n {\n $associationData = [];\n $idChunks = array_chunk($ids, self::ASSOCIATIONS_BATCH_SIZE_LIMIT);\n\n foreach ($idChunks as $idChunk) {\n try {\n $batchInput = new \\HubSpot\\Client\\Crm\\Associations\\Model\\BatchInputPublicObjectId();\n $batchInput->setInputs(array_map(function ($id) {\n $publicObjectId = new \\HubSpot\\Client\\Crm\\Associations\\Model\\PublicObjectId();\n $publicObjectId->setId($id);\n\n return $publicObjectId;\n }, $idChunk));\n\n $associatedObjectsData = $this\n ->getNewInstance()\n ->crm()\n ->associations()\n ->batchApi()\n ->read($fromObject, $toObject, $batchInput);\n\n if ($associatedObjectsData instanceof \\HubSpot\\Client\\Crm\\Associations\\Model\\BatchResponsePublicAssociationMulti) {\n foreach ($associatedObjectsData->getResults() as $association) {\n $from = $association->getFrom()->getId();\n $toAssociations = $association->getTo();\n\n if (! empty($toAssociations)) {\n $associationData[$from] = array_map(function ($item) {\n return $item->getId();\n }, $toAssociations);\n }\n }\n }\n } catch (\\Exception $e) {\n $this->log->error('[Hubspot] Failed to fetch associations', [\n 'from_object' => $fromObject,\n 'to_object' => $toObject,\n 'reason' => $e->getMessage(),\n ]);\n }\n }\n\n return $associationData;\n }\n\n /**\n * @throws \\Exception\n */\n private function getNoteAssociationType(NoteObject $noteObject): string\n {\n return match($noteObject) {\n NoteObject::Opportunity => 'note_to_deal',\n NoteObject::Lead, NoteObject::Contact => 'note_to_contact', // or 'note_to_lead' if your portal supports it\n NoteObject::Account => 'note_to_company',\n NoteObject::Call, NoteObject::Event => throw new \\Exception('Not supported'),\n };\n }\n\n /**\n * @throws \\Exception\n */\n private function getNoteObject(NoteObject $noteObject): string\n {\n return match($noteObject) {\n NoteObject::Opportunity => 'deal',\n NoteObject::Lead, NoteObject::Contact => 'contact',\n NoteObject::Account => 'company',\n NoteObject::Call, NoteObject::Event => throw new \\Exception('Not supported'),\n };\n }\n\n public function addAssociations(string $objectType, string $associationType, array $payload): Response\n {\n $endpoint = \"/crm/v4/associations/$objectType/$associationType/batch/create\";\n\n return $this->makeRequest($endpoint, 'POST', $payload);\n }\n\n public function removeAssociations(string $objectType, string $associationType, array $payload): Response\n {\n $endpoint = \"/crm/v4/associations/$objectType/$associationType/batch/archive\";\n\n return $this->makeRequest($endpoint, 'POST', $payload);\n }\n}","depth":4,"on_screen":true,"value":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Services\\Crm\\Hubspot;\n\nuse HubSpot\\Client\\Crm\\Deals\\ApiException as DealApiException;\nuse HubSpot\\Client\\Crm\\Contacts\\ApiException as ContactApiException;\nuse HubSpot\\Client\\Crm\\Companies\\ApiException as CompanyApiException;\nuse HubSpot\\Client\\Crm\\Contacts\\Model\\SimplePublicObjectWithAssociations as ContactsWithAssociations;\nuse HubSpot\\Client\\Crm\\Companies\\Model\\SimplePublicObjectWithAssociations as CompaniesWithAssociations;\nuse HubSpot\\Client\\Crm\\Deals\\Model\\SimplePublicObjectWithAssociations as DealWithAssociations;\nuse HubSpot\\Client\\Crm\\Objects\\Model\\SimplePublicObjectInput;\nuse HubSpot\\Client\\Crm\\Objects\\Model\\SimplePublicObjectWithAssociations as ObjectWithAssociations;\nuse HubSpot\\Client\\Crm\\Pipelines\\Model\\Error;\nuse HubSpot\\Client\\Crm\\Pipelines\\Model\\PipelineStage;\nuse HubSpot\\Client\\Crm\\Properties\\Model\\Property;\nuse HubSpot\\Discovery\\Discovery;\nuse Jiminny\\Component\\Utility\\Service\\ProviderRateLimiter;\nuse Jiminny\\Exceptions\\CrmException;\nuse Jiminny\\Exceptions\\RateLimitException;\nuse Jiminny\\Exceptions\\SocialAccountTokenInvalidException;\nuse Jiminny\\Jobs\\Crm\\NoteObject;\nuse Jiminny\\Models\\Crm\\Field;\nuse Jiminny\\Services\\Crm\\BaseClient;\nuse Jiminny\\Services\\Crm\\Hubspot\\DTO\\Response\\Owner;\nuse Jiminny\\Services\\SocialAccountService;\nuse SevenShores\\Hubspot\\Exceptions\\BadRequest;\nuse SevenShores\\Hubspot\\Exceptions\\HubspotException;\nuse SevenShores\\Hubspot\\Factory;\nuse SevenShores\\Hubspot\\Http\\Response;\nuse Jiminny\\Services\\Crm\\Hubspot\\Pagination\\HubspotPaginationService;\nuse Throwable;\n\n/**\n * @phpstan-type CrmFieldOption array{id:string, label:string, value?:string}\n */\nclass Client extends BaseClient implements HubspotClientInterface\n{\n public const string MIN_API_VERSION = '2';\n\n public const string BASE_URL = 'https://api.hubapi.com';\n\n public const int ASSOCIATIONS_BATCH_SIZE_LIMIT = 1000;\n\n private HubspotPaginationService $paginationService;\n private HubspotTokenManager $tokenManager;\n private ProviderRateLimiter $rateLimiter;\n\n public function __construct(\n SocialAccountService $socialAccountService,\n HubspotPaginationService $paginationService,\n HubspotTokenManager $tokenManager,\n ProviderRateLimiter $rateLimiter,\n ) {\n parent::__construct($socialAccountService);\n $this->paginationService = $paginationService;\n $this->tokenManager = $tokenManager;\n $this->rateLimiter = $rateLimiter;\n\n $this->setBaseUrl(self::BASE_URL);\n $this->setVersion(self::MIN_API_VERSION);\n }\n\n /**\n * Single entry point for every HubSpot API call. Enforces the per-portal\n * rate limit configured in the rate_limits table (morphed to the current\n * Configuration) and reacts to a real 429 from HubSpot by translating it\n * into a RateLimitException carrying Retry-After.\n *\n * Wrap any outbound HubSpot call (SDK or raw HTTP) like:\n *\n * $this->executeRequest(fn () => $this->getNewInstance()->crm()->...);\n *\n * @template T\n * @param callable(): T $apiCall\n * @return T\n *\n * @throws RateLimitException\n */\n private function executeRequest(callable $apiCall)\n {\n if (! $this->rateLimiter->canMakeRequest($this->config)) {\n $retryAfter = $this->rateLimiter->requestAvailableIn($this->config);\n\n $this->log->warning('[Hubspot] Rate limit exceeded, deferring request', [\n 'team_id' => $this->config->team_id,\n 'config_id' => $this->config->getId(),\n 'retry_after' => $retryAfter,\n ]);\n\n throw new RateLimitException(\n 'Hubspot rate limit reached for configuration ' . $this->config->getId(),\n $retryAfter,\n );\n }\n\n $this->rateLimiter->incrementRequestCount($this->config);\n\n try {\n return $apiCall();\n } catch (Throwable $e) {\n if ($this->isHubspotRateLimit($e)) {\n $retryAfter = $this->parseRetryAfter($e);\n\n $this->log->warning('[Hubspot] Received 429 from API', [\n 'team_id' => $this->config->team_id,\n 'config_id' => $this->config->getId(),\n 'retry_after' => $retryAfter,\n 'reason' => $e->getMessage(),\n ]);\n\n throw new RateLimitException('Hubspot returned 429', $retryAfter, $e);\n }\n\n throw $e;\n }\n }\n\n public function isHubspotRateLimit(Throwable $e): bool\n {\n return method_exists($e, 'getCode') && (int) $e->getCode() === 429;\n }\n\n public function parseRetryAfter(Throwable $e): int\n {\n if (method_exists($e, 'getResponseHeaders')) {\n $headers = $e->getResponseHeaders() ?: [];\n $value = $headers['Retry-After'] ?? $headers['retry-after'] ?? null;\n if (is_array($value)) {\n $value = $value[0] ?? null;\n }\n if (is_numeric($value)) {\n return (int) $value;\n }\n }\n\n return 10;\n }\n\n public function getMinimumApiVersion(): string\n {\n return self::MIN_API_VERSION;\n }\n\n public function getInstance(): Factory\n {\n return new Factory([\n 'key' => $this->accessToken,\n 'oauth2' => true,\n 'base_url' => $this->baseUrl,\n ]);\n }\n\n public function getNewInstance(): Discovery\n {\n return \\HubSpot\\Factory::createWithAccessToken($this->accessToken);\n }\n\n /**\n * Secondly and daily limits for Hubspot API\n *\n * Product Tier: Free & Starter | Professional & Enterprise | API add-on (any tier)\n * Burst: 100/10 seconds | 150/10 seconds | 200/10 seconds\n * Daily: 250,000 | 500,000 | 1,000,000\n *\n * Official documentation states: The search endpoints are rate limited to five requests per second.\n * Since with 5 RPS were still hitting secondly rate limits we lowered it to 4\n */\n public function getPaginatedData(array $payload, string $type, int $offset = 0): array\n {\n $total = 0;\n $lastId = null;\n $rows = [];\n foreach ($this->getPaginatedDataGenerator($payload, $type, $offset, $total, $lastId) as $row) {\n $rows[] = $row;\n }\n\n return ['results' => $rows, 'total' => $total, 'last_record' => $lastId];\n }\n\n /**\n * @throws HubspotException\n * @throws SocialAccountTokenInvalidException\n * @throws BadRequest\n */\n public function getPaginatedDataGenerator(\n array $payload,\n string $type,\n int $offset = 0,\n int &$total = 0,\n ?string &$lastRecordId = null\n ): \\Generator {\n return $this->paginationService->getPaginatedDataGenerator(\n $this,\n $payload,\n $type,\n $offset,\n $total,\n $lastRecordId\n );\n }\n\n /**\n * @throws DealApiException\n * @throws CrmException\n */\n public function getOpportunityById(string $crmId, array $fields): array\n {\n try {\n// $deal = $this->executeRequest(fn () => $this->getNewInstance()->crm()->deals()->basicApi()->getById(\n $deal = $this->getNewInstance()->crm()->deals()->basicApi()->getById(\n $crmId,\n implode(',', $fields),\n 'companies,contacts'\n );\n } catch (DealApiException $e) {\n $this->log->info('[Hubspot] Failed to fetch opportunity', [\n 'crm_id' => $crmId,\n 'reason' => $e->getMessage(),\n ]);\n\n throw $e;\n }\n\n if (! $deal instanceof DealWithAssociations) {\n throw new CrmException('Deal not found');\n }\n\n return [\n 'id' => $deal->getId(),\n 'properties' => $deal->getProperties(),\n 'associations' => $deal->getAssociations(),\n ];\n }\n\n /**\n * Generic batch read method for HubSpot objects\n *\n * @param string $objectType The object type ('deals', 'companies', 'contacts')\n * @param array<string> $crmIds Array of HubSpot object IDs (max 100)\n * @param array<string> $fields Array of property names to fetch\n *\n * @return array<string, array> Array keyed by CRM ID with object data\n */\n private function batchReadObjects(string $objectType, array $crmIds, array $fields): array\n {\n if (empty($crmIds)) {\n return [];\n }\n\n $this->validateBatchSize($objectType, $crmIds);\n $this->ensureValidToken();\n\n try {\n $batchConfig = $this->createBatchConfiguration($objectType);\n $batchReadRequest = $this->prepareBatchRequest($batchConfig, $crmIds, $fields);\n $response = $batchConfig['api']->read($batchReadRequest);\n\n $this->validateApiResponse($response, $objectType);\n\n $results = $this->processApiResults($response);\n $this->logBatchResults($objectType, $crmIds, $results);\n\n return $results;\n } catch (\\Throwable $e) {\n $this->handleBatchError($e, $objectType, $crmIds);\n }\n }\n\n private function validateBatchSize(string $objectType, array $crmIds): void\n {\n if (count($crmIds) > 100) {\n throw new \\InvalidArgumentException(\"Batch size cannot exceed 100 {$objectType}\");\n }\n }\n\n private function createBatchConfiguration(string $objectType): array\n {\n $configurations = [\n 'deals' => [\n 'batchReadRequest' => new \\HubSpot\\Client\\Crm\\Deals\\Model\\BatchReadInputSimplePublicObjectId(),\n 'inputClass' => \\HubSpot\\Client\\Crm\\Deals\\Model\\SimplePublicObjectId::class,\n 'api' => $this->getNewInstance()->crm()->deals()->batchApi(),\n ],\n 'companies' => [\n 'batchReadRequest' => new \\HubSpot\\Client\\Crm\\Companies\\Model\\BatchReadInputSimplePublicObjectId(),\n 'inputClass' => \\HubSpot\\Client\\Crm\\Companies\\Model\\SimplePublicObjectId::class,\n 'api' => $this->getNewInstance()->crm()->companies()->batchApi(),\n ],\n 'contacts' => [\n 'batchReadRequest' => new \\HubSpot\\Client\\Crm\\Contacts\\Model\\BatchReadInputSimplePublicObjectId(),\n 'inputClass' => \\HubSpot\\Client\\Crm\\Contacts\\Model\\SimplePublicObjectId::class,\n 'api' => $this->getNewInstance()->crm()->contacts()->batchApi(),\n ],\n ];\n\n if (! isset($configurations[$objectType])) {\n throw new \\InvalidArgumentException(\"Unsupported object type: {$objectType}\");\n }\n\n return $configurations[$objectType];\n }\n\n private function prepareBatchRequest(array $batchConfig, array $crmIds, array $fields): object\n {\n $batchReadRequest = $batchConfig['batchReadRequest'];\n $inputClass = $batchConfig['inputClass'];\n\n $inputs = array_map(function ($crmId) use ($inputClass) {\n $input = new $inputClass();\n $input->setId($crmId);\n\n return $input;\n }, $crmIds);\n\n $batchReadRequest->setInputs($inputs);\n $batchReadRequest->setProperties($fields);\n\n return $batchReadRequest;\n }\n\n private function validateApiResponse($response, string $objectType): void\n {\n if (! $response) {\n throw new CrmException(\"HubSpot API returned null response for {$objectType} batch read\");\n }\n }\n\n private function processApiResults($response): array\n {\n $results = [];\n $responseResults = $response->getResults();\n\n if ($responseResults) {\n foreach ($responseResults as $object) {\n if ($object && $object->getId()) {\n $results[$object->getId()] = [\n 'id' => $object->getId(),\n 'properties' => $object->getProperties() ?: [],\n ];\n }\n }\n }\n\n return $results;\n }\n\n private function logBatchResults(string $objectType, array $crmIds, array $results): void\n {\n $this->log->info(\"[HubSpot] Batch fetched {$objectType}\", [\n 'requested_count' => count($crmIds),\n 'returned_count' => count($results),\n 'crm_ids' => $crmIds,\n ]);\n }\n\n private function handleBatchError(\\Throwable $e, string $objectType, array $crmIds): void\n {\n $errorMessage = $e->getMessage() ?: 'Unknown error';\n $errorTrace = $e->getTraceAsString() ?: 'No trace available';\n\n $this->log->error(\"[HubSpot] Failed to batch fetch {$objectType}\", [\n 'crm_ids' => $crmIds,\n 'error' => $errorMessage,\n 'trace' => $errorTrace,\n ]);\n\n throw new CrmException(\"Failed to batch fetch {$objectType}: \" . $errorMessage);\n }\n\n /**\n * Batch read multiple opportunities by their CRM IDs\n *\n * @param array<string> $crmIds Array of HubSpot deal IDs (max 100)\n * @param array<string> $fields Array of property names to fetch\n *\n * @return array<string, array> Array keyed by CRM ID with opportunity data\n */\n public function getOpportunitiesByIds(array $crmIds, array $fields): array\n {\n return $this->batchReadObjects('deals', $crmIds, $fields);\n }\n\n /**\n * Batch read multiple companies by their CRM IDs\n *\n * @param array<string> $crmIds Array of HubSpot company IDs (max 100)\n * @param array<string> $fields Array of property names to fetch\n *\n * @return array<string, array> Array keyed by CRM ID with company data\n */\n public function getCompaniesByIds(array $crmIds, array $fields): array\n {\n return $this->batchReadObjects('companies', $crmIds, $fields);\n }\n\n /**\n * Batch read multiple contacts by their CRM IDs\n *\n * @param array<string> $crmIds Array of HubSpot contact IDs (max 100)\n * @param array<string> $fields Array of property names to fetch\n *\n * @return array<string, array> Array keyed by CRM ID with contact data\n */\n public function getContactsByIds(array $crmIds, array $fields): array\n {\n return $this->batchReadObjects('contacts', $crmIds, $fields);\n }\n\n /**\n * @throws CompanyApiException\n * @throws CrmException\n */\n public function getAccountById(string $crmId, array $fields): array\n {\n try {\n $company = $this->getNewInstance()->crm()->companies()->basicApi()->getById(\n $crmId,\n implode(',', $fields),\n );\n } catch (CompanyApiException $e) {\n $this->log->info('[Hubspot] Failed to fetch account', [\n 'crm_id' => $crmId,\n 'reason' => $e->getMessage(),\n ]);\n\n throw $e;\n }\n\n if (! $company instanceof CompaniesWithAssociations) {\n throw new CrmException('Account not found');\n }\n\n return [\n 'id' => $company->getId(),\n 'properties' => $company->getProperties(),\n ];\n }\n\n /**\n * @throws ContactApiException\n * @throws CrmException\n */\n public function getContactById(string $crmId, array $fields): array\n {\n try {\n $contact = $this->getNewInstance()->crm()->contacts()->basicApi()->getById(\n $crmId,\n implode(',', $fields)\n );\n } catch (ContactApiException $e) {\n $this->log->info('[Hubspot] Failed to fetch contact', [\n 'crm_id' => $crmId,\n 'reason' => $e->getMessage(),\n ]);\n\n throw $e;\n }\n\n if (! $contact instanceof ContactsWithAssociations) {\n throw new CrmException('Contact not found');\n }\n\n return [\n 'id' => $contact->getId(),\n 'properties' => $contact->getProperties(),\n ];\n }\n\n /**\n * This is email search request that Hubspot offers as GET (more generous quota)\n */\n public function getContactByEmail(string $email, array $fields = []): array\n {\n try {\n $contact = $this->getNewInstance()->crm()->contacts()->basicApi()->getById(\n $email,\n implode(',', $fields),\n null,\n false,\n 'email'\n );\n\n return [\n 'id' => $contact->getId(),\n 'properties' => $contact->getProperties(),\n ];\n } catch (ContactApiException $e) {\n $this->log->info('[Hubspot] Failed to fetch contact', [\n 'email' => $email,\n 'reason' => $e->getMessage(),\n ]);\n\n return [];\n }\n }\n\n /**\n * @throws CrmException\n */\n public function fetchProperty(string $objectType, string $propertyId): Property\n {\n $result = $this->getNewInstance()->crm()->properties()->coreApi()->getByName($objectType, $propertyId);\n\n if (! $result instanceof Property) {\n $this->log->error('[Hubspot] Failed to fetch property', [\n 'object_type' => $objectType,\n 'property_id' => $propertyId,\n 'reason' => $result->getMessage(),\n ]);\n\n throw new CrmException('Failed to fetch property');\n }\n\n return $result;\n }\n\n /**\n * @return array<CrmFieldOption>\n */\n public function fetchPropertyOptions(string $objectType, string $propertyId): array\n {\n /** @var array<CrmFieldOption> */\n return $this->fetchProperty($objectType, $propertyId)->getOptions();\n }\n\n /**\n * @return array<array{id:string, label:string, deleted:bool}>\n */\n public function fetchCallDispositions(): array\n {\n /** @var Response $response */\n $response = $this->getInstance()->engagements()->getCallDispositions();\n\n /**\n * @var array<array{\n * id:string,\n * label:string,\n * deleted: bool\n * }>\n */\n return $response->toArray();\n }\n\n /**\n * @return array<CrmFieldOption>\n */\n public function fetchOpportunityPipelineStages(): array\n {\n $stages = [];\n $apiResponse = $this->getNewInstance()->crm()->pipelines()->pipelinesApi()->getAll('deals');\n\n if ($apiResponse instanceof Error) {\n $this->log->error('[Hubspot] Failed to fetch opportunity pipelines', [\n 'reason' => $apiResponse->getMessage(),\n ]);\n\n return [];\n }\n\n foreach ($apiResponse->getResults() as $pipeline) {\n $pipelineStages = array_map(\n static function (PipelineStage $stage) {\n return [\n 'id' => $stage->getId(),\n 'label' => $stage->getLabel(),\n ];\n },\n $pipeline->getStages()\n );\n\n $stages = array_merge($stages, $pipelineStages);\n }\n\n return $stages;\n }\n\n public function fetchOpportunityPipelines(): array\n {\n $pipelines = [];\n\n try {\n $apiResponse = $this->makeRequest('/crm/v3/pipelines/deals');\n } catch (\\Exception $e) {\n $this->log->info('[Hubspot] Failed to fetch opportunity pipelines', [\n 'reason' => $e->getMessage(),\n ]);\n\n return [];\n }\n\n $response = $apiResponse->toArray();\n\n foreach ($response['results'] as $pipeline) {\n $pipelines[] = [\n 'id' => $pipeline['id'],\n 'label' => $pipeline['label'],\n ];\n }\n\n return $pipelines;\n }\n\n /**\n * @return array<CrmFieldOption>\n */\n public function fetchMeetingOutcomeFieldOptions(Field $field): array\n {\n return $field->getCrmProviderId() === 'meetingOutcome'\n ? $this->fetchMeetingOutcomeTypes()\n : $this->fetchCallActivityTypes();\n }\n\n public function fetchMeetingOutcomeTypes(): array\n {\n return $this->extractMeetingTypeOptions(\n 'https://api.hubapi.com/crm/v3/properties/meeting/hs_meeting_outcome'\n );\n }\n\n public function fetchCallActivityTypes(): array\n {\n return $this->extractMeetingTypeOptions(\n 'https://api.hubapi.com/crm/v3/properties/call/hs_activity_type'\n );\n }\n\n private function extractMeetingTypeOptions(string $endpoint): array\n {\n /** @var Response $response */\n $response = $this->getInstance()\n ->getClient()\n ->request('GET', $endpoint);\n\n /**\n * @var array<array{\n * value: string,\n * label: string,\n * displayOrder: int\n * }> $optionData\n */\n $optionData = $response->toArray()['options'] ?? [];\n\n $options = [];\n foreach ($optionData as $item) {\n $options[] = [\n 'id' => $item['value'],\n 'value' => $item['value'],\n 'label' => $item['label'],\n 'display_order' => $item['displayOrder'],\n ];\n }\n\n return $options;\n }\n\n /**\n * @return array<CrmFieldOption>\n */\n public function fetchDispositionFieldOptions(): array\n {\n $options = [];\n\n $dispositions = $this->fetchCallDispositions();\n\n foreach ($dispositions as $disposition) {\n if ($disposition['deleted'] !== false) {\n continue;\n }\n\n $option['value'] = $disposition['id'];\n $option['id'] = $disposition['id'];\n $option['label'] = $disposition['label'];\n\n $options[] = $option;\n }\n\n return $options;\n }\n\n /**\n * @return array<CrmFieldOption>\n */\n public function fetchOpportunityFieldOptions(Field $field): array\n {\n if ($field->isStageField()) {\n return $this->fetchOpportunityPipelineStages();\n }\n\n if ($field->isPipelineField()) {\n return $this->fetchOpportunityPipelines();\n }\n\n return $this->fetchPropertyOptions('deals', $field->getCrmProviderId());\n }\n\n /**\n * @throws BadRequest\n * @throws HubspotException\n */\n public function makeRequest(string $endpoint, $method = 'GET', $payload = [], ?string $queryString = null)\n {\n $endpoint = self::BASE_URL . $endpoint;\n\n if ($method === 'GET') {\n $response = $this->getInstance()->getClient()?->request(\n method: $method,\n endpoint: $endpoint,\n query_string: $queryString\n );\n } else {\n $response = $this->getInstance()->getClient()->request($method, $endpoint, [\n 'json' => ($payload),\n ]);\n }\n\n $max = $response->getHeaderLine('X-HubSpot-RateLimit-Max'); // \"110\"\n $remaining = $response->getHeaderLine('X-HubSpot-RateLimit-Remaining'); // \"109\"\n $interval = $response->getHeaderLine('X-HubSpot-RateLimit-Interval-Milliseconds'); // \"10000\"\n $body = json_decode((string) $response->getBody(), true);\n\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$max ' . PHP_EOL . print_r($max, true));\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$remaining ' . PHP_EOL . print_r($remaining, true));\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$interval ' . PHP_EOL . print_r($interval, true));\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$body ' . PHP_EOL . print_r($body, true));\n\n return $response;\n }\n\n /**\n * @throws BadRequest\n * @throws HubspotException\n */\n public function createMeeting(array $payload): Response\n {\n $endpoint = '/crm/v3/objects/meetings';\n\n return $this->makeRequest($endpoint, 'POST', $payload);\n }\n\n /**\n * @throws BadRequest\n * @throws HubspotException\n */\n public function updateMeeting(string $meetingId, array $payload): Response\n {\n $endpoint = '/crm/v3/objects/meetings/' . $meetingId;\n\n return $this->makeRequest($endpoint, 'PATCH', $payload);\n }\n\n /**\n * @throws \\Exception\n */\n public function createNote(\n string $body,\n string $ownerId,\n int $timestamp,\n string $objectId,\n NoteObject $noteObject\n ): ?string {\n try {\n $noteInput = new SimplePublicObjectInput([\n 'properties' => [\n 'hs_note_body' => $body,\n 'hubspot_owner_id' => $ownerId,\n 'hs_timestamp' => $timestamp,\n ],\n ]);\n\n // Create note\n $note = $this->getNewInstance()->crm()->objects()->basicApi()->create('note', $noteInput);\n\n $this->getNewInstance()->crm()->objects()->associationsApi()->create(\n 'note',\n $note->getId(),\n $this->getNoteObject($noteObject),\n $objectId,\n $this->getNoteAssociationType($noteObject),\n );\n\n return $note->getId();\n } catch (\\Exception $e) {\n $this->log->error('[Hubspot] Failed to create note', [\n 'objectId' => $objectId,\n 'noteObject' => $noteObject->getObjectType(),\n 'reason' => $e->getMessage(),\n ]);\n\n \\Sentry::captureException($e);\n }\n\n return null;\n }\n\n public function updateEngagement(string $objectId, array $engagement, array $metadata): void\n {\n $this->getInstance()->engagements()->update($objectId, $engagement, $metadata);\n }\n\n public function getEngagementData(string $engagementId): array\n {\n $engagement = $this->getInstance()->engagements()->get($engagementId);\n\n return $engagement->toArray();\n }\n\n public function createEngagement(array $engagement, array $associations, array $metadata): Response\n {\n return $this->getInstance()\n ->engagements()\n ->create($engagement, $associations, $metadata);\n }\n\n public function isUnauthorizedException(\\Exception $e): bool\n {\n // Check for specific HubSpot API exception types first\n if ($e instanceof BadRequest) {\n // BadRequest can contain 401 status codes\n return $e->getCode() === 401;\n }\n\n // Check for HTTP client exceptions with status codes\n if ($e instanceof \\GuzzleHttp\\Exception\\RequestException && $e->hasResponse()) {\n $response = $e->getResponse();\n if ($response !== null) {\n return $response->getStatusCode() === 401;\n }\n }\n\n // Check for Guzzle HTTP exceptions\n if ($e instanceof \\GuzzleHttp\\Exception\\ClientException) {\n return $e->getCode() === 401;\n }\n\n // Fallback to string matching as last resort, but be more specific\n $message = strtolower($e->getMessage());\n\n return str_contains($message, '401 unauthorized') ||\n str_contains($message, 'http 401') ||\n str_contains($message, 'status code 401') ||\n (preg_match('/\\b401\\b/', $message) && str_contains($message, 'unauthorized'));\n }\n\n /**\n * Validates and refreshes the access token if needed before API requests.\n * This ensures long-running processes don't fail due to token expiration.\n *\n * @throws SocialAccountTokenInvalidException\n */\n public function ensureValidToken(): void\n {\n if ($this->oauthAccount === null) {\n return;\n }\n\n $newToken = $this->tokenManager->ensureValidToken($this->oauthAccount);\n if ($newToken !== null) {\n $this->accessToken = $newToken;\n }\n }\n\n public function getConfig()\n {\n return $this->config;\n }\n\n // returns only active (archived=false)\n public function getOwners(): array\n {\n return $this->getNewInstance()->crm()->owners()->getAll();\n }\n\n /**\n * @param bool $archived\n *\n * @return array<Owner>|[]\n */\n public function getOwnersArchived(bool $archived = true): array\n {\n $endpoint = '/crm/v3/owners';\n $queryParams = [\n 'archived' => $archived ? 'true' : 'false',\n ];\n $queryString = http_build_query($queryParams);\n\n $owners = [];\n\n try {\n $response = $this->makeRequest(endpoint: $endpoint, queryString: $queryString);\n $responseData = $response?->toArray();\n\n foreach ($responseData['results'] as $result) {\n try {\n $owners[] = Owner::create($result);\n } catch (Throwable $e) {\n $this->log->error('[HubSpot] Failed to process owner data', [\n 'result' => $result,\n 'error' => $e->getMessage(),\n ]);\n\n continue;\n }\n }\n } catch (Throwable $e) {\n $this->log->error('HubSpot] Failed to fetch owners', [\n 'archived' => $archived,\n 'error' => $e->getMessage(),\n ]);\n\n return [];\n }\n\n return $owners;\n }\n\n public function getMeeting(string $engagementId): ObjectWithAssociations\n {\n return $this->getNewInstance()->crm()->objects()->basicApi()\n ->getById('meeting', $engagementId, null, 'contact,company,deal');\n }\n\n public function deleteEngagement(string $engagementId): void\n {\n $this->getInstance()->engagements()->delete((int) $engagementId);\n }\n\n public function getAssociationsData(array $ids, string $fromObject, string $toObject): array\n {\n $associationData = [];\n $idChunks = array_chunk($ids, self::ASSOCIATIONS_BATCH_SIZE_LIMIT);\n\n foreach ($idChunks as $idChunk) {\n try {\n $batchInput = new \\HubSpot\\Client\\Crm\\Associations\\Model\\BatchInputPublicObjectId();\n $batchInput->setInputs(array_map(function ($id) {\n $publicObjectId = new \\HubSpot\\Client\\Crm\\Associations\\Model\\PublicObjectId();\n $publicObjectId->setId($id);\n\n return $publicObjectId;\n }, $idChunk));\n\n $associatedObjectsData = $this\n ->getNewInstance()\n ->crm()\n ->associations()\n ->batchApi()\n ->read($fromObject, $toObject, $batchInput);\n\n if ($associatedObjectsData instanceof \\HubSpot\\Client\\Crm\\Associations\\Model\\BatchResponsePublicAssociationMulti) {\n foreach ($associatedObjectsData->getResults() as $association) {\n $from = $association->getFrom()->getId();\n $toAssociations = $association->getTo();\n\n if (! empty($toAssociations)) {\n $associationData[$from] = array_map(function ($item) {\n return $item->getId();\n }, $toAssociations);\n }\n }\n }\n } catch (\\Exception $e) {\n $this->log->error('[Hubspot] Failed to fetch associations', [\n 'from_object' => $fromObject,\n 'to_object' => $toObject,\n 'reason' => $e->getMessage(),\n ]);\n }\n }\n\n return $associationData;\n }\n\n /**\n * @throws \\Exception\n */\n private function getNoteAssociationType(NoteObject $noteObject): string\n {\n return match($noteObject) {\n NoteObject::Opportunity => 'note_to_deal',\n NoteObject::Lead, NoteObject::Contact => 'note_to_contact', // or 'note_to_lead' if your portal supports it\n NoteObject::Account => 'note_to_company',\n NoteObject::Call, NoteObject::Event => throw new \\Exception('Not supported'),\n };\n }\n\n /**\n * @throws \\Exception\n */\n private function getNoteObject(NoteObject $noteObject): string\n {\n return match($noteObject) {\n NoteObject::Opportunity => 'deal',\n NoteObject::Lead, NoteObject::Contact => 'contact',\n NoteObject::Account => 'company',\n NoteObject::Call, NoteObject::Event => throw new \\Exception('Not supported'),\n };\n }\n\n public function addAssociations(string $objectType, string $associationType, array $payload): Response\n {\n $endpoint = \"/crm/v4/associations/$objectType/$associationType/batch/create\";\n\n return $this->makeRequest($endpoint, 'POST', $payload);\n }\n\n public function removeAssociations(string $objectType, string $associationType, array $payload): Response\n {\n $endpoint = \"/crm/v4/associations/$objectType/$associationType/batch/archive\";\n\n return $this->makeRequest($endpoint, 'POST', $payload);\n }\n}","role_description":"text entry area","is_enabled":true,"is_focused":true,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Project","depth":3,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Project","depth":3,"bounds":{"left":0.011968086,"top":0.047885075,"width":0.024268618,"height":0.024740623},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"New File or Directory…","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Expand Selected","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Collapse All","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Options","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
1521951907897961092
|
6701901348398533693
|
click
|
accessibility
|
NULL
|
Project: faVsco.js, menu
master, menu
Start Listen Project: faVsco.js, menu
master, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Show Replace Field
Search History
retry_error
New Line
Match Case
Words
Regex
Replace History
Replace
New Line
Preserve case
0 results
Previous Occurrence
Next Occurrence
Filter Search Results
Open in Window, Multiple Cursors
Click to highlight
Close
Sync Changes
Hide This Notification
Code changed:
Hide
699
Previous Highlighted Error
Next Highlighted Error
[2026-05-07 12:52:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"fa8a3008-d298-4682-bbbc-fdc77520e0d7","trace_id":"7cfb2afb-9fc4-4a77-81be-65dce93c7d80"}
[2026-05-07 12:52:08] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"fa8a3008-d298-4682-bbbc-fdc77520e0d7","trace_id":"7cfb2afb-9fc4-4a77-81be-65dce93c7d80"}
[2026-05-07 12:52:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"fa8a3008-d298-4682-bbbc-fdc77520e0d7","trace_id":"7cfb2afb-9fc4-4a77-81be-65dce93c7d80"}
[2026-05-07 12:52:12] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"932ced9d-9804-48ed-976a-1f8bf5e75707","trace_id":"21bf320c-58f3-4082-831d-9f07f6c6a669"}
[2026-05-07 12:52:12] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"932ced9d-9804-48ed-976a-1f8bf5e75707","trace_id":"21bf320c-58f3-4082-831d-9f07f6c6a669"}
[2026-05-07 12:52:17] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1499,"provider":"hubspot"} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:17] local.INFO: [SocialAccountService] Token retrieved {"socialAccountId":1499,"provider":"hubspot"} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:17] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:17] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {"crm_provider":"hubspot","crm_owner":148,"team_id":2} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:17] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.55,"average_seconds_per_request":0.55} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:18] local.NOTICE: Monitoring start {"correlation_id":"ae3ec78f-432c-4e22-b73b-0413af73d9f3","trace_id":"c2feb517-0f2b-4ad9-bce5-4d57476a164b"}
[2026-05-07 12:52:18] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.51,"average_seconds_per_request":0.51} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:18] local.NOTICE: Monitoring end {"correlation_id":"ae3ec78f-432c-4e22-b73b-0413af73d9f3","trace_id":"c2feb517-0f2b-4ad9-bce5-4d57476a164b"}
[2026-05-07 12:52:18] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.48,"average_seconds_per_request":0.48} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:19] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.49,"average_seconds_per_request":0.49} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:19] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.49,"average_seconds_per_request":0.49} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"2bf2f73f-007c-4909-925e-f1749fbf87b3","trace_id":"8429123c-d92c-48d9-a154-29bc0aa0e2a1"}
[2026-05-07 12:52:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"2bf2f73f-007c-4909-925e-f1749fbf87b3","trace_id":"8429123c-d92c-48d9-a154-29bc0aa0e2a1"}
[2026-05-07 12:52:20] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.48,"average_seconds_per_request":0.48} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:20] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.62,"average_seconds_per_request":0.62} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:21] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.78,"average_seconds_per_request":0.78} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:22] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":1.21,"average_seconds_per_request":1.21} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:23] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/contact/search","total_requests":1,"total_records_fetched":1,"total_elapsed_seconds":0.53,"average_seconds_per_request":0.53} {"correlation_id":"84c9b84a-9f60-4e35-956a-ead94112d174","trace_id":"07a542c8-266e-40e4-97ec-725d0fd3192d"}
[2026-05-07 12:52:25] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8","trace_id":"64ccac6b-34f7-45ed-a8ac-b63adbb19107"}
[2026-05-07 12:52:25] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8","trace_id":"64ccac6b-34f7-45ed-a8ac-b63adbb19107"}
[2026-05-07 12:52:26] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8","trace_id":"64ccac6b-34f7-45ed-a8ac-b63adbb19107"}
[2026-05-07 12:52:26] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"d1bc569d-b1ae-4ac5-b2cd-0bb8d765bbd8","trace_id":"64ccac6b-34f7-45ed-a8ac-b63adbb19107"}
[2026-05-07 12:52:28] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:count","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"6e1a36d0-a87a-455f-88b9-04f16718ea33","trace_id":"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c"}
[2026-05-07 12:52:28] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:50:00, 2026-05-07 12:52:00] {"correlation_id":"6e1a36d0-a87a-455f-88b9-04f16718ea33","trace_id":"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c"}
[2026-05-07 12:52:28] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:50:00, 2026-05-07 12:52:00] {"correlation_id":"6e1a36d0-a87a-455f-88b9-04f16718ea33","trace_id":"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c"}
[2026-05-07 12:52:28] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:count","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"6e1a36d0-a87a-455f-88b9-04f16718ea33","trace_id":"ce4c48f7-dbeb-4574-9f0a-1097a7c1dc6c"}
[2026-05-07 12:52:31] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:create","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"80549428-beea-4a6c-97d3-818ca0f059f3","trace_id":"55ddd59b-073b-4331-8cdb-baa869dcff70"}
[2026-05-07 12:52:31] local.INFO: [EmailSchedule] STARTING batch create {"host":"docker_lamp_1"} {"correlation_id":"80549428-beea-4a6c-97d3-818ca0f059f3","trace_id":"55ddd59b-073b-4331-8cdb-baa869dcff70"}
[2026-05-07 12:52:31] local.INFO: [EmailSchedule] FINISHED batch create {"host":"docker_lamp_1"} {"correlation_id":"80549428-beea-4a6c-97d3-818ca0f059f3","trace_id":"55ddd59b-073b-4331-8cdb-baa869dcff70"}
[2026-05-07 12:52:31] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:create","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"80549428-beea-4a6c-97d3-818ca0f059f3","trace_id":"55ddd59b-073b-4331-8cdb-baa869dcff70"}
[2026-05-07 12:52:32] local.INFO: [Jiminny\Jobs\Mailbox\CreateBatches] processed 2 inboxes and created 0 batches {"userId":null,"batchSize":30,"maxBatches":1000} {"correlation_id":"92242bd6-7014-4487-a50b-1570e1a88e7a","trace_id":"55ddd59b-073b-4331-8cdb-baa869dcff70"}
[2026-05-07 12:52:39] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"activity:sync","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"d467eace-3254-4ecc-8d8e-a94688d6d3ad","trace_id":"5105ca8f-3c0d-4798-b748-5a7d6fbd7531"}
[2026-05-07 12:52:39] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"activity:sync","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"d467eace-3254-4ecc-8d8e-a94688d6d3ad","trace_id":"5105ca8f-3c0d-4798-b748-5a7d6fbd7531"}
[2026-05-07 12:53:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"04363b29-2f82-470a-89d0-c5ce4f4779d7","trace_id":"3c76a1f1-3348-4e2b-897c-4a216ca95147"}
[2026-05-07 12:53:08] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"04363b29-2f82-470a-89d0-c5ce4f4779d7","trace_id":"3c76a1f1-3348-4e2b-897c-4a216ca95147"}
[2026-05-07 12:53:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"04363b29-2f82-470a-89d0-c5ce4f4779d7","trace_id":"3c76a1f1-3348-4e2b-897c-4a216ca95147"}
[2026-05-07 12:53:11] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"5ebbecd0-866c-443f-965f-b6ac03735379","trace_id":"e0a724a5-bb4b-4fe6-9fe9-36ea1c3f0326"}
[2026-05-07 12:53:11] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"5ebbecd0-866c-443f-965f-b6ac03735379","trace_id":"e0a724a5-bb4b-4fe6-9fe9-36ea1c3f0326"}
[2026-05-07 12:53:18] local.NOTICE: Monitoring start {"correlation_id":"f39f0d3c-a292-41cb-8834-45dae1f8cf47","trace_id":"b6e7e2a7-85af-401d-afc6-bec2bdab34d7"}
[2026-05-07 12:53:18] local.NOTICE: Monitoring end {"correlation_id":"f39f0d3c-a292-41cb-8834-45dae1f8cf47","trace_id":"b6e7e2a7-85af-401d-afc6-bec2bdab34d7"}
[2026-05-07 12:53:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"419bb747-2669-496f-944b-1073496cc271","trace_id":"4cb913a4-ef75-422b-80eb-fbfb988521ed"}
[2026-05-07 12:53:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"419bb747-2669-496f-944b-1073496cc271","trace_id":"4cb913a4-ef75-422b-80eb-fbfb988521ed"}
[2026-05-07 12:53:22] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"f4805c97-9344-4111-8be2-2b1efeae07bb","trace_id":"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22"}
[2026-05-07 12:53:22] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"f4805c97-9344-4111-8be2-2b1efeae07bb","trace_id":"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22"}
[2026-05-07 12:53:22] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"f4805c97-9344-4111-8be2-2b1efeae07bb","trace_id":"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22"}
[2026-05-07 12:53:22] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"f4805c97-9344-4111-8be2-2b1efeae07bb","trace_id":"cf7ff1ad-3e3d-4a7a-a1a6-99a883cbfe22"}
[2026-05-07 12:53:25] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:retry-failed","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"2eadb06b-2c2e-4a7f-8920-77bd30d6cd7f","trace_id":"75f27a23-2021-41a5-9e5f-4b1cb4f143a6"}
[2026-05-07 12:53:25] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:retry-failed","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"2eadb06b-2c2e-4a7f-8920-77bd30d6cd7f","trace_id":"75f27a23-2021-41a5-9e5f-4b1cb4f143a6"}
[2026-05-07 12:54:06] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"ad151521-f676-4351-a70b-f44dc0b94990","trace_id":"17e39c4c-85cb-49a4-815e-b7315a8c2249"}
[2026-05-07 12:54:06] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"ad151521-f676-4351-a70b-f44dc0b94990","trace_id":"17e39c4c-85cb-49a4-815e-b7315a8c2249"}
[2026-05-07 12:54:06] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"ad151521-f676-4351-a70b-f44dc0b94990","trace_id":"17e39c4c-85cb-49a4-815e-b7315a8c2249"}
[2026-05-07 12:54:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"ed0583cf-03c6-4696-b859-876c8efa4473","trace_id":"3f9e0a3c-2178-4885-95eb-8618b8cfc042"}
[2026-05-07 12:54:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"ed0583cf-03c6-4696-b859-876c8efa4473","trace_id":"3f9e0a3c-2178-4885-95eb-8618b8cfc042"}
[2026-05-07 12:54:10] local.NOTICE: Monitoring start {"correlation_id":"7142250a-b897-4620-8ff7-fd9b3a1f3802","trace_id":"597def1e-ca38-4cc4-8890-fdcd5baff948"}
[2026-05-07 12:54:10] local.NOTICE: Monitoring end {"correlation_id":"7142250a-b897-4620-8ff7-fd9b3a1f3802","trace_id":"597def1e-ca38-4cc4-8890-fdcd5baff948"}
[2026-05-07 12:54:12] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"cb2ada48-0200-4eb3-a8c5-6cb8ea43ec0d","trace_id":"73937bdc-10b9-4508-9ef2-86420fe774fc"}
[2026-05-07 12:54:12] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"cb2ada48-0200-4eb3-a8c5-6cb8ea43ec0d","trace_id":"73937bdc-10b9-4508-9ef2-86420fe774fc"}
[2026-05-07 12:54:14] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"8f1d8932-2839-4256-99ab-1fd13e8381c6","trace_id":"cc090767-edc2-4a89-90c2-116f1737de7f"}
[2026-05-07 12:54:14] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"8f1d8932-2839-4256-99ab-1fd13e8381c6","trace_id":"cc090767-edc2-4a89-90c2-116f1737de7f"}
[2026-05-07 12:54:14] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"8f1d8932-2839-4256-99ab-1fd13e8381c6","trace_id":"cc090767-edc2-4a89-90c2-116f1737de7f"}
[2026-05-07 12:54:14] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"8f1d8932-2839-4256-99ab-1fd13e8381c6","trace_id":"cc090767-edc2-4a89-90c2-116f1737de7f"}
[2026-05-07 12:54:16] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:count","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"9d324c6d-5b36-46ee-89c6-f95f86bf3f39","trace_id":"860cdff0-9356-4e94-84cc-e011a74ba56c"}
[2026-05-07 12:54:16] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:52:00, 2026-05-07 12:54:00] {"correlation_id":"9d324c6d-5b36-46ee-89c6-f95f86bf3f39","trace_id":"860cdff0-9356-4e94-84cc-e011a74ba56c"}
[2026-05-07 12:54:16] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:52:00, 2026-05-07 12:54:00] {"correlation_id":"9d324c6d-5b36-46ee-89c6-f95f86bf3f39","trace_id":"860cdff0-9356-4e94-84cc-e011a74ba56c"}
[2026-05-07 12:54:16] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:count","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"9d324c6d-5b36-46ee-89c6-f95f86bf3f39","trace_id":"860cdff0-9356-4e94-84cc-e011a74ba56c"}
[2026-05-07 12:54:18] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"activity:aircall:check-and-renew","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"c2009a88-eea6-4954-8642-ef5d9cb56b42","trace_id":"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab"}
[2026-05-07 12:54:18] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1496,"provider":"aircall"} {"correlation_id":"c2009a88-eea6-4954-8642-ef5d9cb56b42","trace_id":"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab"}
[2026-05-07 12:54:18] local.INFO: [SocialAccountService] Token retrieved {"socialAccountId":1496,"provider":"aircall"} {"correlation_id":"c2009a88-eea6-4954-8642-ef5d9cb56b42","trace_id":"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab"}
[2026-05-07 12:54:18] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"c2009a88-eea6-4954-8642-ef5d9cb56b42","trace_id":"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab"}
[2026-05-07 12:54:19] local.ERROR: [Aircall] Re-activating webhooks failed {"team_id":1,"reason":"{\"message\":\"Forbidden\"}"} {"correlation_id":"c2009a88-eea6-4954-8642-ef5d9cb56b42","trace_id":"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab"}
[2026-05-07 12:54:19] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"activity:aircall:check-and-renew","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"c2009a88-eea6-4954-8642-ef5d9cb56b42","trace_id":"71a5ea6f-c8d8-45e2-8458-a2f572f5fcab"}
[2026-05-07 12:54:21] local.INFO: [RetryFailedDownloads] Starting {"options":{"from":null,"to":null,"help":false,"silent":false,"quiet":false,"verbose":false,"version":false,"ansi":null,"no-interaction":false,"env":null}} {"correlation_id":"825ef2d7-b5f8-45cd-b19d-20a179b06934","trace_id":"5825a6c8-14c9-4bec-b688-d4895cfc41cc"}
[2026-05-07 12:55:05] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"c0dc8e25-7a51-4023-be61-d0abd6d72e37","trace_id":"16b8fa3e-92b1-465e-82d4-642a2d14c7c5"}
[2026-05-07 12:55:05] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"c0dc8e25-7a51-4023-be61-d0abd6d72e37","trace_id":"16b8fa3e-92b1-465e-82d4-642a2d14c7c5"}
[2026-05-07 12:55:05] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"c0dc8e25-7a51-4023-be61-d0abd6d72e37","trace_id":"16b8fa3e-92b1-465e-82d4-642a2d14c7c5"}
[2026-05-07 12:55:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"1c65fdd1-1f79-435d-b469-add46ddafd63","trace_id":"62f2a3bb-3be7-4c76-a9dd-222bfb895fab"}
[2026-05-07 12:55:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"1c65fdd1-1f79-435d-b469-add46ddafd63","trace_id":"62f2a3bb-3be7-4c76-a9dd-222bfb895fab"}
[2026-05-07 12:55:11] local.NOTICE: Monitoring start {"correlation_id":"f115f9bc-bb59-4fc9-8c9f-8b69baba1a55","trace_id":"e75cb5c6-6dd8-4000-8d26-4418020c7cfe"}
[2026-05-07 12:55:11] local.NOTICE: Monitoring end {"correlation_id":"f115f9bc-bb59-4fc9-8c9f-8b69baba1a55","trace_id":"e75cb5c6-6dd8-4000-8d26-4418020c7cfe"}
[2026-05-07 12:55:14] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"dba5c474-4d40-44da-baf2-f8b30db9a2f5","trace_id":"adb45622-1fb0-457c-bf20-8dcceab2d62a"}
[2026-05-07 12:55:14] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"dba5c474-4d40-44da-baf2-f8b30db9a2f5","trace_id":"adb45622-1fb0-457c-bf20-8dcceab2d62a"}
[2026-05-07 12:55:16] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"22c96a8e-4424-4a1f-b349-206276eefe4c","trace_id":"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c"}
[2026-05-07 12:55:16] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"22c96a8e-4424-4a1f-b349-206276eefe4c","trace_id":"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c"}
[2026-05-07 12:55:16] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"22c96a8e-4424-4a1f-b349-206276eefe4c","trace_id":"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c"}
[2026-05-07 12:55:16] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"22c96a8e-4424-4a1f-b349-206276eefe4c","trace_id":"1444d00b-35f8-4eba-b5e6-7c36c9cdeb4c"}
[2026-05-07 12:55:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"activity:purge-stale","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"5f958e8d-1d01-4144-abd6-2513e5524ad3","trace_id":"828bc5b7-e2aa-4443-901f-38dd94bb7cc5"}
[2026-05-07 12:55:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"activity:purge-stale","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"5f958e8d-1d01-4144-abd6-2513e5524ad3","trace_id":"828bc5b7-e2aa-4443-901f-38dd94bb7cc5"}
[2026-05-07 12:55:22] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:text-relay:sync","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"6bd1c9cb-cd9a-42a9-87fe-45cb7bac687a","trace_id":"0f2f5d66-c4c9-46a5-a31b-6937663ce1ad"}
[2026-05-07 12:55:22] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:text-relay:sync","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"6bd1c9cb-cd9a-42a9-87fe-45cb7bac687a","trace_id":"0f2f5d66-c4c9-46a5-a31b-6937663ce1ad"}
[2026-05-07 12:55:24] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:pre-meeting-notification","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"c5dd8132-d7e1-4caa-84d1-0a50d02df8da","trace_id":"bc7341c5-b8e2-48ea-9670-7ec375363180"}
[2026-05-07 12:55:24] local.INFO: Running pre-meeting notification command {"correlation_id":"c5dd8132-d7e1-4caa-84d1-0a50d02df8da","trace_id":"bc7341c5-b8e2-48ea-9670-7ec375363180"}
[2026-05-07 12:55:24] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:pre-meeting-notification","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"c5dd8132-d7e1-4caa-84d1-0a50d02df8da","trace_id":"bc7341c5-b8e2-48ea-9670-7ec375363180"}
[2026-05-07 12:55:26] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:start","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0","trace_id":"efb1619f-4185-4319-9bfb-305cee0b6bfc"}
[2026-05-07 12:55:26] local.INFO: Running conference:monitor:start command for activities in (2026-05-07 12:45:00, 2026-05-07 12:50:00] {"correlation_id":"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0","trace_id":"efb1619f-4185-4319-9bfb-305cee0b6bfc"}
[2026-05-07 12:55:26] local.INFO: [conference:monitor:start] No activities found in (2026-05-07 12:45:00, 2026-05-07 12:50:00] {"correlation_id":"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0","trace_id":"efb1619f-4185-4319-9bfb-305cee0b6bfc"}
[2026-05-07 12:55:26] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:start","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"f44cba2d-7f2e-4fa9-9d6c-c5597fd0c3a0","trace_id":"efb1619f-4185-4319-9bfb-305cee0b6bfc"}
[2026-05-07 12:55:28] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:end","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"3792b31a-080a-4fe4-9823-5602361325ba","trace_id":"41a2fde1-48f6-4667-84b7-a2f93e9ad2da"}
[2026-05-07 12:55:28] local.INFO: conference:monitor:end:Jiminny\Console\Commands\Activities\MonitorMeetingEndCommand::logActivitiesEnded {"from":"12:50","to":"12:55"} {"correlation_id":"3792b31a-080a-4fe4-9823-5602361325ba","trace_id":"41a2fde1-48f6-4667-84b7-a2f93e9ad2da"}
[2026-05-07 12:55:28] local.INFO: conference:monitor:end:Jiminny\Console\Commands\Activities\MonitorMeetingEndCommand::logActivitiesWithUnfinishedSession {"from":"02:45","to":"02:50"} {"correlation_id":"3792b31a-080a-4fe4-9823-5602361325ba","trace_id":"41a2fde1-48f6-4667-84b7-a2f93e9ad2da"}
[2026-05-07 12:55:28] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:end","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"3792b31a-080a-4fe4-9823-5602361325ba","trace_id":"41a2fde1-48f6-4667-84b7-a2f93e9ad2da"}
[2026-05-07 12:55:30] local.NOTICE: Repairing HubSpot tokens start {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:30] local.INFO: Trying to refresh HubSpot token {"account_id":59,"updated_at":"2025-10-03 09:32:05"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:30] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:30] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":59,"provider":"hubspot","refreshToken":"97b78f6e2cc49965c00c2492b602b02708b1392551e6b3f113fbaa48992af90b","state":"full-refresh"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.ERROR: Failed to refresh HubSpot token {"account_id":59,"updated_at":"2025-10-03 09:32:05","reason":"missing or invalid refresh token","previous":""} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.INFO: Trying to refresh HubSpot token {"account_id":306,"updated_at":"2023-11-27 09:30:03"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":306,"provider":"hubspot","refreshToken":"6fa6aa8cc641d131231acc3470f5c03cb3b07b2e580fb18f8acb3b1dbb72549b","state":"full-refresh"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.ERROR: Failed to refresh HubSpot token {"account_id":306,"updated_at":"2023-11-27 09:30:03","reason":"missing or invalid refresh token","previous":""} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.INFO: Trying to refresh HubSpot token {"account_id":1372,"updated_at":"2025-10-02 14:47:06"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:31] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1372,"provider":"hubspot","refreshToken":"9aa73948c761da29dce46c177cf9aee1fde483a44169ca38723f9f0597d7a8c4","state":"full-refresh"} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:32] local.ERROR: Failed to refresh HubSpot token {"account_id":1372,"updated_at":"2025-10-02 14:47:06","reason":"missing or invalid refresh token","previous":""} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:32] local.NOTICE: Repairing HubSpot tokens end {"total":3,"fixed":0,"failed":3} {"correlation_id":"e31362f8-5362-478d-911d-099b61f96cd2","trace_id":"2587b5d0-6bef-40a5-afd5-a15003b7cf95"}
[2026-05-07 12:55:40] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"crm:bullhorn:ping","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"5e676ae4-5d63-49d4-9001-559088adf06b","trace_id":"2fcce073-dd68-4c99-b7c4-b9e03c20b8e4"}
[2026-05-07 12:55:40] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:pre-meeting-reminder","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"1f830896-8142-41d1-bfc9-4cbb9179ffda","trace_id":"e348a096-7f37-4308-a6d8-66131e8be901"}
[2026-05-07 12:55:40] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"crm:bullhorn:ping","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"5e676ae4-5d63-49d4-9001-559088adf06b","trace_id":"2fcce073-dd68-4c99-b7c4-b9e03c20b8e4"}
[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Command] Starting polling service {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Service starting {"memory_limit":"256M","max_execution_time":"0","initial_memory_mb":62.0} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Acquired polling lock {"expires_at":"2026-05-07T12:57:40.609671Z"} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:40] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:40] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:pre-meeting-reminder","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"1f830896-8142-41d1-bfc9-4cbb9179ffda","trace_id":"e348a096-7f37-4308-a6d8-66131e8be901"}
[2026-05-07 12:55:40] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:45] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:45] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:46] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:51] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:51] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:55:51] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:06] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:06] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:06] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"2d8b30b4-87aa-480f-9b9e-5a9c709b742a","trace_id":"25b7be6c-1faf-430b-a724-a4ff28773a31"}
[2026-05-07 12:56:08] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"2d8b30b4-87aa-480f-9b9e-5a9c709b742a","trace_id":"25b7be6c-1faf-430b-a724-a4ff28773a31"}
[2026-05-07 12:56:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"2d8b30b4-87aa-480f-9b9e-5a9c709b742a","trace_id":"25b7be6c-1faf-430b-a724-a4ff28773a31"}
[2026-05-07 12:56:10] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"efd336d7-db4d-459e-b6e7-bf73454e955e","trace_id":"0a82c3d5-0417-48c8-b88f-70ec33e2326a"}
[2026-05-07 12:56:10] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"efd336d7-db4d-459e-b6e7-bf73454e955e","trace_id":"0a82c3d5-0417-48c8-b88f-70ec33e2326a"}
[2026-05-07 12:56:12] local.NOTICE: Monitoring start {"correlation_id":"68481576-8ca6-4ee5-821b-07374702971d","trace_id":"c73eac09-5d20-425f-9c22-bd6c65fc60c9"}
[2026-05-07 12:56:12] local.NOTICE: Monitoring end {"correlation_id":"68481576-8ca6-4ee5-821b-07374702971d","trace_id":"c73eac09-5d20-425f-9c22-bd6c65fc60c9"}
[2026-05-07 12:56:17] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"bd0cdc75-b5c2-4dbb-bc44-e36c96813d24","trace_id":"f688cd98-c171-4e30-8c72-afc14f040861"}
[2026-05-07 12:56:17] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"bd0cdc75-b5c2-4dbb-bc44-e36c96813d24","trace_id":"f688cd98-c171-4e30-8c72-afc14f040861"}
[2026-05-07 12:56:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"f01636a9-4059-4ab0-9ad2-b078d42cedbd","trace_id":"fea938d8-aedc-40ec-b8c2-2f487e1ac808"}
[2026-05-07 12:56:20] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"f01636a9-4059-4ab0-9ad2-b078d42cedbd","trace_id":"fea938d8-aedc-40ec-b8c2-2f487e1ac808"}
[2026-05-07 12:56:20] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"f01636a9-4059-4ab0-9ad2-b078d42cedbd","trace_id":"fea938d8-aedc-40ec-b8c2-2f487e1ac808"}
[2026-05-07 12:56:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"f01636a9-4059-4ab0-9ad2-b078d42cedbd","trace_id":"fea938d8-aedc-40ec-b8c2-2f487e1ac808"}
[2026-05-07 12:56:23] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:count","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"d4558901-264d-4238-8589-62a137bac1fd","trace_id":"38e6b5dc-ebd6-46a7-8224-7374d4e58630"}
[2026-05-07 12:56:23] local.INFO: Running conference:monitor:count command for activities in (2026-05-07 12:54:00, 2026-05-07 12:56:00] {"correlation_id":"d4558901-264d-4238-8589-62a137bac1fd","trace_id":"38e6b5dc-ebd6-46a7-8224-7374d4e58630"}
[2026-05-07 12:56:23] local.INFO: [conference:monitor:count] No activities found in (2026-05-07 12:54:00, 2026-05-07 12:56:00] {"correlation_id":"d4558901-264d-4238-8589-62a137bac1fd","trace_id":"38e6b5dc-ebd6-46a7-8224-7374d4e58630"}
[2026-05-07 12:56:23] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:count","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"d4558901-264d-4238-8589-62a137bac1fd","trace_id":"38e6b5dc-ebd6-46a7-8224-7374d4e58630"}
[2026-05-07 12:56:24] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"crm:sync-hubspot-objects","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"7bfaf9be-0ca1-4170-a0c9-83e0ed61881c","trace_id":"ba7f9eee-8dcb-4c94-acb0-18f9363757ad"}
[2026-05-07 12:56:24] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"crm:sync-hubspot-objects","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"7bfaf9be-0ca1-4170-a0c9-83e0ed61881c","trace_id":"ba7f9eee-8dcb-4c94-acb0-18f9363757ad"}
[2026-05-07 12:56:26] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"activity:notify-not-logged","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"2541e0fa-1117-4863-9523-d723b5821a24","trace_id":"d9600320-5133-4938-bdd1-2256dfdf8db4"}
[2026-05-07 12:56:26] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"activity:notify-not-logged","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"2541e0fa-1117-4863-9523-d723b5821a24","trace_id":"d9600320-5133-4938-bdd1-2256dfdf8db4"}
[2026-05-07 12:56:35] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:sync","memoryBeforeCommandInMb":62.0,"memoryPeakBeforeCommandInMb":99.727} {"correlation_id":"e444f776-37db-4c6d-b30e-20b01a089de7","trace_id":"1168869e-e07c-4702-a046-42fc95a91f6d"}
[2026-05-07 12:56:36] local.INFO: [EmailSchedule] STARTING Inbox Sync {"host":"docker_lamp_1"} {"correlation_id":"e444f776-37db-4c6d-b30e-20b01a089de7","trace_id":"1168869e-e07c-4702-a046-42fc95a91f6d"}
[2026-05-07 12:56:36] local.INFO: [EmailSchedule] FINISHED Inbox Sync {"host":"docker_lamp_1","events":2} {"correlation_id":"e444f776-37db-4c6d-b30e-20b01a089de7","trace_id":"1168869e-e07c-4702-a046-42fc95a91f6d"}
[2026-05-07 12:56:36] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:sync","memoryBeforeCommandInMb":62.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.727,"memoryPeakAfterCommandInMB":99.727} {"correlation_id":"e444f776-37db-4c6d-b30e-20b01a089de7","trace_id":"1168869e-e07c-4702-a046-42fc95a91f6d"}
[2026-05-07 12:56:36] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:36] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:36] local.INFO: [HubSpot Journal Auth] Requesting new client credentials token {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:37] local.INFO: [HubSpot Journal Auth] Successfully obtained new access token {"expires_in":1800,"cached_for":1500} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:37] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:37] local.WARNING: [HubSpot Journal Polling] Maximum empty results reached, stopping {"empty_results":5,"max_empty_results":5} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:37] local.WARNING: [HubSpot Journal Polling] Maximum empty results reached, stopping {"empty_results":5,"max_empty_results":5} {"correlation_id":"fa65a15d-da5b-4c86-ae85-c16937786996","trace_id":"7e655fe3-04eb-4a0f-b056-eb64e9c75a80"}
[2026-05-07 12:56:37] local.INFO: [HubSpot Journal Polling] Service ending {"runtime_seconds":57,"total_cycles":5,"files_downloaded":0,"empty_files":0,"other_portal_skipped":0,"total_events":0,"events_per_file":0,"avg_api_ms":238.3,"avg_download_ms":0.0,"avg_transform_ms":0.0,"avg_process_ms":0.0,"peak_memory_mb":99.73} {"correlation_id"...
|
4204
|
NULL
|
NULL
|
NULL
|