> AI agents: this is one page from PostHog's docs. Full index of Markdown docs for LLMs: https://posthog.com/llms.txt # Linking Simpro as a source Canonical URL: https://posthog.com/docs/data-pipelines/sources/simpro > **Cloud region:** This page uses US Cloud hosts. For an EU Cloud project, use `https://eu.posthog.com` instead of `https://us.posthog.com` or `https://app.posthog.com` (app host for links). ## On this page - [Prerequisites](#prerequisites) - [Adding a data source](#adding-a-data-source) - [Multi-company builds](#multi-company-builds) - [Sync modes](#sync-modes) - [Configuration](#configuration) - [Supported tables](#supported-tables) - [Troubleshooting](#troubleshooting) ![](https://res.cloudinary.com/dmukukwp6/image/upload/texture_tan_9608fcca70) ![](https://res.cloudinary.com/dmukukwp6/image/upload/texture_tan_dark_a92b0e022d) 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. `npx @posthog/wizard warehouse` ![PostHog Wizard hedgehog](https://res.cloudinary.com/dmukukwp6/image/upload/wizard_3f8bb7a240.png) ![](https://res.cloudinary.com/dmukukwp6/image/upload/wizard_3f8bb7a240.png)Let AI connect your sources for you The Simpro connector syncs your field service management data – customers, sites, jobs, quotes, invoices, employees, vendors, and more – into PostHog so you can analyze operations alongside your product data. ## Prerequisites You need a Simpro account with API access enabled. A Simpro administrator must create an API key for PostHog to use. ### How to create an API key 1. In Simpro, go to **System > Setup > API > Applications**. 2. Create a new application with the **API Key** grant type. 3. Download the key file. 4. Copy the **access token** from the key file – this is the value you paste into PostHog. ## Adding a data source 1. In PostHog, go to the [Sources tab](https://app.posthog.com/data-management/sources) of the data pipeline section. 2. Click **\+ New source** and click **Link** next to this source. 3. Enter your credentials (see [Configuration](#configuration) below) and click **Next**. 4. Select the tables you want to sync, choose a sync method and frequency, then click **Import**. Once the syncs are complete, you can start querying this data in PostHog. When linking Simpro, you need: - **Simpro build** – the build name or URL you sign in to, such as `acme` or `acme.simprosuite.com`. Builds are hosted on `simprosuite.com` or `simprocloud.com`. - **API key** – the access token from the key file you downloaded above. - **Company ID** (optional) – the numeric ID of a specific company to sync. Leave blank to sync every company in a multi-company build. ## Multi-company builds Simpro builds can contain multiple companies. If you leave the **Company ID** field blank, PostHog syncs data from all companies in the build. Each row includes a `CompanyID` column so you can filter or join by company. Builds without multi-company setup use company ID `0`. ## 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_at` timestamp). 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](https://posthog.com/docs/data-pipelines/sources.md#sync-methods) for a full explanation of how each mode works and how to choose between them. ### Simpro-specific sync behavior Most Simpro tables support **incremental** sync using the `DateModified` field. PostHog filters from the day before the last sync watermark to make sure no records are missed, then deduplicates by primary key. The following tables use **full table** sync because changes to child records (cost centers, receipts) don't always update the parent's `DateModified`: - **jobs** - **customer\_payments** - **vendor\_orders** - **cost\_centers** ### Archived rows Several Simpro list endpoints hide archived rows by default. PostHog syncs both active and archived rows automatically, so your warehouse contains the full picture. Tables that include archived rows are: company\_customers, individual\_customers, sites, employees, catalog\_items, vendors, vendor\_orders, and cost\_centers. ## Configuration | Option | Description | | --- | --- | | `Simpro build` **Type:** text **Required:** True | The build name or URL you sign in to, such as `acme` or `acme.simprocloud.com`. | | `API key` **Type:** password **Required:** True | | | `Company ID` **Type:** text **Required:** False | Leave blank to sync every company in a multi-company build. | ## Supported tables | Table | Description | Sync method | Incremental field | Primary key | | --- | --- | --- | --- | --- | | `company_customers` | Customers that are businesses, with their contact details, billing settings and linked sites. | Incremental, Full refresh | DateModified | — | | `individual_customers` | Customers that are people, with their contact details, billing settings and linked sites. | Incremental, Full refresh | DateModified | — | | `sites` | Sites: the locations where work is done for customers. | Incremental, Full refresh | DateModified | — | | `contacts` | Contacts: people linked to customers, sites or vendors. | Incremental, Full refresh | DateModified | — | | `jobs` | Jobs: service and project work done for a customer at a site, with stage, status and totals. | Full refresh | — | — | | `quotes` | Quotes: priced proposals for work, which can convert into jobs. | Incremental, Full refresh | DateModified | — | | `leads` | Leads: potential work for a customer before it becomes a quote. | Incremental, Full refresh | DateModified | — | | `invoices` | Customer invoices raised from jobs or recurring invoices. | Incremental, Full refresh | DateModified | — | | `credit_notes` | Credit notes issued against customer invoices. | Incremental, Full refresh | DateModified | — | | `customer_payments` | Payments received from customers. | Full refresh | — | — | | `employees` | Employees of the business, with their position, cost centres and pay rates. | Incremental, Full refresh | DateModified | — | | `schedules` | Schedules: blocks of staff time booked against jobs, quotes or activities. | Incremental, Full refresh | DateModified | — | | `catalog_items` | Catalog items: the materials and parts the business buys and sells. | Incremental, Full refresh | DateModified | — | | `vendors` | Vendors: the suppliers the business buys from. | Incremental, Full refresh | DateModified | — | | `vendor_orders` | Vendor orders: purchase orders sent to suppliers. | Full refresh | — | — | | `cost_centers` | Cost centres: the accounting categories that job and quote costs and revenue are booked to. | Full refresh | — | — | ## Troubleshooting If your sync is failing or data looks wrong, see the [Data warehouse troubleshooting guide](https://posthog.com/docs/data-warehouse/troubleshooting.md). If that doesn't help, [contact support](https://us.posthog.com/#panel=support%3Asupport%3Adata_warehouse%3A%3Atrue) – we're happy to help.