Ghosler enables easy sending of newsletters using your own email and SMTP credentials.
This is ideal when you are just starting out and have a small to moderate user base.
It is helpful for bypassing the limitations of the hardcoded Mailgun setup and supports many analytical features, along with the capability to use multiple email accounts.
- Support for Multiple Email Accounts: Distribute newsletters through various email accounts, dividing member counts accordingly.
- Tracking Email Performance: Monitor email deliverability and open rates.
- Customize Newsletter: You can customize the newsletter via Settings, or go full on by providing a custom template.
- Paid & Free Members Management: Ghosler shows a Subscribe button to members who do not have access to paid content.
- URL Click Tracking in Emails: Ghosler supports tracking URL clicks in the email, providing more insights on how your members are interacting with added links.
- Newsletter Post Feedback: Gain insights into reader preferences with detailed feedback on each post, including likes, dislikes, and overall sentiment.
- Ghost Native Widgets: Ghosler supports major Ghost widgets (cards) for your newsletter, out of the box.
See: #17 for more info. - Custom Email Subjects: Ghosler allows using customised email subject for your newsletter.
See: #28 for more info. - Multiple Newsletters: Ghosler supports managing multiple newsletters! Publish a post & select the newsletter to
associate with & instantly send emails.
See: #32 for more info.
Pre-requisites: Node 18^
& pm2
installed.
-
Install the
CLI
-npm install -g ghosler-cli
-
Go to the directory you want to install
Ghosler
, make sure its empty & run below command -ghosler install
Now navigate to main site & edit required settings after completing the Setup instructions below.
- Access Ghost Dashboard: Navigate to your Ghost dashboard.
- Create Custom Integration:
- Go to Settings > Advanced > Integrations.
- Click on Add Custom Integration.
- Name the integration (e.g., Newsletters) and click Add.
- Copy the Admin API Key displayed.
- Configure Ghosler:
- Fire up the Ghosler front-end by going to
https://your-domain.com
.- Default
PORT
is2369
- Default login credentials are - Username:
ghosler
, Password -admin
- Default
- Click on Settings button.
- Click on Ghost Settings & add your Ghost Site Url & Admin API Key.
- Add mail configurations in Emails section.
- Change other settings you wish to and click Save Changes.
Upon clicking Save Changes, Ghosler will automatically create a new
Webhook
in the Ghost Integration (if it doesn't already exist). This webhook enables Ghosler to receive information about posts when they are published.
- Fire up the Ghosler front-end by going to
- Only publishing a Post: If you want to only publish a post & not send it via email, just add the
#GhoslerIgnore
tag to a post. The internal tag is created for you on the initial setup.
Now as soon as you publish your Post, it will be sent to your Subscribers who have enabled receiving emails.
Ghosler defaults to using a debug configuration file, config.debug.json
, if it exists. The structure of this file is
identical to that in config.production.json file.
Local Builds: Make sure to execute -
npm run buildcss
to generate a minified css if you changed any .ejs
files.
If you don't, CSS based changes won't take effect. This also makes sure that the final CSS bundle includes only what's
needed.
And use below to run Ghosler
-
npm run dev
You can use below for combining the above commands -
npm run cleanstart
If you want to customize the newsletter template even more, follow the steps -
- Create a custom-template.ejs in the root directory.
- Customize it as you like, take a look at pre-defined template for reference.
- That's it! Ghosler will use the new template for preview & sending newsletter.
- Rename the file to anything if you don't want to use the custom template.
See this issue, and this comment which mentions an article written by @viriatusX for containerizing Ghosler.
Please note that due to my limited experience with Docker, I haven't tested this yet. For any issues, feel free to add comments on the above linked issue.