DKIM for Google Workspace (Gmail): The Single-Selector TXT-Publication Model, Admin Console Workflow, Operator-Controlled 2048-bit Key Generation, Manual Rotation Cadence, and the gappssmtp.com Signing-Identity Gotcha

A focused operator-implementation walkthrough for DKIM on Google Workspace / Gmail. The Workspace DKIM model is structurally different from Microsoft 365, cPanel, and self-hosted DKIM: one TXT record per sending domain (google._domainkey containing v=DKIM1; k=rsa; p=<base64>) holds the public-key bytes directly, the operator generates the key via the Admin Console and publishes the resulting TXT, manual rotation is operator-driven with new-selector overlap, and the private key lives in Google infrastructure with operator-controlled lifecycle. Documents the single-selector TXT-publication architecture, the four-step deployment workflow (Generate new record, publish TXT, wait for DNS propagation, click Start authentication), three verification gates, manual rotation cadence, the gappssmtp.com signing-identity gotcha (the #1 Workspace DMARC failure mode), seven common mistakes, and a per-symptom troubleshooting decision matrix. Differentiation from sibling guides: help_dmarc_for_google_workspace.php covers DKIM as part of a broader rollout; this page is the DKIM-only operator reference. Side-by-side comparison with help_dkim_for_microsoft_365.php (CNAME-delegation dual-selector model).

This reference is provided in English. Google Workspace Admin Console UI labels (admin.google.com > Apps > Google Workspace > Gmail > Authenticate email > Generate new record > Start authentication), and DNS-record syntax (google._domainkey TXT, v=DKIM1, k=rsa, p=, c=relaxed/relaxed) do not translate. We keep the body in the source language so technical terms remain consistent with Google Workspace Help documentation and RFC 6376.

TL;DR

  • Google Workspace DKIM uses one TXT record per sending domain at google._domainkey.<your-domain> containing the public-key bytes directly (v=DKIM1; k=rsa; p=<base64> per RFC 6376 §3.6.2). Operators generate the key inside the Admin Console and publish the resulting TXT at their DNS provider.
  • Four steps: (1) generate the key on the Admin Console Authenticate email panel (admin.google.com > Apps > Google Workspace > Gmail > Authenticate email), (2) publish the displayed TXT at google._domainkey.<your-domain>, (3) wait 15 minutes to 48 hours for DNS propagation, (4) click Start authentication on the same Admin Console panel.
  • The #1 Workspace DKIM failure mode: outbound mail signed under <tenant>.gappssmtp.com instead of your custom domain. Cause: the Start authentication step was skipped. Fix: verify the TXT resolves, then click Start authentication.
  • Single selector with manual rotation: Workspace uses one selector (google._domainkey by default) that the operator rotates manually via the Admin Console Generate new record button. Microsoft 365 uses a different model: two selectors published as CNAME records.
  • 2048-bit keys are today's baseline: RFC 8301 requires at least 1024 bits and recommends at least 2048. Legacy 1024-bit keys should be rotated to 2048-bit by generating a new key with DKIM key bit length: 2048 selected.
  • Operator owns the key lifecycle: you decide when and how often to rotate, and you publish the new record in DNS. Annual rotation is a sensible baseline; rotate immediately after any suspected key-compromise event.
  • Verification: dig +short TXT google._domainkey.<your-domain> must return a v=DKIM1; k=rsa; p=… record; Authentication-Results in delivered mail must show dkim=pass header.d=<your-domain> (NOT header.d=<tenant>.gappssmtp.com).
  • DKIM alone does not stop spoofing; DKIM is one of two authentication signals DMARC consumes. Pair DKIM with SPF (see SPF for Google Workspace) and DMARC (see DMARC for Google Workspace) for end-to-end spoof-resistance.

What this guide covers

A focused operator-implementation walkthrough for DKIM on Google Workspace / Gmail-for-business tenants. Sibling pages cover the broader rollout (DMARC for Google Workspace walks the full SPF + DKIM + DMARC deployment), the protocol primer (DKIM explained), the canonicalization deep dive (DKIM canonicalization), the selector deep dive (DKIM selectors), and the replay-attack analysis (DKIM replay attacks). THIS page is the Workspace-specific operator reference: the single-selector TXT-publication model, the Admin Console workflow, operator-controlled 2048-bit key generation, manual rotation cadence, and the gappssmtp.com signing-identity failure mode.

The page is anchored against the Feb 2024 Google/Yahoo bulk-sender requirements: a domain sending more than 5000 messages per day to gmail.com or yahoo.com must have SPF and DKIM set up and must pass DMARC with alignment through SPF or DKIM. Without DKIM enabled for the custom domain (the most common Workspace misconfiguration), bulk mail from your Workspace tenant does not meet these requirements and may be junked or rejected by Google and Yahoo - exactly the same bulk-sender enforcement Google applies to all senders.

How Google Workspace DKIM works

Workspace DKIM is structurally different from Microsoft 365, cPanel, and self-hosted DKIM. Three architectural choices define it:

1. TXT publication (not CNAME delegation)

Workspace publishes a TXT record at google._domainkey.<domain> containing the public-key bytes directly per RFC 6376 §3.6.2:

google._domainkey.example.com.  IN  TXT  "v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAv..."

The Admin Console Generate new record panel produces the full TXT value (often spanning multiple 255-byte chunks joined per RFC 1035 §3.3.14); the operator copies the panel's displayed value verbatim into their DNS provider. This contrasts with Microsoft 365's CNAME-delegation model where the actual p= public key lives in Microsoft's infrastructure under <tenant>.onmicrosoft.com.

2. Single selector with manual rotation

Workspace uses ONE selector (google._domainkey by default; operators may pick a custom prefix when generating a new key). Rotation is a manual two-step process: generate a new key under a new selector (e.g., google2024._domainkey), publish the new TXT, then click Start authentication using new key on the Admin Console. The old selector TXT remains published during transition so in-flight messages signed under the previous selector still verify; remove the old TXT 48-72 hours after switching active signing.

3. Operator-controlled key custody

Workspace generates the key inside Google's infrastructure (the operator never sees the private-key bytes directly) but exposes the rotation controls to the operator. The operator decides when to rotate, which selector prefix to use, and which key size (1024-bit or 2048-bit on the Admin Console panel; pick 2048-bit whenever your DNS provider supports it - RFC 8301 recommends at least that). A new key only takes effect once the operator has published the new TXT record. In M365 the administrator also starts the rotation, but the new key appears behind the same CNAME records with no change in the domain's DNS. Tradeoff: in Workspace every rotation means a DNS change, in return for full control over how it runs.

Prerequisites

  • An active Google Workspace tenant with at least one verified sending domain (the domain you want to DKIM-sign mail from). Verify the domain status at admin.google.com > Account > Domains > Manage domains.
  • Administrative role assignment: Super Admin or a custom admin role with the Gmail privilege scope (the Authenticate email panel requires one of these roles).
  • DNS administration rights at your sending domain's authoritative nameservers (to publish the TXT record the Admin Console generates).
  • An SPF record already published with include:_spf.google.com — see SPF for Google Workspace. SPF + DKIM together are the alignment prerequisite for DMARC enforcement.
  • A modern web browser to access the Admin Console at admin.google.com. The Authenticate email panel is UI-only; Workspace does not expose a Cloud-SDK or Admin-SDK command-line equivalent for DKIM management on this panel.

Step 1: Generate the DKIM key

Sign in to the Google Admin Console at admin.google.com with a Super Admin or Gmail-privileged account. Navigate to Apps > Google Workspace > Gmail > Authenticate email.

  1. From the Selected domain dropdown, pick your custom sending domain.
  2. Click Generate new record.
  3. In the dialog:
    • DKIM key bit length: select 2048 (default; never pick 1024 for new keys).
    • Prefix selector: accept the default google for your first key. For a rotation pick a new prefix (e.g., google2024) so the old and new TXT records coexist during transition.
  4. Click Generate. Workspace generates the key pair, retaining the private key inside Google infrastructure and displaying the public-key TXT for the operator to publish.

The Admin Console now displays two values:

DNS Host name (TXT record name):  google._domainkey
TXT record value:                  v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A...

Leave this Admin Console panel open while publishing the TXT - you will return here for Step 3 (activation).

Step 2: Publish the TXT record

Publish the Admin-Console-displayed TXT at your authoritative DNS provider:

; Replace example.com with your sending domain.
; The TXT value is what the Admin Console displays - copy verbatim.

google._domainkey.example.com.  IN  TXT  "v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA..."

Two publication notes specific to TXT records longer than 255 bytes:

The 255-byte TXT-chunk rule

RFC 1035 §3.3.14 limits each TXT character-string to 255 bytes. A 2048-bit DKIM public key in base64 encoding is approximately 400 bytes; most DNS providers automatically chunk it into multiple "..." "..." strings that the receiver concatenates per RFC 6376 §3.6.2.2. Verify chunking is correct:

$ dig +short TXT google._domainkey.example.com
"v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA" "v..."

In the dig output the two chunks appear side by side as separate quoted strings; the verifier joins them with nothing in between, so the split must not add or drop a character (DNS providers handle the chunking automatically when you paste the full Admin Console value into a single TXT field).

DNS provider UIs

Each DNS provider has its own input form (Cloudflare, AWS Route 53, Azure DNS, GoDaddy, Namecheap, Google Cloud DNS, etc.). Three fields to fill in:

  • Type: TXT
  • Name / Host: google._domainkey (some providers auto-append the apex domain; confirm the final FQDN is google._domainkey.example.com)
  • Value: the full v=DKIM1; k=rsa; p=… string from the Admin Console, including the v=DKIM1 and k=rsa prefix.

Save the record. Wait 15 minutes to 48 hours for DNS propagation. Workspace's typical propagation window is 24-48 hours but a short-TTL provider may complete within minutes.

Step 3: Activate DKIM signing

Return to the Admin Console at Apps > Google Workspace > Gmail > Authenticate email. With your domain selected:

  1. Click Start authentication.
  2. Workspace performs a lookup to verify the TXT resolves at the expected name. If propagation is incomplete the panel displays an error - wait and retry.
  3. On success, the panel updates to Authenticating email with DKIM. From this moment Gmail signs outbound mail from the domain with the DKIM key.

The activation step is mandatory. Publishing the TXT alone is NOT sufficient - until you click Start authentication, Gmail continues signing your outbound mail under the default <tenant>.gappssmtp.com identity. See the gappssmtp.com section below for the consequences if this step is skipped.

Verify DKIM signing is working

Three verification gates: DNS, Admin Console status, and end-to-end delivery.

Gate 1: DNS resolution

$ dig +short TXT google._domainkey.example.com
"v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA..."

The TXT must resolve and contain a valid v=DKIM1 record with a non-empty p= public-key field. An empty p= (i.e., v=DKIM1; k=rsa; p=) means the key has been revoked: the verifier returns a permanent error (key revoked, RFC 6376 §6.1.2). You publish such a record yourself in DNS when you want to retire a selector.

Gate 2: Admin Console status

In the Authenticate email panel, the domain must show Authenticating email with DKIM as its current status (not Not authenticating email or Starting).

Gate 3: End-to-end delivery

Send a message from the Workspace domain to an external mailbox you control (a personal Gmail or Yahoo account, Outlook.com, or DMARC Analyzer's Email Header Analyzer). Open the message headers and locate the Authentication-Results stack:

Authentication-Results: mx.google.com;
       dkim=pass header.i=@example.com header.s=google header.b=AbCdEf12;
       spf=pass (google.com: domain of admin@example.com designates ...)
       dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=example.com

Three requirements: (1) dkim=pass, (2) header.i=@example.com (your custom domain, NOT @<tenant>.gappssmtp.com), (3) header.s=google (or whichever custom selector prefix you chose). If item 2 shows the gappssmtp.com tenant domain, return to the gappssmtp.com section below.

DKIM key rotation on Google Workspace

Workspace operators rotate manually via the Admin Console, and every rotation requires publishing a new record in DNS. A sensible cadence for routine maintenance is annual rotation; rotate immediately after any suspected key-compromise event.

Four-step manual rotation

  1. Generate new key with new selector: On the Admin Console Authenticate email panel, click Generate new record. Pick a NEW selector prefix (e.g., google2024 if your current selector is google) so the old and new TXT can coexist during transition.
  2. Publish the new TXT: Add a new TXT record at <new-selector>._domainkey.<your-domain>. Do NOT delete the existing google._domainkey TXT yet.
  3. Switch active signing: After DNS propagation, return to the Admin Console and click Start authentication using new key. Workspace switches signing to the new selector; existing messages signed under the old selector continue to verify because the old TXT remains published.
  4. Retire the old TXT: Wait 48-72 hours after switching active signing (longer if your previous key's TXT had a high TTL). Then remove the old TXT at google._domainkey.<your-domain>. In-flight messages signed under the retired selector that arrive after retirement will fail DKIM verification - the 48-72h window minimizes that population.

Selector-naming conventions

No fixed convention exists. Common patterns:

  • google → google2024 → google2025 (year-based rotation log)
  • google → google2 → google3 (sequential rotation log)
  • googlejan2024 → googlejul2024 (semi-annual rotation log)

The selector value is operator-internal - receivers do not care what your selector is named, only that the TXT resolves at the name the s= tag identifies. Pick a naming pattern that helps you track which rotation generation a selector belongs to.

Key-size posture

Always pick 2048-bit RSA for new keys: RFC 8301 (Cryptographic Algorithm and Key Usage Update to DKIM) requires at least 1024 bits and recommends at least 2048. The Admin Console offers both 1024-bit and 2048-bit - according to Google's documentation the 1024-bit option is for domain hosts that do not support 2048-bit keys (usually because of TXT record length limits). 2048-bit is today's baseline and what receivers expect.

The gappssmtp.com signing-identity gotcha

The number-one Workspace DKIM failure mode: outbound mail from example.com arrives at receivers with header.d=<tenant>.gappssmtp.com instead of header.d=example.com. The DKIM-signing domain then does not align with the visible From: header domain, so DMARC can rely on SPF only.

Why it happens

Workspace always signs SOMETHING. When DKIM is not explicitly enabled for the custom domain, Gmail falls back to signing under <tenant>.gappssmtp.com using a default DKIM key Workspace automatically provisions at tenant creation. The default key is real, valid, and signs successfully - but its d= tag points at the Workspace routing domain, not at your custom domain.

Symptom in Authentication-Results

Authentication-Results: mx.example.net;
       dkim=pass header.i=@tenant.gappssmtp.com header.s=20221208
       spf=fail (example.net: domain of admin@example.com does not designate ...)
       dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=example.com

Note: dkim=pass is True (signature verifies cryptographically), but header.i is @<tenant>.gappssmtp.com, not @example.com. As long as SPF passes and aligns, DMARC still passes; once SPF fails, for example after a message is forwarded, nothing is left to carry it. Aggregate DMARC reports surface this as dkim=pass + spf=fail + dmarc=fail rows for messages your Workspace tenant sent.

Symptom in Admin Console status

The Authenticate email panel shows the domain as Not authenticating email rather than Authenticating email with DKIM. Two sub-cases:

  • Key never generated: the panel offers Generate new record but no published TXT exists. Run through the full four-step workflow above.
  • Key generated and TXT published but Start authentication never clicked: the panel shows the displayed TXT value and an active Start authentication button. Click it.

The fix

One click: Start authentication in the Admin Console (after confirming the TXT resolves via dig +short TXT google._domainkey.<your-domain>).

Seven common Google Workspace DKIM mistakes

  1. Publishing the TXT but never clicking Start authentication - the gappssmtp.com gotcha above. The Admin Console activation step is mandatory; the TXT alone does not flip Gmail to signing under your custom domain.
  2. Picking 1024-bit on the Admin Console generate panel without need - pick 2048-bit, as RFC 8301 recommends. The 1024-bit option is for DNS providers that do not support 2048-bit keys; if yours does, there is no reason to use it.
  3. Publishing the TXT at the wrong name - the host must be google._domainkey (the Workspace default selector), not _domainkey.google, google._domainkey.www, default._domainkey, or any other variation. If you picked a custom selector prefix during generation, the host is <your-prefix>._domainkey.
  4. Deleting the old TXT before rotation completes - during rotation, both old and new selector TXTs must coexist for at least 48-72 hours after switching active signing so in-flight messages signed under the old selector still verify. Removing the old TXT too early breaks DKIM verification for those in-flight messages.
  5. Copying the TXT value without the v=DKIM1 prefix - the Admin Console displays the full record including v=DKIM1; k=rsa;. Some operators paste only the p=<base64> portion, producing a malformed TXT that receivers reject as not a DKIM record.
  6. Setting an excessively-low TTL on the DKIM TXT - while a low TTL during initial rollout speeds DNS propagation, leaving the TTL at 300 or less in steady state shortens the rotation overlap window. Use TTL 3600 (1 hour) or 86400 (1 day) for the steady-state DKIM TXT after the initial rollout completes.
  7. Assuming DKIM stops spoofing on its own - DKIM authenticates that a specific signing domain produced the message, but receivers do not enforce on DKIM alone. DMARC is the enforcement layer that consumes DKIM and SPF verdicts. Without DMARC at p=quarantine or p=reject, spoofed mail still delivers regardless of DKIM state.

Troubleshooting decision matrix

Map the observed symptom to the diagnostic next step:

  • Symptom: Authentication-Results shows dkim=none.
    Diagnosis: DKIM is not enabled for the sending domain. The Admin Console Authenticate email panel shows the domain as Not authenticating email; no google._domainkey TXT published.
    Fix: Run through the four-step workflow (Generate, Publish, Activate, Verify) above.
  • Symptom: Authentication-Results shows dkim=pass but header.i=@<tenant>.gappssmtp.com and DMARC fails.
    Diagnosis: The gappssmtp.com gotcha. TXT may be published but Start authentication was never clicked.
    Fix: Click Start authentication in the Admin Console.
  • Symptom: Authentication-Results shows dkim=fail (body hash mismatch).
    Diagnosis: Message body was modified after signing - a forwarder, mailing list, or security gateway rewrote the body or added a footer. Workspace uses c=relaxed/relaxed canonicalization, which tolerates whitespace and header-case changes but not body content modification.
    Fix: For forwarders/gateways in your control, configure ARC sealing (see ARC explained); for upstream forwarders out of your control, accept the failure and rely on DMARC's relaxed-mode SPF + DKIM any-pass-wins alignment.
  • Symptom: Start authentication button shows Error: DKIM record not found.
    Diagnosis: DNS propagation is incomplete.
    Fix: Verify the TXT resolves from your local resolver (dig +short TXT google._domainkey.<your-domain>); wait the remaining propagation window; retry.
  • Symptom: Authentication-Results shows dkim=permerror (no key for signature).
    Diagnosis: The s= tag in the DKIM-Signature header references a selector whose TXT no longer exists. Common after rotation: the old TXT was removed before all in-flight messages signed under that selector were delivered.
    Fix: Re-publish the retired TXT temporarily (Workspace archives the old key value, or re-generate from the operator records). Future rotations should wait the full 48-72h overlap window before retiring the old TXT.
  • Symptom: DKIM verifies for messages sent from Gmail web UI but fails for messages sent via SMTP relay from a third-party application through Workspace.
    Diagnosis: Workspace's SMTP relay service has separate DKIM signing rules - it signs only for domains explicitly registered in the SMTP relay configuration.
    Fix: At admin.google.com > Apps > Google Workspace > Gmail > Routing > SMTP relay service, verify the relay configuration includes your domain and DKIM signing is enabled for relayed traffic.

Frequently asked questions

How do I enable DKIM on Google Workspace?
Four steps. (1) Open the Google Admin Console (admin.google.com), navigate to Apps > Google Workspace > Gmail > Authenticate email. (2) Select your sending domain from the dropdown and click Generate new record, choosing DKIM key bit length 2048 and the default selector prefix google (the resulting record name is google._domainkey.<your-domain>). (3) Publish the displayed TXT record at your DNS provider: google._domainkey.<your-domain> TXT "v=DKIM1; k=rsa; p=<base64-public-key>" - copy the exact TXT value the Admin Console displays. (4) After DNS propagation (15 minutes to 48 hours), return to the same Admin Console panel and click Start authentication. From that moment Gmail signs outbound mail from your domain with DKIM-d=<your-domain> using the operator-controlled private key held inside Workspace.
Why does Google Workspace use only one DKIM selector?
Because the operator generates and controls the key, with manual rotation rather than automatic switching. Workspace uses one selector (google._domainkey by default, configurable on the Admin Console Generate new record panel) and one TXT record holding the public-key bytes directly per RFC 6376 §3.6.2. The operator clicks Generate new record to create a new key pair, then publishes the new TXT (typically under a new selector like google2024) and switches signing to the new selector on the Admin Console - manual two-step rotation. The Workspace single-selector design contrasts with Microsoft 365 DKIM, where each domain has two selectors (selector1 and selector2) published as CNAME records and the keys sit in Microsoft's infrastructure; rotation is started by the administrator there too, but needs no DNS change. The practical tradeoff in Workspace is operator control over the entire key lifecycle in exchange for publishing a new record at every rotation.
What is the difference between Google Workspace DKIM and Microsoft 365 DKIM?
Three structural differences. (1) Record type: Workspace publishes a TXT record at google._domainkey.<your-domain> containing the public-key bytes directly (v=DKIM1; k=rsa; p=<base64>); M365 publishes CNAMEs delegating to the tenant key material under <tenant>.onmicrosoft.com. (2) Selectors: Workspace uses ONE selector (google._domainkey) and the operator creates a new one at rotation; M365 uses TWO selectors (selector1 and selector2) and switches between them during a rotation. (3) Key publication: in Workspace a new public key reaches DNS only when the operator publishes a new TXT record; in M365 the new key appears behind the same CNAME record with no change in the domain's DNS. In both services the private key stays with the provider and the administrator starts the rotation. The practical consequence: a Workspace rotation requires a DNS change, an M365 rotation does not. Both produce RFC 6376 §3.6.2 compliant v=DKIM1 records that receivers verify identically.
Why are my Google Workspace messages signed under gappssmtp.com instead of my custom domain?
Because DKIM was never enabled for your custom domain in the Admin Console. Google Workspace always signs outbound mail with SOME DKIM key - the default is your tenant identity under <your-tenant>.gappssmtp.com (an automatically-provisioned Workspace key). Operators see this when DKIM verifies cryptographically (dkim=pass) but Authentication-Results shows header.i=@<tenant>.gappssmtp.com instead of header.i=@<your-custom-domain>. Such a signature does not align with the visible From: header domain, so DMARC can rely on SPF only and fails whenever SPF fails or does not align, for example after a message is forwarded. To get DKIM signing under your custom domain, you must (1) generate the DKIM key for your custom domain on the Admin Console Authenticate email panel, (2) publish the displayed TXT record at google._domainkey.<your-domain>, (3) wait for DNS propagation, then (4) click Start authentication in the Admin Console to flip the active signing identity. This is by far the #1 cause of DMARC failures on Workspace tenants.
How do I rotate Google Workspace DKIM keys?
A four-step manual rotation in the Admin Console. (1) Navigate to admin.google.com > Apps > Google Workspace > Gmail > Authenticate email, select your domain. (2) Click Generate new record, choose 2048-bit key length, and pick a NEW selector prefix (e.g., google2024 if your current selector is google) so the old and new TXT can coexist during the transition. (3) Publish the new TXT record at <new-selector>._domainkey.<your-domain> alongside the existing google._domainkey TXT - never delete the old TXT before the rotation completes. (4) On the same Admin Console panel, click Start authentication using new key. Wait at least 48-72 hours after switching active signing before removing the old TXT, so in-flight messages signed under the previous selector still verify at receivers whose DNS caches have not yet flushed. Rotation cadence: annually is the industry baseline; after any suspected key-compromise event rotate immediately.
Why does my DKIM-Signature header still show gappssmtp.com after I generated a key for my custom domain?
Most likely the Start authentication button in the Admin Console was never clicked, or DNS propagation is incomplete. Google Workspace falls back to signing with the gappssmtp.com tenant identity when (a) the google._domainkey TXT for your custom domain does not yet resolve from the public DNS, (b) the public-key TXT was published but the Admin Console Start authentication call never fired, or (c) the sender is mailing through a non-primary domain identity that has not been DKIM-enabled. Diagnose with three checks: dig +short TXT google._domainkey.<your-domain> must return a v=DKIM1 record with a non-empty p= public-key field; in the Admin Console the Authenticate email panel must show status DKIM authenticated for <your-domain>; the failing message DKIM-Signature header d= tag must match your custom domain. If all three pass, send a test message and inspect the Authentication-Results stack at a Gmail mailbox you own.
Do I need a 2048-bit DKIM key on Google Workspace?
Yes - 2048-bit is the current baseline. RFC 8301 (Cryptographic Algorithm and Key Usage Update to DKIM, 2018) requires RSA keys of at least 1024 bits and recommends at least 2048. Google's documentation says to select 2048 if your domain provider supports 2048-bit keys and notes that longer keys are more secure; the 1024 option is for domain hosts that do not support 2048-bit keys. Legacy Workspace tenants with 1024-bit keys should rotate to 2048-bit by generating a new key with the 2048 selection on the Admin Console panel. 1024-bit RSA keys are considered factorable by well-resourced attackers, and 2048-bit is what receivers expect from senders today. For new keys always pick 2048-bit.
Can I bring my own DKIM key to Google Workspace?
Not for native Gmail signing. The Workspace model generates the private key inside Google infrastructure and surfaces only the public-key TXT for the operator to publish - operators do not import an externally-generated key. Two workarounds exist: (a) for third-party senders relayed via Workspace (e.g., a marketing platform, transactional ESP, or security gateway that signs before relaying through Gmail), the upstream sender can sign with its own key and own d= signing domain; Gmail preserves DKIM-Signature headers it did not generate; (b) for full DKIM control over the d=<your-domain> identity, an organization must move outbound mail flow out of Gmail (custom MTA, third-party signing relay) - incompatible with native Workspace send. The pragmatic recommendation: keep native Gmail signing on google._domainkey with the Workspace-generated key, and rotate annually via the Admin Console.

Verify DKIM on your Google Workspace tenant now

DMARC Analyzer parses the daily aggregate reports Google and other receivers send to your rua= mailbox and surfaces the per-sender DKIM verdict breakdown via includes/DmarcParser.php — catching the gappssmtp.com signing-identity failure mode within hours of the first misaligned message. Live DNS verification for every DKIM selector on your domain runs through includes/DnsChecker.php; the Email Header Analyzer at header_analyzer.php diagnoses individual message failures by parsing the full Authentication-Results stack via includes/EmailHeaderParser.php.

Sign up — Free plan Check my Google Workspace DKIM setup