Documentation : Ultimate Member — MailPoet

Version 1.0.0

RequirementMinimum version
WordPress6.0
PHP7.4
Ultimate Member2.x
MailPoet5.x

1. Overview

Ultimate Member — MailPoet is a paid extension that connects your Ultimate Member member database directly to MailPoet. Every time a member registers, updates their profile, changes roles, or is approved, their MailPoet subscription is kept automatically in sync.

What it solves

Without this pluginWith this plugin
New members don’t appear in MailPoetMembers are added to MailPoet at registration or approval
No segmentation by membership tierRole → list mapping syncs tier changes automatically
MailPoet can’t see profile fields (country, city, job title)Custom field mapping pushes profile data into MailPoet subscriber fields
Existing members missing from MailPoetBulk import adds every approved member in one click
Members can’t manage their subscriptions on-siteAccount tab lets members toggle lists without leaving your site
No visibility when a sync failsAudit log shows every API error with timestamps
Unsubscribes via email unknown to UMDaily back-sync writes unsubscribe status to user meta

2. Requirements & Installation

Installation steps

  1. Upload um-mailpoet.zip via Plugins → Add New → Upload Plugin.
  2. Click Activate Plugin.
  3. On activation, default settings are written automatically — no manual database setup needed.
  4. Navigate to Ultimate Member → Settings → Extensions → MailPoet to configure.
📸  SCREENSHOTUM → Settings → Extensions page with the “MailPoet” sub-tab visible and active. Show the full settings page header and tab navigation.

Dependency check

If either Ultimate Member or MailPoet is missing or inactive, a red admin notice appears at the top of every admin page. The plugin does nothing until both dependencies are active.

📸  SCREENSHOTRed admin notice: “Ultimate Member — MailPoet requires the MailPoet plugin to be installed and active. [Get MailPoet]” — shown at top of WP Dashboard.

3. How List Assignment Works (Priority Order)

When a user registers or is approved, the plugin resolves which lists they should join by combining up to five sources. Sources in the “Always applied” tier bypass the opt-in checkbox gate.

PrioritySourceOpt-in gate?Configured in
1Role-based listsBypassed — always appliedSettings → Role → list mapping
2Per-form listsBypassed — always appliedForm edit screen → MailPoet Lists metabox
3Conditional rulesBypassed — always appliedSettings → Conditional list rules
4Global default listsGated — skipped if checkbox uncheckedSettings → Default lists for new members
5Form checkbox fieldsGated — user’s explicit choiceUM form builder → MailPoet field type
✓  TipAll sources are de-duplicated. A user is never added to the same list twice even if multiple sources resolve to the same list ID.

4. Registration Opt-In Checkbox

What it does

Adds a MailPoet field type to the Ultimate Member form builder. When placed on a registration form, it renders a checkbox that lets the user opt in or out of a specific MailPoet list at the moment of registration.

Use cases

  • Newsletter opt-in during registration — “Subscribe to our monthly newsletter” checkbox. Users who leave it unchecked are not added to the list.
  • Multiple list opt-ins — add several MailPoet fields to one form, one per list (e.g. “General Newsletter” + “Product Updates”).
  • Auto-subscribe without a visible checkbox — enabling the Auto-subscribe option adds the user to the list silently, without showing a checkbox.

How to configure

  1. Open the UM form builder for any registration form (Dashboard → Ultimate Member → Forms → edit).
  2. Drag the MailPoet field from the field picker into the form layout.
  3. In the field settings panel, configure: Title (required), Checkbox label, MailPoet list, and optionally enable Auto-subscribe without showing checkbox.
  4. Save the form.
