Every call, voicemail, and text → logged to the right client in Karbon, automatically.
A Make scenario that captures RingCentral communications, matches them to the
correct client by phone number, and writes a clean, searchable entry to that client's Karbon
timeline — with anything unmatched routed to a review queue, never discarded.
Built from your RFP. Press play to watch four sample communications flow from
RingCentral into Karbon on invented data — no live keys, no real client information, nothing
touching your systems.
RingCentral→Make · match + format→Karbon timeline↘Exception queue
RingCentral → Karbon4 sample communications · matched by phone number
● RingCentral — incoming
INBOUND CALL
(505) 555-0142 · 4m 12s J. Montgomery · recording attached
VOICEMAIL
505-555-0199 · 0:38 transcript + audio attached
SMS
+1 505-555-0110 · inbound "Docs uploaded to portal, thanks."
OUTBOUND CALL
505-555-7777 · 2m 03s A. Chavez · unknown number
● Karbon — client timeline
Press run to see entries appear…
The phone matching, the timeline formatting, and the exception routing shown here are the real
output of the tested logic. Three sample comms match to clients; the unknown number routes to the
review queue.
Scope
What gets captured and logged
Every communication type in your RFP, matched to the right client and written to
their Karbon timeline in a consistent, searchable format.
Phone calls
Inbound + outboundNumber, direction, date/time, duration, staff member, and recording link when available
Voicemails
Audio + transcriptVoicemail audio, RingCentral or AI-generated transcript, number, and date/time
SMS
Full conversationsInbound and outbound messages with sender, recipient, contents, and timestamp
Recordings
Secure referenceA secure link or reference stored and included in the timeline entry, not the raw file in Karbon
The part that matters most
Contact matching, with nothing discarded
Communications match to clients on normalized phone number, so
(505) 555-0142,
505-555-0142, and
+1 505 555 0142 all resolve to the same client.
When no match is found, the communication goes to an exception queue for manual
review — it is never dropped.
// normalize, then match across every phone on file for a clientconst n = normalizePhone(comm.number); // strip formatting, drop +1const client = clients.find(c =>
c.phones.some(p => normalizePhone(p) === n));
if (client) writeToKarbonTimeline(client.id, entry);
else addToExceptionQueue(comm); // nothing discarded
Phone is the primary key now; the same structure extends
cleanly to email, client name, or AI matching in a later phase — which your RFP anticipates.
Because you're a CPA firm
How client data is protected
Security is treated as a first-class requirement, not an afterthought. Here is how
the integration handles credentials, confidential data, and failures.
🔒AuthenticationOAuth 2.0 for RingCentral and Karbon; tokens refreshed automatically, never hardcoded
🔒Credential storageAll keys and tokens held in Make's encrypted connection store, isolated from scenario logic
🔒EncryptionData in transit over TLS/HTTPS end to end; recordings referenced by secure link, not duplicated
🔒Error handlingEvery module wrapped with error routes; failed items retried, then logged — never silently lost
🔒LoggingRun log of every communication processed, matched, or queued for a full audit trail
🔒ConfidentialityLeast-privilege API scopes; only the fields needed for the timeline entry are read and written
Timeline format
What each Karbon entry looks like
Consistent, scannable, and searchable — so any staff member opening a client sees
the full communication history at a glance.
[Incoming Call] 2026-07-08 09:14
Phone: (505) 555-0142
Staff: J. Montgomery
Duration: 4m 12s
Recording: https://secure-link/rec/AB12[Voicemail] 2026-07-08 10:02
Phone: 505-555-0199
Transcript: "Hi, calling about my Q2 filing…"
Recording: https://secure-link/vm/9931
Take the build with you
What ships
Everything becomes the property of Montgomery CPA — the scenarios, any custom
modules, and full documentation, so you're never locked in.
Make scenarios
The full capture → match → timeline flow, plus the exception-queue handler.
Architecture + API docs
Solution diagram, scenario docs, Karbon/RingCentral API notes, config & variables.
Training session
One remote session: operation, monitoring, error recovery, credentials, troubleshooting.
Investment
Phase 1 — fixed fee
One fixed price for the complete communication-logging integration, built, tested,
documented, and delivered with training inside your 30-day window.
$3,200
complete Phase 1 build · all comm types + matching + exception queue + security + docs + training
Paid in two milestones: 50% to start ($1,600), 50% on delivery once it runs end to end on your systems.
Delivered within 30 daysFull documentation package1 remote training sessionAll work owned by you
Future enhancements
(Otter.ai, Gmail, Dropbox, AI summaries/notes/tasks) billed at $70/hour
or fixed-fee per phase. Ongoing support available on a monthly retainer.
To start
What I need from you on day one
✓RingCentral API accessAdmin access to create an app / API credentials for calls, voicemails, SMS, recordings
✓Karbon API accessAPI key and permission to write timeline entries to client records
✓Make accountAccess to your Make workspace, or I set one up under your ownership
Client phone directoryAn export of clients with their phone numbers for the matching layer
OpenAI key (optional)If you'd like AI-generated voicemail transcripts beyond RingCentral's own
Exception review ownerWho on staff monitors the review queue for unmatched communications