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/dist/server.d.ts CHANGED
@@ -493,6 +493,7 @@ interface Subscriber {
493
493
  [key: string]: boolean | undefined;
494
494
  };
495
495
  source?: string;
496
+ importedFromProvider?: boolean;
496
497
  utmParameters?: {
497
498
  source?: string;
498
499
  medium?: string;
package/dist/server.js CHANGED
@@ -454,6 +454,17 @@ var createSubscribersCollection = (pluginConfig) => {
454
454
  admin: {
455
455
  description: "Where the subscriber signed up from"
456
456
  }
457
+ },
458
+ // Import tracking
459
+ {
460
+ name: "importedFromProvider",
461
+ type: "checkbox",
462
+ defaultValue: false,
463
+ admin: {
464
+ description: "Indicates this subscriber was imported from an external provider via webhook",
465
+ position: "sidebar",
466
+ readOnly: true
467
+ }
457
468
  }
458
469
  ];
459
470
  if (pluginConfig.features?.utmTracking?.enabled) {
@@ -564,7 +575,7 @@ var createSubscribersCollection = (pluginConfig) => {
564
575
  } else {
565
576
  console.warn("[Newsletter Plugin] No email service configured for subscriber creation");
566
577
  }
567
- if (doc.subscriptionStatus === "active" && emailService) {
578
+ if (doc.subscriptionStatus === "active" && emailService && !doc.importedFromProvider) {
568
579
  try {
569
580
  const settings = await req.payload.findGlobal({
570
581
  slug: pluginConfig.settingsSlug || "newsletter-settings"
@@ -610,6 +621,30 @@ var createSubscribersCollection = (pluginConfig) => {
610
621
  console.warn("[Newsletter Plugin] No email service configured");
611
622
  }
612
623
  }
624
+ if (doc.subscriptionStatus === "active" && previousDoc.subscriptionStatus === "unsubscribed" && !doc.importedFromProvider && emailService) {
625
+ try {
626
+ const settings = await req.payload.findGlobal({
627
+ slug: pluginConfig.settingsSlug || "newsletter-settings"
628
+ });
629
+ const serverURL = req.payload.config.serverURL || process.env.PAYLOAD_PUBLIC_SERVER_URL || "";
630
+ const html = await renderEmail("welcome", {
631
+ email: doc.email,
632
+ siteName: settings?.brandSettings?.siteName || "Newsletter",
633
+ preferencesUrl: `${serverURL}/account/preferences`
634
+ }, pluginConfig);
635
+ await emailService.send({
636
+ to: doc.email,
637
+ subject: settings?.brandSettings?.siteName ? `Welcome back to ${settings.brandSettings.siteName}!` : "Welcome back!",
638
+ html
639
+ });
640
+ console.warn(`Welcome email sent to resubscribed user: ${doc.email}`);
641
+ } catch (error) {
642
+ console.error("Failed to send resubscription welcome email:", error);
643
+ }
644
+ if (pluginConfig.hooks?.afterSubscribe) {
645
+ await pluginConfig.hooks.afterSubscribe({ doc, req });
646
+ }
647
+ }
613
648
  if (doc.subscriptionStatus === "unsubscribed" && previousDoc.subscriptionStatus !== "unsubscribed") {
614
649
  doc.unsubscribedAt = (/* @__PURE__ */ new Date()).toISOString();
615
650
  if (pluginConfig.hooks?.afterUnsubscribe) {
@@ -2527,6 +2562,7 @@ async function handleSubscriberSubscribed(event, payload, subscribersSlug) {
2527
2562
  subscriptionStatus: "active",
2528
2563
  subscribedAt: data.subscribed_at,
2529
2564
  externalId: data.id,
2565
+ importedFromProvider: true,
2530
2566
  attributes: data.attributes || {}
2531
2567
  }
2532
2568
  });
@@ -2605,6 +2641,7 @@ async function handleSubscriberCreated(event, payload, subscribersSlug) {
2605
2641
  // New subscribers start as pending
2606
2642
  externalId: data.id,
2607
2643
  source: data.source,
2644
+ importedFromProvider: true,
2608
2645
  attributes: data.attributes || {}
2609
2646
  }
2610
2647
  });
package/dist/types.d.cts CHANGED
@@ -838,6 +838,7 @@ interface Subscriber {
838
838
  [key: string]: boolean | undefined;
839
839
  };
840
840
  source?: string;
841
+ importedFromProvider?: boolean;
841
842
  utmParameters?: {
842
843
  source?: string;
843
844
  medium?: string;
package/dist/types.d.ts CHANGED
@@ -838,6 +838,7 @@ interface Subscriber {
838
838
  [key: string]: boolean | undefined;
839
839
  };
840
840
  source?: string;
841
+ importedFromProvider?: boolean;
841
842
  utmParameters?: {
842
843
  source?: string;
843
844
  medium?: string;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "payload-plugin-newsletter",
3
- "version": "0.23.0",
3
+ "version": "0.25.0",
4
4
  "description": "Complete newsletter management plugin for Payload CMS with subscriber management, magic link authentication, and email service integration",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",