Skip to content
Corex

Email Studio

Email Studio turns CoreX transactional mail into an editable, versioned workflow without weakening the mail safety boundary. Activate CoreX Email, then open CoreX → Email Studio.

EnvironmentBehavior
Local / DevelopmentAlways captures locally. Real recipients are never contacted.
StagingCaptures unless a matching provider and live delivery are both deliberately enabled.
ProductionBlocks until the matching provider and live-delivery gate are both configured.

The built-in provider is wp-mail, which uses the site’s WordPress transport and its configured SMTP/MTA, if present. Open CoreX → Settings → Mail, select wp-mail, validate that transport, and only then enable live delivery. An unknown provider label remains blocked; it does not pretend a provider driver exists.

  1. In Templates, create a stable lowercase slug and name.
  2. Enter subject, sender, HTML, plain-text mode, layout version, and the variable keys the template may consume.
  3. Save. Every save appends an immutable numbered draft; it never overwrites history.
  4. Use Preview to inspect desktop/mobile and RTL sample contexts. Preview data is labelled as sample data and runs in a script-disabled iframe.
  5. Run Health and resolve invalid variables, missing manual plain text, subscription links, reply-to, or provider configuration.
  6. Activate the intended draft. Routes send only an explicitly active version.

Placeholders use {{ path.to.value }}. Every used path must be declared in the template’s variable list and in the server schema. Values are escaped in HTML and stripped of markup in subjects/plain text. Scripts, event handlers, executable URLs, PHP, and header control characters are rejected before persistence.

CoreX installs Transactional, Minimal, and Newsletter layouts. The WooCommerce layout appears only when WooCommerce is available. Saving a layout or partial creates the next revision. Layout regions and reusable partial content therefore remain explainable after later edits.

Routing connects a trigger to an active template, recipient rules, and an optional reply-to rule. A rule is either a fixed validated address or a dot path resolved from the event context.

Built-in callers include:

  • forms.<form-slug>.submitted
  • access.request.created
  • access.request.approved
  • access.request.denied

If Forms has no active route, its existing code-template/wp_mail fallback remains available. Access state changes are authoritative even if an optional notification fails.

Test send follows the same delivery policy as application mail and writes a typed result: captured, sent, failed, or rejected. Delivery logs show the redacted recipient, subject/template, state, provider event, provider, time, and retry relationship. Retryable attempts create a new linked attempt; the prior record is never mutated.

All Email Studio REST reads require manage_options. Writes require both that capability and a valid WordPress REST nonce. Private templates, captures, routes, and attempts are stored as non-public WordPress records and are not exposed on the front end.

The Email Studio screen shows a Sending & transport panel explaining the boundary between CoreX and your mail transport:

  • CoreX composes each message — From name, From address, Reply-To, and body — and hands it to WordPress via wp_mail(). It owns those headers through CoreX → Settings → Mail.
  • An SMTP plugin such as FluentSMTP, when installed, transports the message. Its SMTP credentials stay owned by that plugin; CoreX never reads, stores, or requires them.
  • A transport plugin’s Force From Name / Force From Email settings can override the headers CoreX set. If mail arrives from an unexpected sender, check the transport plugin first.
  • A transport accepting a message does not prove it reached an inbox.

The panel raises a specific warning only where a reliable, non-sensitive signal exists — a registered wp_mail_from filter (a forced-From setting), or a configured From address on a different domain from the site. Where no such signal exists, it shows general guidance rather than a fabricated “detected” state.