Skip to content

feat(maileroo): add Maileroo actions - #242

Open
RishadAlam wants to merge 7 commits into
mainfrom
feat/maileroo-integration
Open

RishadAlam wants to merge 7 commits into
mainfrom
feat/maileroo-integration

Conversation

@RishadAlam

@RishadAlam RishadAlam commented Oct 21, 2026 •

Copy link
Copy Markdown
Member

Description

Adds Maileroo as a Pro action integration in Bit Integrations Free. The PR adds the connection (Account API key), the action settings screen for 24 Maileroo actions, and the hooks that pass each run to Bit Integrations Pro. The action logic is in the matching Pro PR: bit-apps-pro/bit-integrations-pro#163.

Motivation & Context

Maileroo is in Bit Flows (bit-apps-pro/bit-pi#882). This PR ports its write actions to Bit Integrations.

The following were left out on purpose:

  • Triggers: every Maileroo trigger is an external webhook.
  • Read and list actions: their data goes into dropdowns instead.
  • Output-only actions: rotate sending key, reset SMTP password, rotate application secrets, test inbound route callback, open template edit session.
  • Credential-creating actions: create sending key, create SMTP account, create application.
  • Send Bulk Email.

Related Links: (if applicable)

  • Bit Flows source: bit-apps-pro/bit-pi#882
  • Pro side: bit-apps-pro/bit-integrations-pro#163

Type of Change

  • 🐛 Bug fix
  • ✨ New feature
  • 💥 Breaking change
  • 📚 Documentation update
  • ⚡ Improvement
  • 🔄 Code refactor

Key Changes

Integrations

  • Added the 24 Pro actions, all listed in the action dropdown:
    • Email: Send Email, Send Templated Email, Delete Scheduled Email, Resend Email.
    • Domains: Add Domain, Update Domain Settings, Scan DNS Records, Delete Domain.
    • Sending keys and SMTP: Rename Sending Key, Delete Sending Key, Delete SMTP Account.
    • Inbound routes: Create, Update and Delete Inbound Route.
    • Suppressions: Add Suppression, Delete Suppression.
    • Templates: Create, Rename and Delete Template.
    • Applications: Update Application, Delete Application.
    • Webhooks: Create, Update and Delete Webhook.
  • Added MailerooController with the BEARER_TOKEN auth config and the maileroo_get_domains, maileroo_get_templates and maileroo_get_dedicated_ips routes. It uses only connections saved for Maileroo, so a flow cannot send another app's token to the Maileroo API.
  • Added RecordApiHelper. It builds the field data and turns Tag, Custom Header and Template Variable rows into key-value maps. It fires one maileroo_* hook per action with only the arguments that action reads, and it logs every run with LogHandler.

Frontend

  • Added the Maileroo screens, built from data in staticData.js:
    • Dropdowns: a domain dropdown, a template dropdown and type selects (domain type, match type, template type).
    • Multi-selects: authorized domains, outbound IPs, webhook domains and event types.
    • Utilities: checkboxes for on-only options, and Enable/Disable or Yes/No choices where "keep the current value" also matters.
  • Added type-driven fields. Picking a domain type, match type or template type shows only the fields that type needs, and marks them required.
  • Added custom key rows for tags, email headers and template variables in the field map. These replace JSON fields.
  • Added notes for each action:
    • The Schedule At format and its 21-day limit.
    • How to use cid: for inline images.
    • The free sub-domain rules.
    • A warning before deleting a sending key.
    • Where the dashboard shows each record ID, name or identifier.
    • A warning against mapping public form fields to callback URLs, forward lists and application allow lists.
  • Added the registrations in NewInteg, EditInteg, IntegInfo, SelectAction and tutorialLinks, plus a 128 px logo.

Checklist

  • Code follows project style guidelines (php-cs-fixer, PHPCompatibilityWP 7.4, eslint, prettier on the new folder; unrelated prettier reflow in the registration files reverted)
  • Self-review completed
  • Tests added/updated
  • Documentation updated if needed
  • README updated if needed

Testing (live Maileroo account, 2026-10-21):

  • I configured all 24 actions in the flow builder through Chrome DevTools, with a Contact Form 7 trigger.
  • I fired each flow with a real form submission.
  • I checked every result in the Maileroo dashboard. Examples:
    • The test inbox received the email with the custom header, tag, From Name and tracked link.
    • The templated email rendered the variable.
    • Suppressions, templates, domains, routes, applications, webhooks, sending keys and SMTP accounts were created, changed and deleted.
  • All test objects were deleted afterwards.

Changelog

  • New Actions
    • Maileroo: 24 new actions added (Pro).

🤖 Generated with Claude Code

Add the Maileroo controller, routes and record helper. The controller
connects with the Account API key and loads domains, templates and
dedicated IPs for the action dropdowns. The record helper builds the
field data, groups custom tag, header and template variable rows, and
fires one Pro hook for each of the 24 write actions.
Add the Maileroo action screens: connection with an Account API key,
24 Pro actions, domain and template dropdowns, multi-selects for
domains, dedicated IPs and event types, and type selects that show
only the fields the selected type needs. Tags, headers and template
variables use custom key rows in the field map.
Maileroo accepts only a 24 character hex string as the Reference ID.
- Explain the Schedule At format and the 21 day limit, how to show an
  inline image with cid, and the free sub-domain rules.
- Warn that email actions use the first sending key of the domain
  before a user deletes a key.
- Tell users to map From Name, because a custom From Email value loses
  text inside angle brackets when the flow is saved.
- Replace the Disable Tracking checkbox with an Enable or Disable choice
  so an email can also turn tracking on. Empty keeps the domain setting.
- Label the add row button for screen readers.
Label the target fields with the values they accept, for example
Sending Key ID or Identifier, and add notes that point to the
dashboard page that shows each value. Explain that Maileroo scans DNS
only for custom domains.
Copilot AI balanced review requested due to automatic review settings October 21, 2026 09:33

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@github-actions

Copy link
Copy Markdown

✅ WordPress Plugin Check Report

✅ Status: Passed

📊 Report

All checks passed! No errors or warnings found.


🤖 Generated by WordPress Plugin Check Action • Learn more about Plugin Check

- Use only connections saved for Maileroo, so a flow can never send the
  token of another app to the Maileroo API.
- Label the domain and template fields as ID or Name.
- Warn users not to map public form fields to callback URLs, forward
  lists and application allow lists, and say where the dashboard shows
  the webhook shared secret.
Copilot AI balanced review requested due to automatic review settings October 21, 2026 09:51

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

Copilot AI balanced review requested due to automatic review settings November 1, 2026 09:27

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has insufficient remaining quota. Try requesting a review at a lower effort level.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants