Linking Holded as a source
Let AI connect your sources for you
Skip the manual setup — run this in your project and the wizard auto-detects your databases and APIs and connects them to PostHog.

Contents
The Holded connector syncs invoices, purchases, payments, contacts, products, accounting, CRM, project, and team data from your Holded account into PostHog.
Adding a data source
Go to the sources tab of the data pipeline section in PostHog.
Click + New source and then click Link next to Holded.
Next, you need an API key from Holded. In your Holded dashboard, go to Settings > API and create a new key. Give it read permission for the tables you want to sync, and the
account:info.readpermission so PostHog can verify the key.Back in PostHog, paste the API key into the API key field and click Next.
Select the tables you want to sync, set the sync frequency, then click Import.
Once the syncs are complete, you can start using Holded data in PostHog.
Holded plans have a monthly API call quota. Each sync reads every selected table in full and uses calls from your quota, so select only the tables you need.
Available tables
All Holded tables sync via full table refresh. The Holded API doesn't filter by modification time, so incremental sync isn't available.
Sales documents
| Table | Description | Sync method |
|---|---|---|
invoices | Sales invoices | Full refresh |
credit_notes | Sales credit notes | Full refresh |
sales_receipts | Sales receipts | Full refresh |
estimates | Estimates and quotes | Full refresh |
proformas | Proforma invoices | Full refresh |
sales_orders | Sales orders | Full refresh |
waybills | Delivery waybills | Full refresh |
receipt_notes | Receipt notes | Full refresh |
Purchase documents
| Table | Description | Sync method |
|---|---|---|
purchases | Purchase invoices | Full refresh |
purchase_refunds | Purchase refunds | Full refresh |
purchase_orders | Purchase orders | Full refresh |
purchase_shipments | Purchase shipments | Full refresh |
payments | Payments | Full refresh |
Catalog and contacts
| Table | Description | Sync method |
|---|---|---|
contacts | Contacts (customers and suppliers) | Full refresh |
contact_groups | Contact groups | Full refresh |
products | Products in the catalog | Full refresh |
services | Services in the catalog (includes archived) | Full refresh |
warehouses | Warehouses | Full refresh |
Accounting and treasury
| Table | Description | Sync method |
|---|---|---|
ledger_entries | Ledger entries (one row per line) | Full refresh |
accounting_accounts | Chart of accounts (includes archived and empty) | Full refresh |
taxes | Tax configurations | Full refresh |
treasury_accounts | Treasury accounts | Full refresh |
payment_methods | Payment methods | Full refresh |
CRM
| Table | Description | Sync method |
|---|---|---|
funnels | Sales funnels | Full refresh |
leads | CRM leads | Full refresh |
events | CRM events | Full refresh |
Projects
| Table | Description | Sync method |
|---|---|---|
projects | Projects | Full refresh |
tasks | Project tasks | Full refresh |
project_times | Time entries for projects | Full refresh |
Team
| Table | Description | Sync method |
|---|---|---|
employees | Employees | Full refresh |
employee_times | Employee time entries | Full refresh |
Configuration
| Option | Description |
|---|---|
API keyType: password Required: True | Create a key in Holded under Settings > API. Give it read permission for the tables you want to sync, and |
Supported tables
| Table | Description | Sync method | Incremental field | Primary key |
|---|---|---|---|---|
invoices | Sales invoices issued to customers. | Full refresh | — | — |
credit_notes | Credit notes that correct or refund sales invoices. | Full refresh | — | — |
sales_receipts | Sales receipts (simplified invoices) issued to customers. | Full refresh | — | — |
estimates | Estimates (quotes) sent to customers. | Full refresh | — | — |
proformas | Proforma invoices sent to customers before the final invoice. | Full refresh | — | — |
sales_orders | Sales orders received from customers. | Full refresh | — | — |
waybills | Waybills (delivery notes) for goods shipped to customers. | Full refresh | — | — |
receipt_notes | Receipt notes issued in the account. | Full refresh | — | — |
purchases | Purchase invoices received from suppliers. | Full refresh | — | — |
purchase_refunds | Refunds of purchase invoices from suppliers. | Full refresh | — | — |
purchase_orders | Purchase orders sent to suppliers. | Full refresh | — | — |
purchase_shipments | Purchase shipments (goods received notes) from suppliers. | Full refresh | — | — |
payments | Payments and collections recorded against documents. | Full refresh | — | — |
contacts | Customers, suppliers and other contacts. | Full refresh | — | — |
contact_groups | Groups used to organize contacts. | Full refresh | — | — |
products | Products in the inventory catalog. | Full refresh | — | — |
services | Services that can be sold, archived ones included. | Full refresh | — | — |
warehouses | Warehouses that hold inventory stock. | Full refresh | — | — |
ledger_entries | Lines of the accounting daily ledger. Each ledger entry has one row per line. | Full refresh | — | — |
accounting_accounts | Accounts of the chart of accounts, with their debit, credit and balance. | Full refresh | — | — |
taxes | Taxes configured in the account. | Full refresh | — | — |
treasury_accounts | Treasury accounts: bank accounts, cards, payment gateways and cash. | Full refresh | — | — |
payment_methods | Payment methods that can be set on documents. | Full refresh | — | — |
funnels | CRM funnels (sales pipelines) and their stages. | Full refresh | — | — |
leads | CRM leads (deals) in the funnels. | Full refresh | — | — |
events | CRM events such as calls, meetings and other activities. | Full refresh | — | — |
projects | Projects in the account. | Full refresh | — | — |
tasks | Tasks in projects. | Full refresh | — | — |
project_times | Time entries logged on projects. | Full refresh | — | — |
employees | Employees of the company. | Full refresh | — | — |
employee_times | Clock-in time entries of employees. | Full refresh | — | — |
Troubleshooting
Sync failing with an authentication error
If your sync fails with a 401 or 403 error, your API key is invalid, expired, or missing the required permissions. Create a new key in Holded under Settings > API with read permission for the tables you want to sync and the account:info.read permission, then reconnect the source.
Sync failing for a specific table
If a single table fails with a 403 error, the API key doesn't have read permission for that table. Either update the key's permissions in Holded or deselect the table in PostHog.





