@djangocfg/ext-newsletter
Newsletter subscription and campaign management extension for DjangoCFG.
Part of DjangoCFG — modern Django framework for production-ready SaaS applications.
Features
- 📧 Email Campaigns - Create, manage, and send email campaigns
- 📝 Subscription Management - Handle newsletter subscriptions
- 📊 Campaign Analytics - Track opens, clicks, and conversions
- 🎯 Audience Segmentation - Target specific subscriber groups
- 📋 List Management - Organize subscribers into lists
- 🚀 Automated Sending - Schedule and automate campaign delivery
Install
pnpm add @djangocfg/ext-newsletter
Usage
Provider Setup
import { NewsletterProvider } from '@djangocfg/ext-newsletter/hooks';
export default function RootLayout({ children }) {
return (
<NewsletterProvider>
{children}
</NewsletterProvider>
);
}
Managing Campaigns
import { useNewsletterContext } from '@djangocfg/ext-newsletter/hooks';
function CampaignsPage() {
const {
campaigns,
isLoadingCampaigns,
createCampaign,
sendCampaign,
} = useNewsletterContext();
const handleCreate = async () => {
await createCampaign({
subject: 'Monthly Newsletter',
content: '<h1>Hello!</h1>',
scheduled_at: new Date().toISOString(),
});
};
return (
<div>
<button onClick={handleCreate}>Create Campaign</button>
{campaigns.map(campaign => (
<div key={campaign.id}>
<h3>{campaign.subject}</h3>
<button onClick={() => sendCampaign(campaign.id)}>
Send Now
</button>
</div>
))}
</div>
);
}
Newsletter Subscription Form
import { Hero } from '@djangocfg/ext-newsletter';
import { useNewsletterContext } from '@djangocfg/ext-newsletter/hooks';
function HomePage() {
const { subscribe } = useNewsletterContext();
return (
<Hero
title="Subscribe to our newsletter"
description="Get weekly updates delivered to your inbox"
showNewsletter={true}
onNewsletterSubmit={async (email) => {
await subscribe({ email });
}}
/>
);
}
Components
Hero
Landing page hero section with integrated newsletter subscription form.
<Hero
title="Welcome to our platform"
description="Join thousands of subscribers"
primaryAction={{
label: 'Get Started',
href: '/signup',
}}
secondaryAction={{
label: 'Learn More',
href: '/about',
}}
showNewsletter={true}
onNewsletterSubmit={(email) => subscribe({ email })}
/>
API Reference
Context Methods
campaigns - List of all campaigns
createCampaign(data) - Create new campaign
updateCampaign(id, data) - Update campaign
deleteCampaign(id) - Delete campaign
sendCampaign(id) - Send campaign immediately
subscribe(data) - Subscribe email to newsletter
unsubscribe(data) - Unsubscribe email from newsletter
subscriptions - List of all subscriptions
License
MIT
Links