Troubleshooting

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_cron every 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.