Advertisements in Posts: does Ghost support them?

I have been using Ghost for a while now, and it’s a critical tool in delivering content to our community, which consists of Paid and Free members.

We have been looking at monetizing our free tier by selling ad space to companies. Now obviously, we don’t want to burden our Paid Members with ads.

I have been looking for ways to get this done, eg. add content to a post and set the conditions under which that content must be visible.

The Email call to action card comes close to the functionality I’m looking for, except that (a) it is e-mail only and (b) it doesn’t allow for any formatting or inclusion of images.

Am I missing something? This sounds to me like core functionality of Ghost, so I hope I’m overlooking something here.


You could change the post.hbs file in your theme. For example, look for {{#if access}} in your theme file, and add the {{#unless @member.paid}} block. I use this to add Buy Me a Coffee code.

        {{#if access}}
          {{#unless @member.paid}}
            <<PLACE AD CODE HERE>>
          {{> content-cta fading=true}}

Thanks for the suggestion!

However, what we’re looking for is a way to sell ad space in e-mail as well as website posts. I’d expect to be able to add a content card to the editor, specify the segment it’s meant for (eg. free or paid) and be done with it.

For example: we sell a campaign to company X. X gets a permanent ad in the next four posts we create, shown only to Free Members, either accessed by e-mail or web.

From Ghost’s website:

Publish your creative work to the right people and run a fully-fledged membership business.

Isn’t this a basic feature in that context?

For anyone else looking for this, there is a… hacky way to make this work.

Using a HTML card, you can specify the segment of your Members that receives the entered content as follows:

<div data-gh-segment='status:free'><p>This paragraph will only be visible to Free Members.</p></div>
<div data-gh-segment='status:-free'><p>This paragraph will only be visible to Paid Members.</p></div>

You can add anything (eg. text and images) to an HTML card, so this is suitable for my needs.

One downside is that this method is only processed when sending the Post by e-mail. The content of a Post is treated as static content when its rendered to the website. So by default, both paragraphs would be visible to users reading the Post by web.

You can fix this by adding some Javascript to your theme that targets the attribute data-gh-segment and shows or hides the result depending on the Subscription status of the member (Paid or Free).

It would be even better to have a supported and official Ghost solution for this use case, but in the meantime this is at least a workable route.