open_rate, click_rate, bounce_rate, unsubscribe_rate of the mailcoach_campaigs table: v3 of mailcoach now assumes that the two last numbers are the digits. For campaigns that were sent using v2 you should add two zeroes, so 31 should become 3100
webhook_calls need the processed_at column filled in, you can set this using update webhook_calls set processed_at = NOW() where processed_at is null;
The middleware option now contains an array with web and api. This is the new default.
If you don't have a middleware key in your config file, you don't need to do anything as the default will be used. If you do have a middleware key, update it accordingly.
* These middleware will be assigned to every Mailcoach routes, giving you the chance
* to add your own middleware to this stack or override any of the existing middleware.
*/'middleware' => [
'web' => [
'api' => [
We've added a new command for cleanup of processed feedback in the webhook_calls table, make sure to add this to your \App\Console\Kernel schedule.
Be aware that email providers such as SES are a 'deliver at least once' service. Duplicate feedback delivery could be seen weeks after the event. Mailcoach prevents duplicates from SES by checking for old matching feedback. As such, cleaning up historical feedback webhooks could lead to duplicate feedbacks items being processed multiple times. The end result is inflated open and click metrics.