📸  SCREENSHOTUM form builder with a MailPoet field in the layout. Field settings panel open showing: “MailPoet list” dropdown (populated), “Checkbox label” text input, “Auto-subscribe without showing checkbox” toggle. Note visible that the field is only available on Registration-mode forms.
📸  SCREENSHOTRegistration form on the frontend showing the newsletter opt-in checkbox: “Subscribe to our newsletter”. Show in its default (unchecked) state with UM form styling.
ℹ  NoteThe MailPoet field type is only available in Registration forms. It does not appear in the field picker when editing Profile or Login forms.
⚠  ImportantIf a form has at least one visible (non-auto) MailPoet checkbox and the user leaves all of them unchecked, global default lists are also skipped — the opt-in gate applies to defaults too.

5. Automatic Subscription on Approval

What it does

Handles the full user lifecycle automatically, with no admin action required.

EventAction
User registers (any method)Added to configured lists immediately
Admin creates a user manually in WP dashboardAdded to configured lists
User’s account is approved by adminAdded to configured lists
User’s account is deactivated / rejectedOptionally unsubscribed (configurable)
User’s account is deletedOptionally unsubscribed or deleted from MailPoet

Use cases

  • Admin approval workflow — members are held as “pending” in UM. When you click Approve, they are immediately added to MailPoet.
  • Deactivated churned members — automatically remove deactivated members from your active lists.
  • GDPR cleanup on deletion — when a member requests deletion, their MailPoet record is deleted or unsubscribed automatically.

How to configure

Go to Ultimate Member → Settings → Extensions → MailPoet.

  • When account is deactivated: Do nothing | Unsubscribe from all lists.
  • When account is deleted: Do nothing | Unsubscribe | Delete contact from MailPoet.
📸  SCREENSHOTUM → Settings → Extensions → MailPoet — top section showing “When account is deactivated” and “When account is deleted” select dropdowns with their current values visible.

6. Profile Field → MailPoet Custom Field Mapping

What it does

Maps any Ultimate Member profile field (country, phone, city, job title, birthday, or any custom field) to a MailPoet subscriber custom field. Mapped values are sent to MailPoet at registration and updated every time the member saves their profile.

Prerequisites

You must first create custom subscriber fields in MailPoet before mapping:

  1. In MailPoet, go to Subscribers → Manage fields.
  2. Add fields like “Country”, “Phone”, “City”, etc.
  3. MailPoet stores these as cf_1, cf_2, etc. internally.

How to configure

  1. Go to Ultimate Member → Settings → Extensions → MailPoet.
  2. Scroll to Profile field mapping.
  3. Click + Add mapping.
  4. Left dropdown: select a UM profile field (e.g. Country (country)).
  5. Right dropdown: select the MailPoet field (e.g. Country (cf_3)).
  6. Repeat for each field. Save settings.
📸  SCREENSHOTThe “Profile field mapping” table in UM settings. Show 3 configured rows: “Country (country) → Country (cf_3)”, “Phone (phone_number) → Phone (cf_4)”, “Job Title (job_title) → Profession (cf_5)”. The “+ Add mapping” button visible at bottom.
📸  SCREENSHOTMailPoet → Subscribers — a subscriber record expanded, showing custom fields populated: Country: Thailand, City: Bangkok. This illustrates the end result of the field mapping.
⚠  ImportantMailPoet prevents updating email, first_name, and last_name for subscribers linked to a WordPress user account. This is a MailPoet API restriction. Only custom fields (cf_X) update reliably via API for WP-linked subscribers.

7. Role → List Mapping

What it does

Automatically subscribes members to specific MailPoet lists based on their Ultimate Member role, and keeps those subscriptions in sync whenever a role changes.

Use cases

  • Tiered memberships — “Free” role → “Free Newsletter”. “Premium” role → “Premium Content”. “VIP” role → “VIP Announcements”.
  • Onboarding sequences — when a member upgrades to Premium, add them to a “Premium Onboarding” list to trigger a welcome automation.
  • Churn prevention — when a member downgrades, add them to a win-back campaign list.
  • Staff communications — “Staff” role members are automatically kept on internal staff announcement lists.

How to configure

  1. Go to Ultimate Member → Settings → Extensions → MailPoet.
  2. Scroll to Role → list mapping.
  3. A table shows your UM roles as rows and MailPoet lists as columns. Check the intersection boxes.
  4. Configure On role change: Keep subscriptions from previous role — or — Unsubscribe from previous role lists.
  5. Save settings.
