Docs
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
- Confirm the free One Two Three Send plugin is installed and active.
- Plugins → Add New → Upload Plugin → pick
one-two-three-send-pro.zipfrom the welcome email → Install Now → Activate. - Configure each feature in Newsletter → Settings: Payments, Email Provider (now with extra options), Archive.
Stripe paywall — full setup
In Stripe
- Dashboard → toggle Test mode on while you set up.
- Developers → API keys — copy the publishable key (
pk_test_...) and reveal-then-copy the secret key (sk_test_...). - 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. - Set the product’s statement descriptor (e.g.
YOURDOMAIN.COM, max 22 chars) so card statements identify your charges. - 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
- Newsletter → Settings → Payments.
- Paste the publishable key, secret key, webhook signing secret.
- Paste the monthly price ID. Optionally paste the annual and founder price IDs.
- Set free trial days (optional), success URL, cancel URL.
- Save.
Test the flow
- Subscribe a test email to your free list.
- Create a test newsletter, mark it Paid, send.
- The test email should receive a teaser + Subscribe button.
- Click Subscribe — Stripe Checkout opens. Use card
4242 4242 4242 4242, any future expiry, any 3-digit CVC. - Stripe fires
checkout.session.completedwebhook → the subscriber’s row inwp_otts_subscribersflips tosubscription_type=paid,subscription_status=active. - 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


