Book of Business Field Reference
Every field, format, status, and matching rule for Medicare and ACA customer and policy imports and syncs.
This is the full field and matching reference for getting your book of business into careCycle. For the step-by-step walkthrough, see Import Your Book of Business.
Everything works as an upsert: if a matching record is already there, it gets updated, and if not, a new one is created. What counts as "matching" depends on how the data comes in, so CSV imports and API syncs are split out below.
How Matching Works
This is Settings > CRM Settings > Import Contacts, whether you map the columns yourself or use the import assistant.
Customers are matched by phone number. Nothing else (MBI, your system's ID, name, or date of birth) is used to match a customer on a CSV. So if a member's phone number changed since your last import, you'll get a second record.
Policies are matched in two passes:
- IDs first. careCycle checks every policy ID you sent:
carrierAssignedPolicyId,ffmApplicationId,policyNumber,applicationId,healthSherpaPolicyId, andsunFireEnrollmentCode. The carrier's policy ID is checked against bothcarrierAssignedPolicyIdandpolicyNumber, since exports put it in either one. If the IDs point at more than one policy, or disagree with each other, that row's policy is skipped rather than guessed. - Then content.
policyType+planCode+effectiveDate. If one of the last two is missing,policyType+planCodeorpolicyType+effectiveDate.
For ACA, if you sent a policy ID and nothing matched it, careCycle creates a new policy instead of falling back to the content match.
Customer matching
mbiNumberfirst (dashes and capitalization don't matter).firstName+lastName+dateOfBirth+phoneNumberif there's no MBI match. If a customer matches this way, their MBI gets updated.
Policy matching
sunFireEnrollmentCodefirst, if you sent one.planCode+effectiveDateif there's no SunFire match.
When a new policy is created, any of that customer's existing policies of the same policy type with an effective date more than a year ago are automatically terminated.
Customer matching
healthSherpaCustomerIdexternalId(your system's customer ID)carrierAssignedCustomerIdfirstName+lastName+dateOfBirth+phoneNumber
Policy matching
healthSherpaPolicyIdcarrierAssignedPolicyId
When a new policy is created, any of that customer's existing policies
with an effective date more than a year ago are automatically terminated.
policyType is always set to ACA.
Medicare Plan Codes
For Medicare Advantage and Part D policies, planCode should be a CMS
contract-style code. Dashes are optional in the import or sync payload, and
careCycle stores the canonical dashed form.
policyType | Accepted contract prefixes | Accepted examples | Stored as |
|---|---|---|---|
MA / MAPD | H or R | H1234-001-000, H1234001000, H1234-001 | H1234-001-000 |
PDP | S, H, R, E, or X | S1234-001-000, S1234001000, S1234-001 | S1234-001-000 |
MS | Carrier-specific | Plan G, Aetna Plan N | Stored as provided, except trailing -null cleanup |
For Medicare Advantage and Part D, the final three-digit segment is optional. If
you send contract+plan only (for example H3146-036), careCycle infers the
segment from CMS reference data and stores the complete code: it uses the plan's
only segment when there is exactly one, defaults to -000 for a non-segmented
plan, and rejects the record only when the plan has multiple segments (in which
case include the segment to disambiguate).
CSV Import Options
A few settings only exist when you import a CSV:
- Customer status (required for every import): Lead (new potential customer), Active (customer with active coverage), or Inactive (legacy customer without active coverage).
- Policy type: if your file has policy columns but no
policyTypecolumn, you pick one for the whole file. You can also set a Fallback policy type for rows that leave it blank. - Add to campaign (optional): adds everyone in the file to a campaign. Only do this with a campaign that's already active. See Add Customers to a Campaign.
- Resolve Data Warnings: set default values for fields that are missing.
- Files can be up to 100MB.
The only column a CSV strictly needs is the phone number. The required fields below are what the API syncs require, and what you'll want in your CSV anyway.
Required Fields
Customer Fields
These fields are required for all books.
| Field | Format | Example |
|---|---|---|
firstName | 1-255 characters | Margaret |
lastName | 1-255 characters | Thompson |
phoneNumber | +1XXXXXXXXXX, XXXXXXXXXX, or (XXX) XXX-XXXX | +13125551234 |
Medicare Customer Fields
| Field | Format | Example |
|---|---|---|
mbiNumber | Medicare Beneficiary Identifier | 1EG4-TE5-MK73 |
TCPA Compliance Fields
At least one of these needs to be on every record. Without a time zone or postal code, we can't tell what time it is for the member, so campaigns skip them.
| Field | Format | Example |
|---|---|---|
postalCode | 5 digits | 60614 |
timezone | IANA time zone or abbreviation | America/Chicago |
Medicare Policy Fields
| Field | Format | Example |
|---|---|---|
policyType | MA, MAPD, MS, or PDP | MAPD |
carrierName | 1-255 characters | Humana |
planName | 1-255 characters | Humana Gold Plus HMO |
planCode | CMS contract-style code for MA, MAPD, and PDP; carrier-specific for MS | H1036-228 |
effectiveDate | MM/DD/YYYY, MM-DD-YYYY, or YYYY-MM-DD | 01/01/2026 |
enrollmentDate | MM/DD/YYYY, MM-DD-YYYY, or YYYY-MM-DD | 10/22/2025 |
aorNpn | Agent of Record NPN, max 50 characters | 8245019 |
writingAgentNpn | Writing Agent NPN, max 50 characters | 8245019 |
ACA Policy Fields
The ACA sync sets policyType to ACA for you. On a CSV, include a
policyType column or pick ACA as the file's policy type when you import.
| Field | Format | Example |
|---|---|---|
carrierName | Max 255 characters | Blue Shield of California |
planName | Max 255 characters | Blue Shield Silver 70 PPO |
planCode | Max 255 characters | 93689CA0620004 |
effectiveDate | MM/DD/YYYY, MM-DD-YYYY, or YYYY-MM-DD | 01/01/2026 |
enrollmentDate | MM/DD/YYYY, MM-DD-YYYY, or YYYY-MM-DD | 12/10/2025 |
aorNpn | Agent of Record NPN, max 50 characters | 8245019 |
writingAgentNpn | Writing Agent NPN, max 50 characters | 8245019 |
Recommended Optional Fields
You don't have to send these, but you really should. They make your campaigns smarter, your task automations more useful, and give Cora more to work with on a call.
- Customer details:
externalId,email,dateOfBirth,address,city,state,language - Communication preferences:
doNotCall,doNotSMS,doNotEmail,doNotMail - Policy details:
policySubType,policyNumber,applicationId,status(see Policy Statuses),electionPeriod,writtenAs - ACA-specific:
exchangeStatus,metalLevel,usingSubsidy,subsidyAmount,grossPremium,netPremium,paidThroughDate,gracePeriodStartDate,healthSherpaPolicyId - Commission and financial:
monthlyPremium,deductible,outOfPocketMax,initialCommission,renewalCommission,policyLives - Ancillary premium payments:
premiumMode,paymentMode,paymentMethod - Underwriting (life and final expense):
heightInches,weightPounds,smokerStatus - Final expense and life policy details:
deathBenefit,coverageLevel,draftDay,term,maturityDate,riders
Underwriting Fields
Carriers ask for these on life and final expense applications. Supplying them up front means an agent does not have to collect them mid-call.
| Field | Type | Notes |
|---|---|---|
heightInches | integer | Total height in inches, so 6'0" is 72. Not a formatted string. |
weightPounds | integer | Pounds. |
smokerStatus | boolean | Omit or send null when unknown. false means confirmed non-smoker, which is not the same answer as unknown. |
Final Expense Policy Fields
| Field | Accepted values | Example |
|---|---|---|
deathBenefit | decimal string | 25000.00 |
coverageLevel | Immediate, Graded/ROP, Modified Level, Standard Level, Preferred Level | Immediate |
draftDay | integer 1 to 31 | 15 |
deathBenefit is the field agents often call "face value"; there is one field for
both names. draftDay is the day of the month the premium drafts, not a date.
Coverage level names carry age bands at most carriers (Immediate and Graded/ROP
typically apply to ages 0 to 79); the field stores the level only.
Ancillary Premium Payment Fields
These fields apply to policy types outside MA, MAPD, PDP, MS, and ACA.
| Field | Accepted values | Example |
|---|---|---|
premiumMode | Monthly, Quarterly, Semi-Annual, Annual | Monthly |
paymentMode | ACH, Credit/ debit card, Direct bill | ACH |
paymentMethod | Credit Card, Debit Card, Check, ACH / Bank Draft, Money Order, Cash, Other | ACH / Bank Draft |
CSV imports normalize common capitalization and formatting variants to these canonical values. API requests must use one of the accepted values shown above.
Communication preferences are enforced for you. Contacts marked do-not-call or do-not-SMS are automatically kept out of future campaign calls or texts.
Policy Statuses
status takes one of these values. Statuses drive a lot: automations like
Win-Backs and Rapid Disenrollment
Save fire when a
policy's status changes, and campaign filters use them too. See Automation
Triggers and Filters.
| Status | What it means |
|---|---|
| Active | In force |
| Placed | Issued by the carrier, not in force yet (future effective date) |
| Pending | Submitted, waiting on the carrier |
| Pending Effectuation | Enrolled, not active yet |
| Pending Followup | Needs something from the member (like DMI or verification) |
| Suspended | Grace period or temporary non-payment |
| Cancelled | The member ended it |
| Terminated | The carrier ended it |
| Future Cancel | Scheduled to end (for example, an AOR change) |
| Deceased | The member passed away |
| Not Approved | The application was denied |
Other Accepted Values
| Field | Accepted values |
|---|---|
policyType | MA, MAPD, PDP, MS, ACA, LTC, Individual Health, FE, Annuity, Life, Dental, Vision, Hospital Indemnity, Cancer, Critical Illness, Accident, Group, Home Health Care |
electionPeriod | IEP, AEP, OEP, SEP, ICEP, MA-OEP |
writtenAs | New Business, Like Plan Change, Unlike Plan Change, Reinstatement, Rewrite |
metalLevel | Catastrophic, Bronze, Expanded Bronze, Silver, Gold, Platinum |
exchangeStatus | FFM, SBM, SBM FP, OFF EXCHANGE, PRIVATE EXCHANGE, UNKNOWN |
The Medicare API sync only accepts MA, MAPD, MS, and PDP, and the ACA sync only ACA. CSV imports take any policy type.
More Fields You Can Import
The importer accepts a lot more than the fields above. A few worth knowing:
- More customer details:
middleName,preferredName,suffix,salutation,gender,address2,county,ethnicity - Medicare and Medicaid:
medicarePartADate,medicarePartBDate,medicareCard,medicaid,medicaidNumber - Current coverage:
existingCoverage,existingCoverageCarrier,existingCoveragePlanName - Household and income (ACA):
householdIncome,filingStatus,dependentCount,annualIncome,subsidyEligible,desiredCoverageStartDate - Other:
veteran,vaNumber,agentName,agentNpn - Policy IDs:
carrierAssignedPolicyId,ffmApplicationId,sunFireEnrollmentCode,healthSherpaPolicyId
Anything that doesn't have a standard field can go into a custom field, for customers or policies.
Full Sync Field Coverage
For complete sync field coverage via the API, see: