Author: onetwothreeadmin

  • Social media scheduling tools charge per profile—here’s the math

    Social media scheduling tools charge per profile—here’s the math

    Social media scheduling tools charge per profile—here's the math
    Photo by Shutter Speed on Unsplash

    Social media scheduling tools advertise their pricing per user or per month, but the real cost driver is hidden one line down: connected social profiles. Connect three Twitter accounts, two Instagram profiles, and a LinkedIn page, and you’ve just burned through six profile slots—often before you’ve scheduled a single post.

    Most solo operators discover this the hard way when they hit a tier ceiling or get an upgrade prompt halfway through onboarding. Here’s how the billing actually works, what counts as a profile, and when it makes financial sense to consolidate or split your setup.

    How profile-based pricing works

    A “profile” is any individual social media account you authorize the scheduling tool to post to. That means:

    • Each Twitter/X account = 1 profile
    • Each Instagram account = 1 profile (even if it’s a business account linked to the same Facebook page)
    • Each Facebook page = 1 profile
    • Each LinkedIn personal profile = 1 profile
    • Each LinkedIn company page = 1 profile
    • Each Pinterest board set = 1 profile
    • Each TikTok account = 1 profile

    Most tools in the $15–$30/month tier cap you at 5–10 profiles. Publer‘s base plan allows 5 profiles for $12/month; Buffer’s Essentials tier gives you 3 channels for $6/month per channel; Hootsuite starts at 10 profiles for $99/month. If you run a personal brand, a side project, and a client account, you’re already at 9–12 profiles depending on how many networks each presence spans.

    The pricing jumps aren’t linear. Going from 10 to 15 profiles often doubles your monthly cost, and tools don’t prorate—if you need 11 profiles, you pay for the 15- or 20-profile tier.

    What actually counts as separate profiles

    Instagram business accounts linked to Facebook pages still count as two separate profiles in most tools, even though Meta treats them as a paired entity. If you manage both the Instagram account and its parent Facebook page, that’s two slots.

    LinkedIn personal profiles and company pages are always separate, even if you’re the sole admin of the company page. Scheduling to both burns two profiles.

    Twitter/X accounts are straightforward: one account = one profile. But if you run a brand account and a founder account, that’s two.

    Some tools treat Pinterest differently. A few count your entire Pinterest presence as one profile; others count each board you schedule to separately. Check the tool’s FAQ before connecting Pinterest—it’s the billing wild card.

    Threads accounts, as of mid-2026, are starting to appear as standalone profiles in newer tools. If your tool added Threads support recently, expect it to count separately from Instagram, even though they share a login.

    When to consolidate vs. pay for more profiles

    If you’re managing a personal brand and one side project across four networks (Twitter, LinkedIn, Instagram, Facebook), you’re at 8 profiles. Consolidating down to three networks drops you to 6 profiles, which might slide you into a cheaper tier and save $10–$20/month.

    The calculus changes if those extra profiles generate revenue. A client account that pays $500/month justifies the $15 tier bump. A side project Instagram with 800 followers and no monetisation path doesn’t.

    Splitting tools is sometimes cheaper than upgrading. If you need 12 profiles, paying for two separate tools at the 5-profile tier ($12/month each = $24 total) often beats a single tool’s 15-profile tier at $39/month. The tradeoff: you lose unified analytics and have to check two dashboards.

    One non-obvious trick: if you only post to certain profiles sporadically, disconnect them between campaign bursts. Most tools let you reconnect profiles without losing historical post data. A quarterly LinkedIn company page update doesn’t need to occupy a profile slot year-round.

    Profile limits and team growth

    Profile caps bite hardest when you add a team member who brings their own accounts. A VA with their own Instagram and Twitter presence can add 2–4 profiles to your tool overnight, pushing you into the next tier even if they’re only scheduling for you 10 hours a week.

    Some tools separate user seats from profile counts; others bundle them. Buffer charges per channel but allows unlimited users per account. Publer charges per profile and allows 1–10 users depending on tier. Hootsuite charges for both users and profiles, but scales the profile limit with user count.

    If you’re hiring contractors who manage their own social accounts, ask whether they can bring their own scheduling tool login instead of adding their profiles to yours. You lose some workflow visibility, but you avoid the tier jump.

    Profile-based pricing isn’t going away—it’s the revenue model that funds these tools’ API costs and storage. But understanding the math before you connect a seventh account saves you from surprise billing and forces a useful question: which profiles actually matter?

    What’s your profile count across tools right now? Hit reply and let me know if you’ve found a billing structure that actually works for multi-project operators.

    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.

  • Google Search Console filter logic: combining AND vs. OR operators

    Google Search Console filter logic: combining AND vs. OR operators

    Google Search Console filter logic: combining AND vs. OR operators
    Photo: John Poyser via Wikimedia Commons (CC BY-SA 2.0)

    Google Search Console lets you stack filters to narrow down query, page, country, and device data. But the way it combines multiple conditions isn’t intuitive—and if you’re used to spreadsheet filter logic or SQL, you’ll get surprising results the first time you try to isolate a segment.

    The interface offers two combination modes: “Filter by AND” and “Filter by OR.” The labels sound clear. In practice, they behave differently depending on whether you’re filtering within the same dimension or across different ones.

    Same dimension: OR is the only option that works

    If you want to see data for two specific queries—say, “WordPress caching” and “WordPress CDN”—you’d think you could add both as separate query filters and choose AND to show rows matching both. You can’t. When you add multiple filters to the same dimension (queries, pages, countries, devices), Search Console forces OR logic even if you select AND.

    Why? A single search impression can’t satisfy two different query strings simultaneously. A click either came from “WordPress caching” or “WordPress CDN,” never both. So AND would return zero rows. Google’s interface quietly overrides your selection and treats same-dimension filters as OR.

    This trips up operators who want to exclude certain queries while viewing others. You can’t add a “Query contains ‘caching’” filter and a “Query does not contain ‘plugin’” filter and expect AND logic to show caching queries that aren’t about plugins. Both filters apply to the query dimension, so Search Console ORs them—you’ll see every caching query plus every query that doesn’t contain “plugin,” which is almost your entire dataset.

    Different dimensions: AND and OR work as labeled

    When you filter across different dimensions—one filter on queries, another on pages, a third on country—the AND/OR toggle behaves as expected.

    Example: You want to see how the query “email deliverability” performs on your /guides/postmark-setup page in the United States. Add three filters: query exactly matches “email deliverability,” page exactly matches your URL, country exactly matches USA. Set the combination mode to AND. You’ll get rows that satisfy all three conditions.

    Switch to OR, and you’ll see every impression that matches any of the three: every “email deliverability” query across all pages and countries, every impression on that Postmark guide regardless of query, and every US impression regardless of query or page. The dataset explodes.

    For cross-dimension filtering, AND is almost always what you want. OR is useful when you’re trying to compare performance across segments—like traffic from the US or the UK combined, filtered to a specific landing page.

    The non-obvious workaround: use regular expressions for exclusions

    If you need to exclude certain query patterns while keeping others, don’t stack multiple query filters. Use a single filter with a regular expression that combines inclusion and exclusion logic in one pattern.

    Say you want queries containing “WordPress” but not “theme” or “plugin.” Instead of three separate filters, use one: set the filter type to “Custom (regex)” and enter wordpress(?!.*(theme|plugin)). The negative lookahead excludes rows matching your unwanted terms without triggering Search Console’s forced OR behavior.

    Regular expressions aren’t exposed prominently in the filter dropdown—select “Custom (regex)” under the query filter type menu. The interface doesn’t validate your regex in real time, so test patterns in a regex tester before applying them to avoid silent failures.

    When filter combinations cost you accurate attribution

    Stacking too many filters—especially across queries and pages—can shrink your sample size below Search Console’s anonymization threshold. Google suppresses rows when impression counts fall under ~10 to protect user privacy. If your AND filter combination is too narrow, you’ll see “(not set)” or missing rows, even though the traffic exists.

    This happens most often when you filter by long-tail queries (low volume) AND specific pages (also low volume) AND a narrow date range. Broaden one dimension—expand the date range to 28 days, or widen the query filter to “contains” instead of “exactly matches”—and the data reappears.

    If you’re debugging attribution or trying to confirm whether a specific query drives traffic to a specific page, export the full dataset as a CSV and filter locally in a spreadsheet. The export includes rows that fall below the UI threshold, though Google still suppresses some for privacy.

    Want to catch more tool-behavior nuances like this? Subscribe to One Two Three Send for weekly breakdowns of how online-business software actually works—no fluff, just the mechanics that matter.

  • Stop refreshing Stripe—affiliate networks delay payouts by design

    Stop refreshing Stripe—affiliate networks delay payouts by design

    Stop refreshing Stripe—affiliate networks delay payouts by design
    Photo by Fahim Junaid on Unsplash

    You check your affiliate dashboard. The clicks are there. The conversions are confirmed. The revenue number updates in real time. But the money doesn’t hit your account for another 60 days.

    This isn’t a bug. It’s how affiliate networks are built—and understanding the gap between “earned” and “paid” changes how you budget, forecast, and pick which programs to join.

    Why affiliate networks hold payments

    Most affiliate programs operate on net-30, net-60, or net-90 payment terms. That means if you generate a sale on August 1, the network pays you 30, 60, or 90 days after the end of the month in which the sale occurred—so September 30, October 30, or November 1 at the earliest.

    The delay isn’t arbitrary. Networks wait because:

    • Refund windows: Many products allow 14-, 30-, or 60-day returns. Networks withhold payment until the refund window closes to avoid clawing back commissions later.
    • Fraud detection: Payment processors and affiliate platforms use the delay to identify patterns—chargebacks, coupon abuse, cookie-stuffing—that invalidate commissions.
    • Cash flow smoothing: The merchant doesn’t pay the network immediately either. The delay synchronizes inbound and outbound cash.

    For SaaS affiliate programs, the lag can stretch even further. Annual subscriptions sometimes hold first-month commissions until the customer passes 60 or 90 days active, ensuring the sale wasn’t fraudulent or immediately refunded.

    How payment timing varies by program type

    Not all affiliate programs use the same clock. Here’s what to expect:

    Self-hosted platforms: Tools like Easy Affiliate (WordPress) and Rewardful (Stripe-native) let merchants set their own terms. Default is often net-30, but some operators push to net-60 to pad working capital.

    Marketplace networks: Amazon Associates pays roughly 60 days after month-end. Impact and ShareASale default to net-30 but vary by merchant. PartnerStack is often net-60 for SaaS.

    Direct partnerships: If you negotiate a private affiliate deal, payment terms are negotiable—but expect net-30 as the starting point unless you have leverage or volume.

    The fastest-paying programs are usually membership platforms or newsletters using Stripe-native tools like Rewardful, where the merchant can configure near-real-time payouts. But even then, most leave a 14-day buffer to catch refunds.

    How to forecast when you’ll actually get paid

    The mistake most operators make: treating dashboard revenue as cash in hand. It’s not. It’s a promise to pay, subject to refunds, fraud checks, and the network’s payment schedule.

    Here’s how to model it:

    Track three dates per sale: Conversion date, commission confirmation date, and scheduled payout date. Most dashboards show the first two; you have to calculate the third yourself.

    Build a rolling 90-day cash forecast: Use a spreadsheet with columns for each week. Drop expected payouts into the week they’ll actually arrive, not the week you earned them.

    Flag minimum payout thresholds: Many networks (Amazon, Impact, CJ) only pay when you hit $50–$100 in commissions. If you’re earning $40/month from a program, your first payment might take three months—even on a net-30 schedule.

    Watch for holds on new accounts: Some networks extend the payment window for your first 1–3 payouts. ShareASale, for example, holds first payments longer to establish trust.

    When to drop a program over payout terms

    A high commission rate matters less if cash flow timing breaks your budget. Here’s when to walk:

    Net-90 with a high refund rate: If the product has a 30-day trial and the network waits 90 days post-month-end, you’re looking at 120+ days to cash. That’s a loan you’re giving the merchant.

    Rolling holds without disclosure: Some programs add “additional review” holds without warning. If payouts are routinely late beyond stated terms, leave.

    Threshold + long terms: A $100 minimum payout on net-60 terms means slow earners might wait six months for their first check. That’s fine for side income, but not if affiliate revenue pays your hosting bill.

    Conversely, if you’re choosing between two similar programs, payout speed can be the tiebreaker. A 10% commission paid net-30 beats 12% paid net-90 if you need cash flow predictability.

    Want to compare payout structures across platforms before you commit? Subscribe to One Two Three Send—we track terms, thresholds, and timing for the tools online operators actually use.

    The affiliate dashboard is not your bank account. Treat it like accounts receivable: earned, but not yet liquid. Build your budget around payment dates, not conversion dates, and you’ll never be surprised when the money’s late.

  • ConvertKit vs. MailerLite vs. Beehiiv: landing page builders compared

    Most newsletter platforms now bundle landing page builders alongside their email tools. The pitch is compelling: skip the WordPress plugin maze or the monthly Carrd subscription and build your signup page where your subscribers live.

    But the feature sets vary wildly. Some platforms give you a drag-and-drop canvas with custom code access. Others lock you into three templates and call it a day. If you’re choosing a platform partly based on landing page capability—or wondering whether to migrate—here’s what ConvertKit, MailerLite, and Beehiiv actually offer in 2026.

    ConvertKit: functional but rigid

    ConvertKit’s landing page builder uses a template system with limited layout flexibility. You pick from roughly a dozen pre-built designs, swap the headline and image, adjust colors, and publish to a convertkit.com subdomain or your own custom domain.

    The editor is intentionally constrained. You can’t rearrange sections or add custom HTML blocks. Form fields are tied to your ConvertKit account, so multi-step opt-ins or conditional logic require workarounds using their visual automation tool.

    What it does well: Speed. You can ship a decent-looking page in under ten minutes. The templates are mobile-responsive by default, and the form-to-subscriber pipeline is instant—no webhook delays or API keys to configure.

    Where it falls short: Customization. If your brand requires a specific layout—hero image on the right, testimonial grid below the fold—you’re out of luck unless that exact template exists. There’s no CSS panel, no custom code injection, and no A/B testing at the page level (only at the form level).

    Pricing note: Landing pages are included on all ConvertKit plans, starting at $25/month for up to 1,000 subscribers.

    MailerLite: drag-and-drop with design latitude

    MailerLite offers a block-based builder that feels closer to a lightweight page builder than a form wrapper. You drag in text blocks, images, buttons, countdown timers, and embedded videos. Each block has spacing, alignment, and styling controls.

    You can add custom HTML and CSS if you need it, which makes MailerLite the most flexible option here for operators comfortable tweaking code. The platform also supports A/B testing at the page level—two headlines, two hero images, winner determined by conversion rate.

    What it does well: Design freedom without requiring a separate tool. If you want a two-column layout with a form on the left and social proof on the right, you can build it in fifteen minutes. The custom domain setup is straightforward: add a CNAME record, verify, done.

    Where it falls short: The template library is smaller than ConvertKit’s, and the drag interface can feel finicky when nesting blocks inside containers. If you’re not design-confident, you’ll spend more time fiddling with padding than writing copy.

    Pricing note: Free plan supports landing pages for up to 1,000 subscribers. Paid plans start at $10/month and add A/B testing, custom HTML, and removal of MailerLite branding.

    Beehiiv: built for growth operators, priced accordingly

    Beehiiv’s landing page builder sits somewhere between ConvertKit’s rigidity and MailerLite’s flexibility. You get templates, block-level editing, and the ability to embed custom code—but the real differentiator is integration with Beehiiv’s referral and monetization tools.

    Landing pages can display referral progress bars, show subscriber counts as social proof, and integrate with Beehiiv’s Boost network for cross-promotion. If you’re running a growth-focused newsletter and want the landing page to pull double duty as a referral hub, Beehiiv is the only platform here that supports it natively.

    What it does well: Growth mechanics. The referral milestone display, the subscriber count badge, and the optional “Powered by Beehiiv” removal all cater to operators treating their newsletter as a serious business. The analytics dashboard shows page views, conversion rate, and referral source attribution in one view.

    Where it falls short: Cost. Landing pages are included on all plans, but the free tier caps you at 2,500 subscribers and includes Beehiiv branding. The Scale plan ($42/month) is where you unlock custom domains, remove branding, and access A/B testing. If you’re just starting out, that’s steep compared to MailerLite’s free option.

    Who should use which

    Pick ConvertKit if you want to ship a signup page fast, don’t need layout control, and already use ConvertKit for email. The landing page builder won’t wow anyone, but it won’t slow you down either.

    Pick MailerLite if you’re design-comfortable, want A/B testing without paying ConvertKit prices, or need the flexibility to inject custom code for tracking pixels or embedded widgets. It’s the best value here for solo operators on a budget.

    Pick Beehiiv if your newsletter strategy includes referral programs, cross-promotion, or monetization features that require tight integration between the landing page and the platform. You’ll pay more, but the growth tools justify it if you’re past the hobbyist stage.

    One last note: none of these builders rival a dedicated tool like Carrd or Webflow for pure design capability. But if you’re optimizing for speed and operational simplicity—one login, one billing relationship, one support queue—the built-in option usually wins.

    Reply with the platform you’re using and whether the landing page builder actually ships for you. I’m curious how many operators still reach for WordPress or a standalone tool despite these built-in options improving every year.

    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.

  • WordPress database backups: snapshot frequency vs. disk cost

    WordPress database backups: snapshot frequency vs. disk cost

    WordPress database backups: snapshot frequency vs. disk cost
    Photo by Woliul Hasan on Unsplash

    Most WordPress operators set a backup schedule once and forget it. Daily snapshots sound safe. Hourly feels safer. But backup frequency compounds fast—and if you’re running on managed WordPress hosting or a VPS, you’re paying for every copy stored.

    The question isn’t whether to back up. It’s how often you need to, what retention window actually protects you, and when snapshot frequency starts costing more than the risk it mitigates.

    Backup frequency changes your storage footprint

    A typical WordPress database for a content site with 500 posts, 2,000 comments, and standard plugin metadata runs between 15 MB and 50 MB. If you’re running WooCommerce, memberships, or forum software, double or triple that.

    Hourly backups with 30-day retention mean 720 snapshots per month. At 30 MB per snapshot, that’s 21 GB of backup storage. Most managed hosts allocate 10–20 GB of backup space before charging overage fees—usually $0.10 to $0.25 per GB per month.

    Switch to daily backups with the same retention, and you drop to 30 snapshots: 900 MB total. The difference is $2 to $5 per month for a small site, but $20+ if your database crosses 200 MB.

    Backup plugins like UpdraftPlus and BackWPup let you set different intervals for database vs. files. Your database changes every time someone comments, subscribes, or places an order. Your theme files don’t. Splitting the schedule—hourly database, weekly files—cuts storage costs without losing transaction-level recovery.

    Retention windows protect different failure modes

    Thirty-day retention is a convention, not a requirement. What you’re protecting against determines how far back you need to go.

    If you’re worried about a bad plugin update or a botched migration, you need snapshots from the last 48 hours. Anything older than a week is archaeological. A 7-day retention window with hourly backups gives you 168 recovery points and costs one-quarter the storage of a 30-day window.

    If you’re worried about silent data corruption—broken automation, spam injection, or a membership plugin quietly deleting records—you need longer retention, but you don’t need high frequency. Weekly backups kept for 90 days let you spot patterns and roll back months without paying for hundreds of hourly snapshots.

    The hybrid approach: hourly backups kept for 7 days, plus one weekly backup kept for 12 weeks. That’s roughly 180 snapshots instead of 720, and it covers both rapid rollback and long-term forensics.

    Incremental vs. full snapshots: what your plugin actually stores

    Not all backup plugins store full copies every time. Incremental backups save only the database rows that changed since the last snapshot. UpdraftPlus, BlogVault, and most enterprise WordPress backup tools support incremental mode.

    For a content site publishing twice a week, an incremental backup after the first full snapshot might be 500 KB instead of 30 MB. Over a month, that shrinks your storage footprint by 80% or more.

    The tradeoff: incremental backups depend on the chain. If snapshot #4 is corrupted, you can’t restore from snapshot #10 without it. Some plugins automatically store a weekly full backup alongside incrementals to break the dependency chain. Check your plugin’s settings—most don’t enable this by default.

    When to pay for more frequent backups

    If you’re processing transactions, taking payments, or running time-sensitive campaigns, hourly backups are worth the cost. Losing six hours of WooCommerce orders or sponsor sign-ups isn’t a storage-cost discussion—it’s a revenue-loss discussion.

    If you’re publishing a content site with no e-commerce and infrequent comments, daily backups are enough. Your exposure window is the time between backups, and for most solo operators, a day of republishing is tolerable compared to the compounding cost of storing 720 snapshots you’ll never use.

    One non-obvious tell: check your WordPress database activity log (if your host provides one, or install Query Monitor for a week). If 95% of your write queries happen during your publishing window—say, Tuesday and Thursday mornings—you don’t need constant snapshots. Schedule backups for right after you publish, and drop frequency the rest of the week.

    What breaks when you skimp

    The biggest failure mode isn’t missing a backup window. It’s discovering your backups don’t restore.

    Twice a year, test a restore to a staging environment. Download a snapshot, spin up a local WordPress instance or a staging server, and import it. If your backup plugin stores files and database separately, make sure both pieces actually reconnect. I’ve seen operators keep 90 days of database snapshots that restored to a blank site because the file backup was misconfigured.

    Second most common break: your backup plugin times out mid-snapshot because your host limits PHP execution to 60 seconds and your database takes 90 to export. This fails silently unless you check logs. Solution: switch to a plugin that chunks exports (UpdraftPlus and BackWPup both do this), or move to host-level backups if your provider offers them.

    Want more infrastructure breakdowns like this? Subscribe to One Two Three Send—we cover the WordPress tooling, hosting gotchas, and cost optimizations that solo operators actually run into.

  • Claude’s Projects feature: when to group chats vs. start fresh

    Claude’s Projects feature: when to group chats vs. start fresh

    Claude's Projects feature: when to group chats vs. start fresh
    Photo by Brecht Corbeel on Unsplash

    Claude‘s Projects feature lets you bundle related chats under a single workspace with shared context. Instead of re-pasting the same background information into every new conversation, you load it once at the project level and every chat inside inherits it.

    For solo operators juggling client briefs, editorial calendars, or product documentation, it’s a way to stop copy-pasting setup prompts. But the feature has edge cases that aren’t obvious until you hit them.

    How Projects actually work

    When you create a project in Claude, you get two things: a custom instruction field (up to 150,000 characters) and a collection of conversations that all reference that instruction set.

    The custom instruction field is where you load context that doesn’t change often—brand voice guidelines, product specs, audience definitions, style rules, or a content brief template. Every chat you start inside that project treats the custom instruction as invisible preamble. You don’t see it in the chat window, but Claude does.

    Each conversation still has its own thread history. Projects don’t merge chats—they just give them a shared foundation.

    Pricing-wise, Projects are available on Claude Pro ($20/month) and Team plans ($30/user/month). The feature isn’t on the free tier.

    When to group chats in one project

    Projects make sense when you’re working on a defined scope with consistent context. A few scenarios where grouping pays off:

    • Client work with recurring briefs. Load the client’s brand guide, target audience, and tone preferences once. Start a new chat each time you draft an email sequence, landing page, or blog post. You avoid re-explaining who the client is every time.
    • Newsletter editorial planning. Drop your content pillars, audience persona, and past performance notes into the project instruction. Use separate chats to brainstorm individual issues, outline series, or workshop subject lines.
    • Product documentation. If you’re writing help docs or onboarding flows for a SaaS tool, load the feature list and UI terminology as project context. Each chat becomes a different doc or tutorial, but Claude stays consistent on naming and structure.

    The common thread: stable context, variable tasks.

    When starting fresh beats grouping

    Projects aren’t always the right move. If context shifts between tasks, a shared instruction field creates drag instead of efficiency.

    Examples where separate projects—or no project at all—work better:

    • Multiple clients or brands. If you’re a freelancer managing three clients, don’t try to cram all three brand voices into one project. Create one project per client, or skip projects entirely and paste the relevant brief into each standalone chat.
    • Exploratory research vs. execution. If you’re using Claude to explore a topic before you commit to a direction, a project’s fixed context can anchor you too early. Start a regular chat, figure out your angle, then build a project once the scope is clear.
    • Short, one-off tasks. If you need a quick regex pattern, a subject line A/B test, or a single email rewrite, the overhead of setting up a project isn’t worth it. Just open a chat and go.

    Projects shine when repetition is expensive. If you’re not repeating context, don’t add structure.

    The non-obvious tip: token limits apply to the whole project

    Here’s the part that catches people: Claude’s context window includes everything—the custom instruction, the full chat history, and your new prompt. On Claude 3.5 Sonnet, that window is 200,000 tokens (roughly 150,000 words).

    If your project’s custom instruction is 50,000 tokens and you’ve been working in the same chat for a while, you can hit the ceiling faster than you expect. When that happens, Claude starts dropping early parts of the conversation to stay within limits.

    The fix: start a new chat inside the project when threads get long. The project context persists, but the individual chat history resets. You keep the shared foundation without dragging around a 30-message thread about last week’s draft.

    Most operators don’t monitor token counts until something breaks. If Claude starts “forgetting” details you mentioned earlier in a thread, that’s your signal to branch into a fresh chat.

    Who this feature is actually for

    Projects work best for operators with defined, recurring workflows—freelancers with repeat clients, solo founders managing a single product’s content ecosystem, or small teams collaborating on a shared editorial calendar.

    If your work is exploratory, ad hoc, or spans too many contexts to consolidate, the feature adds friction. It’s a tool for operators who’ve already standardized their process and want to stop re-typing the same setup every time they open Claude.

    Using Claude for content work? Reply and tell us what you’re loading into project instructions—we’re tracking what solo operators actually automate vs. what stays manual.

    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.

  • Medium’s paywall import tool: how it handles canonical URLs

    Medium’s paywall import tool: how it handles canonical URLs

    Medium's paywall import tool: how it handles canonical URLs
    Photo: Deanmarcco via Wikimedia Commons (CC BY-SA 4.0)

    If you’re running a content business and republishing on Medium for extra reach, you’ve probably used the import tool. It’s meant to pull in a story from your site, preserve the canonical tag pointing back to your original, and let you reach Medium’s audience without tanking your SEO.

    That’s the pitch. Reality is messier—especially when the Medium Partner Program paywall is involved.

    How the import tool is supposed to work

    Medium’s story importer lives at medium.com/p/import. Paste in your original URL, hit import, and Medium pulls in the HTML, strips most formatting, and adds a canonical link element in the story’s head pointing back to your domain.

    Google sees the canonical, treats your site as the source of truth, and Medium becomes a syndication channel. You get distribution without splitting ranking signals.

    That works fine when the imported story is published as a free, public post. The canonical tag stays intact. Google can crawl both. No problem.

    What changes when you add the paywall

    The moment you tick the box to make an imported story eligible for Medium’s Partner Program—putting it behind the metered paywall—Medium’s handling of the canonical tag shifts.

    For logged-out users and non-members, Medium still shows the story preview and preserves the canonical link in the HTML. But for Googlebot and other crawlers that can access paywalled content (Medium allows limited crawling for indexing), the canonical tag remains, but the story itself is now gated in a way that changes crawl priority and indexability signals.

    In practice, Google often still respects the canonical and doesn’t index the Medium version as the primary result. But operators have reported cases where a paywalled Medium import begins to rank separately—especially if the original post is on a lower-authority domain, or if the paywall causes Google to treat the Medium version as distinct content due to access restrictions.

    There’s no official documentation from Medium clarifying crawl behavior for paywalled imports. Their public support docs say the importer “preserves canonical tags,” but don’t address what happens when the Partner Program paywall is enabled.

    When canonical drift actually matters

    If you’re importing to Medium purely for the Partner Program revenue and your original post already ranks well, canonical drift is mostly a non-issue. Your site keeps its position, Medium earns you a few dollars in read time, and you move on.

    It becomes a problem in two scenarios:

    • Your site has low domain authority. If Medium’s domain strength outweighs yours, Google may start treating the paywalled import as the preferred result, especially if the canonical tag is present but the content diverges (Medium’s paywall preview vs. your full post).
    • You’re importing frequently and at scale. If you’re cross-posting dozens of articles, you risk creating a shadow content library on Medium that competes with your own site in long-tail search. Even if canonicals are set correctly, the sheer volume of Medium URLs in the index can dilute click-through to your domain.

    The workaround: delay the import

    The cleanest approach is to let your original post index and gain traction on your own site first. Wait 30 to 60 days, then import to Medium and enable the paywall.

    By that point, Google has already crawled, indexed, and likely ranked your original. The canonical tag on the Medium import reinforces the existing signal rather than creating ambiguity.

    If you’re importing immediately after publishing, consider leaving the Medium version outside the paywall for the first two weeks. Publish it as a free post with the canonical intact, let Google confirm the relationship, then add it to the Partner Program later. Medium lets you toggle paywall status post-publication without breaking the import.

    One more thing: Medium’s importer occasionally fails to pull in the canonical tag at all, especially if your site uses JavaScript rendering or non-standard HTML structures. Always check the imported story’s page source after publishing. If the <link rel="canonical"> is missing, you’ll need to contact Medium support or manually add a noindex tag to the Medium story via their settings (though that kills Partner Program eligibility).

    Want more technical breakdowns of online-business tools? Subscribe to One Two Three Send and get one in your inbox every week—no fluff, just the mechanics that matter.

  • Productivity templates break when team size changes—here’s when

    Productivity templates break when team size changes—here’s when

    Productivity templates break when team size changes—here's when
    Photo: Lbeaumont via Wikimedia Commons (CC BY-SA 4.0)

    Most productivity systems are designed once—usually when you’re working alone—and then stretched to accommodate growth. A Notion template that worked perfectly for tracking your own content calendar starts glitching when you add a freelance writer. A Trello board that handled your client projects fine suddenly becomes unmanageable when you bring on a VA.

    The problem isn’t the tool. It’s that productivity templates encode assumptions about who is doing the work, and those assumptions rarely survive contact with collaboration.

    Where solo templates fail first

    The earliest friction point is usually permissions. A template built for one person assumes full access to everything. When you add a second person, you’re suddenly deciding what they can see, edit, or delete—and most templates don’t have a permission structure baked in.

    In Notion, this shows up as database views that expose client financials to a contractor who only needs to see content deadlines. In Airtable, it’s a base where every table is visible when you only wanted to share one. In Google Sheets, it’s the choice between view-only access (which blocks useful filters) or edit access (which lets someone accidentally nuke a formula).

    The second breaking point is notification logic. Solo templates assume one inbox. Add a collaborator and suddenly you’re both getting pinged for every update, or worse—neither of you is, because the automation was hardcoded to a specific email address that’s no longer monitored.

    Zapier workflows are especially prone to this. A Zap that creates a task in your personal Todoist when a form is submitted works great until you want that task to route to whoever is on client duty that week. The workflow doesn’t know how to decide, so it keeps sending everything to you.

    The hidden cost of per-seat pricing

    Collaboration doesn’t just break templates—it changes cost structure. Tools that were free or cheap for solo use often jump in price the moment you add a second seat.

    Notion’s free tier supports unlimited personal use but costs $10/month per member for teams. Airtable’s free plan allows collaborators but caps automations and advanced features that multi-person workflows depend on. ClickUp, Asana, and Monday all follow similar patterns: generous for one, expensive for three.

    This creates a perverse incentive to share logins instead of adding proper seats—which works until someone changes a personal setting that affects the shared view, or until two people try to work in the same doc simultaneously and edits start conflicting.

    When to rebuild vs. patch

    If you’re adding one occasional contractor, patching is usually fine. Duplicate your solo template, strip out the sensitive views, and share a limited version. Accept that you’ll manually route some tasks.

    But if you’re moving from solo to a consistent two- or three-person operation, rebuilding is faster than patching indefinitely. Start with access roles: define what each type of collaborator needs to see and do, then structure databases and boards around those roles from the ground up.

    In Notion, that means using database filters and permissions to create role-specific views of the same underlying data. In Airtable, it’s using interfaces instead of sharing the base directly. In Trello, it’s separating boards by access level instead of trying to use one master board with selective card assignments.

    For automation, replace hardcoded destinations with dynamic routing. If you’re using Zapier, add a lookup step that checks a team roster or schedule before assigning a task. If you’re using Make (formerly Integromat), use routers to send notifications or tasks to different people based on metadata like client type or project phase.

    The overlooked fix: simpler tools

    Sometimes the better move is stepping down in complexity. A multi-table Airtable base with six automations might serve you better as a shared Google Sheet with one column for “assigned to” and a weekly sync call.

    Slack threads can replace a lot of task-management theater. A shared Dropbox folder with a naming convention beats a DAM system you’ll spend eight hours configuring for access roles.

    Complexity has a collaboration tax. Every layer of automation, every custom view, every conditional filter is another thing that has to be explained, maintained, and debugged when someone new touches it.

    Before you rebuild your entire productivity stack for collaboration, ask whether the system actually needs to accommodate real-time multi-person access, or whether you’re just adding people to a workflow that should stay in one person’s hands with periodic handoffs.

    Hit reply if you’ve rebuilt a productivity system after adding your first collaborator—I’d love to hear what broke first.

  • 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.

  • Attribution windows: 7-day versus 30-day

    Attribution windows: 7-day versus 30-day

    Attribution window settings: why 7-day click matters more than 30
    Photo by Catarina Carvalho on Unsplash

    Attribution windows determine how long after someone clicks a link you still get credit for their conversion. Most platforms default to 30 days for clicks, 1 day for views. That sounds generous—until you realize it’s hiding the signal you actually need.

    For content-driven online businesses, the gap between click and conversion tells you more than the conversion itself. A 30-day window lumps together immediate intent and vague awareness. A 7-day window isolates the traffic sources that drive action, not just browsing.

    What attribution windows actually control

    An attribution window is the lookback period a platform uses to assign credit. If someone clicks your affiliate link on Monday and buys on Wednesday, you get the commission—as long as Wednesday falls within the window.

    Analytics tools, ad platforms and affiliate programmes each use their own default attribution windows, and some let you change them. Check each tool’s documentation for the current defaults.

    The mismatch creates confusion. Your analytics might show 200 conversions attributed to a blog post, while your payment processor shows 80. The difference isn’t missing data—it’s window drift.

    Why shorter windows surface better decisions

    A 30-day attribution window inflates the value of top-of-funnel content. Someone reads your SEO guide in July, bookmarks it, forgets about it, then subscribes in August after seeing a LinkedIn post. The guide gets credit. That’s not wrong, but it’s not actionable.

    When you tighten to 7 days, you see which content drives near-term intent. A tutorial that converts within a week is fundamentally different from an evergreen pillar post that nudges people over months. Both have value, but if you’re deciding what to write next, the 7-day data tells you what creates momentum.

    Here is the pattern to look for, as an illustration rather than a result of ours: a long “ultimate guide” can top the list at 30 days because it builds awareness, while a short troubleshooting article tops the list at 7 days because it brings people who are ready to act. If that shows up in your data, it tells you what to write next.

    Where to adjust attribution settings

    Google Analytics 4: the attribution settings are under Admin, in the data display section (see Google Analytics help for the current steps). Compare reports at a shorter and a longer lookback window.

    Meta Ads Manager lets you compare attribution settings in the reporting view; check Meta’s Business Help Centre for the current options.

    Affiliate dashboards (Amazon, Impact, CJ): the window is usually set by the merchant. You can often export raw click and conversion timestamps and calculate your own 7-day attribution in a spreadsheet, which shows which content is worth updating and which is coasting on old backlinks.

    Payment processors: if you pass UTM parameters into metadata fields, you control the attribution logic in your own reporting. A small automation or script that logs source and timestamp lets you pivot by window in a spreadsheet.

    When 30 days still makes sense

    Brand-new sites benefit from longer windows early on—you don’t have enough conversions to segment cleanly, and you want to reward any content that contributes. Once you have enough conversions to segment cleanly, tighten to 7 days for operational decisions, but keep a 30-day dashboard around for investor updates or year-end reviews.

    High-ticket products or B2B services genuinely have longer consideration cycles. If you sell expensive courses or annual plans, a 30-day (or longer) window reflects reality. Even then, run both: a short window to find high-intent content and a long one to credit awareness.

    Content syndication or guest posts often show delayed conversions—someone discovers you on Medium, then subscribes two weeks later via your site. A 30-day window captures that. But if most of your traffic is owned (SEO, email, direct), shorter windows cut through the noise faster.

    One thing to try this week: Pull your top 10 attributed traffic sources in Google Analytics at 30-day click attribution. Then switch to 7-day and compare. Anything that drops out of the top 10 is awareness, not conversion. Anything that stays is working. Double down there.

    Want more analytics breakdowns like this? Subscribe to One Two Three Send—we dig into the tooling decisions solo operators actually face, one focused article at a time.