+
+
+
+
+ {featuresOpen && (
+ setFeaturesOpen(true)}
+ onMouseLeave={() => setFeaturesOpen(false)}
+ className={
+ 'absolute left-0 top-full z-50 mt-2 w-80 rounded-lg border border-neutral-200 bg-white p-2 shadow-lg'
+ }
+ >
+ {featuresMenu.map(feature => (
+
+
+ {feature.icon}
+
+
+
{feature.title}
+
{feature.description}
+
+
+ ))}
+
+ )}
+
+
+
+
+
+ Features
+
+ {featuresMenu.map(feature => (
+
setMobileOpen(false)}
+ className="flex items-start gap-3 rounded-lg px-4 py-3 transition hover:bg-neutral-100"
+ >
+
+ {feature.icon}
+
+
+
{feature.title}
+
{feature.description}
+
+
+ ))}
+
+
setMobileOpen(false)}
diff --git a/apps/landing/src/pages/features/email-editor.tsx b/apps/landing/src/pages/features/email-editor.tsx
new file mode 100644
index 0000000..b090296
--- /dev/null
+++ b/apps/landing/src/pages/features/email-editor.tsx
@@ -0,0 +1,358 @@
+import {Footer, Navbar} from '../../components';
+import {motion} from 'framer-motion';
+import {DASHBOARD_URI, WIKI_URI} from '../../lib/constants';
+import React from 'react';
+import Link from 'next/link';
+import {ArrowRight, Code2, Eye, Mail, Palette, Sparkles, Type, Zap} from 'lucide-react';
+import Head from 'next/head';
+
+const features = [
+ {
+ icon:
,
+ title: 'Visual WYSIWYG Editor',
+ description:
+ 'Rich text editing with formatting toolbar. Bold, italic, headings, lists, links, images, and tables. No code required.',
+ },
+ {
+ icon:
,
+ title: 'Full HTML Editor',
+ description:
+ 'Syntax highlighting, auto-completion, and bracket matching. Write custom HTML when you need complete control.',
+ },
+ {
+ icon:
,
+ title: 'Smart Mode Switching',
+ description:
+ 'Automatically detects complex HTML and switches to code mode. Warns you before changes that would lose custom formatting.',
+ },
+ {
+ icon:
,
+ title: 'Powerful Variables',
+ description:
+ 'Autocomplete with {{variable}} syntax. Supports fallbacks, nested properties, and custom contact fields.',
+ },
+ {
+ icon:
,
+ title: 'Live Preview',
+ description: 'Preview with real contact data. Test on desktop, tablet, and mobile views before sending.',
+ },
+ {
+ icon:
,
+ title: 'Email-Safe HTML',
+ description: 'Automatic CSS inlining and email-client-friendly code generation. Yes, even in Outlook.',
+ },
+];
+
+const useCases = [
+ {
+ icon:
,
+ title: 'For Developers',
+ description:
+ 'Full HTML control when you need it. Powerful variable system with autocomplete and fallbacks. Use templates in API calls, workflows, and campaigns.',
+ example: 'Password resets → API-triggered alerts → Webhook notifications → Those cat meme attachments',
+ },
+ {
+ icon:
,
+ title: 'For Marketers',
+ description:
+ 'Visual editor for quick changes. Live preview with real customer data. Create professional emails without waiting for developers.',
+ example: 'Product announcements → Newsletter campaigns → Promotional emails → Customer onboarding',
+ },
+ {
+ icon:
,
+ title: 'For Teams',
+ description:
+ 'One tool for everyone. Developers can code, marketers can design, everyone can preview. Reusable templates across campaigns and workflows.',
+ example: 'Launch announcements → Feature updates → User engagement → Lifecycle emails',
+ },
+];
+
+/**
+ *
+ */
+export default function EmailEditorFeature() {
+ return (
+ <>
+
+
Email Editor - Create Beautiful Emails Without Fighting Your Tools | Plunk
+
+
+
+
+
+
+
+
+ {/* Hero Section */}
+
+ {/* Subtle background grid */}
+
+
+
+
+
+ Email Editor & Templates
+
+
+
+ The Email Editor That
+
+ Speaks Both Languages
+
+
+ Switch seamlessly between visual and code editing. Preview with real customer data. Create templates that
+ work everywhere.
+
+
+
+
+
+ Try the editor free
+
+
+
+
+ View documentation
+
+
+
+
+
+ {/* Features Grid */}
+
+
+
+ Two editors, one experience
+
+ Visual editing for speed, code editing for control
+
+
+
+ {features.map((feature, index) => (
+
+
+ {feature.icon}
+
+ {feature.title}
+ {feature.description}
+
+ ))}
+
+
+
+ {/* How It Works */}
+
+
+
+ From first draft to send
+
+ Create, preview, and deploy templates in minutes
+
+
+
+
+
+
+ 1
+
+ Create your template
+
+ Use the visual editor for quick formatting or write custom HTML. Add variables with autocomplete.
+
+
+
+
+
+ 2
+
+ Preview with real data
+
+ Select any contact and see exactly what they'll receive. Test on desktop, tablet, and mobile. No
+ surprises.
+
+
+
+
+
+ 3
+
+ Use everywhere
+
+ Use your template in campaigns, workflows, and API calls. One template, unlimited uses.
+
+
+
+
+
+
+ {/* Use Cases */}
+
+
+ Built for every team
+ Whether you're a developer, marketer, or founder
+
+
+
+ {useCases.map((useCase, index) => (
+
+
+
+ {useCase.icon}
+
+
+
{useCase.title}
+
{useCase.description}
+
+
+
+
+ ))}
+
+
+
+ {/* CTA Section */}
+
+
+
+ Ready to create better emails?
+
+
+ Start building beautiful, personalized emails today. No credit card required.
+
+
+
+ Get started for free
+
+
+ View pricing
+
+
+
+
+
+
+
+ >
+ );
+}
diff --git a/apps/landing/src/pages/features/inbound-email.tsx b/apps/landing/src/pages/features/inbound-email.tsx
new file mode 100644
index 0000000..ca6b86a
--- /dev/null
+++ b/apps/landing/src/pages/features/inbound-email.tsx
@@ -0,0 +1,440 @@
+import {Footer, Navbar} from '../../components';
+import {motion} from 'framer-motion';
+import {DASHBOARD_URI, WIKI_URI} from '../../lib/constants';
+import React from 'react';
+import Link from 'next/link';
+import {ArrowRight, Bell, Database, Inbox, Mail, Shield, Zap} from 'lucide-react';
+import Head from 'next/head';
+
+const features = [
+ {
+ icon:
,
+ title: 'Automatic Contact Capture',
+ description: 'Every sender is automatically added to your contact database with no manual data entry required.',
+ },
+ {
+ icon:
,
+ title: 'Workflow Automation',
+ description: 'Trigger automated workflows when emails are received to create sophisticated two-way communication.',
+ },
+ {
+ icon:
,
+ title: 'Built-in Security',
+ description:
+ 'Spam, virus, SPF, DKIM, and DMARC filtering keeps your inbox clean. The spam stays out, the good stuff gets in.',
+ },
+ {
+ icon:
,
+ title: 'Webhook Notifications',
+ description: 'Get instant notifications with rich metadata whenever an email arrives at your domain.',
+ },
+ {
+ icon:
,
+ title: 'Simple DNS Setup',
+ description: 'Add one MX record to your domain and start receiving emails immediately. No PhD required.',
+ },
+ {
+ icon:
,
+ title: 'Real-Time Processing',
+ description: 'Emails are processed instantly and can trigger workflows or webhooks in real-time.',
+ },
+];
+
+const useCases = [
+ {
+ icon:
,
+ title: 'Support Ticket Creation',
+ description:
+ 'Automatically create support tickets when customers email support@yourdomain.com. Send auto-replies and route to your help desk system via webhooks. Your support team will thank you.',
+ benefits: ['Instant acknowledgment', 'Automatic ticket creation', 'No emails missed'],
+ },
+ {
+ icon:
,
+ title: 'Lead Capture from Email',
+ description:
+ 'Receive emails at info@yourdomain.com and automatically add senders to your CRM. Trigger nurture workflows based on when they reached out.',
+ benefits: ['Zero-friction lead capture', 'Auto-segmentation', 'Instant follow-up'],
+ },
+ {
+ icon:
,
+ title: 'Two-Way Conversations',
+ description:
+ 'Let customers reply to your campaign emails and automatically trigger engagement workflows. Tag contacts as "engaged" when they respond.',
+ benefits: ['Build conversation history', 'Track engagement', 'Personalized responses'],
+ },
+];
+
+/**
+ *
+ */
+export default function InboundEmailFeature() {
+ return (
+ <>
+
+
Inbound Email - Receive & Process Incoming Emails | Plunk
+
+
+
+
+
+
+
+
+ {/* Hero Section */}
+
+ {/* Subtle background grid */}
+
+
+
+
+
+ Inbound Email
+
+
+
+ Turn Incoming Emails
+
+ into Actions
+
+
+ Receive emails at your custom domain and automatically trigger workflows, capture leads, or create support
+ tickets. Two-way email communication made simple.
+
+
+
+
+
+ Start receiving emails
+
+
+
+
+ View documentation
+
+
+
+
+
+ {/* Features Grid */}
+
+
+
+ Complete inbound email solution
+
+
+ Everything you need to receive and process incoming emails
+
+
+
+
+ {features.map((feature, index) => (
+
+
+ {feature.icon}
+
+ {feature.title}
+ {feature.description}
+
+ ))}
+
+
+
+ {/* How It Works */}
+
+
+ Set up in minutes
+ Get started with inbound email in three simple steps
+
+
+
+
+
+
+ 1
+
+ Verify your domain
+
+ Add and verify your custom domain in Plunk by configuring DKIM and SPF records in your DNS settings.
+
+
+
+
+
+ 2
+
+ Add MX record
+
+ Add one MX record to your DNS to route incoming emails to Plunk. Copy the record from your dashboard.
+
+
+
+
+
+ 3
+
+ Start receiving
+
+ Emails sent to any address at your domain are automatically received and can trigger workflows or
+ webhooks.
+
+
+
+
+
+
+ {/* Use Cases */}
+
+
+ Powerful use cases
+
+ From support to sales, inbound email unlocks new automation possibilities
+
+
+
+
+ {useCases.map((useCase, index) => (
+
+
+
+ {useCase.icon}
+
+
+
{useCase.title}
+
{useCase.description}
+
+ {useCase.benefits.map(benefit => (
+
+ {benefit}
+
+ ))}
+
+
+
+
+ ))}
+
+
+
+ {/* Technical Details */}
+
+
+
+
+ What happens when an email arrives?
+
+
+
+
+ 1
+
+
+
Email arrives at your domain
+
+ Your MX record routes the email to Plunk for processing
+
+
+
+
+
+ 2
+
+
+
Security checks pass
+
+ Automatic validation of spam, virus, SPF, DKIM, and DMARC
+
+
+
+
+
+ 3
+
+
+
Contact is created or updated
+
+ The sender is automatically added to your contact database
+
+
+
+
+
+ 4
+
+
+
Workflows trigger automatically
+
+ Configured workflows start running based on the incoming email
+
+
+
+
+
+
+
+
+ {/* CTA Section */}
+
+
+
+ Ready to receive emails?
+
+
+ Add inbound email to your verified domain in minutes. No credit card required.
+
+
+
+ Get started for free
+
+
+ View pricing
+
+
+
+
+
+
+
+ >
+ );
+}
diff --git a/apps/landing/src/pages/features/segments.tsx b/apps/landing/src/pages/features/segments.tsx
new file mode 100644
index 0000000..20d685a
--- /dev/null
+++ b/apps/landing/src/pages/features/segments.tsx
@@ -0,0 +1,410 @@
+import {Footer, Navbar} from '../../components';
+import {motion} from 'framer-motion';
+import {DASHBOARD_URI, WIKI_URI} from '../../lib/constants';
+import React from 'react';
+import Link from 'next/link';
+import {ArrowRight, Filter, GitBranch, Mail, Target, TrendingUp, Users} from 'lucide-react';
+import Head from 'next/head';
+
+const features = [
+ {
+ icon:
,
+ title: 'Dynamic Filtering',
+ description:
+ 'Create segments based on contact data, custom fields, email activity, and events with powerful AND/OR logic.',
+ },
+ {
+ icon:
,
+ title: 'Real-Time Updates',
+ description: 'Dynamic segments automatically update as contact data changes, always keeping your audience current.',
+ },
+ {
+ icon:
,
+ title: 'Workflow Integration',
+ description:
+ 'Trigger workflows when contacts enter or exit segments, or use segment conditions in workflow branching.',
+ },
+ {
+ icon:
,
+ title: 'Campaign Targeting',
+ description:
+ 'Send targeted campaigns to specific segments instead of your entire contact list. Less noise, more signal.',
+ },
+ {
+ icon:
,
+ title: 'Static Segments',
+ description: 'Manually curate contact lists for special groups like beta testers or VIP customers.',
+ },
+ {
+ icon:
,
+ title: 'Behavior-Based',
+ description: 'Segment by email engagement - who opened, clicked, bounced, or never received your emails.',
+ },
+];
+
+const filterExamples = [
+ {
+ title: 'Active Users',
+ description: 'Target users who signed up recently and are actively engaging',
+ filters: ['Created within 30 days', 'Opened email within 7 days', 'Custom field: plan equals "pro"'],
+ },
+ {
+ title: 'Re-engagement Needed',
+ description: 'Find inactive users who need a nudge to come back. Sometimes they just need a reminder.',
+ filters: ['Last activity older than 60 days', 'Email sent but not opened', 'Subscribed equals true'],
+ },
+ {
+ title: 'High-Value Customers',
+ description: 'Identify your most valuable customers for special treatment',
+ filters: ['Custom field: totalSpent greater than 1000', 'Triggered event: purchase', 'Plan equals "enterprise"'],
+ },
+];
+
+const useCases = [
+ {
+ icon:
,
+ title: 'Targeted Campaigns',
+ description:
+ 'Send newsletters and announcements to specific audience segments instead of blasting everyone. Increase open rates by sending relevant content to the right people. Your unsubscribe rate will thank you.',
+ },
+ {
+ icon:
,
+ title: 'Behavior-Based Workflows',
+ description:
+ 'Trigger workflows when contacts enter segments like "VIP Customers" or "Churning Users". Create personalized automations based on segment membership.',
+ },
+ {
+ icon:
,
+ title: 'A/B Testing',
+ description:
+ 'Create segments for test groups and control groups. Send different campaigns to each segment and measure results.',
+ },
+];
+
+/**
+ *
+ */
+export default function SegmentsFeature() {
+ return (
+ <>
+
+
Audience Segmentation - Target the Right Contacts | Plunk
+
+
+
+
+
+
+
+
+ {/* Hero Section */}
+
+ {/* Subtle background grid */}
+
+
+
+
+
+ Audience Segmentation
+
+
+
+ Target the Right
+
+ Audience Every Time
+
+
+ Organize contacts into dynamic segments based on behavior, attributes, and engagement. Send targeted
+ campaigns and trigger personalized workflows.
+
+
+
+
+
+ Start segmenting
+
+
+
+
+ View documentation
+
+
+
+
+
+ {/* Features Grid */}
+
+
+
+ Powerful segmentation tools
+
+ Everything you need to organize and target your audience
+
+
+
+ {features.map((feature, index) => (
+
+
+ {feature.icon}
+
+ {feature.title}
+ {feature.description}
+
+ ))}
+
+
+
+ {/* Filter Examples */}
+
+
+
+ Flexible filtering options
+
+ Build complex segments with nested AND/OR logic
+
+
+
+ {filterExamples.map((example, index) => (
+
+
+
+
{example.title}
+
{example.description}
+
+
+
+ {example.filters.map((filter, filterIndex) => (
+
+
+ {filter}
+
+ ))}
+
+
+ ))}
+
+
+
+ {/* Types of Segments */}
+
+
+ Two types of segments
+ Choose between dynamic filtering or manual curation
+
+
+
+
+
+
+
+
+ Dynamic Segments
+
+ Automatically update based on filter conditions. As contact data changes, segment membership updates
+ in real-time.
+
+
+
+
+
Filter-based membership
+
+
+
+
+
Optional entry/exit tracking
+
+
+
+
+
+
+
+
+ Static Segments
+
+ Manually curate your segment by adding specific contacts. Membership stays fixed until you change it.
+
+
+
+
+
Manual contact selection
+
+
+
+
+
Perfect for VIP lists
+
+
+
+
+
+
+
+ {/* Use Cases */}
+
+
+
+ Use segments everywhere
+
+ From targeted campaigns to automated workflows
+
+
+
+ {useCases.map((useCase, index) => (
+
+
+
+ {useCase.icon}
+
+
+
{useCase.title}
+
{useCase.description}
+
+
+
+ ))}
+
+
+
+ {/* CTA Section */}
+
+
+
+ Start segmenting your audience
+
+
+ Create targeted campaigns and personalized workflows with powerful segmentation. No credit card required.
+
+
+
+ Get started for free
+
+
+ View pricing
+
+
+
+
+
+
+
+ >
+ );
+}
diff --git a/apps/landing/src/pages/features/smtp.tsx b/apps/landing/src/pages/features/smtp.tsx
new file mode 100644
index 0000000..bc7a52d
--- /dev/null
+++ b/apps/landing/src/pages/features/smtp.tsx
@@ -0,0 +1,385 @@
+import {Footer, Navbar} from '../../components';
+import {motion} from 'framer-motion';
+import {DASHBOARD_URI, WIKI_URI} from '../../lib/constants';
+import React from 'react';
+import Link from 'next/link';
+import {ArrowRight, Code2, Lock, Mail, Server, Settings, Shield} from 'lucide-react';
+import Head from 'next/head';
+
+const features = [
+ {
+ icon:
,
+ title: 'Simple Configuration',
+ description: 'Quick setup with your project credentials. Works with any email client or application.',
+ },
+ {
+ icon:
,
+ title: 'Secure Connections',
+ description: 'TLS/SSL encryption on ports 465 and 587. Your emails are always transmitted securely.',
+ },
+ {
+ icon:
,
+ title: 'Universal Compatibility',
+ description:
+ 'Works with Outlook, Thunderbird, Apple Mail, or any SMTP-compatible application. Even that ancient email client from 2005.',
+ },
+ {
+ icon:
,
+ title: 'Domain Validation',
+ description: 'Automatic verification that your sender domain is verified before accepting emails.',
+ },
+ {
+ icon:
,
+ title: 'Full Feature Support',
+ description:
+ 'Attachments, custom headers, HTML emails, and multiple recipients. Send those cat memes with confidence.',
+ },
+ {
+ icon:
,
+ title: 'Same Infrastructure',
+ description: 'SMTP emails use the same reliable delivery infrastructure as API emails with full tracking.',
+ },
+];
+
+const comparisonData = [
+ {feature: 'Protocol', traditional: 'SMTP', plunkSMTP: 'SMTP', plunkAPI: 'HTTP/REST'},
+ {feature: 'Setup Complexity', traditional: 'Medium', plunkSMTP: 'Easy', plunkAPI: 'Easy'},
+ {feature: 'Tracking & Analytics', traditional: '✗', plunkSMTP: '✓', plunkAPI: '✓'},
+ {feature: 'Works with Email Clients', traditional: '✓', plunkSMTP: '✓', plunkAPI: '✗'},
+ {feature: 'Domain Verification', traditional: 'Manual', plunkSMTP: 'Automatic', plunkAPI: 'Automatic'},
+ {feature: 'Attachments', traditional: '✓', plunkSMTP: '✓', plunkAPI: '✓'},
+ {feature: 'Template Support', traditional: '✗', plunkSMTP: '✗', plunkAPI: '✓'},
+ {feature: 'Workflow Automation', traditional: '✗', plunkSMTP: '✗', plunkAPI: '✓'},
+];
+
+const useCases = [
+ {
+ icon:
,
+ title: 'Legacy System Integration',
+ description:
+ 'Already have applications using SMTP? No need to rewrite code. Just swap your SMTP credentials and keep everything else the same. Your PM will love you.',
+ benefit: 'Zero code changes required',
+ },
+ {
+ icon:
,
+ title: 'Email Client Sending',
+ description:
+ 'Marketing teams can send emails directly from Outlook, Thunderbird, or Apple Mail using familiar tools without learning new APIs.',
+ benefit: 'No technical knowledge needed',
+ },
+ {
+ icon:
,
+ title: 'Framework Compatibility',
+ description:
+ 'Works with any framework or language that supports SMTP. Perfect for older systems or platforms without HTTP API support.',
+ benefit: 'Universal protocol support',
+ },
+];
+
+/**
+ *
+ */
+export default function SMTPFeature() {
+ return (
+ <>
+
+
SMTP Email Sending - Send via SMTP or API | Plunk
+
+
+
+
+
+
+
+
+ {/* Hero Section */}
+
+ {/* Subtle background grid */}
+
+
+
+
+
+ SMTP Email Sending
+
+
+
+ Send via SMTP
+
+ or API
+
+
+ Choose your preferred sending method. Use our HTTP API for modern apps or SMTP for email clients and
+ legacy systems. Both options deliver the same great results.
+
+
+
+
+
+ Get SMTP credentials
+
+
+
+
+ View documentation
+
+
+
+
+
+ {/* Features Grid */}
+
+
+ Enterprise-ready SMTP
+ All the features you expect from a modern email platform
+
+
+
+ {features.map((feature, index) => (
+
+
+ {feature.icon}
+
+ {feature.title}
+ {feature.description}
+
+ ))}
+
+
+
+ {/* SMTP Configuration */}
+
+
+
+
+ Simple SMTP configuration
+
+
Everything you need to configure your email client
+
+
+
+
+
+
+
SMTP Server
+
smtp.yourdomain.com
+
+
+
+
+
Port (STARTTLS)
+
587
+
+
+
+
+
+
+
Password
+
sk_your_secret_key
+
+
+
+
+
+ Find your SMTP credentials in your dashboard under Settings → SMTP. Your password is your project
+ secret key.
+
+
+
+
+
+
+ {/* Comparison Table */}
+
+
+ SMTP vs API
+ Choose the right option for your use case
+
+
+
+
+
+
+
+ | Feature |
+ Traditional SMTP |
+
+ Plunk SMTP
+ |
+ Plunk API |
+
+
+
+ {comparisonData.map((row, index) => (
+
+ | {row.feature} |
+ {row.traditional} |
+
+ {row.plunkSMTP}
+ |
+ {row.plunkAPI} |
+
+ ))}
+
+
+
+
+
+ Recommendation: Use API for modern applications with workflow automation. Use SMTP for
+ email clients and legacy systems.
+
+
+
+
+
+ {/* Use Cases */}
+
+
+ When to use SMTP
+ Perfect for these scenarios
+
+
+
+ {useCases.map((useCase, index) => (
+
+
+
+ {useCase.icon}
+
+
+
{useCase.title}
+
{useCase.description}
+
+
+
+
+ ))}
+
+
+
+ {/* CTA Section */}
+
+
+ Start sending via SMTP
+
+ Get your SMTP credentials and start sending emails from any client or application. No credit card
+ required.
+
+
+
+ Get started for free
+
+
+ View pricing
+
+
+
+
+
+
+
+ >
+ );
+}
diff --git a/apps/landing/src/pages/features/workflows.tsx b/apps/landing/src/pages/features/workflows.tsx
new file mode 100644
index 0000000..19d5619
--- /dev/null
+++ b/apps/landing/src/pages/features/workflows.tsx
@@ -0,0 +1,353 @@
+import {Footer, Navbar} from '../../components';
+import {motion} from 'framer-motion';
+import {DASHBOARD_URI, WIKI_URI} from '../../lib/constants';
+import React from 'react';
+import Link from 'next/link';
+import {ArrowRight, Clock, GitBranch, Mail, RefreshCw, UserPlus, Webhook, Zap} from 'lucide-react';
+import Head from 'next/head';
+
+const features = [
+ {
+ icon:
,
+ title: 'Event-Driven Triggers',
+ description: 'Start workflows automatically when users sign up, make a purchase, or perform any custom action.',
+ },
+ {
+ icon:
,
+ title: 'Smart Email Sequences',
+ description: 'Send personalized emails at the right time with dynamic content based on user data.',
+ },
+ {
+ icon:
,
+ title: 'Time-Based Delays',
+ description: 'Add strategic delays between steps to create perfectly timed email journeys. Patience is a virtue.',
+ },
+ {
+ icon:
,
+ title: 'Conditional Logic',
+ description: 'Branch workflows based on user behavior, attributes, or engagement to personalize every journey.',
+ },
+ {
+ icon:
,
+ title: 'External Integrations',
+ description: 'Connect to external systems with webhooks to sync data or trigger actions outside of Plunk.',
+ },
+ {
+ icon:
,
+ title: 'Re-entry Control',
+ description: 'Decide whether contacts can enter workflows multiple times or just once. No spam, just strategy.',
+ },
+];
+
+const useCases = [
+ {
+ icon:
,
+ title: 'User Onboarding',
+ description:
+ 'Welcome new users with a personalized email series that guides them through your product features and helps them get started.',
+ example: 'Trigger on signup → Send welcome email → Wait 2 days → Send getting started tips',
+ },
+ {
+ icon:
,
+ title: 'Abandoned Cart Recovery',
+ description:
+ 'Automatically remind customers about items left in their cart with timely follow-ups and special incentives. Those forgotten items need a gentle nudge.',
+ example: 'Trigger on cart abandoned → Wait 1 hour → Send reminder → Wait 1 day → Send discount offer',
+ },
+ {
+ icon:
,
+ title: 'Re-engagement Campaigns',
+ description:
+ 'Win back inactive users with targeted campaigns based on their last activity and engagement patterns.',
+ example: 'Trigger on 30 days inactive → Check if opened last email → Yes: Send update / No: Send special offer',
+ },
+];
+
+/**
+ *
+ */
+export default function WorkflowsFeature() {
+ return (
+ <>
+
+
Email Workflow Automation | Plunk
+
+
+
+
+
+
+
+
+ {/* Hero Section */}
+
+ {/* Subtle background grid */}
+
+
+
+
+
+ Workflow Automation
+
+
+
+ Automate Your Email Marketing
+
+
+ Turn events into personalized email journeys. Build sophisticated automation workflows with our visual
+ no-code builder.
+
+
+
+
+
+ Start building workflows
+
+
+
+
+ View documentation
+
+
+
+
+
+ {/* Features Grid */}
+
+
+
+ Everything you need for email automation
+
+ Powerful features that make complex automations simple
+
+
+
+ {features.map((feature, index) => (
+
+
+ {feature.icon}
+
+ {feature.title}
+ {feature.description}
+
+ ))}
+
+
+
+ {/* How It Works */}
+
+
+
+ Visual workflow builder
+
+
+ Create complex email automations without writing a single line of code
+
+
+
+
+
+
+
+ 1
+
+ Choose a trigger
+
+ Select an event that starts your workflow, like user signup, purchase, or any custom action you track.
+
+
+
+
+
+ 2
+
+ Build your flow
+
+ Drag and drop steps to create your workflow. Add emails, delays, conditions, webhooks, and more.
+
+
+
+
+
+ 3
+
+ Activate and monitor
+
+ Enable your workflow and watch it run automatically. Monitor executions in real-time with full
+ visibility.
+
+
+
+
+
+
+ {/* Use Cases */}
+
+
+
+ Built for every use case
+
+ From onboarding to re-engagement, workflows handle it all
+
+
+
+ {useCases.map((useCase, index) => (
+
+
+
+ {useCase.icon}
+
+
+
{useCase.title}
+
{useCase.description}
+
+
+
+
+ ))}
+
+
+
+ {/* CTA Section */}
+
+
+
+ Ready to automate your emails?
+
+
+ Start building powerful workflows today. No credit card required.
+
+
+
+ Get started for free
+
+
+ View pricing
+
+
+
+
+
+
+
+ >
+ );
+}
diff --git a/apps/landing/src/pages/index.tsx b/apps/landing/src/pages/index.tsx
index c7dca13..37473b8 100644
--- a/apps/landing/src/pages/index.tsx
+++ b/apps/landing/src/pages/index.tsx
@@ -15,8 +15,8 @@ import {
ArrowRight,
BarChart3,
Clock,
- Code2,
Globe,
+ Inbox,
Lock,
Mail,
Megaphone,
@@ -72,17 +72,18 @@ const features = [
{
icon:
,
title: 'Workflow Automation',
- description: 'Visual builder for complex email sequences with triggers, delays, and conditional logic.',
+ description:
+ 'Visual builder for complex email sequences with triggers, delays, and conditional logic. No code required.',
},
{
icon:
,
title: 'Dynamic Segments',
- description: 'Real-time audience segmentation based on contact data and behavior.',
+ description: 'Real-time audience segmentation based on contact data and behavior. Less noise, more signal.',
},
{
icon:
,
title: 'Campaign Management',
- description: 'Broadcast emails with scheduling and performance tracking.',
+ description: 'Broadcast emails with scheduling and performance tracking. Send the right message at the right time.',
},
{
icon:
,
@@ -90,14 +91,14 @@ const features = [
description: 'Detailed metrics on opens, clicks, bounces, and conversions across campaigns.',
},
{
- icon:
,
- title: 'Developer API',
- description: 'RESTful API with comprehensive documentation.',
+ icon:
,
+ title: 'Inbound Email',
+ description: 'Receive and process incoming emails with webhook notifications. Your inbox, automated.',
},
{
icon:
,
title: 'Custom Domains',
- description: 'Brand consistency with DKIM authentication and custom sending domains.',
+ description: 'Brand consistency with DKIM authentication and custom sending domains. Yes, even in Outlook.',
},
];
@@ -230,7 +231,8 @@ export default function Index() {
Email Platform
- Open-source email automation. Build workflows, segment audiences, and send emails with a simple API.
+ Open-source email automation. Build workflows, segment audiences, and send emails with a simple API. No
+ vendor lock-in.
@@ -355,7 +357,9 @@ export default function Index() {
Complex setup
-
Hours of configuration needed
+
+ Hours of configuration needed. Life's too short.
+
+ Growth penalties. Success shouldn't cost more.
+
+ Pay for what you use, nothing more. No surprises at scale.
+