# Luca writes into the CRM and calendar you already run.

Two-way CRM sync, signed webhooks, and a coverage panel that tells you what's live. Your stack stays yours, and Luca writes into it.

Last updated: 2026-08-10

- OAuth + encrypted credentials
- Signed, replayable webhooks
- On every plan

## From separate tools to one working stack.

Connect once, choose what moves, and let the sync run as the work does. The coverage panel keeps honest watch.

1. **Connect with OAuth** (you). Authorize your CRM or calendar in the integrations panel. Credentials are stored encrypted; your password never touches Luca.
2. **Create the subscriptions you need** (you). Pick the events to push and where they go. Luca signs every delivery so your endpoint can verify each one.
3. **It syncs as the work does** (Luca). Leads and confirmed call outcomes move between Luca and your stack in real time. Deal stage sync updates the lead's existing CRM deal; it never creates one.
4. **You watch the coverage panel** (you). Every connector's health at a glance, every delivery logged, failures replayable. Your stack's state is a screen, not a surprise.

## Your stack stays yours. Luca writes into it.

Most coaches live in a CRM and a calendar and a spreadsheet. Integrations are how Luca meets them there -- syncing, not replacing, and never silently failing.

### Your CRM, synced both ways

Connect with OAuth and Luca syncs leads and call outcomes both ways with your CRM. On a call outcome, it moves the lead's existing deal to the mapped stage; it never creates one. A confirmed completed call writes its summary across; an unconfirmed one never does, so a no-show never pollutes your pipeline.

- OAuth connections, encrypted credentials
- Call outcomes sync only when confirmed
- One source of truth across both tools

### Webhooks that verify and replay

Create a subscription and Luca pushes events to your stack -- new lead, reply approved, call booked. Every delivery is signed so your endpoint can verify it came from Luca, and the delivery log shows every attempt with replay for failures.

- Signed deliveries, verifiable on your side
- Delivery log with per-attempt status
- Replay failed deliveries from the panel

### Connector coverage you can see

The coverage panel shows what's connected, what's live, and what's broken across your connectors and CRM providers. Each one comes with a health check and an action inventory. A dead sync is visible the day it dies.

- Per-connector health and action inventory
- What's live vs. what's idle at a glance
- Failures surfaced, not silent

### Safety by default, everywhere

Luca stores your credentials encrypted, syncs follow its usual rules, and it never writes anything sensitive where it shouldn't. The same account-safety posture that guards your channels guards your stack.

- Encrypted credential storage
- Scoped sync, nothing extra written
- Same safety rules as every surface

## Three ways your stack stops being three silos.

Each one is a place where tools that talk beat a person who copy-pastes -- and where silence is the expensive failure mode.

### The CRM that stays current

Leads move through Luca all week and the CRM is stale by Friday.

Connect once with OAuth and the sync runs as the work does. A booked call appears in the CRM the moment it's confirmed, with the summary attached.

### The webhook that feeds your dashboard

Your team runs a spreadsheet or dashboard that should see every new qualified lead.

One signed webhook subscription pushes each new lead as it qualifies. The delivery log shows every attempt, and a failed one is one click from a replay.

### The connector that broke quietly

A provider token expired last month and the sync silently stopped.

The coverage panel flags the connector as degraded with the reason, before another month of leads accumulates in the wrong place.

## Copy-paste between tools vs. tools that talk.

Without integrations, the CRM update is a manual chore at the end of the week. Here's what that costs.

### Manual sync

- The CRM is a weekend chore. Friday's update session moves leads from memory into the system -- and the ones you forgot stay wrong until next Friday.
- A dead sync dies silently. The connector broke three weeks ago and nobody noticed until the month-end numbers were off by a channel's worth of leads.
- Nothing verifies what arrived. Whatever made it into the CRM is taken on faith -- no signature, no log, no way to replay what was lost.

### Integrated

- The sync happens as the work does. A confirmed completed call writes its summary to the CRM while you're still on the next one -- no Friday catch-up.
- Health is visible, not assumed. The coverage panel shows the connector is live and what it can do. A failure shows up with its fix, not at month-end.
- Deliveries verify and replay. Every webhook is signed, logged, and replayable -- what your stack receives is exactly what Luca sent, with receipts.

## What connects, and what actually moves.

An integration is only worth having if you can say what crosses it. Here is every connection Luca offers, what travels over it, and how it is authorized.

| Connection | What moves | How it connects |
| --- | --- | --- |
| Calendly | Booked calls, reschedules, and cancellations | OAuth, with the token refreshed for you |
| Cal.com | Booked calls, reschedules, and cancellations | OAuth, with the token refreshed for you |
| Google Calendar | Real availability, and the event once it is booked | OAuth, with the token refreshed for you |
| iClosed | Booking events, onto the lead they belong to | A secret that is yours alone, checked on every delivery |
| GoHighLevel calendar | Booking events, onto the lead they belong to | A secret that is yours alone, checked on every delivery |
| HubSpot | Leads, deal stages, and confirmed call outcomes | OAuth, with the token refreshed for you |
| GoHighLevel CRM | Leads, deal stages, and confirmed call outcomes | OAuth, with the token refreshed for you |
| Zapier and Make | Luca events out, and actions back in | Our app in their directory, no code |
| Your own endpoint | Any event you subscribe to, every attempt logged | A subscription you create, signed on every delivery |
| MCP clients | Reads and actions over the public API, nothing more | Our MCP server, pointed at your account |

