Planning Center People Data Model - Complete Documentation
This document provides complete documentation of ALL tables in the Planning Center People data model in Parable, including all 84 entity tables and 25+ relationship tables with full field definitions.Overview
The People module is the most comprehensive in Planning Center, containing:- 84 entity tables - All person, household, workflow, form, messaging, and configuration data
- 25+ relationship tables - Linking entities together following Parable’s relationship architecture
Query Requirements
Schema Prefix
IMPORTANT: All tables in the Planning Center People module are in theplanning_center
schema. You MUST prefix all table names with planning_center.
in your queries.
✅ CORRECT: SELECT * FROM planning_center.people_people
❌ INCORRECT: SELECT * FROM people_people
Row Level Security (RLS)
This database uses Row Level Security (RLS) to automatically filter data based on:- tenant_organization_id: You only see data for your current organization
- system_status: You only see ‘active’ records by default
- ❌
WHERE tenant_organization_id = 1
(unnecessary) - ❌
WHERE system_status = 'active'
(unnecessary)
Complete Table Inventory
Entity Tables (84 total)
Core Person & Contact Tables (11)
people_people
- Core person recordspeople_addresses
- Physical addressespeople_emails
- Email addressespeople_phone_numbers
- Phone numberspeople_households
- Family unitspeople_household_memberships
- Links people to householdspeople_campuses
- Church campus locationspeople_connected_persons
- Connected person recordspeople_person_apps
- App permissions per personpeople_social_profiles
- Social media profilespeople_spam_email_addresses
- Email filtering
Workflow System Tables (10)
people_workflows
- Workflow definitionspeople_workflow_cards
- Workflow instancespeople_workflow_steps
- Workflow step definitionspeople_workflow_card_activities
- Workflow activity logspeople_workflow_card_notes
- Notes on workflow cardspeople_workflow_categories
- Workflow categorizationpeople_workflow_shares
- Workflow sharing settingspeople_workflow_step_assignee_summaries
- Assignee summaries
Forms System Tables (8)
people_forms
- Form definitionspeople_form_submissions
- Submitted form datapeople_form_fields
- Form field definitionspeople_form_field_options
- Field option definitionspeople_form_submission_values
- Submitted field valuespeople_form_categories
- Form categorization
Custom Fields Tables (5)
people_field_definitions
- Custom field schemaspeople_field_datum
- Custom field valuespeople_field_options
- Custom field optionspeople_tabs
- UI tab organizationpeople_conditions
- Conditional logicpeople_rules
- Business rules
Lists & Segmentation Tables (7)
people_lists
- Smart lists and segmentspeople_list_categories
- List categorizationpeople_list_results
- People in listspeople_list_shares
- List sharing permissionspeople_list_stars
- Favorited listspeople_mailchimp_sync_status
- Email marketing sync
Notes & Documentation Tables (4)
people_notes
- Pastoral care notespeople_note_categories
- Note categorizationpeople_note_category_shares
- Note sharingpeople_note_category_subscriptions
- Note subscriptions
Messaging System Tables (4)
people_messages
- Individual messagespeople_message_groups
- Message groupingspeople_custom_senders
- Custom email senderspeople_carriers
- Phone carriers
Import & Data Management Tables (5)
people_people_imports
- Import jobspeople_people_import_conflicts
- Import conflictspeople_people_import_history
- Import audit trailpeople_person_mergers
- Person merge records
Administrative & Reference Tables (11)
people_apps
- Application integrationspeople_background_checks
- Background check recordspeople_inactive_reasons
- Inactivation reasonspeople_marital_statuses
- Marital status optionspeople_name_prefixes
- Title prefixespeople_name_suffixes
- Name suffixespeople_organizations
- Organization settingspeople_reports
- Report definitionspeople_school_options
- School affiliationspeople_service_times
- Service schedules
Relationship Tables (25 total)
people_people_relationships
people_household_relationships
people_email_relationships
people_phone_number_relationships
people_campus_relationships
people_background_check_relationships
people_field_data_relationships
people_field_definition_relationships
people_form_relationships
people_form_field_relationships
people_form_submission_relationships
people_list_relationships
people_list_category_relationships
people_message_relationships
people_message_group_relationships
people_note_relationships
people_note_category_relationships
people_people_import_relationships
people_person_merger_relationships
people_report_relationships
people_social_profile_relationships
people_workflow_relationships
people_workflow_card_relationships
people_workflow_card_activity_relationships
people_workflow_card_note_relationships
Complete Table Definitions
Core Person & Contact Tables
people_people
The main person table containing all individual records.Column | Type | Description |
---|---|---|
id | UUID | Internal unique identifier |
person_id | VARCHAR(64) | Planning Center person ID |
avatar | TEXT | Profile image URL |
demographic_avatar_url | VARCHAR(2048) | Demographic avatar URL |
first_name | VARCHAR(255) | First/given name |
name | VARCHAR(255) | Full display name |
status | VARCHAR(50) | Membership status (active, inactive, etc.) |
remote_id | VARCHAR(64) | External system ID |
accounting_administrator | BOOLEAN | Finance access |
anniversary | DATE | Wedding anniversary |
birthdate | DATE | Date of birth |
child | BOOLEAN | Is a child |
given_name | VARCHAR(255) | Legal first name |
grade | INTEGER | Current school grade |
graduation_year | INTEGER | Expected graduation year |
last_name | VARCHAR(255) | Family/surname |
middle_name | VARCHAR(255) | Middle name |
nickname | VARCHAR(255) | Preferred name |
people_permissions | VARCHAR(255) | People app permissions |
site_administrator | BOOLEAN | Admin access |
gender | VARCHAR(50) | Gender |
inactivated_at | TIMESTAMP | When marked inactive |
medical_notes | TEXT | Medical information |
membership | VARCHAR(255) | Membership level |
created_at | TIMESTAMP | When person was created |
updated_at | TIMESTAMP | Last update time |
can_create_forms | BOOLEAN | Form creation permission |
can_email_lists | BOOLEAN | Email list permission |
directory_shared_info | JSONB | Directory sharing settings |
directory_status | VARCHAR(50) | Directory visibility |
passed_background_check | BOOLEAN | Background check status |
resource_permission_flags | JSONB | Resource permissions |
school_type | VARCHAR(255) | School type |
mfa_configured | BOOLEAN | Two-factor auth enabled |
inactive_reason_id | VARCHAR(64) | Why marked inactive (direct reference) |
marital_status_id | VARCHAR(64) | Marital status (direct reference) |
name_prefix_id | VARCHAR(64) | Title (direct reference) |
name_suffix_id | VARCHAR(64) | Suffix (direct reference) |
organization_id | VARCHAR(64) | Organization ID (direct reference) |
school_id | VARCHAR(64) | School affiliation (direct reference) |
tenant_organization_id | INTEGER | Organization identifier |
system_status | VARCHAR(50) | Data status |
system_created_at | TIMESTAMP | When created in Parable |
system_updated_at | TIMESTAMP | When updated in Parable |
people_addresses
Physical addresses for people.Column | Type | Description |
---|---|---|
id | UUID | Internal unique identifier |
address_id | VARCHAR(64) | Planning Center address ID |
city | VARCHAR(255) | City |
country_code | VARCHAR(2) | Country code |
country_name | VARCHAR(255) | Country name |
created_at | TIMESTAMP | When created |
updated_at | TIMESTAMP | Last update |
location | VARCHAR(255) | Address type (home, work, etc.) |
is_primary | BOOLEAN | Primary address flag |
state | VARCHAR(255) | State/Province |
street_line_1 | VARCHAR(1024) | Street address line 1 |
street_line_2 | VARCHAR(1024) | Street address line 2 |
zip | VARCHAR(255) | Postal code |
tenant_organization_id | INTEGER | Organization identifier |
system_status | VARCHAR(50) | Data status |
system_created_at | TIMESTAMP | When created in Parable |
system_updated_at | TIMESTAMP | When updated in Parable |
people_emails
Email addresses for people.Column | Type | Description |
---|---|---|
id | UUID | Internal unique identifier |
email_id | VARCHAR(64) | Planning Center email ID |
address | VARCHAR(255) | Email address |
blocked | BOOLEAN | Email blocked/unsubscribed |
created_at | TIMESTAMP | When created |
location | VARCHAR(50) | Email type (home, work, etc.) |
is_primary | BOOLEAN | Primary email flag |
updated_at | TIMESTAMP | Last update |
tenant_organization_id | INTEGER | Organization identifier |
system_status | VARCHAR(50) | Data status |
system_created_at | TIMESTAMP | When created in Parable |
system_updated_at | TIMESTAMP | When updated in Parable |
people_phone_numbers
Phone numbers with carrier information.Column | Type | Description |
---|---|---|
id | UUID | Internal unique identifier |
phone_number_id | VARCHAR(64) | Planning Center phone ID |
carrier | VARCHAR(255) | Phone carrier |
country_code | VARCHAR(2) | Country code |
e164 | VARCHAR(255) | E164 formatted number |
international | VARCHAR(255) | International format |
location | VARCHAR(255) | Phone type (mobile, home, etc.) |
national | VARCHAR(255) | National format |
number | VARCHAR(255) | Phone number |
is_primary | BOOLEAN | Primary phone flag |
updated_at | TIMESTAMP | Last update |
tenant_organization_id | INTEGER | Organization identifier |
system_status | VARCHAR(50) | Data status |
system_created_at | TIMESTAMP | When created in Parable |
system_updated_at | TIMESTAMP | When updated in Parable |
people_households
Family units for grouping related people.Column | Type | Description |
---|---|---|
id | UUID | Internal unique identifier |
household_id | VARCHAR(64) | Planning Center household ID |
avatar | TEXT | Household avatar URL |
created_at | TIMESTAMP | When created |
updated_at | TIMESTAMP | Last update |
member_count | INTEGER | Number of members |
name | VARCHAR(255) | Household name |
primary_contact_id | VARCHAR(64) | Main contact person ID |
primary_contact_name | VARCHAR(255) | Main contact name |
tenant_organization_id | INTEGER | Organization identifier |
system_status | VARCHAR(50) | Data status |
system_created_at | TIMESTAMP | When created in Parable |
system_updated_at | TIMESTAMP | When updated in Parable |
people_household_memberships
Links people to households with their roles.Column | Type | Description |
---|---|---|
id | UUID | Internal unique identifier |
household_membership_id | VARCHAR(64) | Planning Center membership ID |
pending | BOOLEAN | Pending approval |
person_name | VARCHAR(255) | Person name |
person_id | VARCHAR(64) | Person ID (direct reference) |
household_id | VARCHAR(64) | Household ID (direct reference) |
tenant_organization_id | INTEGER | Organization identifier |
system_status | VARCHAR(50) | Data status |
system_created_at | TIMESTAMP | When created in Parable |
system_updated_at | TIMESTAMP | When updated in Parable |
people_campuses
Church campus locations.Column | Type | Description |
---|---|---|
id | UUID | Internal unique identifier |
campus_id | VARCHAR(64) | Planning Center campus ID |
avatar_url | VARCHAR(2048) | Campus image |
church_center_enabled | BOOLEAN | Church Center enabled |
city | VARCHAR(255) | City |
contact_email_address | VARCHAR(255) | Contact email |
country | VARCHAR(255) | Country |
created_at | TIMESTAMP | When created |
date_format | BOOLEAN | Date format setting |
description | TEXT | Campus description |
geolocation_set_manually | BOOLEAN | Manual geolocation flag |
latitude | DOUBLE PRECISION | GPS latitude |
longitude | DOUBLE PRECISION | GPS longitude |
name | VARCHAR(255) | Campus name |
phone_number | VARCHAR(255) | Contact phone |
state | VARCHAR(255) | State |
street | VARCHAR(255) | Street address |
time_zone | VARCHAR(255) | Time zone |
time_zone_raw | VARCHAR(255) | Raw time zone data |
twenty_four_hour_time | BOOLEAN | 24-hour time format |
updated_at | TIMESTAMP | Last update |
website | VARCHAR(255) | Campus website |
zip | VARCHAR(255) | Postal code |
tenant_organization_id | INTEGER | Organization identifier |
system_status | VARCHAR(50) | Data status |
system_created_at | TIMESTAMP | When created in Parable |
system_updated_at | TIMESTAMP | When updated in Parable |
people_connected_persons
Connected person records from external systems.Column | Type | Description |
---|---|---|
id | UUID | Internal unique identifier |
connected_person_id | VARCHAR(64) | Planning Center connected person ID |
first_name | VARCHAR(255) | First name |
gender | VARCHAR(50) | Gender |
given_name | VARCHAR(255) | Legal first name |
last_name | VARCHAR(255) | Last name |
middle_name | VARCHAR(255) | Middle name |
nickname | VARCHAR(255) | Nickname |
organization_id | VARCHAR(64) | Organization ID |
organization_name | VARCHAR(255) | Organization name |
person_id | VARCHAR(64) | Associated person ID |
tenant_organization_id | INTEGER | Organization identifier |
system_status | VARCHAR(50) | Data status |
system_created_at | TIMESTAMP | When created in Parable |
system_updated_at | TIMESTAMP | When updated in Parable |
people_person_apps
Application permissions per person.Column | Type | Description |
---|---|---|
id | UUID | Internal unique identifier |
person_app_id | VARCHAR(64) | Planning Center person app ID |
allow_pco_login | BOOLEAN | Can login to PCO |
people_permissions | VARCHAR(255) | Permission level |
person_id | VARCHAR(64) | Person ID (direct reference) |
app_id | VARCHAR(64) | App ID (direct reference) |
tenant_organization_id | INTEGER | Organization identifier |
system_status | VARCHAR(50) | Data status |
system_created_at | TIMESTAMP | When created in Parable |
system_updated_at | TIMESTAMP | When updated in Parable |
people_social_profiles
Social media profiles for people.Column | Type | Description |
---|---|---|
id | UUID | Internal unique identifier |
social_profile_id | VARCHAR(64) | Planning Center social profile ID |
created_at | TIMESTAMP | When created |
site | VARCHAR(255) | Social media platform |
updated_at | TIMESTAMP | Last update |
url | TEXT | Profile URL |
verified | BOOLEAN | Verified account |
person_id | VARCHAR(64) | Person ID (direct reference) |
tenant_organization_id | INTEGER | Organization identifier |
system_status | VARCHAR(50) | Data status |
system_created_at | TIMESTAMP | When created in Parable |
system_updated_at | TIMESTAMP | When updated in Parable |
people_spam_email_addresses
Email addresses marked as spam or blocked.Column | Type | Description |
---|---|---|
id | UUID | Internal unique identifier |
spam_email_address_id | VARCHAR(64) | Planning Center spam email ID |
address | VARCHAR(255) | Email address |
created_at | TIMESTAMP | When created |
updated_at | TIMESTAMP | Last update |
tenant_organization_id | INTEGER | Organization identifier |
system_status | VARCHAR(50) | Data status |
system_created_at | TIMESTAMP | When created in Parable |
system_updated_at | TIMESTAMP | When updated in Parable |
Workflow System Tables
people_workflows
Process workflow definitions for managing people through various church processes.Column | Type | Description |
---|---|---|
id | UUID | Internal unique identifier |
workflow_id | VARCHAR(64) | Planning Center workflow ID |
campus_id | VARCHAR(64) | Associated campus |
completed_card_count | INTEGER | Completed cards count |
created_at | TIMESTAMP | When created |
deleted_at | TIMESTAMP | Soft deletion |
my_due_soon_card_count | INTEGER | Due soon cards for current user |
my_overdue_card_count | INTEGER | Overdue cards for current user |
my_ready_card_count | INTEGER | Ready cards for current user |
name | VARCHAR(255) | Workflow name |
recently_viewed | BOOLEAN | Recently accessed flag |
total_cards_count | INTEGER | Total cards in workflow |
total_ready_and_snoozed_card_count | INTEGER | Ready and snoozed count |
total_ready_card_count | INTEGER | Total ready cards |
updated_at | TIMESTAMP | Last update |
workflow_category_id | VARCHAR(64) | Workflow category |
tenant_organization_id | INTEGER | Organization identifier |
system_status | VARCHAR(50) | Data status |
system_created_at | TIMESTAMP | When created in Parable |
system_updated_at | TIMESTAMP | When updated in Parable |
people_workflow_cards
Individual workflow instances tracking people through processes.Column | Type | Description |
---|---|---|
id | UUID | Internal unique identifier |
workflow_card_id | VARCHAR(64) | Planning Center card ID |
assignee_id | VARCHAR(64) | Assigned person |
calculated_due_at_in_days_ago | INTEGER | Due date calculation |
completed_at | TIMESTAMP | Completion time |
created_at | TIMESTAMP | When created |
updated_at | TIMESTAMP | Last update |
flagged_for_notification_at | TIMESTAMP | Notification flag |
moved_to_step_at | TIMESTAMP | Last step transition |
overdue | BOOLEAN | Overdue status |
person_id | VARCHAR(64) | Subject person |
removed_at | TIMESTAMP | Removal time |
snooze_until | TIMESTAMP | Snooze end time |
stage | VARCHAR(255) | Current stage |
sticky_assignment | BOOLEAN | Assignment persistence |
workflow_id | VARCHAR(64) | Parent workflow |
workflow_step_id | VARCHAR(64) | Current step |
tenant_organization_id | INTEGER | Organization identifier |
system_status | VARCHAR(50) | Data status |
system_created_at | TIMESTAMP | When created in Parable |
system_updated_at | TIMESTAMP | When updated in Parable |
people_workflow_steps
Workflow step definitions.Column | Type | Description |
---|---|---|
id | UUID | Internal unique identifier |
workflow_step_id | VARCHAR(64) | Planning Center step ID |
auto_snooze_days | INTEGER | Auto-snooze duration |
auto_snooze_value | INTEGER | Snooze value |
auto_snooze_interval | VARCHAR(50) | Snooze interval type |
created_at | TIMESTAMP | When created |
default_assignee_id | VARCHAR(64) | Default assignee |
description | TEXT | Step description |
name | VARCHAR(255) | Step name |
sequence | INTEGER | Step order |
updated_at | TIMESTAMP | Last update |
workflow_id | VARCHAR(64) | Parent workflow |
tenant_organization_id | INTEGER | Organization identifier |
system_status | VARCHAR(50) | Data status |
system_created_at | TIMESTAMP | When created in Parable |
system_updated_at | TIMESTAMP | When updated in Parable |
people_workflow_card_activities
Activity logs for workflow cards.Column | Type | Description |
---|---|---|
id | UUID | Internal unique identifier |
workflow_card_activity_id | VARCHAR(64) | Planning Center activity ID |
comment | TEXT | Activity comment |
created_at | TIMESTAMP | When created |
person_avatar_url | VARCHAR(2048) | Person avatar |
person_name | VARCHAR(255) | Person name |
reassigned_to_avatar_url | VARCHAR(2048) | Reassigned person avatar |
reassigned_to_name | VARCHAR(255) | Reassigned person name |
subject | VARCHAR(255) | Activity subject |
type | VARCHAR(100) | Activity type |
updated_at | TIMESTAMP | Last update |
workflow_card_id | VARCHAR(64) | Parent card |
tenant_organization_id | INTEGER | Organization identifier |
system_status | VARCHAR(50) | Data status |
system_created_at | TIMESTAMP | When created in Parable |
system_updated_at | TIMESTAMP | When updated in Parable |
people_workflow_card_notes
Notes attached to workflow cards.Column | Type | Description |
---|---|---|
id | UUID | Internal unique identifier |
workflow_card_note_id | VARCHAR(64) | Planning Center note ID |
created_at | TIMESTAMP | When created |
note | TEXT | Note content |
updated_at | TIMESTAMP | Last update |
workflow_card_id | VARCHAR(64) | Parent card |
tenant_organization_id | INTEGER | Organization identifier |
system_status | VARCHAR(50) | Data status |
system_created_at | TIMESTAMP | When created in Parable |
system_updated_at | TIMESTAMP | When updated in Parable |
people_workflow_categories
Categories for organizing workflows.Column | Type | Description |
---|---|---|
id | UUID | Internal unique identifier |
workflow_category_id | VARCHAR(64) | Planning Center category ID |
created_at | TIMESTAMP | When created |
name | VARCHAR(255) | Category name |
updated_at | TIMESTAMP | Last update |
tenant_organization_id | INTEGER | Organization identifier |
system_status | VARCHAR(50) | Data status |
system_created_at | TIMESTAMP | When created in Parable |
system_updated_at | TIMESTAMP | When updated in Parable |
people_workflow_shares
Workflow sharing permissions.Column | Type | Description |
---|---|---|
id | UUID | Internal unique identifier |
workflow_share_id | VARCHAR(64) | Planning Center share ID |
created_at | TIMESTAMP | When created |
group | VARCHAR(255) | Share group |
permission | VARCHAR(100) | Permission level |
person_id | VARCHAR(64) | Person with access |
workflow_id | VARCHAR(64) | Shared workflow |
tenant_organization_id | INTEGER | Organization identifier |
system_status | VARCHAR(50) | Data status |
system_created_at | TIMESTAMP | When created in Parable |
system_updated_at | TIMESTAMP | When updated in Parable |
people_workflow_step_assignee_summaries
Summary of workflow step assignments.Column | Type | Description |
---|---|---|
id | UUID | Internal unique identifier |
workflow_step_assignee_summary_id | VARCHAR(64) | Planning Center summary ID |
overdue_cards | INTEGER | Number of overdue cards |
ready_and_snoozed_cards | INTEGER | Number of ready/snoozed cards |
ready_cards | INTEGER | Number of ready cards |
total_cards | INTEGER | Total cards assigned |
person_id | VARCHAR(64) | Assignee person |
workflow_step_id | VARCHAR(64) | Workflow step |
tenant_organization_id | INTEGER | Organization identifier |
system_status | VARCHAR(50) | Data status |
system_created_at | TIMESTAMP | When created in Parable |
system_updated_at | TIMESTAMP | When updated in Parable |
Forms System Tables
people_forms
Form definitions for data collection.Column | Type | Description |
---|---|---|
id | UUID | Internal unique identifier |
form_id | VARCHAR(64) | Planning Center form ID |
active | BOOLEAN | Active status |
archived | BOOLEAN | Archived status |
archived_at | TIMESTAMP | Archive timestamp |
created_at | TIMESTAMP | When created |
deleted_at | TIMESTAMP | Soft deletion |
description | TEXT | Form description |
login_required | BOOLEAN | Login required to submit |
name | VARCHAR(255) | Form name |
public_url | VARCHAR(255) | Public form URL |
recently_viewed | BOOLEAN | Recently accessed |
send_submission_notification_to_submitter | BOOLEAN | Email notification to submitter |
submission_count | INTEGER | Number of submissions |
updated_at | TIMESTAMP | Last update |
campus_id | VARCHAR(64) | Associated campus |
form_category_id | VARCHAR(64) | Form category |
tenant_organization_id | INTEGER | Organization identifier |
system_status | VARCHAR(50) | Data status |
system_created_at | TIMESTAMP | When created in Parable |
system_updated_at | TIMESTAMP | When updated in Parable |
people_form_submissions
Submitted form data.Column | Type | Description |
---|---|---|
id | UUID | Internal unique identifier |
form_submission_id | VARCHAR(64) | Planning Center submission ID |
created_at | TIMESTAMP | When submitted |
person_id | VARCHAR(64) | Submitter person |
form_id | VARCHAR(64) | Parent form |
verified | BOOLEAN | Verification status |
tenant_organization_id | INTEGER | Organization identifier |
system_status | VARCHAR(50) | Data status |
system_created_at | TIMESTAMP | When created in Parable |
system_updated_at | TIMESTAMP | When updated in Parable |
people_form_fields
Form field definitions.Column | Type | Description |
---|---|---|
id | UUID | Internal unique identifier |
form_field_id | VARCHAR(64) | Planning Center field ID |
created_at | TIMESTAMP | When created |
description | TEXT | Field description |
label | VARCHAR(255) | Field label |
required | BOOLEAN | Required field |
sequence | INTEGER | Field order |
settings | JSONB | Field settings |
type | VARCHAR(100) | Field type |
updated_at | TIMESTAMP | Last update |
form_id | VARCHAR(64) | Parent form |
tenant_organization_id | INTEGER | Organization identifier |
system_status | VARCHAR(50) | Data status |
system_created_at | TIMESTAMP | When created in Parable |
system_updated_at | TIMESTAMP | When updated in Parable |
people_form_field_options
Options for form fields.Column | Type | Description |
---|---|---|
id | UUID | Internal unique identifier |
form_field_option_id | VARCHAR(64) | Planning Center option ID |
label | VARCHAR(255) | Option label |
sequence | INTEGER | Option order |
form_field_id | VARCHAR(64) | Parent field |
tenant_organization_id | INTEGER | Organization identifier |
system_status | VARCHAR(50) | Data status |
system_created_at | TIMESTAMP | When created in Parable |
system_updated_at | TIMESTAMP | When updated in Parable |
people_form_submission_values
Values submitted for form fields.Column | Type | Description |
---|---|---|
id | UUID | Internal unique identifier |
form_submission_value_id | VARCHAR(64) | Planning Center value ID |
display_value | TEXT | Display value |
form_field_id | VARCHAR(64) | Field ID |
form_submission_id | VARCHAR(64) | Submission ID |
tenant_organization_id | INTEGER | Organization identifier |
system_status | VARCHAR(50) | Data status |
system_created_at | TIMESTAMP | When created in Parable |
system_updated_at | TIMESTAMP | When updated in Parable |
people_form_categories
Categories for organizing forms.Column | Type | Description |
---|---|---|
id | UUID | Internal unique identifier |
form_category_id | VARCHAR(64) | Planning Center category ID |
name | VARCHAR(255) | Category name |
tenant_organization_id | INTEGER | Organization identifier |
system_status | VARCHAR(50) | Data status |
system_created_at | TIMESTAMP | When created in Parable |
system_updated_at | TIMESTAMP | When updated in Parable |
Custom Fields Tables
people_field_definitions
Custom field schemas.Column | Type | Description |
---|---|---|
id | UUID | Internal unique identifier |
field_definition_id | VARCHAR(64) | Planning Center field definition ID |
config | JSONB | Field configuration |
data_type | VARCHAR(50) | Data type |
deleted_at | TIMESTAMP | Soft deletion |
name | VARCHAR(255) | Field name |
sequence | INTEGER | Field order |
slug | VARCHAR(255) | URL slug |
tab_id | VARCHAR(64) | Associated tab |
field_options | JSONB | Field options configuration |
tenant_organization_id | INTEGER | Organization identifier |
system_status | VARCHAR(50) | Data status |
system_created_at | TIMESTAMP | When created in Parable |
system_updated_at | TIMESTAMP | When updated in Parable |
people_field_datum
Custom field values for people.Column | Type | Description |
---|---|---|
id | UUID | Internal unique identifier |
field_datum_id | VARCHAR(64) | Planning Center field data ID |
person_id | VARCHAR(64) | Associated person ID |
file | TEXT | File attachment URL |
file_content_type | VARCHAR(255) | File MIME type |
file_name | TEXT | File name |
file_size | INTEGER | File size in bytes |
value | TEXT | Field value |
field_definition_id | VARCHAR(64) | Field definition (direct reference) |
customizable_id | VARCHAR(64) | Associated entity (direct reference) |
field_option_id | VARCHAR(64) | Selected field option |
tab_id | VARCHAR(64) | Associated tab |
tenant_organization_id | INTEGER | Organization identifier |
system_status | VARCHAR(50) | Data status |
system_created_at | TIMESTAMP | When created in Parable |
system_updated_at | TIMESTAMP | When updated in Parable |
people_field_options
Options for custom fields.Column | Type | Description |
---|---|---|
id | UUID | Internal unique identifier |
field_option_id | VARCHAR(64) | Planning Center option ID |
sequence | INTEGER | Option order |
value | VARCHAR(255) | Option value |
field_definition_id | VARCHAR(64) | Parent field definition |
tenant_organization_id | INTEGER | Organization identifier |
system_status | VARCHAR(50) | Data status |
system_created_at | TIMESTAMP | When created in Parable |
system_updated_at | TIMESTAMP | When updated in Parable |
people_tabs
UI tab organization for custom fields.Column | Type | Description |
---|---|---|
id | UUID | Internal unique identifier |
tab_id | VARCHAR(64) | Planning Center tab ID |
name | VARCHAR(255) | Tab name |
slug | VARCHAR(255) | URL slug |
sequence | INTEGER | Tab order |
field_definitions | JSONB | Field definitions in tab |
field_options | JSONB | Field options |
tenant_organization_id | INTEGER | Organization identifier |
system_status | VARCHAR(50) | Data status |
system_created_at | TIMESTAMP | When created in Parable |
system_updated_at | TIMESTAMP | When updated in Parable |
people_conditions
Conditional logic for fields and workflows.Column | Type | Description |
---|---|---|
id | UUID | Internal unique identifier |
condition_id | VARCHAR(64) | Planning Center condition ID |
application | VARCHAR(255) | Application context |
comparison | VARCHAR(255) | Comparison operator |
created_at | TIMESTAMP | When created |
definition_class | VARCHAR(255) | Definition class |
definition_identifier | VARCHAR(255) | Definition identifier |
description | VARCHAR(255) | Condition description |
settings | JSONB | Condition settings |
updated_at | TIMESTAMP | Last update |
tenant_organization_id | INTEGER | Organization identifier |
system_status | VARCHAR(50) | Data status |
system_created_at | TIMESTAMP | When created in Parable |
system_updated_at | TIMESTAMP | When updated in Parable |
people_rules
Business rules for data processing.Column | Type | Description |
---|---|---|
id | UUID | Internal unique identifier |
rule_id | VARCHAR(64) | Planning Center rule ID |
created_at | TIMESTAMP | When created |
subset | VARCHAR(255) | Rule subset |
updated_at | TIMESTAMP | Last update |
tenant_organization_id | INTEGER | Organization identifier |
system_status | VARCHAR(50) | Data status |
system_created_at | TIMESTAMP | When created in Parable |
system_updated_at | TIMESTAMP | When updated in Parable |
Lists & Segmentation Tables
people_lists
Smart lists for segmenting people.Column | Type | Description |
---|---|---|
id | UUID | Internal unique identifier |
list_id | VARCHAR(64) | Planning Center list ID |
automatic_run | BOOLEAN | Auto-refresh enabled |
automations_active | BOOLEAN | Automations enabled |
automations_count | INTEGER | Number of automations |
batch_completed_at | TIMESTAMP | Last batch completion |
created_at | TIMESTAMP | When created |
updated_at | TIMESTAMP | Last update |
description | TEXT | List description |
has_inactive | BOOLEAN | Includes inactive people |
include_archived | BOOLEAN | Includes archived |
invalid | BOOLEAN | List has errors |
mailchimp_sync_status | VARCHAR(100) | Mailchimp sync status |
name | VARCHAR(255) | List name |
name_or_description | TEXT | Combined name/description |
paused_automations_count | INTEGER | Paused automation count |
recently_viewed | BOOLEAN | Recently accessed |
refreshed_at | TIMESTAMP | Last refresh |
returns | VARCHAR(100) | Return type |
starred | BOOLEAN | Is favorited |
status | VARCHAR(50) | List status |
subset | VARCHAR(100) | List subset |
total_people | INTEGER | People count |
tenant_organization_id | INTEGER | Organization identifier |
system_status | VARCHAR(50) | Data status |
system_created_at | TIMESTAMP | When created in Parable |
system_updated_at | TIMESTAMP | When updated in Parable |
people_list_categories
Categories for organizing lists.Column | Type | Description |
---|---|---|
id | UUID | Internal unique identifier |
list_category_id | VARCHAR(64) | Planning Center category ID |
created_at | TIMESTAMP | When created |
name | VARCHAR(255) | Category name |
organization_id | VARCHAR(64) | Organization ID |
updated_at | TIMESTAMP | Last update |
tenant_organization_id | INTEGER | Organization identifier |
system_status | VARCHAR(50) | Data status |
system_created_at | TIMESTAMP | When created in Parable |
system_updated_at | TIMESTAMP | When updated in Parable |
people_list_results
People included in lists.Column | Type | Description |
---|---|---|
id | UUID | Internal unique identifier |
list_result_id | VARCHAR(64) | Planning Center result ID |
created_at | TIMESTAMP | When added to list |
list_id | VARCHAR(64) | Parent list |
person_id | VARCHAR(64) | Person in list |
updated_at | TIMESTAMP | Last update |
tenant_organization_id | INTEGER | Organization identifier |
system_status | VARCHAR(50) | Data status |
system_created_at | TIMESTAMP | When created in Parable |
system_updated_at | TIMESTAMP | When updated in Parable |
people_list_shares
List sharing permissions.Column | Type | Description |
---|---|---|
id | UUID | Internal unique identifier |
list_share_id | VARCHAR(64) | Planning Center share ID |
created_at | TIMESTAMP | When shared |
group | VARCHAR(255) | Share group |
name | VARCHAR(255) | Share name |
permission | VARCHAR(100) | Permission level |
list_id | VARCHAR(64) | Shared list |
person_id | VARCHAR(64) | Person with access |
tenant_organization_id | INTEGER | Organization identifier |
system_status | VARCHAR(50) | Data status |
system_created_at | TIMESTAMP | When created in Parable |
system_updated_at | TIMESTAMP | When updated in Parable |
people_list_stars
Favorited lists per user.Column | Type | Description |
---|---|---|
id | UUID | Internal unique identifier |
list_star_id | VARCHAR(64) | Planning Center star ID |
created_at | TIMESTAMP | When favorited |
list_id | VARCHAR(64) | Favorited list |
person_id | VARCHAR(64) | Person who favorited |
tenant_organization_id | INTEGER | Organization identifier |
system_status | VARCHAR(50) | Data status |
system_created_at | TIMESTAMP | When created in Parable |
system_updated_at | TIMESTAMP | When updated in Parable |
people_mailchimp_sync_status
Email marketing synchronization status.Column | Type | Description |
---|---|---|
id | UUID | Internal unique identifier |
mailchimp_sync_status_id | VARCHAR(64) | Planning Center sync ID |
completed_at | TIMESTAMP | When sync completed |
error | TEXT | Error message |
error_count | INTEGER | Number of errors |
segment_id | VARCHAR(255) | Mailchimp segment |
status | VARCHAR(100) | Sync status |
list_id | VARCHAR(64) | Synced list |
tenant_organization_id | INTEGER | Organization identifier |
system_status | VARCHAR(50) | Data status |
system_created_at | TIMESTAMP | When created in Parable |
system_updated_at | TIMESTAMP | When updated in Parable |
Notes & Documentation Tables
people_notes
Pastoral care notes and follow-ups.Column | Type | Description |
---|---|---|
id | UUID | Internal unique identifier |
note_id | VARCHAR(64) | Planning Center note ID |
created_at | TIMESTAMP | When created |
updated_at | TIMESTAMP | Last update |
note | TEXT | Note content |
note_category_id | VARCHAR(64) | Note category (direct reference) |
organization_id | VARCHAR(64) | Organization (direct reference) |
person_id | VARCHAR(64) | Associated person (direct reference) |
created_by_id | VARCHAR(64) | Author (direct reference) |
tenant_organization_id | INTEGER | Organization identifier |
system_status | VARCHAR(50) | Data status |
system_created_at | TIMESTAMP | When created in Parable |
system_updated_at | TIMESTAMP | When updated in Parable |
people_note_categories
Categories for organizing notes.Column | Type | Description |
---|---|---|
id | UUID | Internal unique identifier |
note_category_id | VARCHAR(64) | Planning Center category ID |
created_at | TIMESTAMP | When created |
locked | BOOLEAN | Category locked |
name | VARCHAR(255) | Category name |
organization_id | VARCHAR(64) | Organization ID |
sort_order | VARCHAR(100) | Sort order |
updated_at | TIMESTAMP | Last update |
tenant_organization_id | INTEGER | Organization identifier |
system_status | VARCHAR(50) | Data status |
system_created_at | TIMESTAMP | When created in Parable |
system_updated_at | TIMESTAMP | When updated in Parable |
people_note_category_shares
Note category sharing permissions.Column | Type | Description |
---|---|---|
id | UUID | Internal unique identifier |
note_category_share_id | VARCHAR(64) | Planning Center share ID |
created_at | TIMESTAMP | When shared |
group | VARCHAR(255) | Share group |
note_category_id | VARCHAR(64) | Shared category |
person_id | VARCHAR(64) | Person with access |
permission | VARCHAR(100) | Permission level |
tenant_organization_id | INTEGER | Organization identifier |
system_status | VARCHAR(50) | Data status |
system_created_at | TIMESTAMP | When created in Parable |
system_updated_at | TIMESTAMP | When updated in Parable |
people_note_category_subscriptions
Subscriptions to note categories.Column | Type | Description |
---|---|---|
id | UUID | Internal unique identifier |
note_category_subscription_id | VARCHAR(64) | Planning Center subscription ID |
created_at | TIMESTAMP | When subscribed |
note_category_id | VARCHAR(64) | Subscribed category |
person_id | VARCHAR(64) | Subscriber |
updated_at | TIMESTAMP | Last update |
tenant_organization_id | INTEGER | Organization identifier |
system_status | VARCHAR(50) | Data status |
system_created_at | TIMESTAMP | When created in Parable |
system_updated_at | TIMESTAMP | When updated in Parable |
Messaging System Tables
people_messages
Individual messages sent through the system.Column | Type | Description |
---|---|---|
id | UUID | Internal unique identifier |
message_id | VARCHAR(64) | Planning Center message ID |
app_name | VARCHAR(255) | Originating app |
bounce_count | INTEGER | Number of bounces |
created_at | TIMESTAMP | When created |
delivery_status | VARCHAR(100) | Delivery status |
from_addresses | JSONB | Sender addresses |
message_type | VARCHAR(100) | Message type |
read_count | INTEGER | Read count |
reject_reason | TEXT | Rejection reason |
rejection_notification_sent_at | TIMESTAMP | Rejection notification time |
sent_at | TIMESTAMP | When sent |
subject | TEXT | Message subject |
to_addresses | JSONB | Recipient addresses |
updated_at | TIMESTAMP | Last update |
message_group_id | VARCHAR(64) | Parent message group |
tenant_organization_id | INTEGER | Organization identifier |
system_status | VARCHAR(50) | Data status |
system_created_at | TIMESTAMP | When created in Parable |
system_updated_at | TIMESTAMP | When updated in Parable |
people_message_groups
Groupings of related messages.Column | Type | Description |
---|---|---|
id | UUID | Internal unique identifier |
message_group_id | VARCHAR(64) | Planning Center group ID |
created_at | TIMESTAMP | When created |
from_address | VARCHAR(255) | Sender address |
message_count | INTEGER | Number of messages |
message_type | VARCHAR(100) | Message type |
subject | TEXT | Group subject |
system_email | BOOLEAN | System email flag |
uuid | VARCHAR(255) | External UUID |
tenant_organization_id | INTEGER | Organization identifier |
system_status | VARCHAR(50) | Data status |
system_created_at | TIMESTAMP | When created in Parable |
system_updated_at | TIMESTAMP | When updated in Parable |
people_custom_senders
Custom email sender configurations.Column | Type | Description |
---|---|---|
id | UUID | Internal unique identifier |
custom_sender_id | VARCHAR(64) | Planning Center sender ID |
name | VARCHAR(255) | Sender name |
email_address | VARCHAR(255) | Email address |
verified_at | TIMESTAMP | Verification time |
verification_requested_at | TIMESTAMP | Verification request time |
created_at | TIMESTAMP | When created |
updated_at | TIMESTAMP | Last update |
verified | BOOLEAN | Verification status |
expired | BOOLEAN | Expiration status |
verification_status | VARCHAR(255) | Verification status |
custom_sender_share_id | VARCHAR(255) | Share ID |
tenant_organization_id | INTEGER | Organization identifier |
system_status | VARCHAR(50) | Data status |
system_created_at | TIMESTAMP | When created in Parable |
system_updated_at | TIMESTAMP | When updated in Parable |
people_carriers
Phone carrier information for SMS messaging.Column | Type | Description |
---|---|---|
id | UUID | Internal unique identifier |
carrier_id | VARCHAR(64) | Planning Center carrier ID |
international | BOOLEAN | International carrier |
name | VARCHAR(255) | Carrier name |
value | VARCHAR(255) | Carrier value |
tenant_organization_id | INTEGER | Organization identifier |
system_status | VARCHAR(50) | Data status |
system_created_at | TIMESTAMP | When created in Parable |
system_updated_at | TIMESTAMP | When updated in Parable |
Import & Data Management Tables
people_people_imports
Import job definitions.Column | Type | Description |
---|---|---|
id | UUID | Internal unique identifier |
people_import_id | VARCHAR(64) | Planning Center import ID |
attribs | JSONB | Import attributes |
completed_at | TIMESTAMP | When completed |
conflicting_changes | JSONB | Conflicting changes |
created_at | TIMESTAMP | When created |
people_ids | JSONB | Imported people IDs |
processed_at | TIMESTAMP | When processed |
status | VARCHAR(100) | Import status |
undone_at | TIMESTAMP | When undone |
updated_at | TIMESTAMP | Last update |
tenant_organization_id | INTEGER | Organization identifier |
system_status | VARCHAR(50) | Data status |
system_created_at | TIMESTAMP | When created in Parable |
system_updated_at | TIMESTAMP | When updated in Parable |
people_people_import_conflicts
Conflicts detected during imports.Column | Type | Description |
---|---|---|
id | UUID | Internal unique identifier |
people_import_conflict_id | VARCHAR(64) | Planning Center conflict ID |
conflicting_changes | JSONB | Conflicting changes |
created_at | TIMESTAMP | When created |
data | JSONB | Conflict data |
ignore | BOOLEAN | Ignore conflict |
kind | VARCHAR(100) | Conflict type |
message | TEXT | Conflict message |
name | VARCHAR(255) | Conflict name |
updated_at | TIMESTAMP | Last update |
people_import_id | VARCHAR(64) | Parent import |
tenant_organization_id | INTEGER | Organization identifier |
system_status | VARCHAR(50) | Data status |
system_created_at | TIMESTAMP | When created in Parable |
system_updated_at | TIMESTAMP | When updated in Parable |
people_people_import_history
Audit trail of import operations.Column | Type | Description |
---|---|---|
id | UUID | Internal unique identifier |
people_import_history_id | VARCHAR(64) | Planning Center history ID |
conflicting_changes | JSONB | Conflicting changes |
created_at | TIMESTAMP | When created |
name | VARCHAR(255) | History name |
person_id | VARCHAR(64) | Associated person |
people_import_id | VARCHAR(64) | Parent import |
undone_at | TIMESTAMP | When undone |
updated_at | TIMESTAMP | Last update |
tenant_organization_id | INTEGER | Organization identifier |
system_status | VARCHAR(50) | Data status |
system_created_at | TIMESTAMP | When created in Parable |
system_updated_at | TIMESTAMP | When updated in Parable |
people_person_mergers
Records of merged person records.Column | Type | Description |
---|---|---|
id | UUID | Internal unique identifier |
person_merger_id | VARCHAR(64) | Planning Center merger ID |
created_at | TIMESTAMP | When merged |
person_to_keep_id | VARCHAR(64) | Surviving person record |
person_to_remove_id | VARCHAR(64) | Removed person record |
updated_at | TIMESTAMP | Last update |
tenant_organization_id | INTEGER | Organization identifier |
system_status | VARCHAR(50) | Data status |
system_created_at | TIMESTAMP | When created in Parable |
system_updated_at | TIMESTAMP | When updated in Parable |
Administrative & Reference Tables
people_apps
Application integrations available.Column | Type | Description |
---|---|---|
id | UUID | Internal unique identifier |
app_id | VARCHAR(64) | Planning Center app ID |
name | VARCHAR(255) | App name |
url | TEXT | App URL |
tenant_organization_id | INTEGER | Organization identifier |
system_status | VARCHAR(50) | Data status |
system_created_at | TIMESTAMP | When created in Parable |
system_updated_at | TIMESTAMP | When updated in Parable |
people_background_checks
Background check records for volunteers and staff.Column | Type | Description |
---|---|---|
id | UUID | Internal unique identifier |
background_check_id | VARCHAR(64) | Planning Center check ID |
completed_at | TIMESTAMP | When completed |
current | BOOLEAN | Current status |
expires_on | DATE | Expiration date |
note | TEXT | Check notes |
report_url | TEXT | Report URL |
status | VARCHAR(255) | Check status |
status_updated_at | TIMESTAMP | Status update time |
person_id | VARCHAR(64) | Person checked |
tenant_organization_id | INTEGER | Organization identifier |
system_status | VARCHAR(50) | Data status |
system_created_at | TIMESTAMP | When created in Parable |
system_updated_at | TIMESTAMP | When updated in Parable |
people_inactive_reasons
Reasons for marking people inactive.Column | Type | Description |
---|---|---|
id | UUID | Internal unique identifier |
inactive_reason_id | VARCHAR(64) | Planning Center reason ID |
value | VARCHAR(255) | Reason value |
tenant_organization_id | INTEGER | Organization identifier |
system_status | VARCHAR(50) | Data status |
system_created_at | TIMESTAMP | When created in Parable |
system_updated_at | TIMESTAMP | When updated in Parable |
people_marital_statuses
Marital status options.Column | Type | Description |
---|---|---|
id | UUID | Internal unique identifier |
marital_status_id | VARCHAR(64) | Planning Center status ID |
value | VARCHAR(255) | Status value |
tenant_organization_id | INTEGER | Organization identifier |
system_status | VARCHAR(50) | Data status |
system_created_at | TIMESTAMP | When created in Parable |
system_updated_at | TIMESTAMP | When updated in Parable |
people_name_prefixes
Title prefixes (Mr., Mrs., Dr., etc.).Column | Type | Description |
---|---|---|
id | UUID | Internal unique identifier |
name_prefix_id | VARCHAR(64) | Planning Center prefix ID |
value | VARCHAR(255) | Prefix value |
tenant_organization_id | INTEGER | Organization identifier |
system_status | VARCHAR(50) | Data status |
system_created_at | TIMESTAMP | When created in Parable |
system_updated_at | TIMESTAMP | When updated in Parable |
people_name_suffixes
Name suffixes (Jr., Sr., III, etc.).Column | Type | Description |
---|---|---|
id | UUID | Internal unique identifier |
name_suffix_id | VARCHAR(64) | Planning Center suffix ID |
value | VARCHAR(255) | Suffix value |
tenant_organization_id | INTEGER | Organization identifier |
system_status | VARCHAR(50) | Data status |
system_created_at | TIMESTAMP | When created in Parable |
system_updated_at | TIMESTAMP | When updated in Parable |
people_organizations
Organization configuration and settings.Column | Type | Description |
---|---|---|
id | UUID | Internal unique identifier |
organization_id | VARCHAR(64) | Planning Center org ID |
name | VARCHAR(255) | Organization name |
country_code | VARCHAR(10) | Country code |
date_format | VARCHAR(50) | Date format preference |
time_zone | VARCHAR(100) | Time zone |
contact_website | VARCHAR(255) | Contact website |
created_at | TIMESTAMP | When created |
updated_at | TIMESTAMP | Last update |
tenant_organization_id | INTEGER | Organization identifier |
system_status | VARCHAR(50) | Data status |
system_created_at | TIMESTAMP | When created in Parable |
system_updated_at | TIMESTAMP | When updated in Parable |
people_reports
Report definitions for data analysis.Column | Type | Description |
---|---|---|
id | UUID | Internal unique identifier |
report_id | VARCHAR(64) | Planning Center report ID |
body | TEXT | Report body |
created_at | TIMESTAMP | When created |
name | VARCHAR(255) | Report name |
updated_at | TIMESTAMP | Last update |
tenant_organization_id | INTEGER | Organization identifier |
system_status | VARCHAR(50) | Data status |
system_created_at | TIMESTAMP | When created in Parable |
system_updated_at | TIMESTAMP | When updated in Parable |
people_school_options
School affiliations and options.Column | Type | Description |
---|---|---|
id | UUID | Internal unique identifier |
school_option_id | VARCHAR(64) | Planning Center school ID |
beginning_grade | VARCHAR(50) | Starting grade |
ending_grade | VARCHAR(50) | Ending grade |
school_types | JSONB | School types |
sequence | INTEGER | Sort order |
value | VARCHAR(255) | School name |
tenant_organization_id | INTEGER | Organization identifier |
system_status | VARCHAR(50) | Data status |
system_created_at | TIMESTAMP | When created in Parable |
system_updated_at | TIMESTAMP | When updated in Parable |
people_service_times
Service schedule information.Column | Type | Description |
---|---|---|
id | UUID | Internal unique identifier |
service_time_id | VARCHAR(64) | Planning Center service time ID |
day | VARCHAR(255) | Day of week |
description | TEXT | Service description |
start_time | INTEGER | Start time (minutes from midnight) |
organization_id | VARCHAR(64) | Organization ID |
campus_id | VARCHAR(64) | Campus ID |
tenant_organization_id | INTEGER | Organization identifier |
system_status | VARCHAR(50) | Data status |
system_created_at | TIMESTAMP | When created in Parable |
system_updated_at | TIMESTAMP | When updated in Parable |
Relationship Tables
All relationship tables follow a similar pattern for linking entities:Standard Relationship Table Structure
Column | Type | Description |
---|---|---|
id | UUID | Internal unique identifier |
{entity}_id | VARCHAR(64) | Parent entity ID |
relationship_type | VARCHAR(50) | Type of relationship |
relationship_id | VARCHAR(64) | ID of related entity |
tenant_organization_id | INTEGER | Organization identifier |
system_status | VARCHAR(50) | Data status |
system_created_at | TIMESTAMP | When created |
system_updated_at | TIMESTAMP | Last update |
Key Relationship Tables
people_people_relationships
Links people to campuses, lists, inactive reasons, marital statuses, organizations, etc.people_household_relationships
Links households to people and campuses.people_email_relationships
Links emails to people.people_phone_number_relationships
Links phone numbers to people.people_field_data_relationships
Links custom field data to people and other entities.people_form_relationships
Links forms to campuses and categories.people_workflow_relationships
Links workflows to campuses and categories.people_message_relationships
Links messages to people and message groups.people_note_relationships
Links notes to people and note categories.System Fields
All tables include these system fields for data management:tenant_organization_id
- Multi-tenant organization identifiersystem_status
- Data lifecycle status:transferring
- Being imported from Planning Centeractive
- Current active datastale
- Marked for removal
system_created_at
- When record was created in Parablesystem_updated_at
- When record was last updated in Parable
Data Integrity Rules
- Schema Qualification: Always use
planning_center.
prefix for all table references - Row Level Security: RLS automatically handles multi-tenancy and status filtering - do not add manual filters
- Monetary Values: People tables that include contribution amounts store them in cents - divide by 100.0 for display
- Contact Status Flags: Use fields like
status
,primary
, andinactive_reason_id
to interpret person records instead of relying onsystem_status
- Direct ID Columns: Core tables such as
people_people
,people_households
, andpeople_lists
expose direct IDs for performance-sensitive joins
Common Mistakes to Avoid
-
Missing Schema Prefix
- ❌
FROM people_people
- ✅
FROM planning_center.people_people
- ❌
-
Adding Redundant RLS Filters
- ❌
WHERE tenant_organization_id = 1 AND system_status = 'active'
- ✅ Trust RLS to handle this automatically
- ❌
-
Joining Without Schema
- ❌
JOIN people_households h ON ...
- ✅
JOIN planning_center.people_households h ON ...
- ❌
-
Skipping Currency Conversion
- ❌
SELECT amount_cents as amount
- ✅
SELECT amount_cents / 100.0 as amount
- ❌
Performance Considerations
-
Indexes: All tables have optimized indexes on:
- Primary keys and entity IDs
- Join columns and foreign keys
- Date columns for time-based queries
-
Query Optimization:
- Always use the
planning_center.
schema prefix - RLS handles tenant and status filtering automatically
- Filter person status or inactivity flags when relevant
- Consider CTEs for complex multi-join queries
- Use direct ID columns when available instead of relationship tables
- Always use the