Linking Zylo 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.

This source is currently in alpha. It hasn't been tested against a live Zylo account yet, so you may encounter unexpected issues. Please report any problems you find.
The Zylo connector syncs your SaaS spend and license management data into PostHog, including applications, licenses, users, contracts, payments, and more. Use it to analyze software spend alongside your product data.
Prerequisites
You need:
- A Zylo account with Enterprise API access
- An API token ID and token secret, created in Zylo under Integrations → API Integration → Connect
- Read scopes on your API key for the resources you want to sync (e.g.
applications:read,contracts:read,spend:read,team:read)
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 Zylo.
- Enter your Zylo Token ID and Token secret from your Zylo API Integration settings.
- Click Next.
- Select the tables you want to sync and configure sync frequency as needed.
- Click Import.
Scope requirements
Different tables require different API key scopes. If your token doesn't have a particular scope, those tables show a permission error but other tables still sync successfully.
| Tables | Required scope |
|---|---|
| Applications, ApplicationLicenses, SavingsEvents, ApplicationBudgets | applications:read |
| Contracts, ContractLineItems, Suppliers | contracts:read |
| Payments | spend:read |
| ApplicationUsers, ActivityHistory | team:read |
| PurchaseOrders, POLineItems | applications:read and spend:read (premium feature) |
Sync modes
Each table can be synced in one of several modes, depending on what the source supports:
- Webhook (when available) – the source pushes changes to PostHog in real time. Fastest freshness, lowest ongoing cost, and the only mode that reliably captures updates and deletes.
- Incremental – only new or updated rows are synced on each run, using a cursor field (such as an
updated_attimestamp). Cheaper than a full refresh, but deletes aren't captured. - Append only – new rows are appended using a cursor field; existing rows are never updated. Ideal for immutable, append-only tables like event logs.
- Full refresh – the whole table is reloaded on every sync. Use it when a table has no reliable cursor or when you need deletions reflected.
See sync methods for a full explanation of how each mode works and how to choose between them.
All Zylo tables support incremental sync using either zylo_created_at or zylo_modified_at timestamps. Full refresh is also available for all tables.
Configuration
| Option | Type | Required |
|---|---|---|
Token ID | text | Yes |
Token secret | password | Yes |
Supported tables
| Table | Description | Sync method | Incremental field | Primary key |
|---|---|---|---|---|
Applications | A SaaS application discovered or added in Zylo's software catalog. | Incremental, Full refresh | zylo_created_at, zylo_modified_at | — |
ApplicationLicenses | A license seat for an application, typically assigned to a user. | Incremental, Full refresh | zylo_created_at, zylo_modified_at | — |
ApplicationUsers | A user of an application, with usage and license activity. | Incremental, Full refresh | zylo_created_at, zylo_modified_at | — |
Contracts | A software contract with a supplier, covering one or more applications. | Incremental, Full refresh | zylo_created_at, zylo_modified_at | — |
ContractLineItems | A single priced line item within a contract, e.g. a license tier or add-on. | Incremental, Full refresh | zylo_created_at, zylo_modified_at | — |
Payments | A payment made for an application, sourced from AP or expense data. | Incremental, Full refresh | zylo_created_at, zylo_modified_at | — |
PurchaseOrders | A purchase order raised against a supplier for software spend. Premium feature — requires | Incremental, Full refresh | zylo_created_at, zylo_modified_at | — |
POLineItems | A single line item within a purchase order. | Incremental, Full refresh | zylo_created_at, zylo_modified_at | — |
Suppliers | A supplier (vendor) that PostHog customers buy software or services from. | Incremental, Full refresh | zylo_created_at, zylo_modified_at | — |
SavingsEvents | A recorded cost-savings event, e.g. a license reduction or contract renegotiation. | Incremental, Full refresh | zylo_created_at, zylo_modified_at | — |
ApplicationBudgets | A yearly budget allocation for an application. | Incremental, Full refresh | zylo_created_at, zylo_modified_at | — |
ActivityHistory | An audit log entry recording a change to a Zylo record. | Incremental, Full refresh | zylo_created_at, zylo_modified_at | — |
- applications - SaaS applications in your Zylo catalog
- application_licenses - License seats assigned to users
- application_users - Users of applications with usage and activity data
- contracts - Software contracts with suppliers
- contract_line_items - Priced line items within contracts
- payments - Payments made for applications
- purchase_orders - Purchase orders for software spend (premium feature)
- po_line_items - Line items within purchase orders (premium feature)
- suppliers - Vendors that you buy software from
- savings_events - Cost-savings events like license reductions
- application_budgets - Yearly budget allocations per application
- activity_history - Audit log of changes to Zylo records
Troubleshooting
If your sync is failing or data looks wrong, see the Data warehouse troubleshooting guide. If that doesn't help, contact support – we're happy to help.