Author: onetwothreeadmin

  • The host that fixed our site at 11pm on a Sunday

    The host that fixed our site at 11pm on a Sunday

    TL;DR. BigScoots is a managed-WordPress host with the kind of proactive support most hosts only put in their marketing copy. We use them on every site we run.

    What is BigScoots?

    BigScoots is a US-based managed WordPress and managed VPS host. They’ve been around since 2010 — old enough to know what they’re doing, small enough that the support team actually knows your site by name.

    The pitch is simple: hosting that’s genuinely fast, with a 24/7 team that fixes problems you didn’t even know you had.

    What makes them different from every other “managed WordPress” host?

    Most managed hosts compete on a feature checklist — sites, storage, CDN, staging, backups. BigScoots checks those boxes too, but the real differentiator is proactive support. They watch your site, push performance fixes you didn’t ask for, and respond to problems before you notice them.

    Real things they’ve done for us without being asked:

    • Pushed a server-side caching tweak that took a slow page from 1.6 s to 280 ms.
    • Migrated a site from another host overnight, end-to-end on their side, zero downtime.
    • Fixed a broken plugin update at 11 pm on a Sunday — within 12 minutes of the alert firing.

    Why we recommend it for newsletter operators

    If you’re sending a newsletter from WordPress, every minute the site is down is a minute your subscribers see a broken signup form, a dead referral link, or an empty archive. The cost of bad hosting isn’t the $10 you save — it’s lost trust with the audience you spent years building.

    BigScoots is more expensive than budget hosts. It’s worth it.

    Bottom line

    If you’re new to WordPress and wondering where to host your first newsletter site, BigScoots is the easy answer. If you’re tired of fighting with cheap hosting that breaks every other week, it’s the upgrade. One of those decisions you make once and never have to revisit.

    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.

  • Notion’s AI autofill: when to use it and when it ruins your data

    Notion’s AI autofill: when to use it and when it ruins your data

    Notion added AI autofill to databases in late 2023, and it’s one of those features that looks brilliant in a demo but quietly wrecks your workflow if you don’t understand what it’s actually doing.

    The pitch is simple: Notion watches how you fill in database properties, then offers to complete the rest for you using pattern recognition and its AI model. It’s meant to save time on repetitive data entry—content calendars, client trackers, product roadmaps, that sort of thing.

    But autofill doesn’t just speed things up. It also makes assumptions. And when those assumptions are wrong, you end up with corrupted records that take longer to fix than if you’d entered everything manually.

    How autofill actually works

    Notion’s autofill pulls from three sources: the structure of your database, the content already in other rows, and its underlying language model’s general knowledge.

    If you’re filling in a content calendar and you’ve already logged five blog posts with categories like “SEO,” “monetisation,” and “hosting,” autofill will suggest categories for new rows based on the title or notes you’ve entered. If you type “How to optimise WordPress caching” into a new row, it’ll probably suggest “hosting” as the category.

    That’s useful when your database is consistent and your naming conventions are tight. It falls apart when your data is messy, when you use the same words to mean different things, or when you’re tracking anything that requires context Notion doesn’t have.

    The AI doesn’t understand your business. It understands patterns in text. If your database has irregular naming, overlapping categories, or nuanced distinctions that matter to you but aren’t obvious from the text, autofill will guess wrong more often than it guesses right.

    When to use it

    Autofill works best in databases with:

    • Repetitive, predictable patterns. Client intake forms, meeting notes, content calendars where the categories are stable and the naming is consistent.
    • Low stakes. If a wrong guess costs you five seconds to fix, autofill saves time. If it silently corrupts a financial tracker or product spec, it’s not worth the risk.
    • Text-heavy fields with obvious relationships. If you’re logging blog titles and Notion can reliably infer the category from the title, autofill will probably get it right 80% of the time. That’s a good trade.

    I use it for content idea backlogs where speed matters more than precision. I don’t use it for anything tied to revenue, client work, or product specs.

    When it ruins your data

    Autofill becomes a liability when:

    • Your database has overlapping or evolving categories. If “monetisation” sometimes means sponsorships and sometimes means courses, autofill will pick one arbitrarily and you won’t notice until weeks later.
    • You’re tracking anything with subtle distinctions. Client status (“warm lead” vs. “active conversation”), product stages (“spec’d” vs. “in development”), or anything where the difference matters but isn’t obvious from the row’s title or description.
    • Multiple people use the same database. Autofill learns from everyone’s input. If one person uses loose naming and another is strict, the AI will average out their habits and suggest garbage to both.

    I’ve seen operators lose entire afternoons cleaning up autofill mistakes in client trackers because Notion confidently filled in the wrong pipeline stage for 30 rows and no one noticed until invoices didn’t match expectations.

    How to control it

    You can toggle autofill per database. Open any database, click the ••• menu in the top right, then look for Autofill properties. Turn it off globally or disable it for specific properties.

    If you keep it on, spot-check the first 10–20 rows after Notion starts making suggestions. If it’s getting things wrong more than 20% of the time, turn it off for that property or that database.

    And if you’re working with a team, set a naming convention first. Autofill isn’t a substitute for clean data—it’s a shortcut that only works when your data is already consistent.

    One non-obvious tip: if you’re using autofill in a content calendar, create a separate “AI suggestion” property and let Notion fill that instead of overwriting your canonical category field. You can review suggestions in bulk, accept the good ones, and ignore the rest without risking your source of truth.

    Got a Notion workflow that’s slowing you down? Reply and tell me what you’re tracking—I’ll cover database setups and automation tricks in a future issue.

  • WordPress CDN settings: what actually needs to be cached

    WordPress CDN settings: what actually needs to be cached

    Content delivery networks promise faster page loads and lower server bills. But most WordPress operators flip the switch and trust the defaults—only to find checkout pages breaking, comment forms failing, or member dashboards showing stale data.

    The problem isn’t the CDN. It’s that most presets treat every WordPress site like a static blog. If you run anything interactive—memberships, WooCommerce, course platforms, paywalled content—you need to explicitly tell your CDN what not to cache.

    What should always be cached

    Start with the easy wins. These asset types are static, rarely change, and benefit most from edge caching:

    • Images, CSS, JavaScript — anything in /wp-content/uploads/, /wp-content/themes/, and /wp-content/plugins/ with file extensions like .jpg, .png, .css, .js, .woff2.
    • Publicly visible post and page content — the rendered HTML of non-logged-in pages. Cache for 1–4 hours if you publish frequently, 24 hours if you don’t.
    • RSS and Atom feeds — most readers poll these hourly. Cache for 30–60 minutes.

    Set a Cache-Control: public, max-age=3600 header for these. Most managed WordPress hosts and CDN plugins handle this automatically.

    What should never be cached

    These paths and query strings serve user-specific or time-sensitive data. Caching them breaks functionality or leaks private information:

    • /wp-admin/ and /wp-login.php — the dashboard and login screen. Always bypass.
    • Any URL with a query string containing ?add-to-cart=, ?edd_action=, ?nocache, or session tokens — these trigger actions or personalised views.
    • Checkout, cart, account, and membership pages — if you’re using WooCommerce, Easy Digital Downloads, MemberPress, or similar, create explicit CDN rules to bypass these slugs.
    • Comment forms and AJAX endpoints — /wp-comments-post.php and /wp-admin/admin-ajax.php must be dynamic.
    • Any page that reads cookies for logged-in state — if a page checks wordpress_logged_in_* cookies to show different content, don’t cache it.

    Most CDNs let you define cache bypass rules by URL path, query string, or cookie name. Use all three.

    The logged-in user problem

    WordPress sets a wordpress_logged_in_* cookie when someone signs in. If your CDN caches pages that check this cookie, logged-in users see cached, logged-out content—or worse, other users’ dashboards.

    The fix: configure your CDN to bypass cache entirely when any wordpress_logged_in_ cookie is present. Most managed hosts (Kinsta, WP Engine, Flywheel) do this by default. If you’re on a VPS or using Cloudflare, you’ll need to add this rule manually.

    If you run a membership site or paywalled newsletter archive, test this before launch. Log in, visit a member-only page, then open an incognito window and visit the same URL. If you see the same content, your CDN is leaking.

    The one setting that fixes most problems

    Most CDN misconfigurations come down to query strings. By default, many CDNs treat example.com/page and example.com/page?utm_source=twitter as different URLs—and cache both separately.

    This fragments your cache, wastes memory, and reduces hit rates. The fix: strip query strings before caching, unless the query string affects content (like ?p=123 or ?s=search).

    In Cloudflare, this is called “Query String Sort.” In Fastly, it’s “query string handling.” In WP Rocket or W3 Total Cache, it’s “ignore query strings.”

    Whitelist the query strings that do matter—typically p, page_id, s, and preview_id—and strip everything else.

    Testing your config

    After you set cache rules, test three scenarios:

    • Logged-out visitor — Pages should load from cache. Check response headers for X-Cache: HIT or CF-Cache-Status: HIT.
    • Logged-in user — Pages should not cache. Look for X-Cache: BYPASS or CF-Cache-Status: DYNAMIC.
    • Checkout or form submission — These must always be dynamic. If they cache, payments and signups will fail.

    Use your browser’s network inspector or a tool like WebPageTest to inspect headers. If you see HIT on a logged-in page, tighten your cookie rules.

    Most CDN problems aren’t speed problems—they’re config problems. Get these rules right once, and your site will be both faster and more reliable.

    Want more infrastructure deep-dives like this? Subscribe to One Two Three Send and get one operator-focused article every day—no fluff, no filler.

  • Stripe’s tax automation: how it works and when to turn it on

    Stripe’s tax automation: how it works and when to turn it on

    If you’re selling digital products, courses, or memberships, you’ve probably stared at Stripe’s Tax settings and wondered whether clicking “enable” would solve your compliance headaches or create new ones.

    Stripe Tax is a feature that calculates, collects, and (optionally) files sales tax, VAT, and GST on your transactions. It’s built into Stripe, so there’s no separate integration to maintain. But it’s not free, and it’s not always the right move.

    Here’s how it actually works, what it costs, and when you should turn it on—or leave it off.

    What Stripe Tax actually does

    Stripe Tax hooks into your payment flow and calculates the correct tax rate based on your customer’s location and what you’re selling. It supports over 40 countries and automatically updates rates when local laws change.

    When a customer checks out, Stripe adds the appropriate tax to the transaction total. That tax gets collected alongside the payment, and Stripe holds it separately from your payout balance.

    If you enable the filing service (called Stripe Tax Registration and Filing), Stripe will register your business in the jurisdictions where you hit economic nexus thresholds, file returns on your behalf, and remit the tax directly to the tax authorities.

    It covers VAT in the EU, UK, and other countries, GST in Australia, Canada, New Zealand, and Singapore, plus sales tax across U.S. states. It does not cover income tax, withholding tax, or import duties.

    Pricing: the cost structure you need to know

    Stripe Tax costs 0.5% of the transaction amount, capped at $5.00 per transaction. So on a $50 product sale, you pay 25 cents. On a $2,000 annual membership, you pay $5.00.

    That fee is charged on top of Stripe’s standard payment processing fees (typically 2.9% + 30¢ for card transactions).

    If you opt into the registration and filing service, Stripe charges an additional monthly fee per jurisdiction where they file on your behalf. In the U.S., that’s $50 per state per month. For VAT in the EU, it’s typically bundled under a single OSS (One-Stop Shop) registration, which costs around $100–$200/month depending on your setup.

    For a solo operator selling a $29/month membership in five U.S. states, you’re looking at $250/month in filing fees alone—before accounting for the 0.5% per-transaction charge.

    When to turn it on

    Stripe Tax makes sense in three scenarios.

    First: You’ve crossed economic nexus thresholds in multiple jurisdictions and you’re already required to collect and remit tax. If you’re manually tracking rates and filing returns, the 0.5% fee is likely cheaper than paying an accountant to do it—especially if your transaction volume is high and your average order value is low.

    Second: You’re selling globally and dealing with VAT in the EU or UK. The rates vary by country, change frequently, and the compliance burden is real. Stripe Tax’s automatic rate updates and OSS filing support can save you hours every quarter.

    Third: You’re scaling fast and don’t want tax compliance to become a bottleneck. If you’re adding new products, entering new markets, or growing past $100K in annual revenue, turning on Stripe Tax early means one less thing to audit later.

    When to skip it (or wait)

    If you’re just starting out and your revenue is under $50K/year, you probably don’t need it yet. Most U.S. states have economic nexus thresholds around $100K in sales or 200 transactions per year. Until you hit those numbers, you’re not required to collect tax in those states.

    If you’re only selling in your home state or a single jurisdiction, the 0.5% fee is a convenience charge for something you could handle with a spreadsheet and a quarterly check to your state revenue department.

    And if your average transaction value is very high—say, $5,000+ for a consulting package or enterprise license—the capped $5 fee per transaction adds up quickly. You might be better off working with a tax professional who charges a flat monthly retainer.

    One non-obvious tip: test it in test mode first

    Stripe Tax has a full-featured test mode. Before you enable it in production, create a test checkout with your actual product prices and simulate transactions from different locations—California, Texas, Germany, Australia.

    Check the tax amounts Stripe calculates. Compare them against your state or country’s published rates. Make sure the line items on the receipt match what your customers will expect to see.

    This is especially important if you’re using Stripe Checkout or Payment Links, where the tax line appears automatically. If your pricing page says “$99” but checkout shows “$108.17,” and your customer wasn’t expecting that, you’ll lose the sale. Better to know now and adjust your messaging.

    If you’re running a content-driven business and want more deep dives like this—on tools, infrastructure, and the mechanics of online revenue—subscribe to One Two Three Send. Every week, you’ll get one operator-to-operator breakdown of something that actually moves the needle.

  • How search intent shapes every content decision you make

    How search intent shapes every content decision you make

    Most solo operators treat search intent like a checkbox: informational, navigational, transactional, commercial. Check one, write the post, publish.

    But search intent isn’t a taxonomy exercise. It’s the single variable that should dictate your topic selection, content structure, word count, calls-to-action, and whether you even bother writing the piece at all.

    If you’re creating content to drive traffic—and you should be—understanding intent at a mechanical level changes everything about how you work.

    Intent determines whether the topic is worth your time

    A keyword with 2,000 monthly searches sounds appealing. But if the intent is navigational—people searching for a specific brand’s login page—you have no shot at ranking unless you are that brand.

    Similarly, a keyword with transactional intent (“buy running shoes online”) rewards e-commerce sites with product pages, reviews, and comparison tables. If you run a content site about marathon training, you’ll get crushed by Zappos and Nike, no matter how good your writing is.

    Before you invest hours in a piece, open an incognito window and search the term. Look at what’s ranking:

    • Are they all product pages? That’s transactional intent. You need a different content format or a different keyword.
    • Are they all listicles (“10 best…” or “Top tools for…”)? That’s commercial investigation intent. Searchers are comparing options before buying.
    • Are they long-form guides or explainers? That’s informational intent. You can compete with strong writing and structure.
    • Are they all brand homepages or login screens? That’s navigational. Move on.

    This ten-second audit saves you from writing content that Google will never rank, no matter how optimised your meta tags are.

    Intent dictates structure, not best practices

    Once you know intent, your content structure writes itself.

    For informational intent (“what is DNS propagation”), readers want a clear definition, how it works, and why it matters. They’re not looking for affiliate links to DNS tools in paragraph two. Keep it clean, educational, and thorough. Your monetisation comes later—through related posts, an email signup, or a secondary CTA at the end.

    For commercial investigation intent (“best WordPress hosting for small business”), readers are actively comparing. They want comparison tables, clear pros and cons, pricing transparency, and opinionated recommendations. This is where you can weave in affiliate partners like BigScoots without feeling salesy—because the reader came looking for a recommendation.

    For transactional intent (“buy Notion templates”), don’t bury the link. Put your product, download, or buy button above the fold. The reader already decided. Make it easy.

    Too many operators write the same article structure for every topic. That’s why their how-to guides underperform (too much fluff before the steps) and their product roundups don’t convert (too much explanation, not enough comparison).

    Intent changes how you measure success

    An informational post and a commercial post should not be judged by the same metrics.

    If you write “How to set up SPF records,” success is time on page, scroll depth, and whether readers click through to related content or your email signup. Affiliate clicks aren’t the goal. Education and trust are.

    If you write “Best email service providers for solo founders,” success is click-through rate to your affiliate links and whether readers land on pricing pages. Time on page is secondary. You’re not trying to teach—you’re trying to help someone decide.

    Mixing these up leads to bad editorial decisions. You start adding affiliate links to informational posts where they don’t belong, or you over-explain in commercial posts where the reader just wants a table and a verdict.

    Track intent-specific goals in Google Analytics 4 by tagging posts with custom dimensions (“intent: informational” vs. “intent: commercial”). Then filter your reports by intent type and see what’s actually working.

    Intent reveals content gaps no keyword tool will show you

    Once you internalise intent, you start seeing gaps in your content strategy that keyword research alone won’t surface.

    Example: you rank well for “what is email deliverability” (informational), but you have no content targeting “best email deliverability tools” (commercial investigation). That’s a conversion leak. People learn from you, trust you, then Google someone else’s affiliate roundup when they’re ready to buy.

    Or the inverse: you’ve written five affiliate-heavy tool comparisons, but you have no educational content explaining why someone needs the category in the first place. You’re competing for bottom-of-funnel traffic without feeding the top.

    The fix is simple: map your existing content by intent, then fill the gaps. Every commercial post should have a related informational post. Every informational post should link to a next-step commercial post or a signup.

    Want to see how other operators are structuring content for different intents? Reply to this email with a topic you’re struggling to rank for—I’ll break down the intent and what’s likely missing.

    Search intent isn’t theory. It’s the filter that makes every content decision—topic selection, structure, word count, CTAs—obvious instead of guesswork.

  • GA4’s traffic attribution window: why conversions appear, then vanish

    GA4’s traffic attribution window: why conversions appear, then vanish

    You check Google Analytics 4 on Monday morning. Your email campaign drove twelve conversions over the weekend. You screenshot it, add it to your monthly report, feel good about the numbers.

    You check again on Friday. Those same conversions? Now it says nine.

    GA4 didn’t glitch. It’s working exactly as designed—and if you don’t understand why, you’re probably making decisions on data that’s still moving.

    How GA4’s attribution window actually works

    Google Analytics 4 uses a default attribution window of 90 days for most conversion events. That means when someone converts, GA4 looks back up to 90 days to find the traffic source that should get credit.

    But here’s the part that catches people: that window runs in both directions.

    If someone clicks your email link on May 1st, then converts on May 15th, GA4 assigns that conversion to email. Simple enough.

    But if someone clicks a Google ad on May 20th and converts on May 22nd, GA4 will reassign that conversion to paid search—even though it already showed up in your email report two weeks ago.

    The conversion doesn’t disappear from your total count. It just moves from one source to another. GA4 applies last-click attribution by default, so the most recent traffic source within that 90-day window wins.

    This is why your historical reports shift. Numbers you exported last week might not match what you see today, because conversions are still being reattributed as new sessions come in.

    What this means for your reporting

    If you’re tracking channel performance—especially for email, social, or content campaigns—you need to wait longer than you think before calling a campaign’s results final.

    A newsletter you sent two weeks ago might still be gaining or losing conversions as readers click other sources before they buy. If you report on it immediately, you’re only seeing part of the story.

    Here’s what changes:

    • Email campaigns look better early, worse later. People click your email, browse, then return via organic search or a retargeting ad. Email gets the early credit, but loses it when they convert through a different channel.
    • Paid ads look worse early, better later. Someone discovers you organically, clicks around, then converts after seeing a Facebook ad. The ad gets the conversion—even though organic did most of the work.
    • Organic and direct traffic gain conversions over time. These are the channels people use when they’re ready to buy. They’ll pick up conversions that were initially attributed to email, social, or referral traffic.

    If you’re exporting monthly reports, wait at least 7–10 days after the month ends before pulling final numbers. For high-consideration products or longer sales cycles, wait 30 days.

    How to change the attribution window (and when you should)

    You can adjust the conversion attribution window in GA4’s admin settings. Go to Admin → Data display → Attribution settings, then change the lookback window for acquisition and engagement.

    Your options are 30, 60, or 90 days.

    Shorten it to 30 days if:

    • You sell low-ticket digital products where people decide quickly
    • You run time-sensitive promotions and need faster, more stable reports
    • You want your reports to settle sooner, even if it means losing some cross-channel context

    Keep it at 90 days if:

    • You have a longer sales cycle (courses, coaching, SaaS with trials)
    • You want to see the full path people take before converting
    • You’re okay with reports shifting for a few weeks after a campaign ends

    There’s no universally correct answer. The right window depends on how long it typically takes someone to go from first visit to conversion in your business.

    How to work with this, not against it

    Stop treating GA4 reports as static. They’re not. Conversions move between sources as attribution updates, and that’s not a bug—it’s how the system is designed to give you a fuller picture over time.

    If you need stable, immediate numbers—say, for a weekly team check-in or a sponsor report—pull data from your payment processor or CRM instead. Stripe, Gumroad, and ConvertKit all give you transaction data that doesn’t shift retroactively.

    Use GA4 for what it’s actually good at: understanding patterns across traffic sources over weeks or months, not locking down exact counts two days after a campaign.

    And if you’re comparing performance across channels, compare them at the same point in their attribution lifecycle. Don’t judge an email campaign’s results after three days and a Facebook ad’s results after thirty. Wait the same amount of time for both, or you’re not comparing the same thing.

    Want more pieces like this? One Two Three Send breaks down the tools, tactics, and trade-offs that solo operators actually deal with. No fluff, no filler. Subscribe here.

  • Facebook Ads Library: how to spy on competitors (and when it’s useless)

    Facebook Ads Library: how to spy on competitors (and when it’s useless)

    Meta’s Ads Library is the only place where you can see every active ad running on Facebook, Instagram, Messenger, and Audience Network. It’s free, public, and updated in real time. If you run paid social campaigns—or you’re thinking about starting—it’s the most underused competitive intelligence tool you’re not using.

    Here’s how to use it correctly, what it can’t tell you, and where it saves you real money.

    What the Ads Library actually shows

    Go to facebook.com/ads/library, pick a country, and search for any Page name or keyword. You’ll see every ad that Page is currently running, plus:

    • Creative variations (images, video, carousel)
    • Ad copy and headlines
    • Call-to-action button text
    • First published date (when the ad went live)
    • Platforms and placements (Facebook Feed, Instagram Stories, etc.)

    You won’t see targeting, budget, performance metrics, or cost per result for most ads. What you do get is the creative layer—the part most operators struggle with most.

    Three ways to use it before you spend a dollar

    Audit offer positioning. Search for competitors in your niche. Look at the ads that have been running longest—an ad that has been live for a long time may be doing its job, though that is a signal and not proof. What’s the core promise in the headline? What’s the first sentence of body copy? You’re not copying; you’re cataloging what’s survived budget scrutiny.

    For example, if four competitors lead with urgency (limited spots, closes Friday) and one leads with a specific outcome, that outlier is worth testing against your own urgency version.

    Map format trends by placement. Filter by platform. If you’re betting on Reels or Stories, see what successful advertisers in your category are actually running there.

    Reverse-engineer funnel shape. Look at the landing page URL in each ad (you have to click through). If a brand is running ten creatives and they all point to the same low-ticket offer page, that’s a direct-response play. If half go to blog posts and half to a lead magnet, that’s a nurture funnel. You’re seeing their acquisition strategy without a sales call.

    Where it’s useless (and costs you time)

    The Library won’t tell you if an ad is working. An ad running for six months might be break-even vanity spend, especially if it’s from a VC-backed brand. Longevity is a signal, not proof.

    It won’t show you who sees the ad. You can’t reverse-engineer audience targeting. If a competitor is profitable at $40 CPMs because they’re hitting warm traffic from a giant email list, you won’t know that. You’ll just see the creative and assume it works cold.

    And it’s terrible for local or B2B campaigns. If you’re selling SaaS to procurement managers or running ads for a three-location HVAC company, the sample size in the Library is too small. You’ll see one or two ads and draw the wrong conclusions.

    One workflow that saves money

    Before you brief a designer or write ad copy, spend 20 minutes in the Library. Search three competitors and one adjacent niche (same audience, different offer). Screenshot five ads. Note the format, headline structure, and CTA. Don’t copy. Use it as a creative brief.

    Then test your own angle against the pattern you found. If everyone’s using carousels, try video. If everyone leads with a question, lead with a number. The Library shows you the table stakes. Your job is to find the edge that isn’t there yet.

    If you’re running paid social and you’ve never opened the Ads Library, you’re guessing in a game where your competitors aren’t. It won’t replace testing, but it can shorten how long it takes you to learn what to test.

    Want to see how other operators are using paid and organic social together? Reply and tell us what you’re struggling with, and we’ll consider it for a future edition.

  • Loom’s async video workflow vs. live Zoom calls: when to record

    Loom’s async video workflow vs. live Zoom calls: when to record

    Most solo operators treat video communication as binary: either you schedule a Zoom call or you send a text message. But there’s a third option that’s quietly become infrastructure for small teams and consultants — async video tools like Loom.

    The question isn’t whether async video is useful. It’s when it replaces a live call without losing clarity, and when it just creates more work.

    When async video actually saves time

    Loom works best when the communication is one-directional with optional follow-up. That means:

    • Product walkthroughs or onboarding. If you’re showing a client how to use your system, a 4-minute Loom beats a 30-minute call. They can pause, rewatch, and ask clarifying questions async.
    • Feedback on creative work. Instead of writing “the CTA button needs more contrast,” you record your screen, talk through the issue, and show exactly what you mean. The recipient doesn’t need to be there.
    • Status updates or reporting. If you’re walking through analytics, project progress, or a content calendar, async video delivers context without requiring everyone to block 30 minutes.
    • Bug reports or technical issues. Showing what’s broken — cursor movements, console errors, page behaviour — is faster and clearer than writing it out.

    The pattern: you’re delivering information, not negotiating or brainstorming. The recipient needs to understand, not co-create.

    When live calls still win

    Async video breaks down when the conversation is two-way, ambiguous, or high-stakes.

    • Sales calls or discovery. You can’t read body language or adjust your pitch in real-time via Loom. Async video works for demos after a discovery call, not instead of one.
    • Conflict resolution or difficult feedback. Tone is hard to control in async video. If the message could be misread as critical or defensive, do it live.
    • Strategy or brainstorming. If the goal is to iterate on ideas together, async video adds latency without adding clarity. A 15-minute Zoom call beats three rounds of recorded back-and-forth.
    • Complex negotiations. Pricing discussions, contract terms, partnership structure — these need real-time give-and-take.

    The test: if the other person will need to ask three follow-up questions, just schedule the call.

    The hidden cost of async video

    Loom’s free plan caps videos at 5 minutes; the paid tier (Loom Business at $12.50/user/month when billed annually) removes the limit. But the real cost isn’t the subscription — it’s response latency and context-switching.

    When you send a 6-minute Loom, you’re asking the recipient to:

    1. Notice the notification
    2. Find 6 uninterrupted minutes
    3. Watch at 1x or 1.5x speed
    4. Decide whether to reply async or schedule a follow-up

    If they’re juggling client work or deep focus time, that Loom might sit unwatched for 48 hours. Compare that to a text message (skimmable in 15 seconds) or a scheduled call (pre-committed time).

    Async video works when the recipient has slack in their schedule. If they’re underwater, it becomes a new tab they feel guilty about.

    Loom vs. Zoom: the operator’s rubric

    Here’s the decision tree:

    Use Loom when:

    • You’re explaining something visual (UI, design, analytics dashboard)
    • The recipient doesn’t need to respond immediately
    • You’d otherwise write 8+ paragraphs with screenshots
    • You’re delivering information, not seeking consensus

    Use Zoom (or a phone call) when:

    • The topic is ambiguous or exploratory
    • You need to read tone or body language
    • The conversation will have multiple back-and-forth turns
    • The stakes are high (sales, conflict, contracts)

    Use neither — just text — when:

    • The message is under 3 sentences
    • It’s purely informational (link, date, yes/no)
    • You don’t need tone or visual context

    One non-obvious Loom tip

    Enable emoji reactions in your Loom settings (under Preferences > Video Settings). Viewers can drop a thumbs-up or checkmark at specific timestamps without needing to reply. For simple feedback loops — “Does this make sense?” or “Approve this approach?” — it’s faster than waiting for a written response.

    Also: enable auto-transcription (it’s on by default in paid plans). Recipients can skim the transcript before deciding whether to watch. That alone cuts response time in half for some people.

    Async video isn’t a Zoom replacement. It’s a text-message replacement for things that need a screen. Use it when you’d otherwise write a novel with screenshots. Skip it when the conversation needs to breathe.

    Want more workflow breakdowns like this? Subscribe to One Two Three Send — we compare tools, tactics, and trade-offs for operators running online businesses. No fluff, no listicles, just the decision-making rubric.

  • Perplexity Pro vs. ChatGPT Plus: how to choose

    Perplexity Pro vs. ChatGPT Plus: how to choose

    If you run a content business solo, an AI subscription may already be a line item, and you may only want to pay for one. ChatGPT Plus and Perplexity Pro both help with research. Their prices and plan limits change often, so check OpenAI’s pricing page and Perplexity’s Pro page for what each includes today. We have not run a long head-to-head test, so this is a way to choose, not a verdict.

    The core difference

    Perplexity is built around search: each query looks up sources and returns a cited answer. ChatGPT is built around conversation: it reasons, drafts and works with files you upload, and can search the web when you ask or when the tool decides to. That distinction matters more than the feature lists.

    When a search-first tool fits

    Choose it if most of your work is quick, cited answers: checking a claim, finding a source, comparing a handful of pages before you publish. The test is simple: open the sources it cites and check they say what the answer claims.

    When a conversation-first tool fits

    Choose it if most of your work is drafting, editing, outlining or analysing files you supply. Saved instructions and file upload help with recurring tasks such as reformatting interview notes or summarising a transcript.

    How to decide with your own work

    Take your last ten research tasks and sort them: how many needed a fast cited fact, and how many needed thinking through or drafting? Run a few of each through the free tier of both tools, check the sources by hand, and pay for whichever one you used for the tasks that cost you the most time.

    Neither tool replaces primary research. They summarise what is already published, so anything that needs original data, interviews or firsthand testing still needs you. What has your experience been? Reply and tell us which tasks justified a subscription.

  • WordPress Heartbeat API: what it costs you and how to tame it

    WordPress Heartbeat API: what it costs you and how to tame it

    If you’ve ever watched your WordPress hosting dashboard and wondered why your server CPU spikes every few seconds even when nobody’s actively editing a post, you’re looking at the Heartbeat API in action.

    The Heartbeat API is a core WordPress feature that creates a persistent connection between your browser and the server. It’s what lets you see “User X is currently editing this post” warnings, autosaves your draft every 15 seconds, and keeps your session alive when you leave a tab open for hours.

    It’s useful. It’s also chatty. And for solo operators running lean hosting setups, that chattiness has a real cost.

    What the Heartbeat API actually does

    Every 15 seconds by default, the Heartbeat API sends a request from your browser to your WordPress server. The server responds with any updates: post lock status, comment counts, plugin notifications, whatever’s changed since the last ping.

    That 15-second interval runs constantly while you have the WordPress admin open. If you’re editing a post, it’s checking for conflicts. If you’re on the dashboard, it’s refreshing widget data. If you have three tabs open and forgot about two of them, all three are pinging your server every 15 seconds.

    On a VPS with 2GB of RAM and a handful of plugins, this usually isn’t catastrophic. But it’s not free, either. Each heartbeat request consumes a PHP worker thread. If you’re running a lean hosting setup—shared hosting, a small cloud instance, or a server that’s already near capacity during traffic spikes—those threads add up.

    I’ve seen operators blame their cache plugin or their theme when the real culprit was eight browser tabs hammering the Heartbeat API while they edited a landing page.

    When to throttle it

    You don’t need to kill the Heartbeat API entirely. You just need to decide where the tradeoff between real-time updates and server load makes sense for your workflow.

    Throttle on the front end. The Heartbeat API can run on public-facing pages if a plugin or theme calls it. Most solo operators don’t need this at all. Disable it entirely for logged-out visitors.

    Slow it down in the admin. If you’re not collaborating in real time with another editor, you don’t need 15-second intervals. Stretching it to 60 seconds in the WordPress admin still gives you autosave protection and session continuity without the constant polling.

    Keep it active in the post editor. If you write long-form content or frequently step away mid-draft, autosave is worth the overhead. A 30-second interval here is a reasonable compromise.

    How to control it without a plugin

    The cleanest way to manage Heartbeat is with a small snippet in your theme’s functions.php or a custom plugin. Here’s what I use:

    add_action('init', 'custom_heartbeat_settings');
    function custom_heartbeat_settings() {
      // Disable on front end
      if (!is_admin()) {
        wp_deregister_script('heartbeat');
      }
    }

    add_filter('heartbeat_settings', 'adjust_heartbeat_interval');
    function adjust_heartbeat_interval($settings) {
      // Slow to 60 seconds in admin, 30 in post editor
      $settings['interval'] = is_admin() ? 60 : 30;
      return $settings;
    }

    This disables Heartbeat for all logged-out users, slows the admin dashboard polling to once per minute, and keeps the post editor at 30 seconds. Adjust the numbers based on your workflow.

    If you’d rather use a plugin, Heartbeat Control (free, in the WordPress repo) gives you a settings panel with the same options. It’s lightweight and doesn’t add cruft.

    What you’ll actually notice

    Throttling Heartbeat won’t magically make your site twice as fast. It’s a marginal win, not a transformation. But marginal wins compound, especially on shared hosting or small VPS plans where every bit of overhead matters.

    What you will notice: fewer unexplained PHP worker exhaustion errors during traffic spikes, slightly lower baseline CPU usage, and fewer “server busy” messages when you’re editing posts while a newsletter sends.

    If you’re running WordPress on a tight resource budget—single-core VPS, entry-level managed hosting, or a shared plan you haven’t outgrown yet—Heartbeat throttling is one of the first optimizations worth making. It costs you almost nothing in workflow convenience and buys back real server capacity when you need it.

    Got a hosting or performance question? Reply to this email or share what’s slowing your site down. We’ll cover it in a future issue.