Skip to main content

CRM Activity

This document defines the schema and bucket structure for CRM integrations with SearchLight. For S3 setup, file format, and access steps see the overview.

Bucket Key Structure

/standard-crm/[customer|estimate|job]/{account}/{YYYY-MM-DD}/{filename}.json.gz

Example: standard-crm/job/example-plumber/2026-02-19/jobs_bort.json.gz


Schema

Customer

FieldTypeRequiredDescriptionExample
idstringrequiredUnique identifier for the customer in the source CRM"cus-472-83910"
namestringrequiredFull name of the customer"Jane Smith"
created_datestring (ISO 8601)requiredDate/time the customer record was created"2026-01-05T08:30:00Z"
addressstringoptionalStreet address of the customer"123 Main St"
zipstringoptionalPostal/ZIP code"75201"
phonesstring[]optionalArray of phone numbers associated with the customer["214-555-0101"]
emailsstring[]optionalArray of email addresses associated with the customer["jane@example.com"]

Estimate

FieldTypeRequiredDescriptionExample
idstringrequiredUnique identifier for the estimate in the source CRM"est-001"
customer_idstringrequiredReference to the associated customer record"cus-472-83910"
created_datestring (ISO 8601)requiredDate/time the estimate was created"2026-02-19T10:00:00Z"
totalnumberrequiredEstimated dollar value of the job1850.00
statusstringrequiredCurrent status of the estimate (e.g. Accepted, Rejected). Used to derive is_sold"Accepted"
sold_datestring (ISO 8601)optionalDate/time the estimate was accepted. Present only when status indicates sold"2026-02-20T14:00:00Z"
business_unitstringoptionalBusiness unit or trade category"HVAC"
job_typestringoptionalType or category of the job"Repair"
campaignstringoptionalMarketing campaign attributed to this estimate"Spring Promo 2026"
technicianstringoptionalName of the assigned technician or sales rep"Bob Torres"

Job

FieldTypeRequiredDescriptionExample
idstringrequiredUnique identifier for the job in the source CRM"job-8821"
customer_idstringrequiredReference to the associated customer record"cus-472-83910"
created_datestring (ISO 8601)requiredDate/time the job was created"2026-02-19T10:00:00Z"
statusstringrequiredCurrent status of the job. Used to derive is_completed and is_canceled"Completed"
revenuenumberrequiredFinal sold/invoiced value of the job2200.00
scheduled_datestring (ISO 8601)optionalDate/time the job was or is scheduled"2026-02-21T09:00:00Z"
completed_datestring (ISO 8601)optionalDate/time the job was closed. Used alongside status to derive is_completed"2026-02-21T16:30:00Z"
business_unitstringoptionalBusiness unit or trade category"Plumbing"
job_typestringoptionalType or category of the job"Installation"
cancel_reasonstringoptionalReason the job was canceled. Present only when status indicates cancellation"Customer request"
cancel_notestringoptionalFree-text note about the cancellation"Called to reschedule, did not follow up"
campaignstringoptionalMarketing campaign attributed to this job"Spring Promo 2026"
technicianstringoptionalName of the assigned technician or sales rep"Bob Torres"