---
title: How does PaddlePress PRO work?
description: PaddlePress PRO is a licensing and membership management plugin designed to integrate with the Paddle. It provides seamless handling of licenses, domains, memberships, and downloadable items. This documentation outlines its components and how they work together to manage subscriptions and…
url: "https://handyplugins.co/docs/how-does-paddlepress-pro-work/"
updated: "2024-11-29"
category: PaddlePress Pro
---

# How does PaddlePress PRO work?

PaddlePress PRO is a licensing and membership management plugin designed to integrate with the Paddle. It provides seamless handling of licenses, domains, memberships, and downloadable items. This documentation outlines its components and how they work together to manage subscriptions and provide a smooth user experience.

![](data:image/gif;base64,R0lGODdhAQABAPAAAP///wAAACwAAAAAAQABAEACAkQBADs=)

## Database Structure

PaddlePress uses 2 database tables {$wpdb->prefix}**paddlepress_payments** and {$wpdb->prefix}**paddlepress_domains**. Payments table keeps the latest information about the payment and domains table hold the licensed domains if the software licensing enabled.

## Workflow

### **Membership**

Memberships manage the connection between Paddle price IDs and user purchases. When you start using PaddlePress, the first step is to create membership plans corresponding to the relevant Paddle price IDs (for Paddle Billing) or product/plan IDs (if you are using Paddle Classic). These plans define the access and logic associated with your products.

- The membership status is determined by the payment status (`status` in `wp_paddlepress_payments`). Active payments result in active memberships, while canceled or expired payments deactivate the memberships.
- Recurring subscriptions are managed automatically using Paddle webhooks. When a payment renewal is processed or a subscription is canceled, the membership status is updated in real-time based on webhook notifications from Paddle.

By establishing membership plans linked to Paddle price IDs, PaddlePress ensures seamless management of licenses, domains, and downloadable items for your users.

### **Payment and License Creation**

1. When a user completes a payment via Paddle or manually a new payment added for a user, a record is created in the `wp_paddlepress_payments` table.
2. A unique `license_key` is generated and stored in the table, linking the license to the payment.

### **Domain Management**

1. Licensed domains are managed in the `wp_paddlepress_domains` table.
2. Each domain entry references a `payment_id` to connect it to the corresponding license and payment record.
3. Domains can be marked as development (`dev_domain = 1`) or production.

*(Domains table only important when software licensing is enabled)*

### **Downloadable Items**

Users can download items tied to their membership and license. This is managed through:

- Validating the `license_key` against the payment record.
- Ensuring the user is in good standing (active status and valid expiry date).

## **Use Case Scenarios**

### **New Subscription:**

1. User makes a payment via Paddle.
2. [A user account created](https://handyplugins.co/docs/paddlepress-pro-automatic-account-creation/) and then payment record is added in `wp_paddlepress_payments`.
3. A license key is generated and activated.
4. The user can associate licensed domains via the dashboard. (or [API](https://handyplugins.co/docs/paddlepress-pro-software-licensing-api/))

### **Domain Management:**

1. Users add domains to their license via the dashboard.
2. Domains are stored in the `wp_paddlepress_domains` table.
3. Development domains can be flagged to allow testing environments. ([this is controlled with preferences](https://handyplugins.co/docs/paddlepress-pro-how-does-the-domain-count/))

### **Membership Renewal:**

1. Paddle’s recurring payment system renews the membership.
2. `status` and `expiry_date` in `wp_paddlepress_payments` are updated accordingly.