📸  SCREENSHOTThe role → list mapping matrix table. Rows: “Free Member”, “Premium”, “VIP”, “Staff”. Columns: “Newsletter”, “Premium Updates”, “VIP Lounge”, “Staff Alerts”. Some checkboxes ticked realistically. “On role change” select visible below the table.

Role change triggers

Role sync fires on five separate events to ensure no change is missed:

  • set_user_role — WordPress full role replacement
  • add_user_role — WordPress role added to multi-role user
  • remove_user_role — WordPress role removed
  • um_after_user_role_is_updated — UM role change
  • um_after_member_role_upgrade — UM membership upgrade
ℹ  NoteRole-based lists are always applied — they bypass the opt-in checkbox gate. A user assigned to the “Premium” role is added to Premium lists regardless of any checkbox.

8. Per-Form List Assignment

What it does

Lets you assign specific MailPoet lists to individual UM registration forms. Members who register through that form are automatically added to those lists — no visible checkbox needed.

Use cases

  • Multiple registration forms — “Customer” form → “Customers” list. “Partner” form → “Partners” list. “Job Applicant” form → “Applicants” list.
  • Event registration — a dedicated form adds registrants to an event list without requiring a checkbox.
  • Landing page funnels — each campaign page has its own UM form, each mapped to its own MailPoet segment.

How to configure

  1. Go to Ultimate Member → Forms in the WP admin.
  2. Open (or create) a registration form.
  3. In the right sidebar, find the MailPoet Lists metabox.
  4. Check the lists you want members who use this form to be subscribed to.
  5. Update/Publish the form.
📸  SCREENSHOTUM form edit screen (Classic Editor). Show the “MailPoet Lists” metabox in the right sidebar with 3 list checkboxes, two ticked. The form title “Partner Registration” visible at top.
ℹ  NotePer-form lists are always applied — they bypass the opt-in checkbox gate. They can coexist with opt-in checkbox fields on the same form.

9. Bulk Import Existing Users

What it does

Imports all existing approved Ultimate Member members into MailPoet in a single operation. Applies current configuration — default lists, role-based lists, conditional rules, and field mapping — to every member in batches of 50.

Use cases

  • New plugin installation — you have 1,200 existing members who were never in MailPoet. One click imports all of them with the correct lists based on their current roles.
  • Configuration change — you added a new “Country” field mapping. Bulk sync pushes that data to MailPoet for all existing members.
  • After list restructure — you updated role mapping. Bulk sync re-applies the new configuration to everyone.

How to use

  1. Go to Ultimate Member → Settings → Extensions → MailPoet.
  2. Scroll to Bulk sync existing users at the bottom.
  3. Note the count of approved members found.
  4. Click “Sync all users to MailPoet”.
  5. Monitor the progress bar. Errors are listed in red below.
  6. “Sync complete.” appears in green on completion.
📸  SCREENSHOTBulk Sync panel mid-operation: progress bar at ~60% showing “300 / 500”, 2 error items in red below the bar, button showing “Syncing…” (disabled).
📸  SCREENSHOTBulk Sync panel after completion: progress bar at 100%, “600 / 600”, “Sync complete.” in green.
⚠  ImportantKeep the browser tab open until the progress bar reaches 100%. If you close the tab, the sync stops. It is safe to restart — existing subscribers are updated gracefully, not duplicated.

10. Frontend Subscription Manager

What it does

Adds a “Subscriptions” tab to the Ultimate Member account page. Logged-in members can see which public newsletter lists they are subscribed to and toggle their preferences — all without leaving your site.

Use cases

  • GDPR compliance — gives members a clear place to manage email preferences on your own site, satisfying the “easy withdrawal of consent” requirement.
  • Preference centre — members can opt in to additional lists they missed at registration.
  • Reducing global unsubscribes — members can unsubscribe from individual lists while staying on others, instead of clicking the global “Unsubscribe” link in emails.

