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:

ColumnTypeDescription
idTEXTPaddle product ID (e.g., pro_abc123). Primary key.
nameTEXTProduct display name.
typeTEXTProduct type: standard or custom.
tax_categoryTEXTTax category for the product.
statusTEXTProduct status: active or archived.
dataJSONBComplete Paddle product object stored as JSON.
livemodeBOOLEANWhether this is production data (true) or sandbox (false).
created_atTIMESTAMPTZTimestamp when product was created in Paddle.
updated_atTIMESTAMPTZTimestamp when product was last updated in Paddle.
synced_atTIMESTAMPTZTimestamp 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';