Jetpack shipped Complimentary Subscriptions, which is late but welcome. Anyone who has tried to hand out a paid subscription by hand in a custom WooCommerce setup knows the problem: you end up tracking expiration dates and recurring status for an account with no payment method on file. The usual fix is a patched-together mix of user roles or expiring transients, and it breaks on the next core update.
Being nice to your mom or a fellow writer is one use for it. The more practical one is setting an access level without pushing someone through a Stripe checkout for a $0.00 transaction, which leaves “failed payment” entries scattered through your logs. It also avoids the race conditions that turn up when you hook into subscription status changes yourself.
Why comping subscribers helps growth
The old approach was a “VIP” role plus a filter on the content gate logic. That works, but you maintain it forever, and those users never show up in your real subscriber metrics. Your revenue per user comes out wrong as a result.
The Jetpack Newsletter toolkit handles Complimentary Subscriptions from the dashboard. Go to Jetpack → Subscribers, open the three dot menu, and comp the account. The status gets tracked like any other subscription, and revoking it drops the user back to a standard free subscription.
If you want the wider picture on scaling a site, I wrote a technical walkthrough of implementing WordPress monetization strategies.
The Substack revenue bottleneck
The math matters when you compare platforms. Substack takes a flat 10%, which stops being trivial the moment you scale. Run it at 10,000 subscribers paying $10 each and that is $10,000 a month for the privilege of using their gated delivery system. WordPress.com does not scale against you like that, so for a fast growing newsletter, moving to self-hosted or managed WordPress is a budget decision as much as a technical one.
Checking comped status in code
The dashboard covers the site owner side. In code you sometimes need to know whether the current user is comped, say to print a “VIP Badge” next to their name. Jetpack gates the content on its own, but a filter is still where you hang the extra perks. A stripped down version of that check, for your theme’s functions.php:
<?php
/**
* Example: Custom logic for Comped Subscribers
* Note: This is a conceptual snippet for developers
* managing custom Jetpack integrations.
*/
function bbioon_check_comp_status( $user_id ) {
// Assuming subscription data is stored in user metadata
// or fetched via Jetpack's internal subscription API.
$subscription_type = get_user_meta( $user_id, 'jetpack_subscription_status', true );
if ( 'comp' === $subscription_type ) {
return true;
}
return false;
}
// Usage in a template
if ( bbioon_check_comp_status( get_current_user_id() ) ) {
echo '<span class="vip-badge">VIP Access</span>';
}
?>
The Jetpack Newsletter documentation and the WordPress.com support guides have the official implementation details. If you are building custom extensions, the Stripe subscription logic is worth reading too.
If comping subscribers is eating your dev hours, hand it to me. I have been wrestling with WordPress since the 4.x days.
The short version
Complimentary Subscriptions gives Jetpack a native way to hand out paid access, so the custom roles and the metadata that came with them can go. There is less to maintain, and the comped accounts finally show up where you expect them.