Pro plugin

Pro plugin

The pro plugin is a separate companion zip that extends the free plugin. It is distributed by email to subscribers of the free daily newsletter at onetwothreesend.com — install the free plugin first, then drop the pro zip in alongside it.

What it adds

  • Stripe paywall — Free / Paid toggle on every newsletter. Free subscribers receive a teaser + Subscribe CTA on paid issues; paid active subscribers receive the full body. Webhook keeps subscription status in sync.
  • Additional email providers — Mailchimp (Mandrill Transactional), MailerLite, Brevo, Kit (ConvertKit). Adds a Provider settings panel for each.
  • Popup & slide-in forms — two new form types with time / scroll triggers and cookie-based frequency cap.
  • Full AI audit — Claude-backed extension to the basic audit. Adds five LLM checks: tone match, opening hook, structure, call-to-action strength, subject vs body match.
  • Public newsletter archive — opt-in /newsletters/ page listing every sent issue. Paid issues show a teaser to non-subscribers.
  • Open-rate reporting — 1×1 tracking pixel injected into every send, deduplicated per recipient.
  • Newsletter templates — Newsroom layout for daily editions: dated masthead, sensory opener, feature article with subhead and CTA, three named sub-sections, referral prompt, footer (separate doc).
  • Auto Content — directive-driven blog post generator (separate doc).
  • Enhanced scheduler — replaces the free scheduler. Runs editor pass + audit gate before any auto-send. Paid newsletters always held for manual approval.

Install

  1. Confirm the free One Two Three Send plugin is installed and active.
  2. Plugins → Add New → Upload Plugin → pick one-two-three-send-pro.zip from the welcome email → Install Now → Activate.
  3. Configure each feature in Newsletter → Settings: Payments, Email Provider (now with extra options), Archive.

Stripe paywall — full setup

In Stripe

  1. Dashboard → toggle Test mode on while you set up.
  2. Developers → API keys — copy the publishable key (pk_test_...) and reveal-then-copy the secret key (sk_test_...).
  3. Product catalog → Create product. Name it (e.g. “Paid weekly edition”), add a recurring monthly price, save. Copy the price ID (price_...). Optionally add an annual price and a founder price.
  4. Set the product’s statement descriptor (e.g. YOURDOMAIN.COM, max 22 chars) so card statements identify your charges.
  5. Developers → Webhooks → Add endpoint. URL: https://yourdomain.com/wp-json/otts/v1/stripe-webhook. API version: latest stable (e.g. 2026-04-22.dahlia). Events to listen for: checkout.session.completed, customer.subscription.deleted, invoice.payment_failed. After saving, copy the signing secret (whsec_...).

In WordPress

  1. Newsletter → Settings → Payments.
  2. Paste the publishable key, secret key, webhook signing secret.
  3. Paste the monthly price ID. Optionally paste the annual and founder price IDs.
  4. Set free trial days (optional), success URL, cancel URL.
  5. Save.

Test the flow

  1. Subscribe a test email to your free list.
  2. Create a test newsletter, mark it Paid, send.
  3. The test email should receive a teaser + Subscribe button.
  4. Click Subscribe — Stripe Checkout opens. Use card 4242 4242 4242 4242, any future expiry, any 3-digit CVC.
  5. Stripe fires checkout.session.completed webhook → the subscriber’s row in wp_otts_subscribers flips to subscription_type=paid, subscription_status=active.
  6. Re-send the same newsletter — that subscriber now receives the full body.

Going live

Switch Stripe to Live mode. Recreate the product + prices in live mode (test products do not carry over). Repeat the webhook setup for the live endpoint. Update the keys + price IDs in WordPress with their pk_live_... / sk_live_... / new live price IDs.

Newsletter archive

Newsletter → Settings → Archive → toggle on. Publishes /newsletters/ on your site, listing every sent issue (newest first). Individual issue URLs are /newsletters/{slug}/. Paid issues show a teaser to non-subscribers; paying subscribers reach the full body via a signed URL embedded in their copy of the email.

Open-rate reporting

Active by default once the pro plugin is installed. A 1×1 transparent GIF is injected into every outgoing email. When the recipient’s email client loads images, the pixel hits /wp-json/otts/v1/track/open/{newsletter_id}/{hash} and a row is recorded in wp_otts_opens. The hash is a salted HMAC of the subscriber email — no plaintext email in the URL. Duplicates are ignored (one open per recipient per newsletter).

Next: Auto Content.

Plugin screenshots

Visual Library — Claude Haiku tags every image so search ranks by relevance.
Visual Library — Claude Haiku tags every image so search ranks by relevance.
Affiliate Links — rewrite rules + sponsor block fields.
Affiliate Links — rewrite rules + sponsor block fields.
Payments — Stripe paywall keys.