Newsletter templates

Newsletter templates

Pro plugin feature. Templates give your daily edition a structured layout instead of the plain-prose default — a dated masthead, a sensory opener, a feature article with subhead, named sub-sections with eyebrow labels, a referral prompt, and a styled footer.

Where to find it

Newsletter → Templates. Menu entry only appears once the pro plugin is active.

Newsroom — the shipped template

Editorial daily-edition format inspired by the Love Netherlands / Picardi master format. The structure, top to bottom:

  1. Dated masthead — today’s date and your brand name, centred above a thin rule.
  2. Italic opener — “Dear [audience],” followed by 2–3 sensory sentences setting today’s mood. Serif font (Georgia / Iowan Old Style). Rotates each issue — never the same opener twice in a row.
  3. Feature article — large headline, italic one-sentence subhead/dek, 2–4 paragraphs of body, a “Read the full story” call-to-action.
  4. Three named sub-sections — each with an uppercase eyebrow label (e.g. TACTIC, READER QUESTION, FROM THE ARCHIVE), a sentence-case heading, 60–100 words of body, a verb-led CTA.
  5. Referral prompt — “Know someone who would like this?” forward CTA in a cream-coloured callout.
  6. Footer — site name, unsubscribe link.

Style

  • Headings sans-serif, navy, 800 weight, slight negative letter-spacing.
  • Eyebrow labels uppercase, light grey, 1.5px letter-spacing, 700 weight, with a thin top rule.
  • Italic body uses Georgia / Iowan Old Style, 17–18px, line-height 1.7.
  • Brand accent colours: navy #1a2744, orange #FF6B1A, cream #fff4eb, link blue #1a6ac2.

Generating with a template

  1. Newsletter → Templates.
  2. Pick a template (Newsroom is the only one shipped — your custom templates appear here too).
  3. Set tone, length, optional topic / focus.
  4. Click Generate with template. Claude is called with the template’s structured prompt; the response is parsed into Subject + body.
  5. Draft opens in the editor like any other newsletter. Subject line is set, body contains the full structured HTML, sub-section CTAs have placeholder # hrefs for you to fill in.

Per-newsletter template selection

The chosen template is stored in _otts_template post meta. The free plugin’s Newsletter → New Newsletter page still produces plain (unstyled) drafts; only drafts created from Templates carry the template marker.

Send-time rendering

The HTML body in post_content uses semantic class names (otts-opener, otts-feature-title, otts-eyebrow, otts-cta etc.). At send time, the pro plugin hooks otts_render_for_subscriber at priority 5 and wraps the body in the template’s styled email shell — masthead, brand-coloured CSS, footer. Plain-template (or no-template) newsletters use the free plugin’s default shell.

Editing template drafts

Drafts open in the standard WordPress visual editor. The HTML structure is visible — eyebrow headings, sub-section bodies, CTA links — and you can edit text, swap CTAs, reorder paragraphs. Avoid stripping the class attributes on tags (otts-opener, otts-eyebrow, etc.) because the send-time renderer keys off them. If you remove a class, the affected element falls back to default styling.

Voice rules baked into the prompt

  • British English throughout
  • No emoji
  • No “ultimate / epic / must-read / game-changer / unleash”
  • No “in this issue” boilerplate
  • Vary the opener every issue — Claude is told never to start two issues the same way
  • Sub-section CTAs are verb-led (“Read more”, “See the breakdown”, “Try it yourself”)

To override these rules for your own brand, write a custom template (next section) or extend the directive via your Site Context manual description.

Adding custom templates (developers)

Subclass OTTS_Pro_Template_Base and call OTTS_Pro_Templates::register() at plugins_loaded. Implement four methods:

  • slug() — unique key, e.g. digest
  • label() — human-readable name shown in the dropdown
  • description() — one-paragraph explanation
  • build_prompt( array $args ) — return the full Claude prompt for your template structure
  • render_email( string $content_html, WP_Post $post, array $subscriber ) — wrap the stored HTML in your styled email shell

Once registered, your template appears in Newsletter → Templates and works the same way as Newsroom.

Next: Auto Content.

Plugin screenshots

Newsletter Templates page — the bundled Newsroom and Travel templates.
Newsletter Templates page — the bundled Newsroom and Travel templates.
Custom Templates list.
Custom Templates list.
Editing a custom template — sections JSON + colour pickers.
Editing a custom template — sections JSON + colour pickers.