Admin configuration

  1. Go to Ultimate Member → Settings → Extensions → MailPoet.
  2. Find “Lists visible in subscription manager”.
  3. Check only the lists you want members to see. Leave internal lists unchecked.
  4. Save settings.
📸  SCREENSHOT“Lists visible in subscription manager” multi-checkbox in UM settings. “Newsletter” and “Product Updates” checked. “VIP Internal” and “Admin Notifications” unchecked — showing the admin controls which lists are public.

Member experience

The tab appears as “Subscriptions” in the account page tab bar. Inside members see:

  • Whitelisted public lists with checkboxes showing current subscription state
  • “Save preferences” button
  • Inline confirmation: “Preferences saved.” or an error message
📸  SCREENSHOTUM account page frontend with the “Subscriptions” tab active. Show the tab bar (General, Password, Subscriptions), the active tab highlighted. Inside: two lists with checkboxes, one checked and one unchecked, “Save preferences” button at the bottom.
📸  SCREENSHOTSame view immediately after clicking Save — “Preferences saved.” confirmation in green next to the button.
✓  TipSecurity: Only whitelisted lists are shown. Internal list names and IDs are never exposed to the frontend. The AJAX handler validates all submitted list IDs server-side against the same whitelist.

11. Sync Audit Log & Admin Tools

8a — Sync error log page

Found at Ultimate Member → MailPoet Log. Shows the last 50 MailPoet API errors. Errors are stored for 7 days.

ColumnDescription
TimeWhen the error occurred
MethodWhich API call failed (e.g. addSubscriber, subscribeToList)
ContextHuman-readable description of what was being attempted
Error detailThe exact error message returned by MailPoet
📸  SCREENSHOTMailPoet Log admin page: title “MailPoet Sync Log”, description text, then the table with 3–4 error rows. One row showing a realistic error: “addSubscriber failed | subscriber already exists”. “Clear log” button above the table.
📸  SCREENSHOTMailPoet Log page with no errors: “No errors recorded. All good!” message — the healthy state.

8b — MailPoet column on the Users screen

A MailPoet column appears on WP Admin → Users.

  • ✓ Synced (green) — the user was successfully synced. Hovering shows their MailPoet subscriber ID.
  • — (grey) — not yet synced to MailPoet.
📸  SCREENSHOTWP Admin → Users screen with the “MailPoet” column on the right. Some rows show “✓ Synced” in green, one or two show “—” in grey.

8c — Per-user resync button

When editing any user (WP Admin → Users → edit), a MailPoet section at the bottom of the profile page shows:

  • Current sync status and subscriber ID
  • Unsubscribed-in-MailPoet warning with timestamp (if detected by back-sync)
  • “Resync this user” button — immediately pushes the user to MailPoet using all current configuration
📸  SCREENSHOTWP Admin → Users → edit user. MailPoet section showing: “Subscriber status: Synced (Subscriber ID: 4512)” in green, and if applicable the red notice “Unsubscribed in MailPoet (detected 2026-04-15 09:30)”. The “Resync this user” button.

12. Unsubscribe Back-Sync

What it does

Runs once daily via WP-Cron. For every member who has a stored subscriber ID, it checks their current status in MailPoet and writes the result back to WordPress user meta as _um_mailpoet_unsubscribed (a Unix timestamp).

What it writes

Condition in MailPoetAction on user meta
Status is “unsubscribed”Sets _um_mailpoet_unsubscribed to current timestamp
Status is “subscribed” againDeletes _um_mailpoet_unsubscribed (clears the flag)
Subscriber no longer exists in MailPoetSets _um_mailpoet_unsubscribed to current timestamp

Use cases

  • Content restriction — restrict posts to members who are currently subscribed. Read _um_mailpoet_unsubscribed in custom UM access rules.
  • Admin awareness — the per-user resync button shows the detected unsubscribe timestamp to admins.
  • Re-engagement triggers — custom code can query users with this meta key set to identify and target lapsed subscribers.

