AddThisFeature

Newsletter Archive

Turn sent email issues into browsable web pages that new readers can find and read.

moderate Content & Publishing

What it adds

A public archive of past newsletter issues, each with its own permanent page and a subscribe path.

What your agent is told to do

5
  1. 1

    Store the sent version of each issue rather than regenerating it. An archive built by re-rendering a template will drift the moment the template changes, and old issues will stop matching what subscribers actually received.

  2. 2

    Convert the email markup to web markup on the way in: strip the table scaffolding, the fixed pixel widths, and the inline styles that only exist to survive an email client, and render the result in the app's normal article styles.

  3. 3

    Reuse the app's existing publishing states rather than adding a second one. An issue should move from sent to archived through the same Draft and Publish States machinery the rest of the content uses.

  4. 4

    Give each issue a stable URL, a title, an excerpt, and a published date, and wire those into the existing SEO Setup so archived issues can be indexed and shared.

  5. 5

    Do not archive every issue automatically. Sends aimed at a single segment, a win-back list, or an internal test must default to unlisted and require an explicit decision to publish.

Edge cases it handles

8
  • Email markup renders badly as a web page. Nested layout tables, fixed 600-pixel widths, and spacer images produce a cramped column with horizontal scroll on a phone unless they are stripped during conversion.
  • Personalisation tokens must be resolved or removed before publishing. An archive page reading as a greeting to a first name that no longer has a recipient, or worse showing the raw placeholder, tells every visitor the page was not checked.
  • Issues sent to a narrow segment can contain pricing, offers, or account details meant for that segment only. Default those to unlisted and require someone to opt them into the public archive.
  • Tracking and redirect links expire once a campaign closes, leaving archive readers clicking through to a dead redirector. Rewrite outbound links to their final destinations when archiving.
  • Backfilled issues arrive out of sequence. Order the archive by the date the issue was sent, not the date the record was created, or an issue imported last week will sit at the top of the list.
  • The unsubscribe footer, the view-in-browser link, and the physical mailing address belong in the email, not on the web page. Strip them and replace them with a subscribe control.
  • Embedded images hosted by the sending platform can disappear. Copy them into the app's own storage at archive time rather than hotlinking.
  • An issue unpublished after the fact must stop resolving and stop appearing in feeds and sitemaps, not merely be hidden from the index page.

Definition of done

9
  • Every archived issue has a permanent URL, a title, an excerpt, and a send date.
  • Archived pages render in the app's article styles with no email layout tables and no horizontal scroll at 320px.
  • No personalisation placeholder or unresolved token appears in any published issue.
  • Segment-targeted sends are unlisted until someone explicitly publishes them.
  • Outbound links in archived issues resolve without passing through an expired tracking redirect.
  • The archive lists issues by send date, including issues imported after later ones.
  • Each archive page offers a way to subscribe.
  • The feature matches the existing design system.
  • No existing functionality is broken.

Related features

How it works

  1. 1

    Copy the link

    Grab the Markdown instruction URL for this feature.

  2. 2

    Give it to your AI

    Paste it into Claude Code, Cursor, v0, Lovable — whatever you build with.

  3. 3

    It inspects, then implements

    Your agent reads your existing app first, then adds the feature to fit it.

Works with your stack

These instructions are written to adapt. They tell the agent to detect your framework, match your existing design system, and reuse what you already have — rather than assuming a particular stack.

Need it tighter than that? Customize the feature and tell it exactly what you're running.