Newsletter Archive
Turn sent email issues into browsable web pages that new readers can find and read.
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
What your agent is told to do
5-
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
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
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
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
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
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
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
Reading Progress Bar
Reading Progress Bar
A slim bar showing how far through an article the reader has scrolled.
What it does
A thin progress indicator pinned to the top of article pages, tracking scroll through the body text.
How it works
- 1 Measure progress against the article body element only. Take the top and bottom of the prose, not the height of the document.
- 2 Recalculate the body height when the page reflows: late-loading images, expanded sections, embeds, and font swaps all change the total after first paint.
- 3 Reuse the app's existing Progress Indicator System tokens for the bar's colour and height rather than introducing a new accent, and keep it visually distinct from Route Change Progress so the two are not confused.
Copy the prompt
No account needed
Add this feature to my app:
https://addthisfeature.com/x/reading-progress-bar
Press Kit
Press Kit
Give journalists your logos, colours, screenshots, and boilerplate on one public page.
What it does
A public page of downloadable brand assets, colour values, screenshots, and approved boilerplate copy.
How it works
- 1 Serve every asset through the app's existing file download path so that access, headers, and content types are handled the same way as everywhere else, rather than linking directly at raw storage.
- 2 Store the correct format and media type per asset and derive the filename and extension from the stored record, never from the label an author typed.
- 3 Present each logo variant on the background it is designed for, and reuse the app's theme-aware asset switching so the page shows the right variant in light and dark rather than a washed-out logo on the wrong panel.
Copy the prompt
No account needed
Add this feature to my app:
https://addthisfeature.com/x/press-kit
FAQ Section
FAQ Section
Add an expandable list of questions and answers to any page, in the order you choose.
What it does
A reorderable set of question and answer pairs rendered as an accessible expand-collapse list on any page.
How it works
- 1 Build it on real disclosure semantics with a button that toggles its own panel, so keyboard and screen reader users get the behaviour for free.
- 2 Give every question a stable anchor derived from its text and keep it after edits, so a support reply can link straight to one answer.
- 3 Allow answers to contain formatted text, lists, and links, and reuse the app's existing content editor and its sanitisation rules rather than accepting raw markup.
Copy the prompt
No account needed
Add this feature to my app:
https://addthisfeature.com/x/faq-section
How it works
-
1
Copy the link
Grab the Markdown instruction URL for this feature.
-
2
Give it to your AI
Paste it into Claude Code, Cursor, v0, Lovable — whatever you build with.
-
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.