A call you never confirmed as completed never syncs anywhere.

## The questions you only ask after something breaks.

Connections fail. Providers go down, tokens expire, endpoints stop answering. What matters is what happens next.

### What happens when a provider is down?

The call is retried, and exactly one layer owns that retry. Which layer is declared per connector rather than decided in the moment, because two systems retrying the same call is how one booking becomes two. Failures stay visible instead of disappearing quietly.

### Does a rescheduled call update in Luca?

Yes. A booking changing state is an event Luca reacts to, so a reschedule or a cancellation lands on the lead rather than leaving a stale call on your dashboard. You can also start a flow from that change, which is how no-show recovery works.

### Why do some connections use OAuth and others a secret?

It depends on what the provider offers. Where there is a real OAuth flow, we use it and refresh the token for you. Where there is not, the connection gets a secret that belongs only to your account and is checked on every inbound delivery.

### Can a flow call my own system mid-conversation?

Yes. A step in an automation can call a webhook you own, which is how a flow checks something Luca does not hold. Your endpoint answers, the flow carries on, and every attempt is logged the same way an outbound event is.

## The details, for people who want them.

What connects, how it's secured, and how you'll know it's working.

- **CRM.** OAuth connections with encrypted credentials, syncing leads and call outcomes both ways. Deal stage sync updates the lead's existing CRM deal to the mapped stage; it never creates one.
- **Calendars.** Calendly, Cal.com, Google Calendar, or a manual booking link -- the same providers the booking feature uses.
- **Webhooks.** Signed event deliveries to your stack: new lead, reply approved, call booked, and more.
- **Delivery log.** Every delivery attempt logged, with replay for failures and per-subscription health.
- **Coverage.** A panel showing which connectors are connected, live, idle, or broken -- with an action inventory per connector.
- **Security.** Signed payloads, encrypted credentials, scoped sync. The same safety rules as every Luca surface.
- **API key scoping.** Two independent tiers: capability (read, draft, queue ops, or full) and data sensitivity (redacted metadata and summaries, or full content). A key gets exactly what you tick.
- **MCP server.** The same surface as the REST API, handed to an AI assistant as callable tools. Claude, ChatGPT, Cursor, VS Code, or anything else that speaks MCP can connect with a developer API key, scoped like any other key.
- **Plans.** Included on every plan. What changes between plans is how many messages a month you get, plus what Starter leaves out: Voice tuned weekly from your newest DMs and Follow-ups that win back ghosted leads. All four channels are on every plan.

## Questions

### Do I need a developer to set this up?

No. Connecting a CRM or calendar is an OAuth authorization in the app, the same as connecting Google to any other tool. A webhook subscription needs one URL. Nothing here requires code unless you're building against the API yourself.

### What happens if a webhook delivery fails?

It's logged, not lost. A failed delivery shows up in the delivery panel with its status, and you can replay it from there. The subscription's health is visible at a glance, so a dead endpoint doesn't stay a mystery.

### How do I know a connector hasn't quietly broken?

The coverage panel shows every connector's state: live, connected but idle, or broken, each with a health check and reason. A dead sync shows up there the day it dies, not at month-end when the numbers are off.

### Can Luca create a duplicate deal in my CRM?

No. Deal stage sync only moves a lead's existing CRM deal to the mapped stage on a call outcome; it never creates a new one. And a call you never confirmed as completed never syncs at all.

### Is my CRM data safe?

Connections use OAuth with encrypted credential storage, never your password. Sync is scoped to what the integration needs, and nothing sensitive gets written where it shouldn't.

### Which plans include integrations?

Included on every plan. What changes between plans is how many messages a month you get, plus what Starter leaves out: Voice tuned weekly from your newest DMs and Follow-ups that win back ghosted leads. All four channels are on every plan.

## Try it

Connect Luca to the stack you already run. OAuth your CRM, sign your webhooks, and watch the coverage panel show every connection live. Your tools, talking.

[Start free for 7 days](https://app.setluca.com/signup). Plans and prices are on the [pricing page](/pricing.md). SetLuca is the company behind Luca.

## Other features

- [Your voice](/features/voice.md): Replies that sound like you, learned from your DMs
- [Review queue](/features/review-queue.md): You approve every send. Auto-send is opt-in
- [Follow-ups](/features/follow-ups.md): Win back the leads who ghost
- [Booking](/features/booking.md): From DM to booked call on your calendar
- [Channels](/features/channels.md): Telegram, Instagram, Messenger, WhatsApp in one queue
- [Comment-to-DM](/features/comment-to-dm.md): Turn post comments into qualified DM conversations
- [Automations](/features/automations.md): Build the follow-up flow once, then let it run
- [Broadcasts](/features/broadcasts.md): One campaign to every lead who's a fit
- [Ask Luca](/features/ask-luca.md): Your business questions, answered from your own data
- [Lead memory](/features/lead-memory.md): Every lead's history, remembered across channels
- [Analytics](/features/analytics.md): Know what's working before your gut does
- [Inbound](/features/inbound.md): Every channel, one prioritized queue
