Mailster Database Structure

Mailster stores subscribers, lists, forms, queues, logs, and interaction events in custom tables using the InnoDB engine and utf8mb4_unicode_520_ci collation. The prefix adapts to your WordPress installation (shown below as wp_).

💡 Tip: Interact with this data via Mailster’s APIs and hooks.
Direct SQL edits are rarely necessary.

Action Tables (Events)

These tables record sends, opens, clicks, bounces, unsubscribes, and errors for analytics and deliverability tracking.

wp_mailster_action_bounces

Stores bounce events. hard = 1 indicates a hard bounce; text contains the raw message from the mail server.

CREATE TABLE `wp_mailster_action_bounces` (
  `ID` bigint unsigned NOT NULL AUTO_INCREMENT,
  `subscriber_id` bigint unsigned DEFAULT NULL,
  `campaign_id` bigint unsigned DEFAULT NULL,
  `timestamp` int NOT NULL DEFAULT '0',
  `i` int unsigned NOT NULL DEFAULT '0',
  `count` int unsigned NOT NULL DEFAULT '0',
  `hard` tinyint(1) NOT NULL DEFAULT '0',
  `text` longtext COLLATE utf8mb4_unicode_520_ci NOT NULL,
  PRIMARY KEY (`ID`),
  UNIQUE KEY `id` (`subscriber_id`,`campaign_id`,`timestamp`,`hard`,`i`),
  KEY `subscriber_id` (`subscriber_id`),
  KEY `campaign_id` (`campaign_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_520_ci;

wp_mailster_action_clicks

Logs click events inside email campaigns. Each record represents a unique click instance. link_id references wp_mailster_links.

CREATE TABLE `wp_mailster_action_clicks` (
  `ID` bigint unsigned NOT NULL AUTO_INCREMENT,
  `subscriber_id` bigint unsigned DEFAULT NULL,
  `campaign_id` bigint unsigned DEFAULT NULL,
  `timestamp` int NOT NULL DEFAULT '0',
  `i` int unsigned NOT NULL DEFAULT '0',
  `count` int unsigned NOT NULL DEFAULT '0',
  `link_id` bigint unsigned NOT NULL DEFAULT '0',
  PRIMARY KEY (`ID`),
  UNIQUE KEY `id` (`subscriber_id`,`campaign_id`,`timestamp`,`link_id`,`i`),
  KEY `subscriber_id` (`subscriber_id`),
  KEY `campaign_id` (`campaign_id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_520_ci;

wp_mailster_action_errors

Captures email delivery or system errors for troubleshooting and retry logic.

CREATE TABLE `wp_mailster_action_errors` (
  `ID` bigint unsigned NOT NULL AUTO_INCREMENT,
  `subscriber_id` bigint unsigned DEFAULT NULL,
  `campaign_id` bigint unsigned DEFAULT NULL,
  `timestamp` int NOT NULL DEFAULT '0',
  `i` int unsigned NOT NULL DEFAULT '0',
  `count` int unsigned NOT NULL DEFAULT '0',
  `text` longtext COLLATE utf8mb4_unicode_520_ci NOT NULL,
  PRIMARY KEY (`ID`),
  UNIQUE KEY `id` (`subscriber_id`,`campaign_id`,`timestamp`,`i`),
  KEY `subscriber_id` (`subscriber_id`),
  KEY `campaign_id` (`campaign_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_520_ci;

wp_mailster_action_opens

Tracks open events for each subscriber and campaign. Used for calculating open rates and engagement metrics.

CREATE TABLE `wp_mailster_action_opens` (
  `ID` bigint unsigned NOT NULL AUTO_INCREMENT,
  `subscriber_id` bigint unsigned DEFAULT NULL,
  `campaign_id` bigint unsigned DEFAULT NULL,
  `timestamp` int NOT NULL DEFAULT '0',
  `i` int unsigned NOT NULL DEFAULT '0',
  `count` int unsigned NOT NULL DEFAULT '0',
  PRIMARY KEY (`ID`),
  UNIQUE KEY `id` (`subscriber_id`,`campaign_id`,`timestamp`,`i`),
  KEY `subscriber_id` (`subscriber_id`),
  KEY `campaign_id` (`campaign_id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_520_ci;

wp_mailster_action_sent

Records all sent emails per subscriber and campaign, including retries. Used to determine send statistics.

CREATE TABLE `wp_mailster_action_sent` (
  `ID` bigint unsigned NOT NULL AUTO_INCREMENT,
  `subscriber_id` bigint unsigned DEFAULT NULL,
  `campaign_id` bigint unsigned DEFAULT NULL,
  `timestamp` int NOT NULL DEFAULT '0',
  `i` int unsigned NOT NULL DEFAULT '0',
  `count` int unsigned NOT NULL DEFAULT '0',
  PRIMARY KEY (`ID`),
  UNIQUE KEY `id` (`subscriber_id`,`campaign_id`,`timestamp`,`i`),
  KEY `subscriber_id` (`subscriber_id`),
  KEY `campaign_id` (`campaign_id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_520_ci;

wp_mailster_action_unsubs

Records unsubscribe events. The text field can store the reason or additional context.

CREATE TABLE `wp_mailster_action_unsubs` (
  `ID` bigint unsigned NOT NULL AUTO_INCREMENT,
  `subscriber_id` bigint unsigned DEFAULT NULL,
  `campaign_id` bigint unsigned DEFAULT NULL,
  `timestamp` int NOT NULL DEFAULT '0',
  `i` int unsigned NOT NULL DEFAULT '0',
  `count` int unsigned NOT NULL DEFAULT '0',
  `text` longtext COLLATE utf8mb4_unicode_520_ci NOT NULL,
  PRIMARY KEY (`ID`),
  UNIQUE KEY `id` (`subscriber_id`,`campaign_id`,`i`),
  KEY `subscriber_id` (`subscriber_id`),
  KEY `campaign_id` (`campaign_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_520_ci;

wp_mailster_form_actions

Stores actions taken on Mailster forms, such as submissions or user interactions.

CREATE TABLE `wp_mailster_form_actions` (
  `ID` bigint unsigned NOT NULL AUTO_INCREMENT,
  `form_id` bigint unsigned NOT NULL,
  `post_id` bigint unsigned NOT NULL,
  `subscriber_id` bigint unsigned DEFAULT NULL,
  `timestamp` int NOT NULL DEFAULT '0',
  `type` tinyint unsigned NOT NULL,
  PRIMARY KEY (`ID`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_520_ci;

Stores all tracked URLs used in campaigns, referenced by the click tracking system.

CREATE TABLE `wp_mailster_links` (
  `ID` bigint unsigned NOT NULL AUTO_INCREMENT,
  `link` varchar(2083) COLLATE utf8mb4_unicode_520_ci NOT NULL,
  `i` tinyint unsigned NOT NULL,
  PRIMARY KEY (`ID`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_520_ci;

wp_mailster_lists

Stores subscriber list data, including hierarchy, names, and metadata.

CREATE TABLE `wp_mailster_lists` (
  `ID` bigint unsigned NOT NULL AUTO_INCREMENT,
  `parent_id` bigint unsigned NOT NULL,
  `name` varchar(191) COLLATE utf8mb4_unicode_520_ci NOT NULL,
  `slug` varchar(191) COLLATE utf8mb4_unicode_520_ci NOT NULL,
  `description` longtext COLLATE utf8mb4_unicode_520_ci NOT NULL,
  `added` int unsigned NOT NULL,
  `updated` int unsigned NOT NULL,
  PRIMARY KEY (`ID`),
  UNIQUE KEY `name` (`name`),
  UNIQUE KEY `slug` (`slug`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_520_ci;

wp_mailster_lists_subscribers

Connects lists and subscribers to manage mailing list memberships.

CREATE TABLE `wp_mailster_lists_subscribers` (
  `list_id` bigint unsigned NOT NULL,
  `subscriber_id` bigint unsigned NOT NULL,
  `added` int unsigned NOT NULL,
  UNIQUE KEY `id` (`list_id`,`subscriber_id`),
  KEY `list_id` (`list_id`),
  KEY `subscriber_id` (`subscriber_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_520_ci;

wp_mailster_logs

Stores sent campaign log entries including message content, subject, recipients, and metadata.

CREATE TABLE `wp_mailster_logs` (
  `ID` bigint unsigned NOT NULL AUTO_INCREMENT,
  `subscriber_id` bigint unsigned DEFAULT NULL,
  `campaign_id` bigint unsigned DEFAULT NULL,
  `timestamp` int NOT NULL DEFAULT '0',
  `subject` longtext COLLATE utf8mb4_unicode_520_ci NOT NULL,
  `receivers` longtext COLLATE utf8mb4_unicode_520_ci NOT NULL,
  `html` longtext COLLATE utf8mb4_unicode_520_ci NOT NULL,
  `text` longtext COLLATE utf8mb4_unicode_520_ci NOT NULL,
  `raw` longtext COLLATE utf8mb4_unicode_520_ci NOT NULL,
  `message_id` varchar(191) COLLATE utf8mb4_unicode_520_ci NOT NULL DEFAULT '',
  PRIMARY KEY (`ID`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_520_ci;

wp_mailster_queue

Holds campaign sending queue data to manage scheduled and retry email dispatching.

CREATE TABLE `wp_mailster_queue` (
  `ID` bigint unsigned NOT NULL AUTO_INCREMENT,
  `subscriber_id` bigint unsigned NOT NULL DEFAULT '0',
  `campaign_id` bigint unsigned NOT NULL DEFAULT '0',
  `requeued` tinyint unsigned NOT NULL DEFAULT '0',
  `added` int unsigned NOT NULL DEFAULT '0',
  `timestamp` int NOT NULL DEFAULT '0',
  `sent` int unsigned NOT NULL DEFAULT '0',
  `priority` tinyint unsigned NOT NULL DEFAULT '0',
  `count` tinyint unsigned NOT NULL DEFAULT '0',
  `error` tinyint unsigned NOT NULL DEFAULT '0',
  `ignore_status` tinyint unsigned NOT NULL DEFAULT '0',
  `options` varchar(191) COLLATE utf8mb4_unicode_520_ci NOT NULL DEFAULT '',
  `i` int unsigned NOT NULL DEFAULT '0',
  `tags` longtext COLLATE utf8mb4_unicode_520_ci NOT NULL,
  PRIMARY KEY (`ID`),
  UNIQUE KEY `id` (`subscriber_id`,`campaign_id`,`requeued`,`options`,`i`),
  KEY `subscriber_id` (`subscriber_id`),
  KEY `campaign_id` (`campaign_id`),
  KEY `requeued` (`requeued`),
  KEY `timestamp` (`timestamp`),
  KEY `priority` (`priority`),
  KEY `count` (`count`),
  KEY `error` (`error`),
  KEY `ignore_status` (`ignore_status`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_520_ci;

wp_mailster_subscriber_fields

Stores additional custom field data for each subscriber. Similar to WordPress user meta but scoped to Mailster.

CREATE TABLE `wp_mailster_subscriber_fields` (
  `ID` bigint unsigned NOT NULL AUTO_INCREMENT,
  `subscriber_id` bigint unsigned NOT NULL,
  `meta_key` varchar(191) COLLATE utf8mb4_unicode_520_ci NOT NULL,
  `meta_value` longtext COLLATE utf8mb4_unicode_520_ci NOT NULL,
  PRIMARY KEY (`ID`),
  UNIQUE KEY `id` (`subscriber_id`,`meta_key`),
  KEY `subscriber_id` (`subscriber_id`),
  KEY `meta_key` (`meta_key`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_520_ci;

wp_mailster_subscriber_meta

Stores campaign-specific metadata for subscribers, such as interaction states, personalization data, or progress through workflows.

CREATE TABLE `wp_mailster_subscriber_meta` (
  `ID` bigint unsigned NOT NULL AUTO_INCREMENT,
  `subscriber_id` bigint unsigned NOT NULL,
  `campaign_id` bigint unsigned NOT NULL,
  `meta_key` varchar(191) COLLATE utf8mb4_unicode_520_ci NOT NULL,
  `meta_value` longtext COLLATE utf8mb4_unicode_520_ci NOT NULL,
  PRIMARY KEY (`ID`),
  UNIQUE KEY `id` (`subscriber_id`,`campaign_id`,`meta_key`),
  KEY `subscriber_id` (`subscriber_id`),
  KEY `campaign_id` (`campaign_id`),
  KEY `meta_key` (`meta_key`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_520_ci;

wp_mailster_subscribers

Contains the main subscriber records with email addresses, WordPress user links, subscription status, and activity timestamps.

CREATE TABLE `wp_mailster_subscribers` (
  `ID` bigint unsigned NOT NULL AUTO_INCREMENT,
  `hash` varchar(32) COLLATE utf8mb4_unicode_520_ci NOT NULL,
  `email` varchar(191) COLLATE utf8mb4_unicode_520_ci NOT NULL,
  `wp_id` bigint unsigned NOT NULL DEFAULT '0',
  `status` int unsigned NOT NULL DEFAULT '0',
  `added` int unsigned NOT NULL DEFAULT '0',
  `updated` int unsigned NOT NULL DEFAULT '0',
  `signup` int unsigned NOT NULL DEFAULT '0',
  `confirm` int unsigned NOT NULL DEFAULT '0',
  `ip_signup` varchar(45) COLLATE utf8mb4_unicode_520_ci NOT NULL DEFAULT '',
  `ip_confirm` varchar(45) COLLATE utf8mb4_unicode_520_ci NOT NULL DEFAULT '',
  `rating` decimal(3,2) unsigned NOT NULL DEFAULT '0.25',
  PRIMARY KEY (`ID`),
  UNIQUE KEY `email` (`email`),
  UNIQUE KEY `hash` (`hash`),
  KEY `wp_id` (`wp_id`),
  KEY `status` (`status`),
  KEY `rating` (`rating`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_520_ci;

wp_mailster_tags

Defines all subscriber tags used to segment lists and automate workflows.

CREATE TABLE `wp_mailster_tags` (
  `ID` bigint unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(191) COLLATE utf8mb4_unicode_520_ci NOT NULL,
  `added` int unsigned NOT NULL,
  `updated` int unsigned NOT NULL,
  PRIMARY KEY (`ID`),
  UNIQUE KEY `name` (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_520_ci;

wp_mailster_tags_subscribers

Links tags and subscribers for audience segmentation and automation triggers.

CREATE TABLE `wp_mailster_tags_subscribers` (
  `tag_id` bigint unsigned NOT NULL,
  `subscriber_id` bigint unsigned NOT NULL,
  `added` int unsigned NOT NULL,
  UNIQUE KEY `id` (`tag_id`,`subscriber_id`),
  KEY `tag_id` (`tag_id`),
  KEY `subscriber_id` (`subscriber_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_520_ci;

wp_mailster_workflows

Tracks subscriber progress through Mailster’s automated workflows, including triggers, timestamps, and error states.

CREATE TABLE `wp_mailster_workflows` (
  `ID` bigint unsigned NOT NULL AUTO_INCREMENT,
  `subscriber_id` bigint unsigned DEFAULT NULL,
  `workflow_id` bigint unsigned DEFAULT NULL,
  `trigger` varchar(40) COLLATE utf8mb4_unicode_520_ci NOT NULL,
  `step` varchar(40) COLLATE utf8mb4_unicode_520_ci DEFAULT '',
  `added` int DEFAULT NULL,
  `timestamp` int DEFAULT NULL,
  `finished` int NOT NULL DEFAULT '0',
  `try` int NOT NULL DEFAULT '0',
  `error` varchar(190) COLLATE utf8mb4_unicode_520_ci DEFAULT '',
  `context` longtext COLLATE utf8mb4_unicode_520_ci,
  PRIMARY KEY (`ID`),
  UNIQUE KEY `id` (`subscriber_id`,`workflow_id`,`finished`),
  KEY `subscriber_id` (`subscriber_id`),
  KEY `workflow_id` (`workflow_id`),
  KEY `finished` (`finished`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_520_ci;

wp_mailster_form_fields (legacy)

Defines the individual fields within each Mailster form, including names, positions, and validation messages.

This is no longer needed if you use modern block based forms.

CREATE TABLE `wp_mailster_form_fields` (
  `ID` bigint unsigned NOT NULL AUTO_INCREMENT,
  `form_id` bigint unsigned NOT NULL,
  `field_id` varchar(191) COLLATE utf8mb4_unicode_520_ci NOT NULL,
  `name` longtext COLLATE utf8mb4_unicode_520_ci NOT NULL,
  `error_msg` longtext COLLATE utf8mb4_unicode_520_ci NOT NULL,
  `required` tinyint unsigned NOT NULL,
  `position` int unsigned NOT NULL,
  PRIMARY KEY (`ID`),
  UNIQUE KEY `id` (`form_id`,`field_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_520_ci;

wp_mailster_forms (legacy)

Stores Mailster form configurations, including design, settings, and opt-in behavior.

This is no longer needed if you use modern block based forms.

CREATE TABLE `wp_mailster_forms` (
  `ID` bigint unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(191) COLLATE utf8mb4_unicode_520_ci NOT NULL DEFAULT '',
  `submit` varchar(191) COLLATE utf8mb4_unicode_520_ci NOT NULL DEFAULT '',
  `asterisk` tinyint(1) DEFAULT '1',
  `userschoice` tinyint(1) DEFAULT '0',
  `precheck` tinyint(1) DEFAULT '0',
  `dropdown` tinyint(1) DEFAULT '0',
  `prefill` tinyint(1) DEFAULT '0',
  `inline` tinyint(1) DEFAULT '0',
  `overwrite` tinyint(1) DEFAULT '0',
  `addlists` tinyint(1) DEFAULT '0',
  `style` longtext COLLATE utf8mb4_unicode_520_ci,
  `custom_style` longtext COLLATE utf8mb4_unicode_520_ci,
  `doubleoptin` tinyint(1) DEFAULT '1',
  `subject` longtext COLLATE utf8mb4_unicode_520_ci,
  `headline` longtext COLLATE utf8mb4_unicode_520_ci,
  `content` longtext COLLATE utf8mb4_unicode_520_ci,
  `link` longtext COLLATE utf8mb4_unicode_520_ci,
  `resend` tinyint(1) DEFAULT '0',
  `resend_count` int DEFAULT '2',
  `resend_time` int DEFAULT '48',
  `template` varchar(191) COLLATE utf8mb4_unicode_520_ci NOT NULL DEFAULT '',
  `vcard` tinyint(1) DEFAULT '0',
  `vcard_content` longtext COLLATE utf8mb4_unicode_520_ci,
  `confirmredirect` varchar(2083) COLLATE utf8mb4_unicode_520_ci DEFAULT NULL,
  `redirect` varchar(2083) COLLATE utf8mb4_unicode_520_ci DEFAULT NULL,
  `added` int unsigned DEFAULT NULL,
  `updated` int unsigned DEFAULT NULL,
  PRIMARY KEY (`ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_520_ci;

wp_mailster_forms_lists (legacy)

Links Mailster forms to subscriber lists for automatic list assignment when forms are submitted.

This is no longer needed if you use modern block based forms.

CREATE TABLE `wp_mailster_forms_lists` (
  `form_id` bigint unsigned NOT NULL,
  `list_id` bigint unsigned NOT NULL,
  `added` int unsigned NOT NULL,
  UNIQUE KEY `id` (`form_id`,`list_id`),
  KEY `form_id` (`form_id`),
  KEY `list_id` (`list_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_520_ci;

wp_mailster_forms_tags (legacy)

Associates Mailster forms with specific tags, allowing subscribers to be tagged automatically upon signup.

This is no longer needed if you use modern block based forms.

CREATE TABLE `wp_mailster_forms_tags` (
  `form_id` bigint unsigned NOT NULL,
  `tag_id` bigint unsigned NOT NULL,
  `added` int unsigned NOT NULL,
  UNIQUE KEY `id` (`form_id`,`tag_id`),
  KEY `form_id` (`form_id`),
  KEY `list_id` (`tag_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_520_ci;