Table of Contents

Class FormSubmissionResource

Namespace
Crews.PlanningCenter.Api.People.V2024_09_12
Assembly
Crews.PlanningCenter.Api.dll

A form submission represents a single completed entry submitted through a Planning Center form.

### Creating submissions

POST is supported so external integrations can record submissions captured outside of Church Center — for example, paper forms run through OCR. Creating a submission requires the access token to belong to a user who (1) has overall People permissions of Editor or above and (2) can manage the target form (a Manager, or a user with a manage FormShare).

### Identifying the submitter

Provide either person_id (an existing person in your organization) or person_attributes. When person_attributes is supplied, the API matches against existing profiles by first name (or given name or nickname) + last name + email address. If no match is found, a new person is created automatically.

person_attributes accepts first_name, last_name, and emails_attributes (an array with at least one { "location": "...", "address": "..." } hash).

### Form values

Pass each answer as an included resource of type FormSubmissionValue, with form_field_id referencing a field on the form. The shape of value depends on the field's field_type: plain fields take a string, phone and address fields take an object, and file fields take an array of uploaded file references. See the FormSubmissionValue vertex for the full list of shapes and for how to upload files.

``
{
"data": { "attributes": { "person_id": "1" } },
"included": [
{ "type": "FormSubmissionValue", "attributes": { "form_field_id": "10", "value": "Blue" } },
{ "type": "FormSubmissionValue", "attributes": { "form_field_id": "11", "value": { "number": "555-555-1234", "location": "Mobile" } } },
{ "type": "FormSubmissionValue", "attributes": { "form_field_id": "12", "value": { "location": "Home", "street": "123 Main St", "city": "Carlsbad", "state": "CA", "zip": "92008", "country_code": "US" } } },
{ "type": "FormSubmissionValue", "attributes": { "form_field_id": "13", "value": [{ "fileID": "us4-2b1f6c0e-5d3a-4f7e-9c21-8a6d0e4b7f10", "fileName": "waiver.pdf" }] } }
]
}
<code><br /><br />One important note: if the form field has options (for example, a checkboxes or dropdown field), the submitted </code>value should be the ID of the selected option, not the option's text.

### Side effects

A submission triggers the same side effects as a Church Center submission: notification emails to the form's subscribers, a confirmation email to the submitter (if the form is configured to send one), workflow card creation for workflow answer fields, and profile updates for contact info, birthdate, gender, household, custom fields, and other profile data.

The access token's user is recorded as the submitter, unless they are the person the submission is for. Profile updates from the submission are attributed to that user in the person's history.

When the resolved person is brand new (created by this submission), profile updates happen immediately and the submission is auto-verified. When the resolved person already exists and the form contains verification-required fields, a verification email is sent first; profile updates apply only after the submitter clicks the verification link — matching the behavior of an unauthenticated Church Center submission.

public record FormSubmissionResource : JsonApiResource<FormSubmission, FormSubmissionRelationships>, IEquatable<JsonApiResourceIdentifier>, IEquatable<JsonApiResource>, IEquatable<JsonApiResource<FormSubmission>>, IEquatable<JsonApiResource<FormSubmission, FormSubmissionRelationships>>, IEquatable<FormSubmissionResource>
Inheritance
JsonApiResourceIdentifier
JsonApiResource
JsonApiResource<FormSubmission>
FormSubmissionResource
Implements
IEquatable<JsonApiResourceIdentifier>
IEquatable<JsonApiResource>
IEquatable<JsonApiResource<FormSubmission>>
Inherited Members
JsonApiResource<FormSubmission, FormSubmissionRelationships>.ToString()
JsonApiResource<FormSubmission, FormSubmissionRelationships>.GetHashCode()
JsonApiResource<FormSubmission, FormSubmissionRelationships>.Equals(JsonApiResource<FormSubmission>)
JsonApiResource<FormSubmission, FormSubmissionRelationships>.Equals(JsonApiResource<FormSubmission, FormSubmissionRelationships>)
JsonApiResource<FormSubmission, FormSubmissionRelationships>.<Clone>$()
JsonApiResource<FormSubmission, FormSubmissionRelationships>.EqualityContract
JsonApiResource<FormSubmission, FormSubmissionRelationships>.Relationships
JsonApiResource<FormSubmission>.Equals(JsonApiResource)
JsonApiResource<FormSubmission>.Equals(JsonApiResource<FormSubmission>)
JsonApiResource<FormSubmission>.Attributes
JsonApiResource.Equals(JsonApiResourceIdentifier)
JsonApiResource.Relationships
JsonApiResource.Links
JsonApiResource.Meta
JsonApiResourceIdentifier.Id
JsonApiResourceIdentifier.LId
JsonApiResourceIdentifier.Type

Constructors

FormSubmissionResource()

public FormSubmissionResource()

FormSubmissionResource(FormSubmissionResource)

protected FormSubmissionResource(FormSubmissionResource original)

Parameters

original FormSubmissionResource

Properties

EqualityContract

protected override Type EqualityContract { get; }

Property Value

Type

Methods

Equals(FormSubmissionResource?)

public virtual bool Equals(FormSubmissionResource? other)

Parameters

other FormSubmissionResource

Returns

bool

Equals(JsonApiResource<FormSubmission, FormSubmissionRelationships>?)

public override sealed bool Equals(JsonApiResource<FormSubmission, FormSubmissionRelationships>? other)

Parameters

other JsonApiResource<FormSubmission, FormSubmissionRelationships>

Returns

bool

Equals(object?)

public override bool Equals(object? obj)

Parameters

obj object

Returns

bool

GetHashCode()

public override int GetHashCode()

Returns

int

PrintMembers(StringBuilder)

protected override bool PrintMembers(StringBuilder builder)

Parameters

builder StringBuilder

Returns

bool

ToString()

public override string ToString()

Returns

string

Operators

operator ==(FormSubmissionResource?, FormSubmissionResource?)

public static bool operator ==(FormSubmissionResource? left, FormSubmissionResource? right)

Parameters

left FormSubmissionResource
right FormSubmissionResource

Returns

bool

operator !=(FormSubmissionResource?, FormSubmissionResource?)

public static bool operator !=(FormSubmissionResource? left, FormSubmissionResource? right)

Parameters

left FormSubmissionResource
right FormSubmissionResource

Returns

bool