Skip to main content
POST
Create a donor through Zapier

Authorizations

Authorization
string
header
required

Passport bearer token authentication for legacy admin sessions.

Body

application/json

Validated input accepted by this Zapier transport.

hysform_id
integer
required

Donor form containing the profile. Validation: required|integer.

Example:

42

email
string<email>
required

Profile email address. Validation: required|email.

Example:

"jane@example.org"

type
enum<string> | null

Record type accepted by this operation. Validation: nullable|string|in:individual,organization.

Available options:
individual,
organization,
null
Example:

"individual"

first_name
string | null

Individual donor given name. Validation: nullable|string|max:255.

Maximum string length: 255
Example:

"Jane"

last_name
string | null

Individual donor family name. Validation: nullable|string|max:255.

Maximum string length: 255
Example:

"Doe"

organization_name
string | null

Organization donor display name. Validation: nullable|string|max:255.

Maximum string length: 255
Example:

"Example Foundation"

phone
string | null

Profile telephone number. Validation: nullable|string|max:50.

Maximum string length: 50
Example:

"+12565550123"

household_id
integer | null

Household membership for the donor. Validation: nullable|integer.

Example:

88

json_fields
object | null

Custom-field values keyed by the configured form field names. Validation: nullable|array.

idempotency_key
string | null

Stable caller key used by the selected mutation to prevent duplicate records. Validation: nullable|string|max:191.

Maximum string length: 191
Example:

"external-record-001"

Response

Created, updated or replayed record; this transport unwraps the primitive success envelope.

A donor record. Donors give one-time donations and recurring commitments, and may be linked to entities (recipients) via sponsorships. Standardized profile columns (first_name, phone, address, etc.) coexist with arbitrary custom fields stored in json_fields and defined per hysform_id. The username/email/password columns also let donors sign in to the donor portal.

id
integer<int64>
required

Internal donor ID.

Example:

12345

client_id
integer<int64>
required

Owning Gratona client (multi-tenant scope). All donor queries MUST filter by this.

Example:

207

hysform_id
integer<int64> | null

HysForm that defines this donor's profile fields (custom + standardized) — controls which keys appear in json_fields.

Example:

42

donorprogram_id
integer<int64> | null

Program the donor signed up under, if applicable. Mostly informational.

Example:

11

household_id
integer<int64> | null

Household this donor is linked to, when joint giving / partner records are tracked together.

Example:

88

type
enum<string> | null

Canonical donor identity type is INDIVIDUAL or ORGANIZATION. Compatibility serializers/callers may retain the lower-case aliases.

Available options:
INDIVIDUAL,
ORGANIZATION,
individual,
organization,
null
Example:

"INDIVIDUAL"

username
string | null

Login username for the donor portal. Must be unique across donors when set.

Example:

"janedoe"

email
string<email> | null

Donor email — used for receipts, statements, and donor-portal login.

Example:

"jane@example.com"

organization_name
string | null

For type=organization donors. Standardized field; mirrored in json_fields.organization for legacy clients.

Example:

"Acme Foundation"

first_name
string | null

Donor first / given name. Standardized field.

Example:

"Jane"

last_name
string | null

Donor last / family name. Standardized field.

Example:

"Doe"

preferred_contact_method
enum<string> | null

How the donor prefers to be contacted.

Available options:
email,
phone,
sms,
mail,
null
Example:

"email"

phone
string | null

Phone number as entered by the user (display format).

Example:

"(555) 123-4567"

phone_e164
string | null

Phone normalized to E.164 for SMS/dialing. Populated by the phone normalization pipeline.

Example:

"+15551234567"

can_receive_sms
boolean

Whether SMS opt-in is granted for this donor.

Example:

true

street
string | null

Street address line 1 (standardized).

Example:

"123 Main St"

address_line2
string | null

Street address line 2 (apartment, unit, suite).

Example:

"Apt 4B"

city
string | null

City.

Example:

"Springfield"

state
string | null

State / region (free-form display value).

Example:

"IL"

zip
string | null

Postal / ZIP code.

Example:

"62704"

country
string | null

Country display name.

Example:

"United States"

country_code
string | null

ISO 3166-1 alpha-2 country code.

Example:

"US"

subdivision_code
string | null

ISO 3166-2 country subdivision code.

Example:

"US-IL"

json_fields

Custom profile/record fields. Raw model responses retain the encoded JSON string; projection endpoints may return a decoded map or list. Use the record form definition to interpret field keys.

year_to_date
object | null

Cached YTD giving totals (per year and per program), refreshed by background jobs.

has_artifacts
boolean

Whether the donor has any uploads/photos attached.

Example:

false

batch_id
integer<int64> | null

Set when the donor was created via a CSV import batch; ties together donors imported in the same run.

Example:

null

created_at
string<date-time>
Example:

"2025-03-15T19:42:00Z"

updated_at
string<date-time>
Example:

"2026-01-02T08:11:00Z"

deleted_at
string<date-time> | null

Soft-delete timestamp; donors with a non-null value are excluded from default queries.

Example:

null