POST api/customerfeeds

Each customer added will update any matching referrals to approved and add them as a pre-loaded member based on your account's settings. Each record is processed independently and the response includes a per-record outcome in the same order as the input. Larger integrations should use the CSV bulk import in the admin UI.

Request Information

URI Parameters

Query String:

None.

Body Parameters

A list of customer structures (maximum 10 per request).

Type: Collection of NewCustomer

NameDescriptionTypeAdditional information
email

The customer's email address. Required. Used as the primary match key against pending referrals and existing members.

string

None.

externalId

Your system's identifier for this customer (e.g. a Stripe customer id or CRM contact id). Stored on any matched referral for downstream reconciliation and echoed back on the result for caller-side correlation. Optional.

string

None.

firstName

Customer first name. Written to referral demographics on match, or to the preloaded member profile. Optional.

string

None.

lastName

Customer last name. Written to referral demographics on match, or to the preloaded member profile. Optional.

string

None.

phone

Customer phone number. Free-form; no format enforcement. Optional.

string

None.

addressLine1

Customer street address. Optional.

string

None.

addressLine2

Customer street address line 2 (apartment, suite, etc.). Optional.

string

None.

city

Customer city. Optional.

string

None.

region

Customer region, a region name or ISO_3166-2 subdivision code. Optional.

string

None.

postalCode

Customer postal code. Optional.

string

None.

amount

Purchase amount associated with this customer. Feeds reward calculation when a matched referral is approved. Defaults to 0 if omitted. Optional.

decimal number

None.

purchaseDate

Purchase date associated with this customer. Defaults to the server's current UTC time if omitted. Optional.

date

None.

Request Formats

application/json, text/json

Sample:
[
  {
    "email": "sample string 1",
    "externalId": "sample string 2",
    "firstName": "sample string 3",
    "lastName": "sample string 4",
    "phone": "sample string 5",
    "addressLine1": "sample string 6",
    "addressLine2": "sample string 7",
    "city": "sample string 8",
    "region": "sample string 9",
    "postalCode": "sample string 10",
    "amount": 1.0,
    "purchaseDate": "2026-07-31T03:00:28.9345278Z"
  },
  {
    "email": "sample string 1",
    "externalId": "sample string 2",
    "firstName": "sample string 3",
    "lastName": "sample string 4",
    "phone": "sample string 5",
    "addressLine1": "sample string 6",
    "addressLine2": "sample string 7",
    "city": "sample string 8",
    "region": "sample string 9",
    "postalCode": "sample string 10",
    "amount": 1.0,
    "purchaseDate": "2026-07-31T03:00:28.9345278Z"
  }
]

application/xml, text/xml

Sample:
<ArrayOfnewCustomer xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
  <newCustomer>
    <addressLine1>sample string 6</addressLine1>
    <addressLine2>sample string 7</addressLine2>
    <amount>1</amount>
    <city>sample string 8</city>
    <email>sample string 1</email>
    <externalId>sample string 2</externalId>
    <firstName>sample string 3</firstName>
    <lastName>sample string 4</lastName>
    <phone>sample string 5</phone>
    <postalCode>sample string 10</postalCode>
    <purchaseDate>2026-07-31T03:00:28.9345278+00:00</purchaseDate>
    <region>sample string 9</region>
  </newCustomer>
  <newCustomer>
    <addressLine1>sample string 6</addressLine1>
    <addressLine2>sample string 7</addressLine2>
    <amount>1</amount>
    <city>sample string 8</city>
    <email>sample string 1</email>
    <externalId>sample string 2</externalId>
    <firstName>sample string 3</firstName>
    <lastName>sample string 4</lastName>
    <phone>sample string 5</phone>
    <postalCode>sample string 10</postalCode>
    <purchaseDate>2026-07-31T03:00:28.9345278+00:00</purchaseDate>
    <region>sample string 9</region>
  </newCustomer>
</ArrayOfnewCustomer>

Response Information

Resource Description

[HTTP Status 200 - OK] One outcome per input record, in the same order.

Type: Collection of NewCustomerResult

NameDescriptionTypeAdditional information
email

Echoes the email from the input record (trimmed). Primary correlation key back to the caller.

string

None.

externalId

Echoes the externalId from the input record, if one was provided.

string

None.

status

The engine's per-record outcome. One of: ReferralApproved, ReferralUpdated, MemberPreloaded, MemberUpdated, SkippedNoEmail, SkippedNoMatchOptInOff, SkippedAmbiguous, SkippedAlreadyTracked, SkippedPreloadValidationFailed, SkippedDuplicate, SkippedFlowDisabled, or Error.

string

None.

statusCategory

Coarse grouping of status to make integrator branching easy. One of Approved, Updated, Preloaded, Skipped, or Error.

string

None.

message

Human-readable explanation of the outcome. Populated for skip and error outcomes; may also carry context on successful outcomes.

string

None.

amount

Echoes the purchase amount from the input record.

decimal number

None.

purchaseDate

Echoes the purchase date from the input record (or the server-assigned UTC time if omitted on input).

date

None.

Response Formats

application/json, text/json

Sample:
[
  {
    "email": "sample string 1",
    "externalId": "sample string 2",
    "status": "sample string 3",
    "statusCategory": "sample string 4",
    "message": "sample string 5",
    "amount": 1.0,
    "purchaseDate": "2026-07-31T03:00:28.950135Z"
  },
  {
    "email": "sample string 1",
    "externalId": "sample string 2",
    "status": "sample string 3",
    "statusCategory": "sample string 4",
    "message": "sample string 5",
    "amount": 1.0,
    "purchaseDate": "2026-07-31T03:00:28.950135Z"
  }
]

application/xml, text/xml

Sample:
<ArrayOfnewCustomerResult xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
  <newCustomerResult>
    <email>sample string 1</email>
    <externalId>sample string 2</externalId>
    <status>sample string 3</status>
    <statusCategory>sample string 4</statusCategory>
    <message>sample string 5</message>
    <amount>1</amount>
    <purchaseDate>2026-07-31T03:00:28.950135+00:00</purchaseDate>
  </newCustomerResult>
  <newCustomerResult>
    <email>sample string 1</email>
    <externalId>sample string 2</externalId>
    <status>sample string 3</status>
    <statusCategory>sample string 4</statusCategory>
    <message>sample string 5</message>
    <amount>1</amount>
    <purchaseDate>2026-07-31T03:00:28.950135+00:00</purchaseDate>
  </newCustomerResult>
</ArrayOfnewCustomerResult>