Linking Planning Center 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 Planning Center connector syncs your church management data – people, groups, giving, check-ins, services, and calendars – into the PostHog data warehouse.
Prerequisites
You need a Planning Center account and a personal access token (application ID and secret). The token determines which Planning Center products the source can read. Giving tables require a user with Giving permissions.
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 Planning Center.
- Create a personal access token in your Planning Center developer account. Copy the Application ID and Secret.
- Back in PostHog, paste the Application ID and Secret, then click Next.
- Select the tables you want to sync, set the sync method and frequency, then click Import.
Once the syncs are complete, you can start using Planning Center data in PostHog.
The source reads the data that the token's user can see. If the user doesn't have access to a Planning Center product (e.g. Giving), those tables show as unavailable in the table picker. See Permissions below.
Sync modes
Planning Center tables sync in one of two modes depending on whether the underlying API supports filtering by updated_at:
- Incremental sync – Tables that support
updated_atfiltering sync only new or modified records on each run. These tables use merge-only sync (not append) because the inclusive timestamp filter re-reads rows at the watermark boundary. Merge on the primary key removes these duplicates. - Full refresh sync – Tables without
updated_atsupport (including all Groups tables) reload all data on each sync.
Incremental tables
people, emails, phone_numbers, households, lists, workflows, campuses, field_data, notes, donations, batches, batch_groups, in_kind_donations, check_ins, event_times, headcounts, plans, calendar_events, event_instances, resources, resource_bookings, calendar_tags
Full refresh tables
addresses, forms, field_definitions, groups, group_types, group_memberships, group_events, group_applications, funds, recurring_donations, pledge_campaigns, payment_sources, check_in_events, stations, service_types, songs, teams, series, calendars
Available tables
| Product | Tables |
|---|---|
| People | people, emails, phone_numbers, addresses, households, lists, workflows, campuses, field_definitions, field_data, notes, forms |
| Groups | groups, group_types, group_memberships, group_events, group_applications |
| Giving | donations, funds, batches, batch_groups, recurring_donations, pledge_campaigns, in_kind_donations, payment_sources |
| Check-Ins | check_ins, check_in_events, event_times, headcounts, stations |
| Services | service_types, plans, songs, teams, series |
| Calendar | calendar_events, event_instances, resources, resource_bookings, calendars, calendar_tags |
Permissions
Planning Center grants API access per product. When you connect a source, PostHog probes each product to check whether the token's user can read it. Products the user can't access show an error in the table picker.
- People – Most Planning Center users have People access by default.
- Giving – Requires a user with Giving permissions in Planning Center.
- Groups, Check-Ins, Services, Calendar – Require the token's user to have access to each product.
If your token's user can't read a product, either give them access in Planning Center or deselect those tables.
Configuration
| Option | Type | Required |
|---|---|---|
Application ID | text | Yes |
Secret | password | Yes |
Supported tables
| Table | Description | Sync method | Incremental field | Primary key |
|---|---|---|---|---|
people | People in the organization's Planning Center People directory, with their profile and permission fields. | Incremental, Full refresh | updated_at | — |
emails | Email addresses stored on people's profiles. | Incremental, Full refresh | updated_at | — |
phone_numbers | Phone numbers stored on people's profiles. | Incremental, Full refresh | updated_at | — |
addresses | Physical and mailing addresses stored on people's profiles. | Full refresh | — | — |
households | Households that link people together, with an optional primary contact. | Incremental, Full refresh | updated_at | — |
lists | Saved lists that find and group people by rules. | Incremental, Full refresh | updated_at | — |
workflows | Workflows that move people through a series of follow-up steps. | Incremental, Full refresh | updated_at | — |
campuses | Campuses, the physical locations that belong to the organization. | Incremental, Full refresh | updated_at | — |
field_definitions | Custom profile fields: their name, data type and the tab they appear on. | Full refresh | — | — |
field_data | Values of custom profile fields, one row per field value. | Incremental, Full refresh | updated_at | — |
notes | Categorized notes attached to people's profiles. | Incremental, Full refresh | updated_at | — |
forms | Custom forms that people fill out. | Full refresh | — | — |
groups | Groups of people that meet regularly, from Planning Center Groups. | Full refresh | — | — |
group_types | Group types, the categories that groups belong to. | Full refresh | — | — |
group_memberships | Memberships of people in groups, with their role. | Full refresh | — | — |
group_events | Events, the meetings of a group, with start and end times. | Full refresh | — | — |
group_applications | Requests from people to join a group, with their approval status. | Full refresh | — | — |
donations | Donations given to the organization, from Planning Center Giving. | Incremental, Full refresh | updated_at | — |
funds | Funds that donations are designated to. | Full refresh | — | — |
batches | Batches, the collections of donations that are entered and committed together. | Incremental, Full refresh | updated_at | — |
batch_groups | Batch groups, the optional collections of batches. | Incremental, Full refresh | updated_at | — |
recurring_donations | Recurring donations that repeat on a schedule. | Full refresh | — | — |
pledge_campaigns | Pledge campaigns that track long-term commitments toward a goal. | Full refresh | — | — |
in_kind_donations | Non-cash gifts given to the organization, such as goods, services or stocks. | Incremental, Full refresh | updated_at | — |
payment_sources | Payment sources, the platforms that donations come from. | Full refresh | — | — |
check_ins | Check-ins, the attendance records for Check-Ins events. | Incremental, Full refresh | updated_at | — |
check_in_events | Recurring Check-Ins events that people attend. | Full refresh | — | — |
event_times | Times at which people can check in to an event. | Incremental, Full refresh | updated_at | — |
headcounts | Attendee tallies for an event time and attendance type. | Incremental, Full refresh | updated_at | — |
stations | Stations, the devices where people check in. | Full refresh | — | — |
service_types | Service types, the containers for service plans in Planning Center Services. | Full refresh | — | — |
plans | Service plans, one row per plan in a service type. | Incremental, Full refresh | updated_at | — |
songs | Songs in the Services song library. | Full refresh | — | — |
teams | Teams of people that serve in a service type. | Full refresh | — | — |
series | Series that tie together plans with similar messages. | Full refresh | — | — |
calendar_events | Events from Planning Center Calendar, with owner and Church Center visibility. | Incremental, Full refresh | updated_at | — |
event_instances | Event instances, the specific occurrences of a Calendar event. | Incremental, Full refresh | updated_at | — |
resources | Rooms and resources that can be booked for events. | Incremental, Full refresh | updated_at | — |
resource_bookings | Bookings of rooms and resources for event instances. | Incremental, Full refresh | updated_at | — |
calendars | Calendars that belong to the organization. | Full refresh | — | — |
calendar_tags | Tags that organize Calendar events. | Incremental, Full refresh | updated_at | — |
Troubleshooting
Sync failing with "Unauthorized"
Planning Center rejected the personal access token. Create a new token in your Planning Center developer account, then reconnect the source.
Sync failing with "Forbidden"
Your Planning Center user can't read one of the products you're syncing. Give the user access to that product in Planning Center, or deselect the affected tables.
For more help, see the Data Warehouse troubleshooting guide.





