LogPulse / integrations
Add a changelog widget to Ghost in 2 minutes
Turn shipped work into updates your Ghost users actually see. Add a <15kb, zero-dependency widget with unread badges, markdown release notes, emoji reactions and dark mode—without rebuilding your site.
- 1
Create your workspace and first release
Sign up for LogPulse, choose a workspace slug and publish an update. The example uses acme: replace it with your own workspace slug before publishing.
- 2
Open Ghost Admin → Settings → Advanced → Code injection → Site footer
Paste the embed into Site footer and save. Use site-wide code injection rather than a single post's code injection.
- 3
Publish and verify on your live site
Visit the published homepage and an individual post to verify that the widget is available in both places. Open the widget, read an update and check the unread badge. Your hosted changelog lives at /your-workspace and your roadmap at /your-workspace/roadmap on the LogPulse origin.
Your installation code
Replace acme with your workspace slug. Install one loader only; the custom-trigger example below replaces the default embed, rather than adding another copy.
<script src="https://release-ripple-roadmap.lovable.app/widget.js" data-workspace="acme" data-mode="popover" data-position="bottom-right" data-theme="auto" async></script>Use your own What's new button
Give a real button the ID whats-new and connect data-trigger to it. In a framework, add the same data-trigger attribute to your loader and render the button in your component. Keep the target present when the widget initializes.
<button id="whats-new" type="button">What's new</button>
<script src="https://release-ripple-roadmap.lovable.app/widget.js" data-workspace="acme" data-mode="popover" data-position="bottom-right" data-theme="auto" data-trigger="#whats-new" async></script>Prefer the JavaScript API?
Initialize only after the script loads. The manual example is an alternative to the automatic loader.
<script src="https://release-ripple-roadmap.lovable.app/widget.js" data-manual async
onload="LogPulse.init({ workspace: 'acme', mode: 'popover', theme: 'auto' })"></script>
<button type="button" onclick="if (window.LogPulse) LogPulse.open()">What's new</button>
<!-- After the script loads: LogPulse.close() or LogPulse.toggle() -->Common questions
More ways to connect
Less setup. More shipping.
Give your next release an audience.
Up to 10 releases and 100 subscribers, with the ⚡ Powered by LogPulse badge. Pro is €12/month or €99/year.