payload-plugin-newsletter 0.23.0 → 0.25.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +23 -0
- package/dist/client.d.ts +1 -0
- package/dist/collections.cjs +36 -1
- package/dist/collections.cjs.map +1 -1
- package/dist/collections.js +36 -1
- package/dist/collections.js.map +1 -1
- package/dist/server.d.ts +1 -0
- package/dist/server.js +38 -1
- package/dist/types.d.cts +1 -0
- package/dist/types.d.ts +1 -0
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,26 @@
|
|
|
1
|
+
## [0.25.0] - 2025-08-08
|
|
2
|
+
|
|
3
|
+
### Changed
|
|
4
|
+
- **Improved welcome email behavior**: Plugin now properly handles all subscription scenarios
|
|
5
|
+
- New signups via frontend: Send welcome email ✓
|
|
6
|
+
- Resubscriptions via frontend: Send welcome email ✓
|
|
7
|
+
- Webhook imports (new subscribers): No welcome email ✓
|
|
8
|
+
- Webhook reactivations: No welcome email ✓
|
|
9
|
+
- **Resubscription support**: Users who resubscribe through the frontend now receive a "Welcome back" email
|
|
10
|
+
- **Better UX**: Welcome emails now check the `importedFromProvider` flag by default
|
|
11
|
+
|
|
12
|
+
### Fixed
|
|
13
|
+
- Fixed missing welcome emails for user-initiated resubscriptions
|
|
14
|
+
- Fixed unwanted welcome emails for webhook-imported subscribers
|
|
15
|
+
|
|
16
|
+
## [0.24.0] - 2025-08-08
|
|
17
|
+
|
|
18
|
+
### Added
|
|
19
|
+
- **Skip welcome email for webhook imports**: Added `importedFromProvider` field to subscribers
|
|
20
|
+
- Set to `true` for all subscribers created via webhook events
|
|
21
|
+
- Allows projects to skip welcome emails for bulk imports from Broadcast
|
|
22
|
+
- Field is read-only in admin UI to prevent accidental changes
|
|
23
|
+
|
|
1
24
|
## [0.23.0] - 2025-08-07
|
|
2
25
|
|
|
3
26
|
### Added
|
package/dist/client.d.ts
CHANGED
package/dist/collections.cjs
CHANGED
|
@@ -2967,6 +2967,17 @@ var createSubscribersCollection = (pluginConfig) => {
|
|
|
2967
2967
|
admin: {
|
|
2968
2968
|
description: "Where the subscriber signed up from"
|
|
2969
2969
|
}
|
|
2970
|
+
},
|
|
2971
|
+
// Import tracking
|
|
2972
|
+
{
|
|
2973
|
+
name: "importedFromProvider",
|
|
2974
|
+
type: "checkbox",
|
|
2975
|
+
defaultValue: false,
|
|
2976
|
+
admin: {
|
|
2977
|
+
description: "Indicates this subscriber was imported from an external provider via webhook",
|
|
2978
|
+
position: "sidebar",
|
|
2979
|
+
readOnly: true
|
|
2980
|
+
}
|
|
2970
2981
|
}
|
|
2971
2982
|
];
|
|
2972
2983
|
if (pluginConfig.features?.utmTracking?.enabled) {
|
|
@@ -3077,7 +3088,7 @@ var createSubscribersCollection = (pluginConfig) => {
|
|
|
3077
3088
|
} else {
|
|
3078
3089
|
console.warn("[Newsletter Plugin] No email service configured for subscriber creation");
|
|
3079
3090
|
}
|
|
3080
|
-
if (doc.subscriptionStatus === "active" && emailService) {
|
|
3091
|
+
if (doc.subscriptionStatus === "active" && emailService && !doc.importedFromProvider) {
|
|
3081
3092
|
try {
|
|
3082
3093
|
const settings = await req.payload.findGlobal({
|
|
3083
3094
|
slug: pluginConfig.settingsSlug || "newsletter-settings"
|
|
@@ -3123,6 +3134,30 @@ var createSubscribersCollection = (pluginConfig) => {
|
|
|
3123
3134
|
console.warn("[Newsletter Plugin] No email service configured");
|
|
3124
3135
|
}
|
|
3125
3136
|
}
|
|
3137
|
+
if (doc.subscriptionStatus === "active" && previousDoc.subscriptionStatus === "unsubscribed" && !doc.importedFromProvider && emailService) {
|
|
3138
|
+
try {
|
|
3139
|
+
const settings = await req.payload.findGlobal({
|
|
3140
|
+
slug: pluginConfig.settingsSlug || "newsletter-settings"
|
|
3141
|
+
});
|
|
3142
|
+
const serverURL = req.payload.config.serverURL || process.env.PAYLOAD_PUBLIC_SERVER_URL || "";
|
|
3143
|
+
const html = await renderEmail("welcome", {
|
|
3144
|
+
email: doc.email,
|
|
3145
|
+
siteName: settings?.brandSettings?.siteName || "Newsletter",
|
|
3146
|
+
preferencesUrl: `${serverURL}/account/preferences`
|
|
3147
|
+
}, pluginConfig);
|
|
3148
|
+
await emailService.send({
|
|
3149
|
+
to: doc.email,
|
|
3150
|
+
subject: settings?.brandSettings?.siteName ? `Welcome back to ${settings.brandSettings.siteName}!` : "Welcome back!",
|
|
3151
|
+
html
|
|
3152
|
+
});
|
|
3153
|
+
console.warn(`Welcome email sent to resubscribed user: ${doc.email}`);
|
|
3154
|
+
} catch (error) {
|
|
3155
|
+
console.error("Failed to send resubscription welcome email:", error);
|
|
3156
|
+
}
|
|
3157
|
+
if (pluginConfig.hooks?.afterSubscribe) {
|
|
3158
|
+
await pluginConfig.hooks.afterSubscribe({ doc, req });
|
|
3159
|
+
}
|
|
3160
|
+
}
|
|
3126
3161
|
if (doc.subscriptionStatus === "unsubscribed" && previousDoc.subscriptionStatus !== "unsubscribed") {
|
|
3127
3162
|
doc.unsubscribedAt = (/* @__PURE__ */ new Date()).toISOString();
|
|
3128
3163
|
if (pluginConfig.hooks?.afterUnsubscribe) {
|