Jump to content

Recommended Posts

Posted

Hi everyone,

I’m releasing Resend, a ProcessWire module for transactional email, audience management and delivery operations through the Resend API.

It works as a regular ProcessWire WireMail provider for everyday site email, while also exposing Resend-specific domains, contacts, segments, topics, templates, broadcasts, webhooks and delivery diagnostics inside the ProcessWire admin.

Resend

What Resend does

  • Sends ProcessWire mail through the Resend API as a WireMail provider.
  • Supports transactional and batch sends, scheduling, cancellation, idempotency keys and tags.
  • Manages sending domains and provides DNS setup guidance for SPF, MX, TXT and CNAME records.
  • Manages contacts, segments, contact properties and topic subscriptions.
  • Creates, edits, publishes and duplicates templates.
  • Creates, edits, sends and schedules broadcasts.
  • Receives and verifies Resend webhooks at /resend-webhook/.
  • Stores webhook events locally for inspection and site automation.
  • Lists sent and received email, attachments, API logs and delivery signals.
  • Includes safe simulator sends using resend.dev recipients.
  • Encrypts API keys and webhook secrets in a dedicated settings table.
  • Bundles ProcessWire language files for English, French, German and Spanish.
  • Includes a CLI for diagnostics and scripted operations.

Normal ProcessWire mail API

Existing site code can continue to use wireMail():

$mail = wireMail();
$mail->to('person@example.com')
    ->from('Site <hello@example.com>')
    ->subject('Thanks for your request')
    ->bodyHTML('<p>We received your request.</p>')
    ->send();

Resend-specific options are available when needed:

$mail = wireMail();
$mail->to('person@example.com')
    ->subject('Welcome')
    ->bodyHTML('<p>Hello</p>');

$mail->scheduledAt('in 1 hour');
$mail->addTag('source', 'website');
$mail->idempotencyKey('welcome-' . $page->id);
$mail->send();

Modules that discover providers by a WireMail* class name can select the included WireMail Resend compatibility module.

Requirements

  • ProcessWire 3.0.184 or newer
  • PHP 8.1 or newer
  • A Resend account
  • A verified sending domain for production email

Installation

  1. Copy the Resend directory to /site/modules/Resend/.
  2. Refresh modules in the ProcessWire admin.
  3. Install Resend; ProcessResend, ResendWebhooks and WireMailResend are installed automatically.
  4. Add the Resend API key and default sender in module settings.
  5. Open Setup → Resend and add or verify a sending domain.
  6. Use the simulator test screen before sending to real recipients.

Screenshots

resend1.png.9f9e552010865926496b3a68a9a9a9a8.png resend2.png.741809020964d235e3891d6d93bc8dbc.png

Links

Feedback about WireMail compatibility, delivery workflows and the admin experience is welcome.

  • Like 1

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...