Category: Newsletters

  • Postmark’s message streams: when to split transactional vs. broadcast

    Postmark’s message streams: when to split transactional vs. broadcast

    Postmark's message streams: when to split transactional vs. broadcast
    Photo by Monique Carrati on Unsplash

    Postmark gives you message streams—separate channels within your account for different email types. Most operators set up one stream for transactional emails (password resets, receipts) and another for broadcast or marketing sends (newsletters, announcements). The separation isn’t just organizational; it protects your sending reputation and gives you independent analytics for each stream.

    But knowing when to configure multiple streams versus sticking with the defaults requires understanding how email providers evaluate sender reputation—and what happens when a broadcast complaint rate bleeds into your transactional deliverability.

    How message streams actually work

    When you create a Postmark server, you get a default transactional stream. Each stream has its own API token, SMTP credentials, and sending domain configuration. You can add a broadcast stream (or additional streams) from the server settings.

    The critical part: each stream maintains a separate sending reputation with inbox providers like Gmail, Outlook, and Yahoo. If your broadcast newsletter gets flagged for spam complaints, it won’t directly hurt the deliverability of your password-reset emails—assuming they’re routed through different streams.

    Postmark enforces different rules per stream type. Transactional streams require a validated sending domain and won’t let you include unsubscribe links by default. Broadcast streams require an unsubscribe link in every message and track engagement metrics like opens and clicks more aggressively.

    When to use separate streams

    If you send both transactional emails (login codes, purchase confirmations, account notifications) and any volume of marketing or editorial content, configure two streams. The separation protects your critical infrastructure emails from the inherent risk of broadcast sending.

    Broadcast emails—even legitimate newsletters—generate complaint rates between 0.01% and 0.1% under normal conditions. A single user who clicks “report spam” instead of unsubscribe can nudge your sender score. If that same reputation score governs your password-reset emails, you’ve introduced unnecessary risk into account-access workflows.

    Here’s a concrete scenario: you run a paid membership site. Members get a weekly digest (broadcast stream) and order confirmations when they purchase add-ons (transactional stream). One week, your digest subject line underperforms and complaint rates spike to 0.15%. Gmail starts filtering your digests to spam. Because you separated streams, your order confirmations still land in the primary inbox—members can complete purchases without friction.

    Volume matters too. If you send fewer than 100 broadcast emails per month, the added complexity of a second stream may outweigh the benefit. But once you cross 500–1,000 broadcast sends monthly, or if your transactional volume is mission-critical, split them.

    Configuration and the non-obvious part

    Setting up a broadcast stream takes about five minutes. In your Postmark server settings, add a new message stream, select “Broadcast,” and configure the same sending domain you use for transactional (or a subdomain if you want additional separation). Copy the new API token or SMTP credentials into your app or newsletter tool.

    The non-obvious tip: use custom metadata fields to tag every broadcast send with campaign identifiers, even if you’re not running formal A/B tests. Postmark’s activity feed lets you filter by metadata, which becomes essential when diagnosing deliverability issues three months later. Tagging each broadcast with campaign_id or content_type turns your message stream into a queryable log.

    Also, monitor your suppression list separately for each stream. A user who unsubscribes from your newsletter (broadcast stream) can still receive order confirmations (transactional stream). Postmark handles this automatically, but if you’re syncing suppression lists to an external CRM, you need to respect stream boundaries or risk compliance problems.

    When one stream is fine

    If you only send transactional email—no newsletters, no announcements, no drip campaigns—don’t bother with a broadcast stream. The same applies if your “broadcast” volume is truly negligible: a quarterly update to 50 people doesn’t justify the overhead.

    Some operators use Postmark exclusively for transactional sends and route newsletters through a dedicated ESP like MailerLite or Beehiiv. That’s a valid architecture, especially if you need advanced segmentation or monetization features that Postmark doesn’t provide. In that case, your Postmark account stays single-stream and handles only the high-stakes account emails.

    The deciding factor is risk tolerance. If a deliverability hiccup in your broadcast sends could lock users out of their accounts, separate the streams. If your broadcast content is low-risk or low-volume, the default configuration works.

    Want more tool breakdowns like this? Subscribe to One Two Three Send for weekly deep-dives into the features that actually matter for solo operators and small teams.

    Heads up — some links in this article are affiliate links. If you sign up through them, we may earn a small commission at no extra cost to you. We only recommend tools we use ourselves.

  • ConvertKit’s visual automation builder: when branches multiply, performance tanks

    ConvertKit’s visual automation builder: when branches multiply, performance tanks

    ConvertKit's visual automation builder: when branches multiply, performance tanks
    Photo: Hannah Krafcik via Wikimedia Commons (CC BY-SA 4.0)

    ConvertKit’s visual automation builder is one of the cleanest interfaces in email marketing. Drag a trigger, add conditions, branch subscribers into different paths—it feels intuitive until you hit about 40 nodes and the canvas starts choking.

    If you’re running a content-driven business with segmented onboarding, product launches, or behaviour-based nurture sequences, you’ve probably felt this. The builder loads slowly. Clicks lag. Moving a single node can freeze your browser for three seconds.

    This isn’t a bug—it’s a design tradeoff. Visual builders prioritise clarity over scalability, and ConvertKit’s canvas renders every node, connection, and conditional rule in real time. Past a certain threshold, that becomes expensive.

    When the visual builder works perfectly

    ConvertKit’s automation canvas excels at linear workflows with light branching. If you’re building a welcome sequence that forks based on one or two subscriber actions—clicked a link, purchased a product, tagged as interested in Topic A vs. Topic B—the visual layout makes logic auditable at a glance.

    A typical high-performing automation in this range:

    • One trigger (subscribed to a form)
    • 3–5 emails spaced over 7–14 days
    • 2–3 conditional branches based on clicks or tags
    • 1–2 goal events that exit subscribers early

    Total node count: 15–25. The canvas loads instantly. Changes save in under a second. You can onboard a VA or collaborator by screenshotting the flow.

    Where it breaks down

    Problems appear when you start layering complexity:

    Nested conditionals. Branch on purchase status, then branch again on engagement level, then fork by content preference. Each layer doubles your node count. A four-level decision tree can balloon to 60+ nodes before you’ve sent ten emails.

    Event-based re-entry. If your automation triggers on “tag added” and you’re using tags liberally across your system—post interactions, product interest signals, engagement scores—subscribers can enter the same automation multiple times. ConvertKit handles this, but visualising those re-entry paths on a single canvas creates spaghetti.

    Time delays at scale. ConvertKit’s visual builder treats every wait period as a discrete node. If you’re spacing emails across 90 days with variable delays based on activity, you’re adding 10–15 wait nodes just for pacing. Combine that with branching and you’re over 50 nodes easily.

    At that scale, the canvas becomes a liability. Loading takes 8–12 seconds. Dragging nodes to reorganise triggers a visual refresh that can pause your browser. Editing a condition three layers deep requires zooming, panning, and waiting for the interface to catch up.

    The workaround: split automations and use sequences

    ConvertKit offers two tools for sending automated emails: visual automations and sequences (the older, list-based drip feature). Most operators default to automations because the interface is newer and more flexible. But sequences are faster, simpler to manage, and handle high-volume evergreen content better.

    Use sequences for linear email courses or onboarding. If your workflow is mostly “send email 1, wait 2 days, send email 2, wait 3 days…” with minimal branching, a sequence is faster to build and never lags. You lose conditional logic, but you gain speed and reliability.

    Use automations for decision points, then hand off to sequences. Build a short automation (under 20 nodes) that handles the initial triage—tag based on link clicks, segment by purchase history, apply a custom field. Then use an action step to subscribe users to the appropriate sequence. The sequence handles delivery; the automation handles routing.

    This hybrid approach keeps individual automations lightweight and makes debugging easier. If a subscriber isn’t receiving emails, you can check the sequence separately from the routing logic.

    Split large automations by goal or time horizon. Instead of one 60-node “master onboarding” automation, build three:

    • Days 1–7: Welcome, core content, initial segmentation
    • Days 8–30: Nurture based on engagement tags
    • Days 31+: Long-term re-engagement or upsell

    Each automation stays under 25 nodes. Subscribers flow from one to the next via tags or custom field updates. You lose the single-canvas overview, but you gain maintainability.

    One non-obvious tip: name every node

    ConvertKit lets you label individual automation nodes with custom names. Most people skip this. Don’t.

    When you’re troubleshooting why a subscriber didn’t receive an email, ConvertKit’s activity log shows which automation nodes they passed through—but only by name. If all your conditional branches are labelled “Condition” and all your emails are “Email,” the log is useless.

    Name every node descriptively: “Check if purchased Product A,” “Send case study email—Topic B,” “Wait 3 days after click.” It takes an extra 10 seconds per node when you’re building, but it saves 10 minutes every time you debug.

    If you’re running ConvertKit automations that feel sluggish or impossible to audit, the problem isn’t the tool—it’s the architecture. Keep individual automations under 30 nodes, offload linear sequences to the sequence builder, and split complex workflows by stage. The visual builder works best when you don’t ask it to do everything at once.

    What’s the most complex automation you’ve built? Hit reply and let me know where it broke—I’ll feature anonymised examples in a future roundup.

  • Newsletter double opt-in: when confirmed subscribers hurt growth more than spam

    Newsletter double opt-in: when confirmed subscribers hurt growth more than spam

    Newsletter double opt-in: when confirmed subscribers hurt growth more than spam
    Photo by Jacob Padilla on Unsplash

    Most newsletter advice treats double opt-in as gospel: make subscribers confirm their email address before you send them anything. It cuts spam, protects deliverability, and proves intent.

    But it also kills between 20% and 40% of legitimate signups who never click the confirmation link—not because they’re uninterested, but because the email lands in spam, they forget, or friction wins.

    The question isn’t whether double opt-in is safer. It is. The question is whether that safety is worth the subscribers you’re losing before you ever get a chance to send them anything useful.

    What double opt-in actually costs

    When someone submits your signup form with single opt-in, they’re added to your list immediately. You send them a welcome email. They read it or they don’t.

    With double opt-in, they submit the form, receive a confirmation email, and must click a link before you’re allowed to send them anything else. If they don’t click within a set window—usually 24 to 72 hours—they never make it onto your list.

    Industry averages show confirmation rates between 60% and 80%. That means for every 100 signups, you’re losing 20 to 40 people who filled out your form but never confirmed.

    Some of those are bots, typos, or low-intent submissions. But many are real people whose confirmation email went to spam, got buried, or arrived during a moment when they’d already moved on.

    If you’re running paid acquisition, that’s ad spend converted into nothing. If you’re growing organically, it’s momentum you worked for and didn’t capture.

    When single opt-in makes sense

    Single opt-in works best when you control the signup context and the cost of a bad email address is low.

    If you’re collecting signups at the end of a blog post, in a lead magnet download flow, or embedded in a tool someone just used, intent is high and the person is present. They want the thing you’re offering right now. Making them wait and hunt for a confirmation link adds friction exactly when they’re most engaged.

    Single opt-in also makes sense if you’re paying for traffic. Whether that’s Facebook ads, Twitter promoted posts, or sponsored placements, every unconfirmed signup is wasted money. You’re optimizing your funnel to convert clicks into subscribers, and double opt-in chops your conversion rate without improving the quality of traffic you’re buying.

    Platforms like Beehiiv and MailerLite both default to double opt-in but let you switch to single opt-in in settings. If your welcome email has a strong call-to-action—download this, read that, reply here—you’ll know within the first send whether someone is engaged. A confirmation email doesn’t tell you more than that first real message does.

    When double opt-in is worth the friction

    Double opt-in makes sense when list quality matters more than list size, or when you’re in a high-risk deliverability environment.

    If you’re sending sponsorship pitches, cold outreach, or anything that could trigger spam complaints, every bad address on your list is a threat to your sender reputation. Double opt-in filters out typos, role addresses, and people who weren’t paying attention.

    It’s also essential if you’re in a regulated space—anything involving GDPR, health data, or financial services. Proving that someone explicitly confirmed their subscription is a legal safeguard, not just a best practice.

    And if you’re growing through co-marketing, giveaways, or partnerships where someone else is driving signups, double opt-in protects you from low-intent submissions. A partner might send you 500 email addresses, but if only 200 confirm, you’ve learned something important about the quality of that traffic before it damages your open rates.

    The hybrid approach: single opt-in with a cleanup sequence

    You don’t have to choose between growth and quality. Single opt-in gets people on your list immediately, and a well-designed welcome sequence filters out the dead weight within the first week.

    Send your welcome email immediately after signup. If someone doesn’t open it within 48 hours, send a short follow-up: “Did you mean to subscribe?” If they don’t engage with either message, tag them as inactive and stop sending.

    This approach captures the high-intent signups who would’ve confirmed anyway, while identifying the low-quality ones before they drag down your metrics. You’re not asking people to confirm—they confirm by opening, clicking, or replying.

    Most platforms let you automate this. In MailerLite, you can trigger a conditional sequence based on whether someone opened the first email. In Beehiiv, you can tag non-openers and exclude them from future sends.

    The result is a list that grows faster than double opt-in would allow, but cleans itself before unengaged subscribers become a long-term problem.

    Want more breakdowns like this? Subscribe to One Two Three Send and get one operator-focused article like this in your inbox daily.

    Heads up — some links in this article are affiliate links. If you sign up through them, we may earn a small commission at no extra cost to you. We only recommend tools we use ourselves.

  • Newsletter archive search: when readers can’t find what you wrote

    Newsletter archive search: when readers can’t find what you wrote

    Newsletter archive search: when readers can't find what you wrote
    Photo: Unknown via Wikimedia Commons (Public domain)

    A reader emails: “I know you wrote about WordPress caching last month—where is it?” You know you sent it. You can see it in your sent folder. But when they search your archive page, nothing turns up.

    Archive search is one of those features newsletter platforms advertise but rarely explain. Some index subject lines only. Others index the first 200 characters. A few index the full body—but only if you’re on a paid tier. And almost none tell you which approach they use until you test it yourself.

    Here’s what actually gets indexed on the platforms solo operators use most, and what to do when search fails.

    What gets indexed on each platform

    Beehiiv indexes the full email body on all tiers, including free. Search works across subject lines, body text, and author names if you’ve enabled bylines. The index updates within a few minutes of sending. One caveat: if you use custom HTML blocks, only plain text inside those blocks gets indexed—images, buttons, and styled div containers are ignored.

    Substack indexes subject lines and body text, but search results prioritize exact matches in titles first. If your subject line was vague (“Issue #47”) and the meat of the topic is buried in paragraph three, it won’t surface until a reader scrolls past a dozen other posts. Substack’s archive search also doesn’t support Boolean operators—no “AND,” “OR,” or quoted phrases.

    ConvertKit offers archive search only if you’ve enabled the public archive feature, which is off by default. When enabled, it indexes subject lines and the first 500 characters of body text. Anything below the fold in your email—your detailed how-to, your step-by-step breakdown—doesn’t get indexed. If you bury the lede, readers won’t find it.

    MailerLite doesn’t offer built-in archive search at all. The public archive page displays a reverse-chronological list with subject lines and send dates. Readers have to use browser find (Cmd+F) and hope the subject line matches what they remember. For a catalog of 50+ emails, that’s borderline unusable.

    When to use tags and categories instead

    If your archive grows past 30 posts, search alone won’t save readers. They need filters—by topic, by format, by content type. Beehiiv lets you tag posts and surface those tags as filters on your archive page. Substack offers Sections, which let you split your newsletter into topic-based streams (each with its own archive and RSS feed).

    ConvertKit doesn’t support tags or categories in the public archive view. If you need taxonomy, you’ll need to maintain a separate landing page with manual links—or migrate to a platform that supports it natively.

    The non-obvious move: if you publish consistently on a topic (say, WordPress hosting or AI prompts), create a dedicated landing page that lists all related posts with short descriptions. Link to it from your welcome email and your site nav. That page becomes your real archive. The platform’s built-in search becomes a backup.

    What breaks when readers search from mobile

    Most newsletter platforms serve the same archive page to mobile and desktop, but mobile browsers handle search differently. Safari on iOS doesn’t support in-page search widgets that rely on JavaScript—if your platform uses a custom search bar (instead of a plain HTML form), iOS readers get a broken experience. They tap the search icon, nothing happens, and they leave.

    Beehiiv and Substack use standard HTML forms, so mobile search works. ConvertKit’s archive search widget relies on JavaScript and fails silently on older mobile browsers. MailerLite, again, offers no search at all.

    Test your archive page on an actual phone, not just a resized browser window. Open it in Safari, Chrome, and Firefox mobile. Try searching for a post you know exists. If the search bar doesn’t respond or returns zero results for a term you know is there, your readers are hitting the same wall.

    When to embed a third-party search tool

    If your archive has 100+ posts and your platform’s search isn’t cutting it, you can embed a third-party site search tool. Algolia offers a free tier for up to 10,000 searches per month. You’ll need to generate a JSON feed of your archive (most platforms support RSS; convert it to JSON with a script or a tool like Feed43), push it to Algolia’s index, and embed their search widget on a custom landing page.

    This works if you host a separate website alongside your newsletter (common for operators who publish on Substack but maintain a WordPress site for SEO). It doesn’t work if you rely solely on the platform’s hosted archive—Substack and Beehiiv don’t let you inject third-party JavaScript into their archive pages.

    The simpler fix: write better subject lines. If every email is titled “Weekly Update” or “Issue #23,” no search tool will help. Use the subject line to signal the topic clearly. “WordPress object caching: Redis vs. memcached” beats “Performance tips” every time.

    Want more tool breakdowns like this? Subscribe to One Two Three Send and get one operator-focused deep-dive every day—no fluff, just what actually works and what breaks.

    Heads up — some links in this article are affiliate links. If you sign up through them, we may earn a small commission at no extra cost to you. We only recommend tools we use ourselves.

  • Beehiiv’s Boost network: how the referral swap works and who qualifies

    Beehiiv’s Boost network: how the referral swap works and who qualifies

    Beehiiv's Boost network: how the referral swap works and who qualifies
    Photo by Haithem Ferdi on Unsplash

    Beehiiv‘s Boost network lets you trade recommendations with other newsletters—your publication shows up in someone else’s inbox, theirs shows up in yours. The pitch is simple: pay-per-subscriber acquisition without managing individual cross-promo deals.

    But Boost isn’t a passive referral lottery. The network uses an internal matching algorithm, a credit system, and quality gates that determine whether your newsletter gets shown at all. If you’re considering it—or already enrolled and wondering why results are inconsistent—here’s how the mechanics actually work.

    How the credit system allocates impressions

    Boost runs on credits, not cash. You earn credits when another newsletter recommends yours to their readers. You spend credits when Beehiiv shows your newsletter to someone else’s audience.

    Each recommendation costs one credit. If someone subscribes after seeing your Boost placement, you’re charged that credit. If they don’t subscribe, you still pay—the credit covers the impression, not the conversion.

    You can buy credits directly (around $1–$2 per credit depending on volume), or earn them by letting other newsletters appear in your recommendations. The latter is how most operators start: you allocate a percentage of your subscriber recommendations to Boost partners, and Beehiiv credits your account based on impressions served.

    The non-obvious part: credit earn rates aren’t uniform. Beehiiv weighs your newsletter’s engagement, open rates, and subscriber quality. A newsletter with 5,000 engaged readers earns more credits per impression than one with 20,000 cold subscribers. The platform doesn’t publish the exact formula, but operators report earn-rate variance between 0.6× and 1.4× depending on performance.

    Who sees your newsletter—and who doesn’t

    Boost placements aren’t random. Beehiiv’s algorithm tries to match newsletters by topic, audience overlap, and engagement profile. If you run a B2B SaaS newsletter, you’re more likely to appear in recommendations for other business-focused publications than in a gardening newsletter’s rotation.

    But topic match is only one filter. Beehiiv also applies a quality floor. Newsletters with open rates below ~30%, high spam-complaint rates, or recent deliverability issues get deprioritized or removed from Boost rotation entirely. The platform doesn’t send warnings—you’ll just stop seeing credit accrual or impression delivery.

    There’s also an implicit size gate. Boost works best for newsletters between 1,000 and 50,000 subscribers. Below 1,000, your earn rate is too low to generate meaningful credit flow. Above 50,000, the network’s inventory can’t deliver enough relevant impressions to match your spending pace, and you’ll end up buying credits instead of earning them.

    When Boost makes sense—and when it doesn’t

    Boost is worth testing if:

    • You’re between 2,000–25,000 subscribers and growth has plateaued
    • Your open rate is consistently above 35%
    • You’re comfortable letting 10–20% of your recommendation slots go to Beehiiv’s algorithm
    • Your niche has enough adjacent newsletters in the network (B2B, tech, finance, and creator economy are well-represented; hyper-local or non-English niches are sparse)

    It’s not worth it if:

    • You’re under 1,000 subscribers—earn rates are too low, and you’ll pay cash for every placement
    • Your content is highly specific or regional; the algorithm struggles to find relevant matches
    • You’ve already built strong 1:1 cross-promo relationships—direct swaps give you more control and often better conversion rates

    Typical cost-per-subscriber via Boost ranges from $1.50 to $4.00 depending on niche and how well your newsletter converts cold traffic. That’s competitive with paid ads but less predictable. Some operators report CPS under $1; others burn through $500 in credits and acquire 80 subscribers, most of whom churn within two sends.

    One non-obvious tip: front-load your best content

    Boost subscribers arrive cold. They clicked a recommendation, but they don’t know you yet. If your welcome sequence is generic or your next few sends are off-brand, they’ll unsubscribe fast—and Beehiiv’s algorithm will notice.

    Operators who see sustained Boost performance treat the first three emails as an onboarding sprint: high-value, hyper-relevant, and faster-paced than their usual cadence. If your regular newsletter goes out weekly, consider sending Boost-sourced subscribers a second touchpoint within 48 hours. Retention after three emails is the strongest signal Beehiiv uses to keep recommending your newsletter.

    If you’re already on Beehiiv and considering Boost, run a small test: allocate 10% of recommendations for 30 days, track cost-per-subscriber and 30-day retention separately, and compare it to your other acquisition channels. If CPS and retention both land in your top three sources, scale up. If not, redirect the effort to direct cross-promo outreach or paid social.

    Using Beehiiv and want to compare notes on what’s working? Reply to this email—I’ll feature anonymized operator data in a future case study.

    Heads up — some links in this article are affiliate links. If you sign up through them, we may earn a small commission at no extra cost to you. We only recommend tools we use ourselves.

  • ConvertKit broadcast send-time personalisation: how it decides

    ConvertKit broadcast send-time personalisation: how it decides

    ConvertKit broadcast send-time personalisation: how it decides
    Photo by Kit (formerly ConvertKit) on Unsplash

    ConvertKit’s broadcast scheduler includes a checkbox labelled “Optimise send time.” When enabled, the platform doesn’t deliver your email at the moment you hit publish—it queues each subscriber’s copy for a window it thinks they’re most likely to engage.

    The feature sounds useful. In practice, it works well for some operators and creates confusion for others. Here’s what actually happens under the hood, when the algorithm helps, and when you’re better off choosing a fixed send time.

    What the algorithm looks at

    ConvertKit’s send-time optimisation scans each subscriber’s engagement history: opens, clicks, and the timestamps associated with both. It looks for patterns—does this person consistently open emails around 7 a.m. Eastern? Do they engage more on weekday mornings or weekend afternoons?

    If the platform identifies a statistically significant pattern, it schedules delivery within a window it predicts will perform better than a one-size-fits-all broadcast time. If no pattern exists—new subscribers, inactive readers, or those with erratic habits—it defaults to your account’s standard send time or the time you manually set when creating the broadcast.

    The optimisation window spans roughly 24 hours. ConvertKit won’t hold a broadcast for days, but it will stagger delivery across morning, afternoon, and evening slots depending on subscriber behaviour.

    When it helps

    Send-time optimisation works best when you have a large, engaged list with diverse time zones and consumption habits. If you’re sending to 10,000 subscribers spread across North America, Europe, and Asia, the feature can lift open rates by 2–8% compared to a single fixed time.

    It’s also useful when your content isn’t time-sensitive. Evergreen tutorials, weekly roundups, and educational sequences don’t lose value if they arrive six hours later than your publish click. The algorithm prioritises engagement over synchronicity.

    Operators who publish frequently—three or more broadcasts per week—also see better results. The platform accumulates more engagement data, which sharpens its predictions. If you send once a month, there’s less signal to work with.

    When manual scheduling wins

    Time-sensitive broadcasts break the optimisation logic. If you’re announcing a product launch, a limited-time discount, or commentary tied to a news event, you want simultaneous delivery. Staggering emails across 24 hours means some subscribers see the offer after it’s expired or the news cycle has moved on.

    Small lists—under 1,000 subscribers—don’t benefit much either. The algorithm needs volume to identify statistically meaningful patterns. With a few hundred people, manual scheduling based on your own audience knowledge often outperforms the automated approach.

    And if your list skews heavily toward a single time zone or demographic, the optimisation adds complexity without much upside. A newsletter serving U.S. East Coast professionals during weekday work hours doesn’t need personalised delivery windows—everyone’s already in the same behaviour bucket.

    One non-obvious tip

    ConvertKit’s send-time optimisation relies on opens as its primary engagement signal, but open tracking has degraded since Apple’s Mail Privacy Protection rolled out in 2021. A meaningful percentage of your subscribers now register artificial opens the moment an email hits their inbox, regardless of when they actually read it.

    This skews the algorithm’s predictions. If you notice erratic or counterintuitive delivery patterns—emails going out at odd hours, open rates drifting downward despite optimisation being enabled—try disabling the feature for two or three broadcasts and compare performance. Manual scheduling at a consistent, tested time often performs better when open-tracking reliability is compromised.

    You can also cross-reference your ConvertKit open data with click data, which remains accurate. If the platform says a subscriber opens at 6 a.m. but consistently clicks at noon, the optimisation may be misfiring. In that case, fall back to manual control.

    Want more breakdowns like this? Subscribe to One Two Three Send for weekly deep-dives on the tools and tactics that actually move the needle for solo operators.

  • ConvertKit’s custom field limits: when segmentation hits a ceiling

    ConvertKit’s custom field limits: when segmentation hits a ceiling

    ConvertKit's custom field limits: when segmentation hits a ceiling
    Photo: Caladusp via Wikimedia Commons (CC BY-SA 4.0)

    ConvertKit lets you add up to 100 custom fields per account. That sounds generous until you’ve been running a newsletter for two years, tagging readers by interest, purchase history, geography, onboarding date, referral source, content preferences, and engagement tier.

    Then you hit the wall.

    The limit isn’t documented prominently. You discover it when the “Add Field” button grays out, or when an automation fails to create a new field and your sequence quietly stops working.

    What counts toward the limit

    Every custom field you create—whether it’s a text field, number, or date—counts toward the 100-field cap. This includes:

    • Active fields currently in use
    • Archived fields you’re no longer using but haven’t deleted
    • Fields created by integrations (Zapier, API calls, third-party forms)

    Deleting a field frees up a slot, but only if you’re certain no automation or segment references it. ConvertKit doesn’t warn you before deletion, and there’s no “undo.”

    Tags, by contrast, are unlimited. Subscribers are unlimited. It’s only custom fields—the structured data layer—that hits a ceiling.

    Where operators waste field slots

    Most operators I’ve audited are using 40–60 fields. The bloat comes from:

    Redundant date fields. Separate fields for “trial_start,” “trial_end,” “first_purchase,” “last_purchase,” “onboarding_completed.” You can often collapse these into tags with date-based automations, or store only the field you’ll actually query.

    One-off campaign tracking. A field for every lead magnet, webinar, or promo. If you’re not segmenting on it after 90 days, archive or delete it.

    Text fields that should be tags. A “interests” field with comma-separated values like “SEO, WordPress, email” is harder to segment than three tags. ConvertKit’s segment builder can combine tags with AND/OR logic; custom field text matching is clunkier.

    Legacy fields from old integrations. A Typeform you used once in 2024, a Zapier zap you turned off, a WordPress plugin you uninstalled. Each left fields behind.

    How to design segments that scale

    If you’re approaching the limit—or want to avoid it—here’s the structure that works:

    Use tags for categorical data. Interests, content preferences, lead sources, engagement tiers. Tags are unlimited, combinable, and easier to audit.

    Reserve custom fields for values you’ll calculate or compare. Numbers (purchase count, total spend, engagement score), dates (signup date, last click), or IDs (Stripe customer ID, external CRM reference).

    Audit every 90 days. Export your field list. Flag anything unused in the last quarter. Archive first, delete after another 30 days if no automations break.

    Document field purpose and owner. Keep a spreadsheet. Column A: field name. Column B: what it tracks. Column C: which automations or segments use it. Column D: date created. When you hit 80 fields, you’ll thank yourself.

    What happens if you hit the cap

    Automations that try to create or update a field beyond the 100th slot fail silently. The automation continues, but the field write doesn’t happen. You won’t get an error email. The subscriber moves to the next step as if nothing broke.

    If you’re relying on that field for downstream segmentation—say, tagging high-intent leads based on a quiz score—you’ll lose data without noticing until you spot the gap in your reports.

    ConvertKit support can’t raise the limit. It’s a hard platform cap, same across all pricing tiers.

    The workaround: delete unused fields, or rethink your data model. Some operators move complex segmentation logic into an external CRM (like Brevo or a dedicated CDP) and sync only the essential fields back to ConvertKit. That adds complexity, but it scales past 100.

    When to stay under 50

    If you’re running a solo operation with fewer than 10,000 subscribers, aim to stay under 50 fields. It forces clarity. Every field you add should answer: “What decision does this let me make that I can’t make with tags?”

    If the answer is “nothing,” use a tag.

    Most operators don’t need purchase history in a custom field—they need a “purchased” tag and a “last_purchase_date” field for recency-based re-engagement. That’s two slots instead of five.

    ConvertKit’s segmentation is powerful, but it rewards restraint. The ceiling exists whether you plan for it or not.

    Hit a segmentation problem you can’t solve with tags? Reply and tell us what you’re trying to track—we’ll feature operator solutions in a future issue.

    Heads up — some links in this article are affiliate links. If you sign up through them, we may earn a small commission at no extra cost to you. We only recommend tools we use ourselves.

  • Newsletter referral programs pay per signup—but measure net growth

    Newsletter referral programs pay per signup—but measure net growth

    Newsletter referral programs pay per signup—but measure net growth
    Photo by Defrino Maasy on Unsplash

    Most newsletter referral programs report one number: gross signups. Someone shares your link, three people subscribe, you see +3 in the dashboard. The referring subscriber unlocks a reward tier. Everyone’s happy.

    Except gross signups don’t tell you whether those three people are still reading 60 days later—or whether they bounced the moment the referrer claimed their prize.

    If you’re running a referral program through Beehiiv, SparkLoop, or a similar tool, you need to track net referral growth: how many referred subscribers remain engaged after the incentive window closes. Otherwise, you’re paying for churn with extra steps.

    Why gross referral counts mislead

    Referral programs reward the act of signing someone up, not the quality of that subscriber. If your reward tiers unlock at 3, 10, or 25 referrals, the person sharing your link is optimized for volume. They’ll post it in group chats, tag friends who aren’t interested, or share it in communities where your topic is tangential at best.

    Those signups count. The platform credits them. But six weeks later, half of them have unsubscribed or gone cold. Your list grew by 25, but your engaged audience grew by 12. You paid the referrer’s reward in full.

    This isn’t theoretical. One operator I spoke with ran a referral campaign offering a $50 Amazon gift card at 10 referrals. Average churn rate for referred subscribers in the first 90 days: 48%. For organic signups in the same period: 22%. The campaign grew the list by 340 subscribers. Six months later, 140 of them were still active. Cost per retained subscriber: higher than a modest Facebook ad budget would have delivered.

    What to measure instead

    Track referral cohorts separately from organic signups, and measure engagement at 30, 60, and 90 days post-signup. Most ESPs let you tag subscribers by source; if yours doesn’t, add a hidden field or custom property when someone arrives via a referral link.

    Compare:

    • Open rate at day 30: Are referred subscribers opening at the same rate as organic signups?
    • Unsubscribe rate by day 60: When does referred churn plateau?
    • Click rate on monetized content: If you’re running sponsorships or affiliate links, do referred subscribers engage with revenue-driving content?

    If referred subscribers churn or disengage faster than organic, your referral program is subsidizing vanity metrics. A list of 10,000 with 40% engagement beats 15,000 with 25% engagement in every scenario that matters: deliverability, sponsor value, product conversion.

    When referral programs still make sense

    Referral mechanics work when:

    • Your content has strong word-of-mouth fit—people genuinely want to share it, and the reward is a bonus, not the primary driver.
    • You’re willing to adjust reward tiers based on retention data, not just signup volume.
    • You can afford to treat referred subscribers as a separate, lower-intent cohort and nurture them differently in your first 90 days.

    If you’re below 1,000 subscribers and still defining your audience, a referral program will accelerate list growth but may also dilute signal. You’ll spend months figuring out what content works for two different cohorts instead of one.

    Above 5,000 subscribers, referral programs become more defensible—but only if you’re already retaining >70% of organic signups past 90 days. If your baseline retention is weak, a referral program will amplify the problem, not solve it.

    One non-obvious fix

    Delay reward fulfillment by 60 days. Instead of unlocking rewards the moment a referrer hits 10 signups, unlock them 60 days after the tenth signup—and only if at least 7 of those 10 are still subscribed.

    This shifts the incentive from volume to quality. Referrers will share your link with people more likely to stick around, because they only get paid if those subscribers stay. It also filters out referral farmers who game the system by cycling through throwaway emails.

    Most referral platforms don’t support conditional reward logic natively, but you can build it with a weekly script that checks subscriber status and manually triggers rewards. It’s friction, but it’s worth it if you’re spending four figures a year on referral incentives.

    If you’re running a referral program right now: pull your referral cohort data for the last 90 days and compare retention to organic signups. If referred churn is more than 10 percentage points higher, either tighten your reward criteria or redirect that budget to a channel with better unit economics.

    Want more breakdowns like this? Subscribe to One Two Three Send—we cover the operational details most online-business newsletters skip.

    Heads up — some links in this article are affiliate links. If you sign up through them, we may earn a small commission at no extra cost to you. We only recommend tools we use ourselves.

  • Substack’s Section feature: when to split your newsletter

    Substack’s Section feature: when to split your newsletter

    Substack's Section feature: when to split your newsletter
    Photo by Markus Winkler on Unsplash

    Substack’s Section feature lets you run multiple newsletters under a single publication. Each Section has its own name, subscription toggle, and archive page—but everything lives under one domain and subscriber dashboard.

    Most operators discover Sections when they want to add a secondary content stream without fragmenting their audience or managing two separate Substacks. The feature works, but only if you understand what it actually controls and what it doesn’t.

    How Sections work

    When you create a Section, you’re adding a category filter to your publication. Subscribers can opt in or out of each Section independently. A reader might subscribe to your main newsletter but skip your weekly link roundup, for example.

    Each post you publish gets assigned to one Section. Your homepage feed shows all posts by default, but readers can filter by Section using the navigation menu. Each Section gets its own RSS feed and archive URL.

    Sections don’t create separate subscriber lists—everyone is still subscribed to your publication. The Section toggle just controls which emails they receive. Your total subscriber count remains unified, and free vs. paid status applies across all Sections.

    This matters for billing. If you have 5,000 subscribers but only 1,000 opted into your premium Section, you’re still paying for 5,000 subscribers. Substack doesn’t prorate based on Section engagement.

    When to use Sections

    Sections make sense when you want to publish different content formats or cadences without forcing every subscriber to receive everything.

    Common use cases: a weekly main newsletter plus a daily news brief; a free newsletter with a paid-only deep-dive Section; a primary topic with a secondary niche that overlaps but doesn’t fully align.

    Sections don’t work well if your content streams target completely different audiences. A marketing newsletter and a cooking newsletter should be separate publications, not Sections. Substack’s discovery and recommendation algorithms treat your publication as a single entity—readers who find you through one Section will see the rest.

    Sections also don’t solve the problem of list fatigue. If subscribers are tuning out, adding more Sections usually makes it worse. You’re better off consolidating or changing your primary content strategy.

    The non-obvious filtering tip

    Substack’s subscriber export includes a sections column that lists which Sections each subscriber has enabled. Most operators ignore this field, but it’s useful for segmentation.

    You can filter your CSV export to find subscribers who opted into one Section but not another. This tells you which content streams resonate and which don’t. If 80% of your subscribers turned off your link roundup Section, that’s a signal to kill it or rework the format.

    The export also shows Section opt-in dates, so you can track adoption over time. If a new Section isn’t attracting opt-ins after 30 days, it’s probably not differentiated enough from your main feed.

    One edge case: Substack doesn’t let you set default Section subscriptions for new subscribers. Everyone who signs up is automatically opted into all Sections. You can’t onboard new readers into just your free Section and gate the premium one—they get everything unless they manually toggle it off.

    This means your welcome email needs to explain what each Section is and how to manage preferences, or you’ll see higher unsubscribe rates from people who didn’t expect the volume.

    Section limitations

    Sections don’t have separate branding. The header, logo, and colour scheme apply to your entire publication. If you want each Section to feel visually distinct, you’re limited to post-level formatting.

    You also can’t schedule posts to different Sections at the same time. Substack’s scheduler works at the publication level, so if you want to send your main newsletter and a bonus Section on the same day, you’ll need to stagger the send times manually.

    Paid subscriptions apply across all Sections—you can’t charge separately for individual Sections. If you want to monetise one Section independently, you’d need a second Substack publication.

    Sections work best when your content streams share a core audience but vary in format, frequency, or depth. If you’re running a single newsletter and considering expansion, Sections are worth testing—but only if you’re prepared to let subscribers self-select out of the extra volume.

    Using Substack or considering it? Subscribe to One Two Three Send for more breakdowns of newsletter platform features that actually matter.

  • Most subscription forms ask for too much data—here’s the cutoff

    Most subscription forms ask for too much data—here’s the cutoff

    Most subscription forms ask for too much data—here's the cutoff

    Every field you add to a subscription form costs you subscribers. The question isn’t whether that’s true—it’s how much it costs, and whether the data you collect is worth it.

    Most operators inherit form designs from platforms or copy what they see elsewhere. They ask for first name, last name, company, role, and sometimes more. Then they wonder why their landing page converts at 2% when competitors hit 8%.

    The math is simple: each additional field drops conversion by 10–25%, depending on placement and perceived friction. A three-field form converts 30–40% worse than a single-field form. If you’re getting 1,000 visitors a month, that’s the difference between 80 subscribers and 40.

    What to collect upfront

    Email address. That’s it for most operators.

    If you run a B2B newsletter where segmentation drives your entire content strategy—industry-specific tips, role-based workflows—then one additional field makes sense. A dropdown for industry or job function. Not both.

    First name feels harmless, but it’s still friction. If you’re using it only for personalization in the welcome email, test a version without it. Many operators find the conversion lift from removing it outweighs the marginal engagement bump from “Hi Sarah” instead of “Hi there.”

    Behavioral segmentation beats form segmentation. You can infer interest from what someone clicks, downloads, or reads. You can’t infer it from a dropdown they picked to get past your gate.

    What to ask later—and when

    Once someone’s subscribed, you have permission to ask more. But timing matters.

    The best window is 7–14 days after signup, once they’ve opened two or three emails and decided your content is worth keeping. Send a one-question survey: “What’s your biggest challenge with [topic]?” or “What type of content do you want more of?”

    Don’t embed the survey in the email. Link to a single-question form—Tally, Typeform, or a plain Google Form. Keep it to one question. Multi-question surveys in this context get 15–20% completion; single-question surveys get 40–60%.

    Use progressive profiling if your platform supports it. Beehiiv, ConvertKit, and Brevo all let you show different questions to subscribers based on what you already know. If someone clicked three AI-tools posts, you don’t need to ask if they’re interested in AI tools.

    The drop-off math that matters

    Run the numbers for your own funnel. If you’re getting 500 visitors a month to your signup page and converting at 4% with a two-field form, that’s 20 subscribers. Cut it to one field and conversion jumps to 6%—that’s 30 subscribers, a 50% lift.

    If you’re running paid traffic, every field costs you real money. A $10 CPM on 10,000 impressions is $100. If your landing page converts at 3%, you’re paying $3.33 per subscriber. Bump that to 5% and it drops to $2. Over a year, that’s hundreds or thousands of dollars depending on scale.

    Most platforms report form abandonment, but not field-level abandonment. If you want to see where people drop off, use Hotjar or Microsoft Clarity and watch session recordings. You’ll see people type an email, pause at the “Company” field, and leave.

    When more fields make sense

    There are exceptions. If you’re running a high-ticket funnel—consulting, enterprise software, $2,000+ courses—you want friction. A five-field form filters out tire-kickers and signals intent. Your goal isn’t volume; it’s quality.

    If you’re offering a lead magnet that’s segmented by use case—”Download the SaaS pricing guide” vs. “Download the agency pricing guide”—you need to know which one they want. But that’s still one extra field, not three.

    If you’re required to collect consent checkboxes for GDPR or sector-specific compliance, you’re stuck with them. But don’t add more optional fields on top of mandatory ones.

    Test it yourself

    Run a 50/50 split test for two weeks. Clone your signup page, remove every field except email, and send half your traffic to each version. Most email platforms let you A/B test signup forms directly—MailerLite and Beehiiv both support it natively.

    Track conversion rate, not just subscriber count. If your traffic fluctuates week to week, raw numbers will mislead you.

    If you don’t have enough traffic to get statistical significance in two weeks—say, under 200 visitors—run it for a month. Don’t flip-flop based on three days of data.

    Want more breakdowns like this? Subscribe to One Two Three Send and get one operator-focused article every day—no fluff, just the technical details that matter.

    Heads up — some links in this article are affiliate links. If you sign up through them, we may earn a small commission at no extra cost to you. We only recommend tools we use ourselves.