Docs
Troubleshooting
Common issues and how to fix them. If your problem isn't here, email us.
Generator returns “Claude API key not configured”
Newsletter → Settings → AI — paste your key from console.anthropic.com, save. The placeholder shows •••••• when set; if it shows sk-ant-..., the key field is empty.
Test email never arrives
- Resend: confirm your sending domain is verified in the Resend dashboard. Unverified domains are blocked. Check the From email matches a verified domain.
- SMTP: most failures are wrong port or wrong encryption. Try port 587 with TLS, or 465 with SSL. Check your host's firewall allows outbound on those ports.
- Inspect the Newsletter → Newsletters list — failed sends record the error in
wp_otts_sends.error_log.
Signup form returns “invalid_nonce”
You're running an old version. v1.0.4+ replaced the nonce with a honeypot field for cache-safety. Update to the latest free plugin and clear your page cache.
Edit page shows “Sorry, you are not allowed to access this page”
Bug fixed in v1.0.1 — earlier versions hid the edit submenu in a way that broke the page handler on some hosts. Update to the latest free plugin.
Welcome email never arrives for new signups
- Newsletter → Settings → Welcome Email → confirm Send welcome email is on.
- Confirm an email provider is configured and the test email worked (Settings → Email Provider → Send test email to admin).
- Subscribe a test email from the public homepage form, not from the admin. Check spam / promotions.
Scheduled sends never fire
WP-Cron only runs when someone visits your site. On low-traffic sites the cron can sit idle for hours. Fix:
- Set up a real cron in your hosting control panel hitting
https://yoursite.com/wp-cron.php?doing_wp_cronevery 5 minutes. - If you see “Scheduled actions” plugins in your dashboard, they often replace WP-Cron with a more reliable scheduler.
Stripe webhook returns 400 invalid_signature
Almost always a mismatched signing secret. In Stripe → Developers → Webhooks → click your endpoint → Signing secret → reveal and copy the whsec_... string into Newsletter → Settings → Payments → Webhook signing secret. Save and resend the failed webhook from Stripe to verify.
Audit FAILs on a draft I want to send
The audit blocks auto-send when there is a FAIL but does not block manual sending. Click Send Now on the edit screen and it goes regardless. Better: address the failing check (subject line empty, malformed link, unresolved {first_name} placeholder) before sending.
Auto Content is generating off-topic articles
Edit the directive — be more specific about your topic categories and voice. The starter directive is intentionally generic. Add a “BANNED CONTENT” section listing things you never want to see (specific words, phrasings, formats). Generate one at a time with Generate now until the output reads right, then turn on the schedule.
Lead-magnet download link returns “Invalid link”
The signing key is derived from your WordPress AUTH_KEY constant. If you rotated AUTH_KEY (security plugins sometimes do this), every previously-issued link is invalidated. Subscribers can click any expired link to receive a fresh one automatically — the auto-refresh handler verifies the email matches an active subscriber before issuing.
“Settings → Payments” tab missing
Payments tab only appears when the pro plugin is active. If you have the pro zip but the tab is missing, check Plugins → Installed and confirm both One Two Three Send and One Two Three Send Pro show as active.
Next: For developers.