[GH-ISSUE #1951] Limit email send per second #561

Open
opened 2026-02-26 18:47:35 +03:00 by kerem · 4 comments
Owner

Originally created by @nicanordlc on GitHub (Aug 8, 2025).
Original GitHub issue: https://github.com/documenso/documenso/issues/1951

Feature Description

It would be good to limit how many email could be send per second.

Use Case

I had a case where I had a couple of recipients to send emails to and I was using resend.com and the limit is 2 emails per second.

Proposed Solution

Have an environment variable to send wanted emails per second.

Alternatives (optional)

No response

Additional Context

No response

Please check the boxes that apply to this feature request.

  • I have searched the existing feature requests to make sure this is not a duplicate.
  • I have provided a detailed description of the requested feature.
  • I have explained the use case or scenario for this feature.
  • I have included any relevant technical details or design suggestions.
  • I understand that this is a suggestion and that there is no guarantee of implementation.
  • I want to work on creating a PR for this issue if approved
Originally created by @nicanordlc on GitHub (Aug 8, 2025). Original GitHub issue: https://github.com/documenso/documenso/issues/1951 ### Feature Description It would be good to limit how many email could be send per second. ### Use Case I had a case where I had a couple of recipients to send emails to and I was using resend.com and the limit is 2 emails per second. ### Proposed Solution Have an environment variable to send wanted emails per second. ### Alternatives (optional) _No response_ ### Additional Context _No response_ ### Please check the boxes that apply to this feature request. - [ ] I have searched the existing feature requests to make sure this is not a duplicate. - [ ] I have provided a detailed description of the requested feature. - [ ] I have explained the use case or scenario for this feature. - [ ] I have included any relevant technical details or design suggestions. - [ ] I understand that this is a suggestion and that there is no guarantee of implementation. - [ ] I want to work on creating a PR for this issue if approved
Author
Owner

@github-actions[bot] commented on GitHub (Aug 8, 2025):

Thank you for opening your first issue and for being a part of the open signing revolution!

One of our team members will review it and get back to you as soon as it possible 💚

Meanwhile, please feel free to hop into our community in Discord

<!-- gh-comment-id:3166531153 --> @github-actions[bot] commented on GitHub (Aug 8, 2025): Thank you for opening your first issue and for being a part of the open signing revolution! <br /> One of our team members will review it and get back to you as soon as it possible 💚 <br /> Meanwhile, please feel free to hop into our community in [Discord](https://documen.so/discord)
Author
Owner

@PrasunShrivastav commented on GitHub (Sep 15, 2025):

I would like to work on this

<!-- gh-comment-id:3290480540 --> @PrasunShrivastav commented on GitHub (Sep 15, 2025): I would like to work on this
Author
Owner

@pablog12 commented on GitHub (Nov 3, 2025):

This also happens with bulk user invites.
I tried to send 6 invites, the first 2 got sent and the rest did not (so likely resend 2 sec ratelimit).

<!-- gh-comment-id:3479943440 --> @pablog12 commented on GitHub (Nov 3, 2025): This also happens with bulk user invites. I tried to send 6 invites, the first 2 got sent and the rest did not (so likely resend 2 sec ratelimit).
Author
Owner

@Censacrof commented on GitHub (Feb 16, 2026):

We are also facing this issue in our Org. This is very impacting and happens easily, it's enough to include a CC contact and two signers. It would be nice if documenso had some sort of retry with exponential backoff to handle 429 responses. As of now, I'm forced to stop using Resend in order to avoid this limitation.

documenso-1  | [JOBS:task-b15ef2dc639dc7290da905cf8aa0e481aa6b8e70a4a1fad4efc9e87646034999--cmlpbq41e00tdp51uv9psfi1c] Task failed Error: [429]: rate_limit_exceeded Too many requests. You can only make 2 requests per second. See rate limit response headers for more information. Or contact support to increase rate limit.
documenso-1  |     at /app/node_modules/@documenso/nodemailer-resend/dist/main.js:54:15
documenso-1  |     at process.processTicksAndRejections (node:internal/process/task_queues:105:5)
documenso-1  | [JOBS]: Job send.signing.requested.email failed BackgroundTaskFailedError: Task failed
documenso-1  |     at Object.runTask (file:///app/apps/remix/build/server/hono/packages/lib/jobs/client/local.js:233:17)
documenso-1  |     at async Module.run (file:///app/apps/remix/build/server/hono/packages/lib/jobs/definitions/emails/send-signing-email.handler.js:198:5)
documenso-1  |     at async Object.handler (file:///app/apps/remix/build/server/hono/packages/lib/jobs/definitions/emails/send-signing-email.js:25:5)
documenso-1  |     at async file:///app/apps/remix/build/server/hono/packages/lib/jobs/client/local.js:102:9
documenso-1  |     at async dispatch (file:///app/node_modules/hono/dist/compose.js:22:17)
documenso-1  |     at async file:///app/apps/remix/build/server/hono/server/router.js:78:3
documenso-1  |     at async dispatch (file:///app/node_modules/hono/dist/compose.js:22:17)
documenso-1  |     at async requestId2 (file:///app/node_modules/hono/dist/middleware/request-id/request-id.js:16:5)
documenso-1  |     at async dispatch (file:///app/node_modules/hono/dist/compose.js:22:17)
documenso-1  |     at async dispatch (file:///app/node_modules/hono/dist/compose.js:22:17)
documenso-1  | Submitting job to endpoint: https://documenso.internal.redbing.ai/api/jobs/send.signing.requested.email/cmlpbq41e00tdp51uv9psfi1c
documenso-1  | [JOBS]: Triggering job send.signing.requested.email with payload {
documenso-1  |   userId: 36,
documenso-1  |   documentId: 31,
documenso-1  |   recipientId: 68,
documenso-1  |   requestMetadata: {
documenso-1  |     ipAddress: '188.217.52.190',
documenso-1  |     userAgent: 'Mozilla/5.0 (iPhone; CPU iPhone OS 26_2_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Brave/1 Mobile/15E148 Safari/604.1'
documenso-1  |   }
documenso-1  | }
documenso-1  | [JOBS:task-b15ef2dc639dc7290da905cf8aa0e481aa6b8e70a4a1fad4efc9e87646034999--cmlpbq41e00tdp51uv9psfi1c] Task failed Error: [429]: rate_limit_exceeded Too many requests. You can only make 2 requests per second. See rate limit response headers for more information. Or contact support to increase rate limit.
documenso-1  |     at /app/node_modules/@documenso/nodemailer-resend/dist/main.js:54:15
documenso-1  |     at process.processTicksAndRejections (node:internal/process/task_queues:105:5)
documenso-1  | [JOBS]: Job send.signing.requested.email failed BackgroundTaskFailedError: Task failed
documenso-1  |     at Object.runTask (file:///app/apps/remix/build/server/hono/packages/lib/jobs/client/local.js:233:17)
documenso-1  |     at async Module.run (file:///app/apps/remix/build/server/hono/packages/lib/jobs/definitions/emails/send-signing-email.handler.js:198:5)
documenso-1  |     at async Object.handler (file:///app/apps/remix/build/server/hono/packages/lib/jobs/definitions/emails/send-signing-email.js:25:5)
documenso-1  |     at async file:///app/apps/remix/build/server/hono/packages/lib/jobs/client/local.js:102:9
documenso-1  |     at async dispatch (file:///app/node_modules/hono/dist/compose.js:22:17)
documenso-1  |     at async file:///app/apps/remix/build/server/hono/server/router.js:78:3
documenso-1  |     at async dispatch (file:///app/node_modules/hono/dist/compose.js:22:17)
documenso-1  |     at async requestId2 (file:///app/node_modules/hono/dist/middleware/request-id/request-id.js:16:5)
documenso-1  |     at async dispatch (file:///app/node_modules/hono/dist/compose.js:22:17)
documenso-1  |     at async dispatch (file:///app/node_modules/hono/dist/compose.js:22:17)
<!-- gh-comment-id:3909553461 --> @Censacrof commented on GitHub (Feb 16, 2026): We are also facing this issue in our Org. This is very impacting and happens easily, it's enough to include a CC contact and two signers. It would be nice if documenso had some sort of retry with exponential backoff to handle 429 responses. As of now, I'm forced to stop using Resend in order to avoid this limitation. ```text documenso-1 | [JOBS:task-b15ef2dc639dc7290da905cf8aa0e481aa6b8e70a4a1fad4efc9e87646034999--cmlpbq41e00tdp51uv9psfi1c] Task failed Error: [429]: rate_limit_exceeded Too many requests. You can only make 2 requests per second. See rate limit response headers for more information. Or contact support to increase rate limit. documenso-1 | at /app/node_modules/@documenso/nodemailer-resend/dist/main.js:54:15 documenso-1 | at process.processTicksAndRejections (node:internal/process/task_queues:105:5) documenso-1 | [JOBS]: Job send.signing.requested.email failed BackgroundTaskFailedError: Task failed documenso-1 | at Object.runTask (file:///app/apps/remix/build/server/hono/packages/lib/jobs/client/local.js:233:17) documenso-1 | at async Module.run (file:///app/apps/remix/build/server/hono/packages/lib/jobs/definitions/emails/send-signing-email.handler.js:198:5) documenso-1 | at async Object.handler (file:///app/apps/remix/build/server/hono/packages/lib/jobs/definitions/emails/send-signing-email.js:25:5) documenso-1 | at async file:///app/apps/remix/build/server/hono/packages/lib/jobs/client/local.js:102:9 documenso-1 | at async dispatch (file:///app/node_modules/hono/dist/compose.js:22:17) documenso-1 | at async file:///app/apps/remix/build/server/hono/server/router.js:78:3 documenso-1 | at async dispatch (file:///app/node_modules/hono/dist/compose.js:22:17) documenso-1 | at async requestId2 (file:///app/node_modules/hono/dist/middleware/request-id/request-id.js:16:5) documenso-1 | at async dispatch (file:///app/node_modules/hono/dist/compose.js:22:17) documenso-1 | at async dispatch (file:///app/node_modules/hono/dist/compose.js:22:17) documenso-1 | Submitting job to endpoint: https://documenso.internal.redbing.ai/api/jobs/send.signing.requested.email/cmlpbq41e00tdp51uv9psfi1c documenso-1 | [JOBS]: Triggering job send.signing.requested.email with payload { documenso-1 | userId: 36, documenso-1 | documentId: 31, documenso-1 | recipientId: 68, documenso-1 | requestMetadata: { documenso-1 | ipAddress: '188.217.52.190', documenso-1 | userAgent: 'Mozilla/5.0 (iPhone; CPU iPhone OS 26_2_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Brave/1 Mobile/15E148 Safari/604.1' documenso-1 | } documenso-1 | } documenso-1 | [JOBS:task-b15ef2dc639dc7290da905cf8aa0e481aa6b8e70a4a1fad4efc9e87646034999--cmlpbq41e00tdp51uv9psfi1c] Task failed Error: [429]: rate_limit_exceeded Too many requests. You can only make 2 requests per second. See rate limit response headers for more information. Or contact support to increase rate limit. documenso-1 | at /app/node_modules/@documenso/nodemailer-resend/dist/main.js:54:15 documenso-1 | at process.processTicksAndRejections (node:internal/process/task_queues:105:5) documenso-1 | [JOBS]: Job send.signing.requested.email failed BackgroundTaskFailedError: Task failed documenso-1 | at Object.runTask (file:///app/apps/remix/build/server/hono/packages/lib/jobs/client/local.js:233:17) documenso-1 | at async Module.run (file:///app/apps/remix/build/server/hono/packages/lib/jobs/definitions/emails/send-signing-email.handler.js:198:5) documenso-1 | at async Object.handler (file:///app/apps/remix/build/server/hono/packages/lib/jobs/definitions/emails/send-signing-email.js:25:5) documenso-1 | at async file:///app/apps/remix/build/server/hono/packages/lib/jobs/client/local.js:102:9 documenso-1 | at async dispatch (file:///app/node_modules/hono/dist/compose.js:22:17) documenso-1 | at async file:///app/apps/remix/build/server/hono/server/router.js:78:3 documenso-1 | at async dispatch (file:///app/node_modules/hono/dist/compose.js:22:17) documenso-1 | at async requestId2 (file:///app/node_modules/hono/dist/middleware/request-id/request-id.js:16:5) documenso-1 | at async dispatch (file:///app/node_modules/hono/dist/compose.js:22:17) documenso-1 | at async dispatch (file:///app/node_modules/hono/dist/compose.js:22:17) ```
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
starred/documenso#561
No description provided.