A single signed webhook for care data. Agencies, EHRs, and home-health platforms push structured events at Sandwich Pipe — visits, notes, medications, incidents — and Sandwich lights up the right loved-one record for the right family in real time. HMAC-signed, institution-scoped, forward-compatible.
Sandwich Pipe is the private-link layer between care-data producers and Sandwich's family-facing app. Think of it as Plaid for caregiving: agencies, EHRs, and home-health platforms push structured events at Sandwich Pipe, and Sandwich lights up the right loved-one record for the right family in real time.
api.joinsandwich.com/sandwichpipe/v1/events. The api. subdomain
is being deployed; while it's being set up, sandbox partners receive a
Cloud Run *.run.app URL during onboarding. Code against the
canonical URL — we'll route DNS to the right backend before you go live.
Earlier drafts of the docs referenced pipe.joinsandwich.com and
ingest.joinsandwich.com; both have been retired.
institution_id,
subject_ref, event_type, payload — lets us onboard
any partner without redesigning the app.X-SandwichPipe-Signature: sha256=…, computed over the raw body with a
per-partner secret. Replays are cheap; forgeries are not.{
"institution_id": "sandwichsoft-sunrise-home-care",
"subject_ref": "client_8c1f",
"event_type": "visit_ended",
"occurred_at": "2026-04-16T21:04:00Z",
"payload": {
"caregiver_id": "caregiver_maria_r",
"actual_end": "2026-04-16T21:04:00Z",
"duration_minutes": 92
}
}
Field reference:
event_type — see Event types below.
Compute HMAC-SHA256(raw_body, partner_secret) and send the hex digest
prefixed with sha256=. Sandwich verifies in constant time and rejects
anything older than 5 minutes (clock-skew tolerant).
POST /sandwichpipe/v1/events HTTP/1.1 Host: api.joinsandwich.com Content-Type: application/json X-SandwichPipe-Institution: sandwichsoft-sunrise-home-care X-SandwichPipe-Signature: sha256=4f8a9b2e… X-SandwichPipe-Timestamp: 2026-04-16T21:04:01Z
const sig = "sha256=" + hmacSha256Hex(secret, rawBody); headers["X-SandwichPipe-Signature"] = sig; headers["X-SandwichPipe-Institution"] = institutionId; headers["X-SandwichPipe-Timestamp"] = new Date().toISOString();
Per-partner secrets are issued at onboarding and rotated quarterly. A second secret window is provided during rotation so you can roll keys without dropped events.
caregiver_id, scheduled_start, actual_start, optional location.caregiver_id, actual_end, duration_minutes.caregiver_id, note_text, optional structured_summary.medication_name, dose_amount, dose_unit, administered_by, optional scheduled_at.vital_type, value, unit, recorded_by, optional secondary_value.Future event types will be added without breaking changes. Partners should send unknown types as new ones become available; Sandwich will accept and forward to families based on family-share configuration.
For outside partners, family-share is established by the agency that owns the client relationship. Sandwich will not display events to a family unless the agency has affirmatively opted that client in. This keeps the partner's compliance posture clean — you forward events to Sandwich Pipe, and Sandwich enforces the family-side authorization.
Sandwich Pipe responds with one of these statuses. Partners should treat 5xx as retriable with exponential backoff and 4xx as terminal (fix the request and resend, but don't retry the original).
event_id for your audit log.occurred_at not ISO 8601. Fix the request and resend.subject_ref. The agency hasn't opted that client in to family-share, or the subject was deleted. Treat as terminal — do not retry.Retry-After header.Sandwich Soft agencies get Sandwich Pipe for free — it's wired into clock-in and clock-out. Outside partners (EHRs, hospital discharge systems, other agency platforms) can email hello@joinsandwich.com to start the onboarding conversation.
What you'll need:
institution_id namespaces you want issued (one per
tenant on your platform if you're multi-tenant).Sandbox secrets are typically issued within a week of the security review.
Looking for the rest of the stack? MCP · Sandwich Soft · All docs