Paddle Products SQL Template
SQL table creation template for syncing Paddle product catalog data to your PostgreSQL database.
Updated: 14 Feb 2026
Paddle Products SQL Template
Create a database table to store Paddle product catalog data including names, types, and tax categories.
What Data is Synced?
The Paddle Products sync captures product catalog information from your Paddle account:
- Product ID: Unique Paddle product identifier (e.g.,
pro_abc123) - Name: Product display name
- Type: Product type (standard or custom)
- Tax Category: Tax category for the product
- Status: Product status (active, archived)
- Complete Data: Full Paddle product object stored as JSONB
- Timestamps: Created, updated, and sync tracking timestamps
SQL Table Template
Table Schema Explanation
Here's what each column in the table represents:
| Column | Type | Description |
|---|---|---|
id | TEXT | Paddle product ID (e.g., pro_abc123). Primary key. |
name | TEXT | Product display name. |
type | TEXT | Product type: standard or custom. |
tax_category | TEXT | Tax category for the product. |
status | TEXT | Product status: active or archived. |
data | JSONB | Complete Paddle product object stored as JSON. |
livemode | BOOLEAN | Whether this is production data (true) or sandbox (false). |
created_at | TIMESTAMPTZ | Timestamp when product was created in Paddle. |
updated_at | TIMESTAMPTZ | Timestamp when product was last updated in Paddle. |
synced_at | TIMESTAMPTZ | Timestamp when CLS last synced this product record. Auto-updated. |
Sync Mode
This template uses full sync only. Each sync fetches all product records from your Paddle account.
Usage Examples
After syncing, you can query your product data using standard SQL:
-- Get all active products
SELECT id, name, type, tax_category
FROM paddle_products
WHERE status = 'active';
-- Count products by type
SELECT type, COUNT(*) as count
FROM paddle_products
WHERE status = 'active'
GROUP BY type;
-- Search products by name
SELECT id, name, status
FROM paddle_products
WHERE name ILIKE '%pro%';
-- Get recently updated products
SELECT id, name, updated_at
FROM paddle_products
WHERE updated_at > NOW() - INTERVAL '7 days'
ORDER BY updated_at DESC;
-- Get product details from JSONB data
SELECT id, name, data->>'description' AS description
FROM paddle_products
WHERE status = 'active';
Common Customizations
The template includes performance indexes for name, status, livemode, and created_at columns.
Add Index for Type Lookups
CREATE INDEX idx_paddle_products_type
ON paddle_products(type)
WHERE status = 'active';
Related Templates
- Prices - Pricing information linked to products
- Transactions - Transaction records referencing products
- Subscriptions - Subscription records