No configuration needed. The cron is scheduled on plugin activation and cancelled on uninstall.

📸  SCREENSHOTWP Admin → Users → edit user. MailPoet section showing the red notice: “Unsubscribed in MailPoet (detected 2026-04-15 09:30)” — the back-sync result visible to admins.

13. Conditional List Rules

What it does

A rule builder where each rule says: “If a member’s profile field [X] [operator] [value], add them to MailPoet list [Y].” Rules are evaluated at registration and on every profile save. They are additive only — matching a rule adds the member to a list, but a rule never removes them.

Use cases

  • Geographic segmentation — “If country equals Thailand → add to SEA Members list.”
  • Profession-based lists — “If job_title contains Developer → add to Tech Newsletter.”
  • Completeness gate — “If bio not_equals (empty) → add to Verified Profiles list.”
  • Language targeting — “If language equals fr → add to French Content list.”

Available operators

OperatorMeaningExample use
equalsExact match (case-sensitive)country equals Thailand
not_equalsValue is not equal; catches empty fields when value is “”newsletter_opt_out not_equals 1
containsValue contains the substringjob_title contains Manager
not_containsValue does not contain the substringinterests not_contains unsubscribed

How to configure

  1. Go to Ultimate Member → Settings → Extensions → MailPoet.
  2. Scroll to Conditional list rules.
  3. Click “+ Add rule”.
  4. Select UM Profile Field, Operator, enter Value, select MailPoet List.
  5. Add as many rules as needed. Each rule is independent. Save settings.
📸  SCREENSHOTThe “Conditional list rules” table in UM settings showing 3 configured rule rows:Row 1: Country (country) | equals | Thailand | SEA MembersRow 2: job_title | contains | Manager | Managers NewsletterRow 3: newsletter_optin | not_equals | (empty) | Marketing CampaignsThe “+ Add rule” button visible at the bottom.
ℹ  NoteRules are additive — they never remove subscriptions. If a member matched a rule, then later changes the field value, they keep the list they were added to and may gain additional ones.
⚠  ImportantOperators are case-sensitive. “Thailand” does not match “thailand”. For free-text fields, prefer contains over equals.

14. Global Settings Reference

All settings are at Ultimate Member → Settings → Extensions → MailPoet.

SettingTypeDefaultDescription
When account is deactivatedSelectDo nothingAction when a member is set to non-approved status. Options: Do nothing, Unsubscribe.
When account is deletedSelectUnsubscribeAction on permanent user deletion. Options: Do nothing, Unsubscribe, Delete contact.
Require double opt-in emailCheckboxOffWhen on, new subscribers receive a MailPoet confirmation email. They appear as “Unconfirmed” until they click.
Default lists for new membersMulti-checkboxNoneLists every new approved member is added to, unless a visible opt-in checkbox is present and left unchecked.
Lists visible in subscription managerMulti-checkboxNoneOnly these lists appear in the member account tab. Internal lists not checked here stay invisible.
Role → list mappingMatrix tableEmptyRoles × lists matrix. Check intersections to map roles to lists.
On role changeSelectKeep previousWhether to remove old role lists when a member’s role changes.
Profile field mappingRepeaterEmptyUM meta key → MailPoet cf_X field mapping rows.
Conditional list rulesRepeaterEmptyField / operator / value / list rule rows.
Bulk sync existing usersToolOne-click import of all approved users into MailPoet. Not a persistent setting.
📸  SCREENSHOTFull UM → Settings → Extensions → MailPoet page — composite screenshot or two separate screenshots showing the complete settings page from top (lifecycle settings) to bottom (bulk sync tool). This is the master reference screenshot.

15. User Meta Reference

The plugin stores two private user meta keys on each WordPress user:

