Overview
The People module is the most comprehensive in Planning Center, containing:- 58 entity tables - All person, household, workflow, form, messaging, and configuration data
- 39 relationship tables - Linking entities together following Parable’s relationship architecture
Visual Data Model
Core Entity Relationships
Key Relationships Explained
Direct Parent-Child Relationships:- Emails, phone numbers, and addresses belong directly to people (via
parent_id) - Household relationships link people to households via
people_households_relationships - Form submissions, workflow cards, notes link back to people
- Campus associations stored in
people_people_relationshipstable - Relationship type identifies the connection (e.g.,
primary_campus)
- Workflows: Multi-step process tracking with cards, steps, and activities
- Forms: Dynamic form builder with fields, options, and submissions
- Lists: Smart segmentation with results linking people to lists
- Messaging: Bidirectional messaging between people
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 (58 total)
Core Person & Contact Tables (10)
people_people- Core person recordspeople_addresses- Physical addressespeople_emails- Email addressespeople_phone_numbers- Phone numberspeople_households- Family unitspeople_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 (8)
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 (6)
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 (6)
people_field_definitions- Custom field schemaspeople_field_data- Custom field valuespeople_field_options- Custom field optionspeople_tabs- UI tab organizationpeople_conditions- Conditional logicpeople_rules- Business rules
Lists & Segmentation Tables (6)
people_lists- Smart lists and segmentspeople_list_categories- List categorizationpeople_list_results- People in listspeople_list_shares- List sharing permissionspeople_list_stars- Favorited listspeople_mailchimpsyncstatus- 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 (4)
people_people_imports- Import jobspeople_people_import_conflicts- Import conflictspeople_people_import_history- Import audit trailpeople_person_mergers- Person merge records
Administrative & Reference Tables (10)
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 (39 total)
people_background_checks_relationshipspeople_conditions_relationshipspeople_connected_people_relationshipspeople_custom_senders_relationshipspeople_emails_relationshipspeople_field_data_relationshipspeople_field_definitions_relationshipspeople_field_options_relationshipspeople_form_field_options_relationshipspeople_form_fields_relationshipspeople_form_submission_values_relationshipspeople_form_submissions_relationshipspeople_forms_relationshipspeople_households_relationshipspeople_list_categories_relationshipspeople_list_results_relationshipspeople_list_shares_relationshipspeople_lists_relationshipspeople_message_groups_relationshipspeople_messages_relationshipspeople_note_categories_relationshipspeople_note_category_shares_relationshipspeople_note_category_subscriptions_relationshipspeople_notes_relationshipspeople_people_imports_relationshipspeople_people_relationshipspeople_person_apps_relationshipspeople_person_mergers_relationshipspeople_phone_numbers_relationshipspeople_reports_relationshipspeople_service_times_relationshipspeople_social_profiles_relationshipspeople_workflow_card_activities_relationshipspeople_workflow_card_notes_relationshipspeople_workflow_cards_relationshipspeople_workflow_shares_relationshipspeople_workflow_step_assignee_summaries_relationshipspeople_workflow_steps_relationshipspeople_workflows_relationships
Complete Table Definitions
Core Person & Contact Tables
people_people
The main person table containing all individual records.people_addresses
Physical addresses for people.people_emails
Email addresses for people.people_phone_numbers
Phone numbers with carrier information.people_households
Family units for grouping related people.people_campuses
Church campus locations.people_connected_persons
Connected person records from external systems.people_person_apps
Application permissions per person.people_social_profiles
Social media profiles for people.people_spam_email_addresses
Email addresses marked as spam or blocked.Workflow System Tables
people_workflows
Process workflow definitions for managing people through various church processes.people_workflow_cards
Individual workflow instances tracking people through processes. Note: Workflow card relationships (assignee, current_step, person, workflow) are stored in thepeople_workflow_cards_relationships table, not as direct foreign key columns. See the Relationships section below.
people_workflow_steps
Workflow step definitions.people_workflow_card_activities
Activity logs for workflow cards.people_workflow_card_notes
Notes attached to workflow cards.people_workflow_categories
Categories for organizing workflows.people_workflow_shares
Workflow sharing permissions.people_workflow_step_assignee_summaries
Summary of workflow step assignments.Forms System Tables
people_forms
Form definitions for data collection.people_form_submissions
Submitted form data.people_form_fields
Form field definitions.people_form_field_options
Options for form fields.people_form_submission_values
Values submitted for form fields.people_form_categories
Categories for organizing forms.Custom Fields Tables
people_field_definitions
Custom field schemas.people_field_data
Custom field values for people.people_field_options
Options for custom fields.people_tabs
UI tab organization for custom fields.people_conditions
Conditional logic for fields and workflows.people_rules
Business rules for data processing.Lists & Segmentation Tables
people_lists
Smart lists for segmenting people.people_list_categories
Categories for organizing lists.people_list_results
People included in lists.people_list_shares
List sharing permissions.people_list_stars
Favorited lists per user.people_mailchimpsyncstatus
Email marketing synchronization status.Notes & Documentation Tables
people_notes
Pastoral care notes and follow-ups.people_note_categories
Categories for organizing notes.people_note_category_shares
Note category sharing permissions.people_note_category_subscriptions
Subscriptions to note categories.Messaging System Tables
people_messages
Individual messages sent through the system.people_message_groups
Groupings of related messages.people_custom_senders
Custom email sender configurations.people_carriers
Phone carrier information for SMS messaging.Import & Data Management Tables
people_people_imports
Import job definitions.people_people_import_conflicts
Conflicts detected during imports.people_people_import_history
Audit trail of import operations.people_person_mergers
Records of merged person records.Administrative & Reference Tables
people_apps
Application integrations available.people_background_checks
Background check records for volunteers and staff.people_inactive_reasons
Reasons for marking people inactive.people_marital_statuses
Marital status options.people_name_prefixes
Title prefixes (Mr., Mrs., Dr., etc.).people_name_suffixes
Name suffixes (Jr., Sr., III, etc.).people_organizations
Organization configuration and settings.people_reports
Report definitions for data analysis.people_school_options
School affiliations and options.people_service_times
Service schedule information.Relationship Tables
All relationship tables follow a similar pattern for linking entities:Standard Relationship Table Structure
Key Relationship Tables
All 39 relationship tables are listed in the inventory above and every one of them follows the standard structure. The ten described below are the ones most often needed in reports; consult them for the relationship types each table carries.people_people_relationships
Links people to campuses, lists, inactive reasons, marital statuses, organizations, etc.people_households_relationships
Links households to people and campuses. IMPORTANT: This table stores relationships between households and people. The primary contact for a household is stored in thepeople_households table via the primary_contact_name column, and the relationship is available through people_households_relationships.
Relationship Design Decision:
- Planning Center’s API returns both
primary_contactandpeoplerelationships for each household - The
primary_contactperson is always included in thepeoplearray - This table stores both
PeopleandPrimaryContactrelationship types - Use
relationship_type = 'PrimaryContact'to find the primary contact person for a household
people_emails_relationships
Links emails to people.people_phone_numbers_relationships
Links phone numbers to people.people_field_data_relationships
Links custom field data to people and other entities.people_forms_relationships
Links forms to campuses and categories.people_workflows_relationships
Links workflows to campuses and categories.people_workflow_cards_relationships
Links workflow cards to people (assignees and subjects), workflow steps, and workflows.people_messages_relationships
Links messages to people and message groups.people_notes_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
statusandprimaryto interpret person records instead of relying onsystem_status - Direct ID Columns: Core tables such as
people_people,people_households, andpeople_listsexpose 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 when querying planning center tables. - RLS handles tenant and status filtering automatically
- Filter person status or inactivity flags when relevant
- Consider CTEs for complex multi-join queries
- Join through the
*_relationshipstables — People tables do not carry foreign-key columns to other entities
- Always use the
Verification Summary
✅ 58 entity tables — all listed in the inventory, all with field definitions ✅ 39 relationship tables — all listed in the inventory; 10 described individually, the rest follow the standard structure ✅ All tables include the system columns described above ✅ Consistent formatting with other modules Counts on this page were verified against theplanning_center schema itself, and cover the complete Planning Center People data model in Parable.