{"id":508,"date":"2026-10-22T01:02:57","date_gmt":"2026-10-22T06:32:57","guid":{"rendered":"https:\/\/photonconsole.com\/blog\/?p=508"},"modified":"2026-10-22T06:35:29","modified_gmt":"2026-10-22T12:05:29","slug":"gmail-and-google-workspace-smtp-sending-limits-for-applications","status":"publish","type":"post","link":"https:\/\/photonconsole.com\/blog\/gmail-and-google-workspace-smtp-sending-limits-for-applications\/","title":{"rendered":"Gmail and Google Workspace SMTP Sending Limits for Applications"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Your application sends from <code>noreply@yourcompany.com<\/code>. So when sending stops, the puzzling part is which account Google says has hit its limit \u2014 because it is not the one in your From header.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">That single detail explains most Gmail sending mysteries, and it follows from how Google counts. There is no one Gmail limit. There are three different sending paths, each with different caps, and the caps are measured in recipients rather than messages.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Work out which path you are on and the arithmetic stops being mysterious. Until then, the number you planned around is probably the wrong one.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Quick Answer: What Are the Gmail SMTP Sending Limits?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">It depends entirely on which of Google&#8217;s three paths your application uses.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Path<\/th><th>Endpoint<\/th><th>Who it is for<\/th><th>Headline limit<\/th><\/tr><\/thead><tbody><tr><td>Consumer Gmail<\/td><td><code>smtp.gmail.com<\/code><\/td><td>Personal accounts<\/td><td>500 emails per day<\/td><\/tr><tr><td>Workspace Gmail<\/td><td><code>smtp.gmail.com<\/code><\/td><td>Paid Workspace mailboxes<\/td><td>Per-user daily limit, 2,000 published<\/td><\/tr><tr><td>Workspace SMTP relay<\/td><td><code>smtp-relay.gmail.com<\/code><\/td><td>On-premise devices and applications<\/td><td>10,000 messages per user per 24 hours<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Most application developers are on the first or second path and assume they are on the third. The relay service is the only one Google describes as intended for devices and applications, and it has to be switched on and configured by an administrator \u2014 it is not what you get by default.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Figures differ by account type and change over time. Confirm yours against Google&#8217;s own pages, linked throughout, rather than any article.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Which Path Are You Actually On?<\/h2>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img fetchpriority=\"high\" decoding=\"async\" width=\"1024\" height=\"576\" src=\"https:\/\/photonconsole.com\/blog\/wp-content\/uploads\/2026\/10\/Gmail-SMTP-Limits-Infographic-1-1024x576.png\" alt=\"Three Google sending paths compared: consumer Gmail SMTP, Workspace Gmail SMTP and the Workspace SMTP relay service, with the limits and requirements of each\" class=\"wp-image-510\" style=\"aspect-ratio:1.7777777777777777;width:1200px;height:auto\" srcset=\"https:\/\/photonconsole.com\/blog\/wp-content\/uploads\/2026\/10\/Gmail-SMTP-Limits-Infographic-1-1024x576.png 1024w, https:\/\/photonconsole.com\/blog\/wp-content\/uploads\/2026\/10\/Gmail-SMTP-Limits-Infographic-1-300x169.png 300w, https:\/\/photonconsole.com\/blog\/wp-content\/uploads\/2026\/10\/Gmail-SMTP-Limits-Infographic-1-768x432.png 768w, https:\/\/photonconsole.com\/blog\/wp-content\/uploads\/2026\/10\/Gmail-SMTP-Limits-Infographic-1-1536x864.png 1536w, https:\/\/photonconsole.com\/blog\/wp-content\/uploads\/2026\/10\/Gmail-SMTP-Limits-Infographic-1.png 1672w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\">The endpoint in your configuration tells you which limits apply to you.<\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Open your application&#8217;s mail configuration and read the host. That one line settles it.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">If it says <code>smtp.gmail.com<\/code>, you are authenticating as a mailbox and you are subject to that mailbox&#8217;s per-user limits. Whether those are consumer or Workspace limits depends on the account, not the endpoint.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">If it says <code>smtp-relay.gmail.com<\/code>, you are using the Workspace SMTP relay service, which an administrator has deliberately enabled for your domain.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Consumer Gmail<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Google&#8217;s <a href=\"https:\/\/support.google.com\/mail\/answer\/22839?hl=en\" target=\"_blank\" rel=\"noopener\">limits for sending and getting mail<\/a> page sets the thresholds at more than 500 emails sent in a day, and more than 500 recipients in a single email. It also notes that work and school accounts can have different limits.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A personal Gmail account was never intended to carry application traffic, and nothing about 500 a day makes it viable for a product with users.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Workspace Gmail<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">For paid Workspace mailboxes, Google&#8217;s <a href=\"https:\/\/knowledge.workspace.google.com\/admin\/gmail\/gmail-sending-limits-in-google-workspace?hl=en\" target=\"_blank\" rel=\"noopener\">Gmail sending limits<\/a> page publishes a daily sending limit per user account of 2,000, with trial accounts limited lower. Two details on that page matter more than the headline:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Recipients per message:<\/strong> 2,000 across To, Cc and Bcc, with a maximum of 500 external recipients<\/li>\n\n\n\n<li><strong>Messages sent via SMTP by POP or IMAP users:<\/strong> 100 recipients per message<\/li>\n\n\n\n<li><strong>Gmail API messages:<\/strong> 500 recipients per message<\/li>\n\n\n\n<li><strong>Auto-forwarded messages:<\/strong> 10,000, and these are not counted in the daily sending limit<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">That second line is the one that catches applications. If your code authenticates over SMTP, the relevant per-message recipient ceiling is 100 \u2014 not the 2,000 in the headline row.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Workspace SMTP relay service<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Google&#8217;s documentation for <a href=\"https:\/\/knowledge.workspace.google.com\/admin\/gmail\/advanced\/route-outgoing-smtp-relay-messages-through-google?hl=en\" target=\"_blank\" rel=\"noopener\">routing outgoing SMTP relay messages through Google<\/a> describes it as intended for on-premise devices and applications sending outbound email through Google&#8217;s SMTP servers. Its published limits are considerably higher:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Limit<\/th><th>Figure<\/th><\/tr><\/thead><tbody><tr><td>Messages per user per 24 hours<\/td><td>10,000<\/td><\/tr><tr><td>Unique recipients per user per 24 hours<\/td><td>10,000<\/td><\/tr><tr><td>Non-unique recipients per account per 24 hours<\/td><td>4,600,000<\/td><\/tr><tr><td>Non-unique recipients per 10-minute window<\/td><td>319,444<\/td><\/tr><tr><td>Recipients per SMTP transaction<\/td><td>100<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Trial accounts have lower limits, and so do accounts with an unpaid bill \u2014 which is a failure mode worth knowing about, because a billing problem becoming a sending problem is not an obvious connection to make at three in the morning.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">The Counting Is Per Recipient, and It Stacks<\/h2>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img decoding=\"async\" width=\"1024\" height=\"577\" src=\"https:\/\/photonconsole.com\/blog\/wp-content\/uploads\/2026\/10\/One-Message-Not-One-Unit-1024x577.png\" alt=\"How Google counts email sending against limits, showing that one message to one hundred recipients consumes one hundred recipient units rather than one message\" class=\"wp-image-511\" style=\"aspect-ratio:1.7777777777777777;width:1200px;height:auto\" srcset=\"https:\/\/photonconsole.com\/blog\/wp-content\/uploads\/2026\/10\/One-Message-Not-One-Unit-1024x577.png 1024w, https:\/\/photonconsole.com\/blog\/wp-content\/uploads\/2026\/10\/One-Message-Not-One-Unit-300x169.png 300w, https:\/\/photonconsole.com\/blog\/wp-content\/uploads\/2026\/10\/One-Message-Not-One-Unit-767x432.png 767w, https:\/\/photonconsole.com\/blog\/wp-content\/uploads\/2026\/10\/One-Message-Not-One-Unit-1536x865.png 1536w, https:\/\/photonconsole.com\/blog\/wp-content\/uploads\/2026\/10\/One-Message-Not-One-Unit.png 1671w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\">One message is not one unit. The recipient count is what you spend.<\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">This is where planning goes wrong. People budget in messages and Google bills in recipients.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A notification sent to a 100-person distribution list is one message in your logs and 100 recipients against the limit. The arithmetic changes a comfortable-looking allowance into a tight one very quickly.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>What you think you sent:        What it costs:\n\n  1 message to 100 people   -&gt;   100 recipients\n  1 message, 100 in Bcc     -&gt;   100 recipients\n  100 individual messages   -&gt;   100 recipients\n\n  Plus: a single SMTP transaction carries at most\n  100 recipients. More than that needs another one.<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">The 100-recipient transaction ceiling is a hard boundary rather than a budget. Google&#8217;s relay documentation states that additional recipients require a new transaction, so batching 500 addresses into one send does not work \u2014 your code has to chunk them.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Common Mistake<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Estimating capacity by counting the messages your application sends. If any of them address multiple recipients, your real consumption is higher than your logs suggest \u2014 and the gap widens exactly when volume grows, because larger sends tend to have more recipients each. Count recipients, not messages, and remember that a 100-recipient transaction ceiling means a 400-address announcement is four transactions regardless of how your code is written.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">The Envelope Sender Decides Whose Quota It Is<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Here is the detail that explains the symptom in the opening paragraph, and it is documented but almost never mentioned.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">On the relay service, per-user limits apply based on <strong>the envelope sender registered to your Workspace account<\/strong>. Google&#8217;s documentation is explicit that the From and Reply-to fields are ignored for this purpose.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">So if your application authenticates as <code>alerts@yourcompany.com<\/code> but sets a From header of <code>noreply@yourcompany.com<\/code>, the quota being consumed belongs to <code>alerts@<\/code>. Every message your product sends is drawing down one real person&#8217;s or one service account&#8217;s allowance, and the header you carefully configured has nothing to do with it.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Quick Fix<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A Different Account Than Expected Has Hit Its Limit<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Find which account your application authenticates as \u2014 that is the envelope sender<\/li>\n\n\n\n<li>Ignore the From header; it does not determine which quota is charged<\/li>\n\n\n\n<li>Check that account&#8217;s own usage rather than the one in your templates<\/li>\n\n\n\n<li>If several applications share one authenticating account, they share one allowance<\/li>\n\n\n\n<li>Give each sending system its own identity so one noisy job cannot starve the rest<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">The practical consequence is that consolidating all application mail onto a single authenticating mailbox concentrates every limit onto that one account. It feels tidy and it is the opposite of resilient.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Authentication: Less Secure Apps Are Gone<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Any guide that tells you to enable &#8220;less secure app access&#8221; is describing a setting that no longer exists. Google&#8217;s relay documentation states plainly that less secure apps are no longer supported and that third-party apps must use OAuth.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">That leaves two realistic options for an application, and both have drawbacks worth understanding before you build on them.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Method<\/th><th>What it requires<\/th><th>The catch<\/th><\/tr><\/thead><tbody><tr><td>App Password<\/td><td>2-Step Verification on the account<\/td><td>It is a full-account credential, not scoped to sending<\/td><\/tr><tr><td>OAuth 2.0<\/td><td>A Cloud project, consent flow and token refresh<\/td><td>Real implementation work, and tokens to keep alive<\/td><\/tr><tr><td>IP authentication<\/td><td>Relay service without TLS, on a static IP<\/td><td>No TLS, and a static IP your host may not provide<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">The App Password route is the one most teams take, and the security trade should be explicit: that credential can access the mailbox, not merely send from it. A leaked App Password is a mailbox breach, not a sending incident. By contrast, a PhotonConsole credential can send and nothing else \u2014 losing it costs you a rotated API key, not access to a mailbox.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Note<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The third row is a genuine option but it rules itself out for most modern deployments. Google&#8217;s documentation notes that without TLS you cannot use SMTP authentication and must authenticate by IP address instead. That requires a static outbound IP, which Heroku dynos, serverless functions and Kubernetes pods do not give you \u2014 the same constraint covered in our guides to those platforms. It also means sending without transport encryption, which is rarely an acceptable trade in 2026.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Quick Fix<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Authentication Suddenly Failing on smtp.gmail.com<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>A guide telling you to enable &#8220;less secure app access&#8221; is out of date \u2014 that setting is gone<\/li>\n\n\n\n<li>Turn on 2-Step Verification for the account, then generate an App Password for the application<\/li>\n\n\n\n<li>Use the App Password as the SMTP password; the account password will not work<\/li>\n\n\n\n<li>Check nobody has rotated or revoked that App Password during routine security work<\/li>\n\n\n\n<li>If the account has been handed to a different owner, the App Password went with it<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">What the Relay Service Is Actually For<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Two lines in Google&#8217;s own documentation define the intended use, and reading them honestly saves a lot of argument later.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">First, the service is &#8220;intended for on-premise devices and applications&#8221; \u2014 a scanner that emails PDFs, a line-of-business system on a server in your building, an Exchange deployment routing outbound mail through Google for filtering. Second, the documentation notes the relay is not meant for mail that originates from Gmail.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Neither description is a cloud-hosted SaaS product sending transactional email to customers. That does not mean it will refuse to work. It means you are using a mail filtering and routing service as application infrastructure, and the limits, the authentication model and the per-user accounting all reflect what it was designed for.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This is the same structural point as using Microsoft 365 for application mail, which our guide to <a href=\"https:\/\/photonconsole.com\/blog\/office-365-smtp-relay-limits\/\">Microsoft 365 SMTP relay limits<\/a> covers \u2014 different limits and a different mechanism, but the same category error.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">When You Have Outgrown It<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Three signals mean the decision is already made, whatever the daily figure says.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>You are chunking around the transaction ceiling.<\/strong> Writing code to split recipients into hundreds is writing code to work around a limit rather than to serve users.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>One mailbox is a single point of failure.<\/strong> If the account your application authenticates as hits its limit, gets suspended, or has its App Password rotated by someone doing routine security hygiene, your product stops sending.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>You need delivery data you do not have.<\/strong> Mailbox sending gives you very little: no per-message delivery log your application can query, no bounce webhook, no complaint feed. Debugging a delivery question becomes asking a person to look in a mailbox.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">That last point is usually what decides it. PhotonConsole, like any <a href=\"https:\/\/www.photonconsole.com\/relay.php\">transactional email solution<\/a> built for applications, treats each send as an event with an identifier, a status and a webhook \u2014 which is the difference between answering &#8220;did this user get their OTP?&#8221; in seconds and in an afternoon.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Moving the Sending Path<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Because both are SMTP, the change is configuration rather than code.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># Before \u2014 authenticating as a mailbox\nSMTP_HOST=smtp.gmail.com\nSMTP_PORT=587\nSMTP_USER=alerts@yourcompany.com\nSMTP_PASS=your_app_password\n\n# After \u2014 a credential scoped to sending\nSMTP_HOST=smtp.photonrelay.com\nSMTP_PORT=587\nSMTP_USER=your_project_api_user\nSMTP_PASS=your_secret_api_key<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">PhotonConsole issues these credentials on signup, so the new path can be tested the same day. Two things improve immediately and are worth naming. The From address becomes yours to set freely, because no per-user mailbox quota is being charged behind it. And the recipient chunking logic can go, because you are no longer working around a 100-recipient transaction ceiling.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Your staff mailboxes stay on Google Workspace throughout. Nothing about anyone&#8217;s inbox changes \u2014 this moves application mail only, exactly as it would when separating app traffic from Microsoft 365.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Authentication records<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Your domain almost certainly publishes Google&#8217;s include already:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># Existing\nv=spf1 include:_spf.google.com ~all\n\n# During migration \u2014 both authorised\nv=spf1 include:_spf.google.com include:relay.photonconsole.com ~all<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>CNAME  photon._domainkey    dkim.photonconsole.com<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Keep Google&#8217;s include as long as staff mail flows through Workspace, which will be indefinitely. Add the relay alongside it in the <strong>same<\/strong> record \u2014 a second TXT record beginning <code>v=spf1<\/code> breaks authentication rather than combining \u2014 and mind the ten-lookup ceiling that <a href=\"https:\/\/datatracker.ietf.org\/doc\/html\/rfc7208\" target=\"_blank\" rel=\"noopener\">RFC 7208<\/a> places on SPF evaluation.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">DKIM matters more than SPF because it survives forwarding, and <a href=\"https:\/\/support.google.com\/mail\/answer\/81126\" target=\"_blank\" rel=\"noopener\">Google&#8217;s own sender guidelines<\/a> expect aligned authentication on transactional mail. Our guide to <a href=\"https:\/\/photonconsole.com\/blog\/spf-dkim-dmarc-explained-simply\/\">SPF, DKIM and DMARC<\/a> covers alignment, and the free <a href=\"https:\/\/www.photonconsole.com\/email-deliverability-checker.php\">email deliverability checker<\/a> shows what your domain publishes now.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Pro Tips<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Count recipients, not messages.<\/strong> Every capacity estimate built on message counts understates real consumption.<\/li>\n\n\n\n<li><strong>Know which account authenticates.<\/strong> That is the envelope sender, and it is the quota being spent regardless of your From header.<\/li>\n\n\n\n<li><strong>Never share one authenticating mailbox across systems.<\/strong> They share a limit, and the noisiest one wins.<\/li>\n\n\n\n<li><strong>Treat an App Password as mailbox access.<\/strong> Scope and rotate it accordingly, and never commit it.<\/li>\n\n\n\n<li><strong>Watch the billing status.<\/strong> An unpaid Workspace bill lowers relay limits, which surfaces as a sending fault.<\/li>\n\n\n\n<li><strong>Reuse connections and set a real HELO identifier.<\/strong> Google&#8217;s relay documentation recommends connection caching and a unique identifier such as your domain rather than <code>localhost<\/code>.<\/li>\n\n\n\n<li><strong>Verify before any cutover.<\/strong> <a href=\"https:\/\/mxtoolbox.com\/\" target=\"_blank\" rel=\"noopener\">MXToolbox<\/a> checks the combined SPF record, and <a href=\"https:\/\/www.mail-tester.com\/\" target=\"_blank\" rel=\"noopener\">Mail Tester<\/a> scores a real send.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Related Reading<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/photonconsole.com\/blog\/office-365-smtp-relay-limits\/\">Microsoft 365 SMTP relay limits<\/a> \u2014 the same category error on the other major mailbox platform<\/li>\n\n\n\n<li><a href=\"https:\/\/photonconsole.com\/blog\/free-smtp-servers\/\">Free SMTP servers<\/a> \u2014 a survey of free options and where they stop being practical<\/li>\n\n\n\n<li><a href=\"https:\/\/photonconsole.com\/blog\/sendgrid-free-tier-limits\/\">SendGrid free tier limits<\/a> if you are comparing dedicated providers<\/li>\n\n\n\n<li><a href=\"https:\/\/photonconsole.com\/blog\/why-emails-go-to-spam-in-gmail\/\">Why emails go to spam in Gmail<\/a> for delivery rather than sending problems<\/li>\n\n\n\n<li><a href=\"https:\/\/photonconsole.com\/blog\/smtp-authentication-error\/\">SMTP authentication errors<\/a> for App Password and OAuth failures<\/li>\n\n\n\n<li><a href=\"https:\/\/photonconsole.com\/blog\/transactional-vs-marketing-email\/\">Transactional versus marketing email<\/a> on why the two should not share a path<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Frequently Asked Questions<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">What is the Gmail SMTP sending limit?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">For consumer accounts, Google&#8217;s help page sets the thresholds at more than 500 emails sent in a day and more than 500 recipients in a single email. Workspace accounts and the SMTP relay service have different, higher limits.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">What is the Google Workspace daily sending limit?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Google publishes a daily sending limit per user account of 2,000 for Workspace Gmail, with trial accounts lower. Check the linked page for your own account type, since figures vary by tier.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Why is my per-message recipient limit 100 and not 2,000?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Because you are sending over SMTP. Google&#8217;s limits page lists 100 recipients per message for messages sent via SMTP by POP or IMAP users, separately from the 2,000-recipient figure for the Gmail interface.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Which account&#8217;s quota does my application use?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">The one it authenticates as. Per-user limits apply based on the envelope sender registered to your Workspace account, and Google&#8217;s documentation states the From and Reply-to fields are ignored for this.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Can I still use &#8220;less secure app access&#8221; for Gmail SMTP?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">No. Google&#8217;s relay documentation confirms less secure apps are no longer supported and third-party apps must use OAuth. The alternatives are an App Password with 2-Step Verification, OAuth, or IP authentication without TLS.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Is the Workspace SMTP relay service meant for application email?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">It is described as intended for on-premise devices and applications, and the documentation notes it is not meant for mail originating from Gmail. A cloud-hosted product sending customer email is outside that description.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">How many recipients can one SMTP transaction carry?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">100. Additional recipients require a new transaction, so large sends must be chunked by your application.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Do I have to move our mailboxes to use a relay?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">No. Staff mailboxes stay on Google Workspace. You change the SMTP configuration in your application and add one include to your existing SPF record.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Conclusion<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">&#8220;What is the Gmail sending limit&#8221; has no single answer, which is why so much capacity planning around it turns out wrong. Consumer Gmail, Workspace Gmail and the Workspace SMTP relay are three different services with three sets of caps, and the one that applies to you is written in your configuration file.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Two mechanics matter more than any headline figure. The limits are counted in recipients, so a message to a hundred people costs a hundred \u2014 and a single SMTP transaction carries at most a hundred regardless. And the quota consumed belongs to the account your application authenticates as, not the address in the From header, which is why the wrong user keeps running out.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Google&#8217;s relay is a mail routing and filtering service for devices and on-premise systems, and it is good at that. Application email asks for different things: a credential scoped to sending rather than to a mailbox, per-message delivery data your code can query, no per-user accounting behind the From address, and no recipient chunking. A dedicated <a href=\"https:\/\/www.photonconsole.com\/\">email delivery service<\/a> provides those, mailboxes stay exactly where they are, and <a href=\"https:\/\/www.photonconsole.com\/pricing.php\">pricing<\/a> starts with 5,000 free emails a month \u2014 enough to run the new path alongside Workspace and compare them on real traffic before changing anything.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Read More<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/www.photonconsole.com\/email-deliverability-checker.php\">Free Email Deliverability Checker<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/photonconsole.com\/blog\/office-365-smtp-relay-limits\/\">Microsoft 365 SMTP Relay Limits<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/photonconsole.com\/blog\/spf-dkim-dmarc-explained-simply\/\">SPF, DKIM and DMARC Explained Simply<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/photonconsole.com\/blog\/improve-email-deliverability\/\">How to Improve Email Deliverability<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/photonconsole.com\/blog\/smtp-configuration\/\">SMTP Configuration: Complete Setup Reference<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/www.photonconsole.com\/relay.php\">PhotonRelay: SMTP Relay Service<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/www.photonconsole.com\/pricing.php\">PhotonConsole Pricing<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Your application sends from noreply@yourcompany.com. So when sending stops, the puzzling part is which account Google says has hit its limit \u2014 because it is not the one in your From header. That single detail explains most Gmail sending mysteries, and it follows from how Google counts. There is no one Gmail limit. There are [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":509,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[31],"tags":[563,561,562],"class_list":["post-508","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-smpt-relay-service","tag-and-the-quota-charged-to-the-account-you-authenticate-as","tag-caps-counted-per-recipient","tag-there-is-no-single-gmail-sending-limit-three-paths"],"_links":{"self":[{"href":"https:\/\/photonconsole.com\/blog\/wp-json\/wp\/v2\/posts\/508","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/photonconsole.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/photonconsole.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/photonconsole.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/photonconsole.com\/blog\/wp-json\/wp\/v2\/comments?post=508"}],"version-history":[{"count":1,"href":"https:\/\/photonconsole.com\/blog\/wp-json\/wp\/v2\/posts\/508\/revisions"}],"predecessor-version":[{"id":512,"href":"https:\/\/photonconsole.com\/blog\/wp-json\/wp\/v2\/posts\/508\/revisions\/512"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/photonconsole.com\/blog\/wp-json\/wp\/v2\/media\/509"}],"wp:attachment":[{"href":"https:\/\/photonconsole.com\/blog\/wp-json\/wp\/v2\/media?parent=508"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/photonconsole.com\/blog\/wp-json\/wp\/v2\/categories?post=508"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/photonconsole.com\/blog\/wp-json\/wp\/v2\/tags?post=508"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}