Title: ACS Content for WooCommerce
Author: ACS
Published: <strong>September 4, 2026</strong>
Last modified: September 4, 2026

---

Search plugins

![](https://ps.w.org/acs-content-for-woocommerce/assets/banner-772x250.png?rev=3680749)

![](https://ps.w.org/acs-content-for-woocommerce/assets/icon-256x256.png?rev=3680749)

# ACS Content for WooCommerce

 By [ACS](https://profiles.wordpress.org/hanchan/)

[Download](https://downloads.wordpress.org/plugin/acs-content-for-woocommerce.3.0.0.zip)

 * [Details](https://wordpress.org/plugins/acs-content-for-woocommerce/#description)
 * [Reviews](https://wordpress.org/plugins/acs-content-for-woocommerce/#reviews)
 *  [Installation](https://wordpress.org/plugins/acs-content-for-woocommerce/#installation)
 * [Development](https://wordpress.org/plugins/acs-content-for-woocommerce/#developers)

 [Support](https://wordpress.org/support/plugin/acs-content-for-woocommerce/)

## Description

**ACS Content for WooCommerce** turns any post or page into a paid article. Write
as usual, drop a **Paid Area** block where the free preview should end, set a price,
and everything below it is sold through the WooCommerce checkout you already have.

Readers **do not need a WordPress account**. They pay, they read. Access is tied
to the email address used at checkout, so the same purchase works on a phone and
a laptop.

#### Why Not a Paid Newsletter Platform?

Hosted platforms take a cut of every sale and own the reader relationship. Here,
the sale happens in your own store:

 * You keep the payment processing fees you already negotiated — the plugin adds
   none of its own
 * Buyer email addresses and order history stay in your WooCommerce install
 * Your article stays at your own URL, with your own theme, and your own SEO
 * No license key, no account, no phone-home. The plugin never contacts an external
   server

#### Main Features

**Paid Area block**
 * Everything after the block is sold; everything before it 
is the free preview * The paid text is removed from the response for readers who
have not bought — it is never merely hidden with CSS, and it does not leak through
the RSS feed, the auto-generated excerpt, or the REST API * A soft fade and a single
call-to-action button. One action, no clutter * Price, button label, and headline
can be set per article or site-wide

**Tip Jar block**
 * Readers choose from an amount set you define and pay in the
same checkout * Useful on free articles, at the end of paid ones, or both

**Access without accounts**
 * Access is granted to the email address on the order*
A signed cookie remembers the reader on that device * Readers who switch devices
or clear cookies can request a one-time access link by email, from a link inside
the paywall box

**Sales dashboard**
 * Scorecards for today, this month, and all time, plus a daily
revenue graph * A list of every paid item with inline price editing * A sales report
with period segments and CSV export * A buyer list with masked email addresses, 
manual grants, revokes, and resend

**Coupons that only apply to your content**
 * Discounts scoped to specific paid
articles, so a content coupon cannot be spent on the rest of your shop

**Refund aware**
 * Refunding an order in WooCommerce revokes the reader’s access
automatically, and the sale drops out of the reports

#### Designed Not to Disturb Your Shop

This plugin is deliberately non-invasive. It **never** writes to your WooCommerce
settings, and it **never** changes checkout for orders that do not contain one of
its own items:

 * Guest checkout, address fields, and payment methods are left exactly as you configured
   them for ordinary products
 * Checkout simplification (hiding shipping and address fields that a digital article
   does not need) is applied per cart, only when the cart contains a paid article
   or a tip, and only if you enable it
 * Both the classic shortcode checkout and the newer block-based Cart and Checkout
   are supported
 * Compatible with High-Performance Order Storage (HPOS)

#### Privacy

Buyer email addresses are stored in a table belonging to this plugin so that access
can be checked without a user account. The plugin registers with the WordPress personal
data exporter and eraser, so a data request covers this data too. Nothing is ever
sent off-site.

### External Services

This plugin does not connect to any external service. It sends no data off your 
server, requires no API key, and performs no license check.

## Screenshots

[⌊Dashboard — scorecards for today, this month, and all time, with a daily revenue
graph and a setup checklist⌉⌊Dashboard — scorecards for today, this month, and all
time, with a daily revenue graph and a setup checklist⌉[

Dashboard — scorecards for today, this month, and all time, with a daily revenue
graph and a setup checklist

[⌊Paid content list — every article for sale with its price, sales count, and revenue,
with inline price editing⌉⌊Paid content list — every article for sale with its price,
sales count, and revenue, with inline price editing⌉[

Paid content list — every article for sale with its price, sales count, and revenue,
with inline price editing

[⌊Sales report — revenue by period with a stacked bar chart separating article sales
from tips, plus CSV export⌉⌊Sales report — revenue by period with a stacked bar 
chart separating article sales from tips, plus CSV export⌉[

Sales report — revenue by period with a stacked bar chart separating article sales
from tips, plus CSV export

[⌊Buyers — who bought what, with masked email addresses, manual grant, revoke, and
resend⌉⌊Buyers — who bought what, with masked email addresses, manual grant, revoke,
and resend⌉[

Buyers — who bought what, with masked email addresses, manual grant, revoke, and
resend

[⌊Coupons — discounts scoped to specific paid articles so they cannot be spent elsewhere
in the shop⌉⌊Coupons — discounts scoped to specific paid articles so they cannot
be spent elsewhere in the shop⌉[

Coupons — discounts scoped to specific paid articles so they cannot be spent elsewhere
in the shop

[⌊Settings — defaults for price, tip amounts, access period, appearance, checkout
behaviour, and data⌉⌊Settings — defaults for price, tip amounts, access period, 
appearance, checkout behaviour, and data⌉[

Settings — defaults for price, tip amounts, access period, appearance, checkout 
behaviour, and data

[⌊The reader's view — free preview, fade, and a single call to action⌉⌊The reader's
view — free preview, fade, and a single call to action⌉[

The reader’s view — free preview, fade, and a single call to action

## Blocks

This plugin provides 2 blocks.

 *   Tip Jar Adds buttons so readers can pick an amount and support you. The amounts
   come from the set defined under Settings › General.
 *   Paid Area Everything after this block is sold. Content placed inside it can
   be read only by readers who have bought.

## Installation

 1. Install and activate WooCommerce first, and complete its setup so that you can 
    take payments
 2. Upload the plugin ZIP from WordPress admin > Plugins > Add New > Upload Plugin,
    then activate it
 3. A **Paid Content** menu appears in the admin. Open **Paid Content > Settings** 
    and set your default price and tip amounts
 4. Edit a post, place the cursor where the free preview should end, and insert the**
    Paid Area** block
 5. Move the rest of the article inside the block, set the price in the sidebar, and
    publish
 6. Open the post while logged out to see the paywall exactly as a reader will

## FAQ

### Is WooCommerce required?

Yes. This plugin uses your WooCommerce store for the product, the cart, the checkout,
the payment gateway, and the order record. If WooCommerce is not active, the plugin
stays completely dormant: it registers nothing and shows a single admin notice explaining
why.

### Do readers need to create an account?

No. A reader buys as a guest and gains access through the email address on the order.
A signed cookie keeps them logged in to the article on that device, and they can
email themselves a one-time access link at any time from the paywall box. If a reader
does happen to have an account, that works too.

### What happens when I refund an order?

Access is revoked automatically. A full refund in WooCommerce revokes every article
granted by that order, and the amount drops out of the sales reports. Nothing is
deleted: the record stays, marked as revoked, so your buyer history remains auditable.
You can also revoke or grant access by hand from the Buyers screen.

### Will this affect my existing shop?

No. The plugin only acts on carts and orders that contain one of its own items. 
It does not write to any WooCommerce option, does not change guest checkout or address
requirements for your other products, and does not add anything to the front end
of pages that have no paywall or tip jar block on them. Its own checkout simplification
is opt-in and is applied per cart, never globally.

### I used the previous version. How do I move my buyers over?

Open **Paid Content > Settings > Data**. If the older plugin’s buyer table is present,
the screen shows how many records it holds and offers a one-click import into the
new format, in batches. The import is safe to run more than once — records that 
are already imported are skipped rather than duplicated — and it never modifies 
or deletes the old data. Removing the old table is a separate, explicitly confirmed
step you take afterwards. Blocks saved by the older version keep rendering correctly,
and the same screen can convert them to the new blocks.

### I use a page cache. Is there anything to watch out for?

The purchase and tip buttons carry a nonce so that no other site can add something
to a visitor’s cart on their behalf. A nonce stays valid for up to 24 hours, so 
keep the cache lifetime for posts below that. If a visitor does click a stale button,
nothing is added to the cart and they are returned to the article with a short notice
and a freshly generated button, so the purchase still goes through on the next click.

### Can I use a currency other than the one WooCommerce is set to?

The plugin always uses your WooCommerce store currency and its formatting settings.
There is no currency of its own to configure, and no currency symbol is hard-coded
anywhere.

## Reviews

There are no reviews for this plugin.

## Contributors & Developers

“ACS Content for WooCommerce” is open source software. The following people have
contributed to this plugin.

Contributors

 *   [ ACS ](https://profiles.wordpress.org/hanchan/)

[Translate “ACS Content for WooCommerce” into your language.](https://translate.wordpress.org/projects/wp-plugins/acs-content-for-woocommerce)

### Interested in development?

[Browse the code](https://plugins.trac.wordpress.org/browser/acs-content-for-woocommerce/),
check out the [SVN repository](https://plugins.svn.wordpress.org/acs-content-for-woocommerce/),
or subscribe to the [development log](https://plugins.trac.wordpress.org/log/acs-content-for-woocommerce/)
by [RSS](https://plugins.trac.wordpress.org/log/acs-content-for-woocommerce/?limit=100&mode=stop_on_copy&format=rss).

## Changelog

#### 3.0.0

 * Full rewrite. New plugin slug, new prefix, and a new data model. This version
   is not an in-place update of the 2.x plugin; it installs alongside it and imports
   its data
 * Access records now store the amount actually paid, the currency, the grant source,
   and an expiry, so reports reflect what was really charged rather than today’s
   price
 * Refunds revoke access automatically instead of leaving the article readable
 * Removed all global WooCommerce setting changes. 2.x rewrote store options such
   as guest checkout on every request; nothing of the sort remains
 * Checkout simplification is now decided per cart and only when the cart contains
   this plugin’s items, and it is off by default
 * Added support for the block-based Cart and Checkout, alongside the classic checkout
 * Declared compatibility with High-Performance Order Storage; all order metadata
   goes through the order object
 * Paid content is now stripped from the response before rendering, closing the 
   excerpt, feed, and REST API leaks present in 2.x
 * Coupons can be limited to specific paid articles; the 2.x coupon path could apply
   a content discount to the whole cart
 * One product per article, reused on every purchase; the 2.x behaviour of creating
   products from unauthenticated requests is gone, along with that endpoint
 * Access is now a signed cookie plus a one-time email link; PHP sessions are no
   longer used
 * Six new admin screens: dashboard, paid content list, sales report, buyers, coupons,
   and settings
 * Added personal data export and erase handlers, and an uninstall routine that 
   keeps your data unless you opt out
 * Added a one-click importer for 2.x buyer records, server-side rendering for blocks
   saved by 2.x, and a warning when both plugins are active
 * Purchase and tip links now carry a nonce, and the handler verifies it before 
   touching the cart, so a link on another site cannot change a visitor’s cart

## Meta

 *  Version **3.0.0**
 *  Last updated **17 hours ago**
 *  Active installations **Fewer than 10**
 *  WordPress version ** 6.5 or higher **
 *  Tested up to **7.1**
 *  PHP version ** 7.4 or higher **
 * Tags
 * [paid content](https://wordpress.org/plugins/tags/paid-content/)[paywall](https://wordpress.org/plugins/tags/paywall/)
   [tip jar](https://wordpress.org/plugins/tags/tip-jar/)[woocommerce](https://wordpress.org/plugins/tags/woocommerce/)
 *  [Advanced View](https://wordpress.org/plugins/acs-content-for-woocommerce/advanced/)

## Ratings

No reviews have been submitted yet.

[Your review](https://wordpress.org/support/plugin/acs-content-for-woocommerce/reviews/#new-post)

[See all reviews](https://wordpress.org/support/plugin/acs-content-for-woocommerce/reviews/)

## Contributors

 *   [ ACS ](https://profiles.wordpress.org/hanchan/)

## Support

Got something to say? Need help?

 [View support forum](https://wordpress.org/support/plugin/acs-content-for-woocommerce/)