Version 2.15.3

May 6, 2024

Fixed

  • Fixed a bug in which contact subscriptions were failing when the referrer URL was longer than 255 characters (#473).

Version 2.15.2

May 2, 2024

Fixed

  • Fixed a bug in which calling getMailingLists() on a contact element could throw an exception (#469).

Version 2.15.1

April 16, 2024

Changed

  • Changed the order of fetched mailing lists to be more deterministic.

Fixed

  • Fixed the syntax used in one-click unsubscribe headers.

Version 2.15.0

April 15, 2024

Added

  • Added one-click unsubscribe headers to sent emails (#467).
  • Added a new one-click unsubscribe controller action.
  • Added an addOneClickUnsubscribeHeaders config setting that determines whether one-click unsubscribe headers should be added to emails, defaulting to true.

Version 2.14.0

April 8, 2024

Added

  • Added the ability to bulk subscribe/unsubscribe an existing contact from a mailing list using a front-end form (#237).
  • Added tracking of the unsubscribe source originating from a front-end request.

Fixed

  • Fixed a bug in which the total recipient count in running sendouts was being incorrectly displayed.
  • Fixed a typo in the All interaction type in English.

Version 2.13.2

April 1, 2024

Fixed

  • Fixed the buttons to create new campaign types and mailing list types appearing when allow admin changes was disabled or the user did not have the necessary permissions.
  • Fixed an error that could appear when clicking on a sent sendout as an impersonated user in Craft Cloud.

Version 2.13.1

March 26, 2024

Fixed

  • Fixed a bug in which newly created contacts were not being indexed for searching if an email address was the only field added (#463).

Version 2.13.0

March 25, 2024

Added

  • Added batching to import queue jobs.
  • Added batching to sync queue jobs.

Changed

  • Campaign now requires Craft CMS 4.4.0 or later.
  • The sendout job batch size is now set to 100 by default, unless it was previously modified by the maxBatchSize config setting.
  • The sendout job batch delay is now set to 0 by default, unless it was previously modified by the batchJobDelay config setting.
  • Renamed the maxBatchSize config setting to sendoutJobBatchSize.
  • Renamed the batchJobDelay config setting to sendoutJobBatchDelay.

Fixed

  • Fixed a bug in which the expected recipients count could fail in sendouts with very large numbers of contacts.
  • Fixed a bug in which sendout actions were unavailable on the sendout index page.

Deprecated

  • Deprecated the maxBatchSize config setting. Use sendoutJobBatchSize instead.
  • Deprecated the batchJobDelay config setting. Use sendoutJobBatchDelay instead.
  • Deprecated the memoryLimit config setting.
  • Deprecated the memoryThreshold config setting.
  • Deprecated the timeLimit config setting.
  • Deprecated the timeThreshold config setting.
  • Deprecated the Campaign::maxPowerLieutenant() method. Use App:maxPowerCaptain() instead.
  • Deprecated the SendoutElement::getPendingRecipients() method. Use Campaign::$plugin->sendouts->getPendingRecipients() instead.
  • Deprecated the SendoutElement::getPendingRecipientCount() method. Use Campaign::$plugin->sendouts->getPendingRecipients() instead.

Version 2.12.2

March 5, 2024

Changed

  • A custom log target is now only registered if a dispatcher exists.

Security

  • Improved escaping of table values in the plugins settings.
  • Removed the ability to use contact and mailingList variables in sendout subjects.

Version 2.12.1

January 8, 2024

Changed

  • The fullName field is now synced from users to contacts, provided it exists on the contact field layout (#452).

Fixed

  • Fixed a bug in which the link on the welcome screen was not clickable in Webkit browsers (#449).

Version 2.12.0

January 3, 2024

Added

  • Added a syncJobPriority config setting that determines what priority to give sync jobs.

Fixed

  • Fixed a bug in which the element count was not appearing for campaigns and mailing lists when there were no results.
  • Fixed a bug that could cause an error when viewing contacts in an incomplete segment (#441).
  • Fixed a bug in which the import job TTR setting was not being respected (#445).
  • Fixed a bug in which the sendout job max retry attempts setting was not being respected.
  • Fixed a bug in which filtering contacts by last activity was not working (#446).

Version 2.11.0

November 28, 2023

Added

  • Added the ability to bulk subscribe and unsubscribe contacts to and from mailing lists in the contact index page (#418).
  • Added the ability to configure a custom queue component via config/app.php to use when running queue jobs.
  • Added an importJobPriority config setting that determines what priority to give import jobs.

Fixed

  • Fixed a bug in which a default contact was not being shown in test contacts on the campaign edit page (#437).
  • Fixed a bug in which saving a contact could throw an exception if the contact record existed but the contact was not active.

Version 2.10.0

November 16, 2023

Added

  • Added a new “validate webhook request” field setting.
  • Added a webhook controller action for MailerSend and signature key verification with a new mailersendWebhookSigningSecret setting (#415).
  • Added validation to the SendGrid webhook controller action with a new sendgridWebhookVerificationKey setting.
  • Added the importJobTtr and syncJobTtr config settings (#432).

Changed

  • Updated the SendGrid webhook event names.
  • Adding or removing test contacts no longer shows an unsaved changes notification (#437).

Version 2.9.4

November 7, 2023

Fixed

  • Fixed a bug in which importing Campaign elements using the Feed Me plugin could throw errors when the queue job was run via the console (#428).
  • Fixed a bug in which importing a user group could throw an exception in some scenarios (#431).

Version 2.9.3

October 31, 2023

Fixed

  • Fixed a bug in which an exception could be thrown on the sendouts screen (#429).

Version 2.9.2

October 26, 2023

Fixed

  • Fixed a bug in which selecting a user group to import was throwing an exception (#425).
  • Fixed a bug in which saving a sendout with emojis in the subject could throw an error when adding the sendout to the queue (#426).

Version 2.9.1

October 17, 2023

Changed

  • Disabled validation when saving elements in specific cases.
  • Unsubscribed, complained and bounced counts are now included when syncing campaign reports.

Version 2.9.0

October 9, 2023

Added

  • Added an info message and a new campaign type button to the campaign index page when no campaign types exist.
  • Added an info message and a new mailing list type button to the mailing list index page when no mailing list types exist.
  • Added the sendoutJobPriority config setting (#422).

Changed

  • Sendouts are now sent to contacts in a deterministic order (#423).

Fixed

  • Fixed the email settings being overwritten when contact settings were saved (#421).
  • Fixed the status filter for campaigns, mailing lists and contacts selectable in sendouts (#419).

Version 2.8.7

September 25, 2023

Fixed

  • Fixed relation field values not saving in Craft 4.5.4 and above (#414).

Version 2.8.6

September 20, 2023

Changed

  • Improvements to the French translation.

Fixed

  • Fixed a bug in which Campaign, Contact and Mailing List element types were not being registered by the Feed Me plugin (#412).

Version 2.8.5

August 21, 2023

Added

  • Added the has a value and is empty options to legacy segment conditions (#407).

Version 2.8.4

August 15, 2023

Fixed

  • Fixed a bug in which clicking an unsubscribe link in singular sendouts was causing an error, since singular sendouts are not sent to mailing lists (#405).

Version 2.8.3

July 17, 2023

Changed

  • Logged messages now include the event that was passed into a webhook when a failure is encountered (#398).

Fixed

  • Fixed a bug that was causing errors when updating search indexes if a sendout’s subject was not set (#397).
  • Fixed a bug that was throwing an exception if the Feed Me package was removed but the plugin was still installed (#400).

Version 2.8.2

June 12, 2023

Fixed

  • Fixed a bug in which Campaign dashboard widgets were throwing exceptions when a date range was set (#396).

Version 2.8.1

June 8, 2023

Fixed

  • Fixed a bug in which Feed Me imports were not working when the queue was being run via console requests (#395).

Version 2.8.0

June 1, 2023

Added

  • Added the ability to import campaigns, contacts and mailing lists using Feed Me (#395).
  • Added logging of sendout batches and when a sendout completes (#385).

Changed

  • Contact field names now include info modals with instructions in the CSV file import field (#392).

Version 2.7.2

May 26, 2023

Changed

  • Errors when syncing users to contacts are now logged.

Fixed

  • Fixed a bug in which custom field values were not being imported when importing contacts via CSV files (#390).

Version 2.7.1

May 24, 2023

Changed

  • Sendout previews now include template variables for the current sendout as well as a dummy contact (#386).
  • Webhooks now return a successful response when receiving the email address of a contact that does not exist (#388).

Version 2.7.0

May 13, 2023

Added

  • Added the ability to import contacts into a mailing list with a status of unsubscribed (#384).

Changed

  • Anchor hashtags are now forced to the end of URLs when appending query string parameters (#383).
  • Changed the user permission for managing contacts to only show a note about the primary site if multiple sites exist.

Version 2.6.2

May 12, 2023

Fixed

  • Fixed a bug in which non-admin users were not allowed to edit contacts even with the correct permissions granted (#378).

Version 2.6.1

April 28, 2023

Added

  • Added the ability to import options fields (multi-select, checkboxes, etc.) into contact fields (#380).

Version 2.6.0

April 4, 2023

Added

  • Added messaging that explains why charts are not appearing in reports.

Changed

  • Campaign reports are no longer synced when the enableAnonymousTracking setting is enabled (#371).
  • Contact activity is hidden when the enableAnonymousTracking setting is enabled (#371).
  • Renamed the “Manage Reports” permission to “View Reports”.
  • Users can now only edit contacts when they have edit permission for the primary site.

Fixed

  • Fixed a bug that was showing reports for the primary site even if the user did not have permission to access that site in the control panel (#373).
  • Fixed a bug that was throwing an exception when all contacts were being sorted by subscription status (#374).

Version 2.5.5

February 24, 2023

Fixed

  • Fixed a bug that was preventing charts from appearing in report pages.

Version 2.5.4

February 23, 2023

Added

  • Added compatibility with LitEmoji v4 which is required by Craft 4.4.0.

Fixed

  • Fixed the check for PHP memory usage in sendout jobs.

Version 2.5.3

February 3, 2023

Changed

  • The front-end subscribe and unsubscribe forms now accept an optional siteId parameter (#363).

Version 2.5.2

January 24, 2023

Fixed

  • Fixed unauthorised access to some settings pages in environments where administrative changes are disallowed.

Version 2.5.1

January 17, 2023

Changed

  • The translatable symbol no longer appears next to element title fields.

Version 2.5.0

January 17, 2023

Added

  • Added the ability to hide the title field in campaigns and have titles generated dynamically (#355).
  • Added the ability to hide the title field in sendouts and have titles generated from the subject (#356).

Changed

  • The sendout title and subject fields are now autopopulated from the campaign title if they are empty (#356).

Version 2.4.2

January 13, 2023

Fixed

  • Fixed a bug in which some stats in the mailing list dashboard widget were not being counted.

Version 2.4.1

January 13, 2023

Fixed

  • Fixed a bug in which the utilities page was throwing an exception (#357).

Version 2.4.0

January 12, 2023

Added

  • Added the “Campaign Stats” dashboard widget (#107).
  • Added the “Mailing List Stats” dashboard widget (#107).
  • Added “Click Rate” as an available column in the campaign element index page.
  • Added “Open Rate” to campaign reports and as an available column in the campaign element index page (#354).
  • Added “Click Rate” as an available column in the campaign element index page.
  • Added the campaign/reports/sync console command that syncs campaign reports.

Fixed

  • Fixed when the view action is available on campaign index pages.

Version 2.3.2

January 2, 2023

Changed

  • Changed the sendout “Pause” button to read “Pause and Edit” (#352).

Fixed

  • Fixed the “View all” link in the contacts tab of the mailing list edit page for Craft 4.3.0 and above.

Version 2.3.1

December 10, 2022

Changed

  • The access utility permission was removed, in favour of Craft's own utility permission.

Fixed

  • Fixed a bug in which an error could be thrown on the imports page if imported mailing lists no longer existed (#349).
  • Fixed a bug in which errors could be thrown on reports pages if elements no longer existed (#349).
  • Fixed a bug in which sendout jobs could fail when run via console requests.

Version 2.3.0

December 5, 2022

Added

  • Added a new ContactElement::getIsSubscribedTo() method.

Changed

  • Rendered HTML templates now explicitly exclude any control panel asset bundles (#347).

Fixed

  • Fixed a bug in which draft contacts were incorrectly being counted as expected recipients.
  • Fixed a bug in which custom fields were not being validated in front-end contact subscribe forms (#348).

Version 2.2.3

November 25, 2022

Changed

  • Contact imports now attempt to JSON decode imported values for relation fields (#345).
  • Search indexes are now updated only after contacts have finished being imported, rather that than once per contact (#345).

Fixed

  • Fixed the updated column in the import index view.

Version 2.2.2

November 22, 2022

Changed

  • Contacts can now be subscribed to and unsubscribed from mailing lists when in a draft state (#343).
  • The email field now outputs a link to a contact if one already exists with the same email address during validation (#343).

Version 2.2.1

November 7, 2022

Changed

  • Improved the performance of report pages (#340).
  • Changed the webhook controller action responses to ensure that correct status codes are sent (❤️@brandonkelly).
  • Test requests from Mailgun now return a success response.

Fixed

  • Fixed a bug in which the Mailgun webhook controller action was not processing requests correctly (#341).
  • Fixed a bug in which the webhook controller actions could fail for singular sendouts.
  • Fixed a bug in which some information was missing from reports.

Version 2.2.0

October 28, 2022

Added

  • Added the ability to use {% html %}, {% css %} and {% js %} tags in campaign templates.

Fixed

  • Fixed a bug in which Yii block comments could be unintentionally left over in rendered campaign templates (#337).

Version 2.1.17

October 28, 2022

Fixed

  • Fixed a bug in which the unsubscribe webhook action could throw an exception (#339).

Version 2.1.16

October 27, 2022

Fixed

  • Fixed all remaining uninitialized typed properties, as a precaution.

Version 2.1.15

October 27, 2022

Fixed

  • Fixed a missed uninitialized typed property that was causing verification links to fail (#338).

Version 2.1.14

October 25, 2022

Fixed

  • Fixed a bug in which typed properties were being accessed before initialization, caused by a breaking change in Yii 2.0.46.

Version 2.1.13

October 25, 2022

Fixed

  • Fixed a bug in which typed properties were being accessed before initialization.

Version 2.1.12

October 21, 2022

Fixed

  • Fixed a bug in which an exception was thrown when viewing recurring sendouts (#336).

Version 2.1.11

October 18, 2022

Fixed

  • Fixed a bug in which inconsistencies could occur in campaign reports and added a migration to sync campaign report data (#232, #285).

Version 2.1.10

October 17, 2022

Fixed

  • Fixed a bug in which saving sendout settings was throwing an exception when one or more of the fields were left blank (#334).

Version 2.1.9

October 12, 2022

Fixed

  • Fixed a bug in which blocked contacts were being considered as pending contacts, meaning that sendouts could hang during sending (#324).

Version 2.1.8

October 10, 2022

Fixed

  • Fixed a caching issue when applying project config changes to campaign types and mailing list types (#332).

Version 2.1.7

September 16, 2022

Fixed

  • Fixed a bug in which the edit action was available for sendouts that were no longer modifiable (#328).
  • Fixed a bug in which an exception was thrown when previewing a sendout in which the campaign no longer exists (#329).

Version 2.1.6

September 16, 2022

Fixed

  • Fixed a bug in which sending test emails of campaigns only worked for campaigns in the default site (#327).

Version 2.1.5

August 28, 2022

Fixed

  • Fixed an error that could be thrown if the set_time_limit() function was undefined (#322).

Version 2.1.4

August 7, 2022

Fixed

  • Fixed a bug that prevented the mailer transport defined in the Campaign email settings from overriding the Craft email settings (#319).

Version 2.1.3

August 2, 2022

Fixed

  • Fixed an error that occurred when creating contacts in the control panel.

Version 2.1.2

July 25, 2022

Fixed

  • Fixed a bug when subscribing users via front-end forms.

Version 2.1.1

July 22, 2022

Added

  • Added a fieldValues parameter to the FormsService::createAndSubscribeContact method.

Version 2.1.0

July 22, 2022

Added

  • Added a createAndSubscribeContact method to FormsService for easier integration from other plugins and modules.

Version 2.0.6

July 18, 2022

Fixed

  • Fixed a bug in which an exception could be thrown if the user agent was unavailable when detecting device type.

Version 2.0.5

July 5, 2022

Changed

  • Tweaked plugin icon to fit better in control panel.

Fixed

  • Fixed subscription status translations.

Version 2.0.4

June 24, 2022

Changed

  • Removed the pruning of deleted fields according to the precedent set in craftcms/cms#11054.

Fixed

  • Fixed an issue with viewing sendouts that have been sent in Craft 4.0.4 and above (#316).

Version 2.0.3

June 21, 2022

Fixed

  • Fixed an issue with the contact index page when database tables contained a prefix.

Version 2.0.2

June 21, 2022

Fixed

  • Fixed the unique email validation when saving contacts.

Version 2.0.1

June 3, 2022

Changed

  • Improved the UI of sendout previews.
  • Made the matomo/device-detector package requirement more flexible.

Version 2.0.0

May 4, 2022

Support for reCAPTCHA version 2 has been removed, use version 3 instead. The subscribeVerificationSuccessTemplate setting has been removed, use the subscribeSuccessTemplate setting instead.

Added

  • Added compatibility with Craft 4.
  • Added a new “Singular” sendout type to the Pro edition, for sending campaigns to individual contacts (#263).
  • Added a condition builder field to the sendout schedule for automated and recurring sendout types (#305).
  • Added the field layout designer to campaign types, mailing list types and contact layouts (#163, #198, #269).
  • Added autosaving drafts to campaigns, contacts, mailing lists, segments and sendouts.
  • Added revisions to campaigns (#301).
  • Added a “Duplicate” action to campaigns, mailing lists, segments and sendouts (#292).
  • Added condition settings to the campaigns, contacts and mailing lists relation fields.
  • Added user group permissions for campaign types and mailing list types.
  • Added the ability to view disabled campaigns using a token URL.
  • Added a contact condition builder to regular segment types, that should be used going forward since legacy and template segment types will be removed in Campaign 3.
  • Added a “Campaign Activity” condition rule for segmenting by contacts who have opened or clicked a link in any or a specific campaign (#244).
  • Added a “Default Notification Contacts” field to sendout settings.
  • Added an “Export to CSV” button to all datatables in reports (#245).
  • Added the enableAnonymousTracking setting, which prevents tracking of opens and clicks (#115).
  • Added the campaign/reports/anonymize console controller that anonymizes all previously collected personal data.
  • Added a list of failed contacts to sendouts that have failures (#311).
  • Added a link to view all contacts from the mailing list edit page (#282).

Changed

  • All forms controller actions now return a 400 HTTP status for JSON responses when unsuccessful.
  • Improved the UI and security of links to external sites.
  • Exports now include all contacts in the selected mailing lists, as well as columns for mailing list, subscription status and subscribed date (#302).
  • Verification emails are now sent in HTML and plaintext format (#303).
  • Renamed regular segment types to legacy segment types, which are being maintained because they provide functionality that the contact condition builder does not yet provide, but which will be removed in Campaign 3.
  • Renamed the maxSendFailsAllowed config setting to maxSendFailuresAllowed.
  • Replaced the Log To File helper package with a custom Monolog log target.
  • Replaced all instances of AdminTable with VueAdminTable.
  • Removed the SettingsService class. Use the SettingsHelper class instead.

Removed

  • Removed support for reCAPTCHA version 2, leaving support for version 3 only.
  • Removed the subscribeVerificationSuccessTemplate setting from the mailing list type settings page. Use the subscribeSuccessTemplate setting instead.