TL;DR
Ghost 2.15.0 introduces a significant update to the members system with Stripe integration for subscriptions, improved API handling for members-only content, and enhanced HTML support for posts. This release focuses on improving the membership experience, API robustness, and fixing several key bugs including night mode and route filtering issues. The update also includes stricter validation for posts and tags, making Ghost more reliable for content creators while expanding its capabilities for membership-based publications.
Highlight of the Release
- New members subscription system with Stripe integration
- Built-in Zapier integration for the v2 Admin API
- Support for HTML as an input source for posts
- Improved handling of members-only content permissions
- Fixed filtering by primary_tag and primary_author in routes.yaml
- Fixed night mode when using API v2
Migration Guide
Required updated_at for Admin API v2
When updating a post or page using the Admin API v2, you must now include the updated_at field. This functions as a version control value and is required for collision detection. If you're using the Admin API v2 to update posts programmatically, ensure you're sending the current updated_at value with your update requests.
HTML Input Source Changes
If you're using the Ghost SDK for HTML to Mobiledoc conversion, note that due to JSDOM not supporting Node v6, the support for HTML conversion is now optional. The version for @tryghost/html-to-mobiledoc has been bumped and pinned in this release.
Database Schema Changes
This release adds a type column to the integrations table with the following types:
custom (default) - used by custom integrations added by users
builtin - used by built-in integrations that have their own UI
internal - used by "internal" integrations such as the scheduler
A migration will run to insert the builtin Zapier integration.
Upgrade Recommendations
This is a feature release that introduces significant improvements to the members system and API functionality. The upgrade is recommended for all users, especially those who:
- Want to implement paid memberships with Stripe
- Use Zapier for workflow automation
- Need HTML input support for posts
- Were affected by the fixed bugs (night mode, route filtering)
Before upgrading:
- Take a complete backup of your Ghost installation
- If you've customized your theme, check for any potential conflicts with the updated Casper theme (2.9.3)
- If you use the Admin API v2 programmatically, ensure you're prepared to include the
updated_at field when updating posts
The upgrade process follows the standard Ghost update procedure and should be straightforward for most installations.
Bug Fixes
Fixed Filtering in Routes
Fixed an issue where filtering by primary_tag or primary_author in routes.yaml wasn't working due to missing mappings.
Fixed Night Mode with API v2
Resolved an issue where night mode wasn't functioning correctly when using API v2.
Fixed Content Width with Embeds
The default Casper theme has been updated to version 2.9.3, which fixes a bug where embeds were overflowing the content width.
Fixed Validation Issues
- Added check for empty name for tags
- Fixed handling of duplicated authors
- Improved error handling for missing files in
/uploads
Fixed Random Test Deadlocks
Addressed issues with random test failures caused by deadlocks in the database when inserting posts in parallel with their relations (tags and authors).
New Features
Members Subscription System with Stripe Integration
Ghost now includes a complete subscription system for members with Stripe integration. This allows site owners to create paid membership plans and accept recurring payments directly through their Ghost site.
Built-in Zapier Integration
A new built-in Zapier integration has been added that works with the v2 Admin API. This integration makes it easier to connect Ghost with hundreds of other apps and services through Zapier without having to manually set up custom integrations.
HTML as Input Source for Posts
Added the ability to accept HTML as an input source for posts. When using the /posts endpoint, you can now include ?source=html in the query parameter along with html in the request payload to create or update posts using HTML directly.
Improved Members Content Permissions
The Content API has been updated to use members plans to determine content permissions. This refactors the hideMembersOnlyContent functionality into three stages and exports a paymentConfigured flag from the members service, allowing for more granular control over members-only content.
Security Updates
No specific security fixes were mentioned in this release.
Performance Improvements
Improved API Validation
Several improvements to API validation have been implemented:
- Skipped redundant 'all' validations for posts/tags endpoints that are now handled at the JSON Schema level
- Added stricter validation for post.authors by stripping relational fields
- Removed posts.tags.parent sanitation as parent and parent_id fields are now stripped in the /tags endpoint
Optimized Error Messages
Improved error messages for failed authorization, making it easier to diagnose and fix authentication issues.
Impact Summary
Ghost 2.15.0 represents a significant step forward in Ghost's evolution as a membership platform. The introduction of Stripe integration for subscriptions transforms Ghost from a simple blogging platform into a complete solution for creators who want to monetize their content through memberships.
The improvements to the Content API for handling members-only content provide more granular control over what content is accessible based on membership plans. This, combined with the new members signup page and improved UI for member popups, creates a more polished experience for both site owners and members.
For developers, the addition of HTML as an input source offers more flexibility when creating or updating posts programmatically. The built-in Zapier integration opens up countless automation possibilities without requiring custom integration setup.
The bug fixes address several pain points, particularly the issues with filtering by primary_tag/primary_author in routes.yaml and night mode functionality with API v2. These fixes, along with the stricter validation for posts and tags, make Ghost more reliable and consistent.
Overall, this release significantly enhances Ghost's capabilities as a professional publishing platform, especially for those looking to build membership businesses around their content.
Full Release Notes
- 🐛 Fixed filtering by primary_tag or primary_author in routes.yaml
- 🐛 Fixed night mode when using API v2 (#10499)
- ✨ Added posibility to accept html as an input source for post
Casper (the default theme) has been updated to 2.9.3
- 🐛 Fixed bug with embeds overflowing content width
You can see the full change log for the details of every change included in this release.