Documentation version: 2026-09-18.3
Canonical: https://docs.creator.gg/guides/email.md

# Create, send, and inspect an email campaign

## Supported workflow
HTML/plain-text templates, campaign drafts, contact/tag/engagement audiences, immediate sending, one-time scheduling, and available statistics are supported. Templates are reusable content; campaigns are individual mailings. Creating either does not send email.

True test sends, pause/cancel controls, sender/domain configuration, and visual-builder editing require account screens. Handoff tools return links; they do not perform these actions.

## 1. Establish sender and footer evidence
Call workspace_status and read guides/readiness. For person-bound OAuth connections, omit emailMeta.fromEmail/fromName to use defaultEmailSender: the current email and profile name of the person who authorized the agent (workspace name if no profile name). Explicit From fields override their defaults independently. The server reads that same person's current profile at submission; no per-workspace sender setup is needed in Creators. Resolve subject and any requested Reply-To from the user's request. Selecting a sender does not establish provider sender/domain verification.

workspace_status reports the authenticated-user default, not a list of provider-verified senders. No current tool enumerates verified domains. With authorized browser access, inspect Email Services and domain inventory/assignment in the matching account; otherwise use confirmed settings and state verification limits. Do not infer a dedicated domain from a shared/default-domain field.

Read guides/email-content to resolve automatic footer versus manual unsubscribe behavior. If essential facts remain unknown, prepare a draft and resolve them before sending.

## 2. Build the audience
For "all contacts", fully paginate contacts_search. Deduplicate by contact ID and review email presence, global DND, and email suppression. Report total records, eligible recipients, and exclusions separately. Read individual contacts if preferences are unclear.

Explicit recipients use type=contact and returned contactIds. Tag recipients use IDs from audiences_list, not names. Engagement segment names are enumerated in the send schema.

At most 100 contact IDs or tag IDs fit one send. Never truncate larger audiences silently. Use a suitable tag audience or explicitly planned non-overlapping campaigns. The adapter checks explicit contact suppression; delivery also applies account suppression rules.

## 3. Create reusable content
Call email_merge_fields_list when personalizing content. Use exact returned tokens, inspect coverage, and check recipient values; user-created fields are discovered live. Read guides/email-content for missing values and preview limits.
email_templates_create requires name, editorType ("html" or "text"), editorContent, and requestId. Optional subject/sender/preview metadata does not replace required send-time emailMeta.

For HTML use table-based layouts, inline styles, a readable single column, image alt text, descriptive links, and text fallbacks. Responsive rules are progressive enhancement. No template promises identical rendering in every mail client.

email_templates_list has a maximum limit of 20. Use include=all to discover folders, then returned folderId to browse. Folders are not templates.

## 4. Create and inspect a campaign draft
email_campaigns_create accepts name, editorType, and a templateId or explicit editorContent. Choose one content source instead of supplying conflicting content. Retain the returned campaign ID and read it with email_campaigns_get.

Draft update/deletion cannot change scheduled/running campaigns. Visual-builder content must be edited in the account editor.

A saved-content URL shows saved content, not a personalized sent email. Merge fields and automatic footers may appear only during sending. Browser desktop/mobile preview does not prove Outlook or inbox rendering.

email_campaigns_test returns the campaign screen and instructions for a true test. It does not send a test. An actual test send remains a separate action within the user's requested scope.

## 5. Send or schedule once
Supply campaignId, explicit recipients, and emailMeta.subject. Omit fromName/fromEmail for the authenticated-user defaults, or supply explicit overrides. Include replyToAddress when resolved; it is not inferred from From. Send-time metadata is authoritative. If the current profile has no usable email, supply fromEmail or correct the profile; SENDER_NOT_CONFIGURED means no send was submitted. Use a new requestId after correcting failed input. Legacy workspace keys have no person-bound defaults and require explicit sender fields.

Use email_campaigns_send immediately, or email_campaigns_schedule with sendAt (ISO timestamp with offset) and timeZone (IANA name). See guides/scheduling. Recipient membership is frozen. Normal account usage applies.

Use a unique requestId for this intended send. Retain it and the campaign ID. Do not issue a new ID after an uncertain response.

## 6. Verify delivery
Read email_campaigns_get and email_campaigns_stats. Successful submission or an API label of "sent" does not prove delivery. Top-level "completed" may describe a completed read or a reported campaign state.

Report accepted, delivered, bounced, skipped, and failed counts only when returned. Missing metrics are unavailable, not zero. All-zero statistics do not prove delivery or that reporting is final.

If the API reports sent but statistics remain zero or the account shows Failed/Skipped, report the discrepancy and inspect campaign recipient activity in the account screen. An actor/user lookup error needs connection maintenance; do not change suppression or resend to diagnose it.

A source ID permits statistics retrieval; it is not delivery proof. Recipient receipt is another evidence level.

## Recovery
Read guides/recovery. email_campaigns_cancel opens pause/cancel controls without cancelling. Draft deletion is never cancellation. Keep the existing campaign and receipt when investigating failures.