Meta keyTypeDescription
_um_mailpoet_subscriber_idStringThe MailPoet subscriber ID. Set when the user is first successfully synced. Displayed in the Users column and profile page.
_um_mailpoet_unsubscribedInteger (timestamp)Unix timestamp of when the daily back-sync detected an unsubscribe. Deleted when the user re-subscribes. Absent if currently subscribed.

Using in custom code

These keys can be used in custom code or UM content restriction rules. Example:

// Restrict content to currently-subscribed members$user_id = get_current_user_id();if ( get_user_meta( $user_id, ‘_um_mailpoet_unsubscribed’, true ) ) {    // User has unsubscribed — redirect or show warning}

16. Frequently Asked Questions

Will existing members be automatically added to MailPoet when I install the plugin?

No. The plugin only syncs members going forward. Use the Bulk Import tool (Feature 6) to bring existing members into MailPoet.

What happens if a member is already in MailPoet with the same email?

The plugin detects the duplicate and updates the existing subscriber rather than creating a second record. Their list subscriptions are merged — they gain new lists without losing any existing ones.

Does double opt-in affect role-based or per-form list assignments?

Yes. When double opt-in is enabled, even always-applied lists require the member to confirm via email before they are fully subscribed. The subscriber appears as “Unconfirmed” in MailPoet until they click.

Can I use this plugin with MailPoet’s free version?

Yes. All features use MailPoet’s public PHP API (v1), which is available in both free and premium versions.

What if MailPoet is temporarily unavailable?

All sync operations are wrapped in exception handling. If MailPoet is unreachable during registration, the user is registered normally in WordPress — the sync fails silently and the error is logged. Resync individual users with the resync button, or run bulk sync again when MailPoet is back.

Can members subscribe to lists they weren’t originally added to?

Only if those lists are included in the “Lists visible in subscription manager” whitelist. Any whitelisted list appears in the Subscriptions tab and members can opt in themselves.

Does the plugin support MailPoet automations?

The plugin manages list membership. MailPoet’s own automation workflows are triggered by list membership — so when this plugin adds a subscriber to a list, any MailPoet automations configured for that list will fire automatically.

What happens if I uninstall the plugin?

All plugin-specific settings are removed from the database. The MailPoet sync cron job is cancelled. MailPoet subscriber data is not deleted — subscribers remain in MailPoet untouched.

17. Troubleshooting

Members are not appearing in MailPoet

  1. Check Ultimate Member → MailPoet Log for API errors during the registration.
  2. Confirm at least one list is configured: default lists, role-based lists, per-form lists, or a conditional rule.
  3. If the form has a visible MailPoet opt-in checkbox and the member left it unchecked, they will not be added to default lists. This is correct behaviour.
  4. Use the Resync this user button on the member’s WP profile page to retry.

The Subscriptions account tab is not visible

  1. Ensure at least one list is checked under “Lists visible in subscription manager” in settings.
  2. Confirm the member is logged in. The tab is only shown to authenticated users.
  3. Confirm MailPoet is active. If MailPoet deactivates, the tab content cannot load.

Role changes are not triggering list updates

  1. Confirm rows are checked in the Role → list mapping table for the relevant role.
  2. The role sync only adds to lists — it does not create new MailPoet subscribers. If the member was never synced to MailPoet, use the resync button first.
  3. Check the MailPoet Log for any subscribeToList errors.

Conditional rules are not working

  1. Verify the UM Profile Field dropdown value matches the exact user meta key used by UM.
  2. Remember operators are case-sensitive. “thailand” will not match “Thailand”.
  3. Rules are evaluated at registration and on profile save — not retroactively. To apply rules to existing members, run the Bulk Import.

Bulk sync stops before completing

The sync runs in the browser. If the tab was closed or the session timed out, restart the sync. It is safe to restart — existing subscribers are updated gracefully, not duplicated.

MailPoet lists don’t appear in the settings dropdowns

MailPoet list data is cached for 10 minutes. After creating a new list in MailPoet, wait up to 10 minutes and refresh the settings page. Saving any MailPoet settings also clears the cache immediately.

Scroll to Top