Salesforce logoThe AI Receptionist for Salesforce
Trusted by 100+ service businesses

An AI Receptionist that books, reschedules & cancels appointments — 24/7 — and writes them straight into Salesforce logoSalesforce.

Plugs into your website and phone line. Voice in 30+ languages. Live by tonight, booking customers by tomorrow. No Zapier, no n8n, no code.

Intentionally cheap so you can prove it works before spending more.
SalonsHair stylistsBarbershopsMed spasNail studiosLash barsDental clinicsChiropractorsPhysiotherapyMassage therapistsWellness clinicsDermatologyVeterinary clinicsPet groomingHome servicesPlumbersElectriciansHVACCleaning servicesLawn careTutorsPersonal trainersYoga studiosPilates studiosLaw firmsAccountantsReal-estate agentsPhotographers SalonsHair stylistsBarbershopsMed spasNail studiosLash barsDental clinicsChiropractorsPhysiotherapyMassage therapistsWellness clinicsDermatologyVeterinary clinicsPet groomingHome servicesPlumbersElectriciansHVACCleaning servicesLawn careTutorsPersonal trainersYoga studiosPilates studiosLaw firmsAccountantsReal-estate agentsPhotographers
§ 01 — See it in action

Talk to the agent on the left. Watch the booking appear on the right.

This is the same agent shape you'll deploy. Ask it about a haircut on Tuesday, a reschedule, or a cancel — it'll write the appointment straight into the calendar.

Live AI chat → connected to Salesforce
Bookings land here in real time
Salesforce logoWorks with Salesforce
§ 02 — Questions you'd ask before buying

FAQ — Salesforce integration.

Does this actually work with my Salesforce org?
Yes. AnyCRM uses Salesforce's official REST and SOQL APIs via a Connected App OAuth grant. Every captured caller lands as the right record type (Lead for net-new, Task on Contact for existing customers) with the right OwnerId, the right LeadSource, the right Record Type, and a first call note. Meetings land as native Salesforce Events on the right team member's calendar, with the WhoId/WhatId pair set so the Event surfaces on the related Account or Opportunity.
Will it create duplicate Leads in Salesforce?
No. AnyCRM resolves the existing record first by running cross-object dedup across BOTH Lead and Contact (normalising email and phone) before writing. A returning caller who already exists as a Contact becomes a new Task on the existing Contact (and on any open Opportunity), never a duplicate Lead. The existing OwnerId is preserved.
Can it route different leads to different team members?
Yes. AnyCRM reads your active Salesforce User roster once at setup. Every active team member, with their Profile, Role, Queue memberships, and timezone. Sales-side, qualification-side, and customer-side calls each route differently, and existing OwnerId on the Lead, Contact, or Opportunity is always preserved. New Leads send the Sforce-Auto-Assign: TRUE header so your Assignment Rules and Territory rules fire normally.
Where do the meetings actually live, calendar or Salesforce?
Both. AnyCRM writes the meeting as a native Salesforce Event with OwnerId set to the matched team member, the right polymorphic WhoId/WhatId pair, and the right timing. If Lightning Sync or Einstein Activity Capture is configured for that team member, the Event syncs to their connected Google or Outlook calendar. You see one Event on the activity timeline of the related Lead/Contact/Account/Opportunity, one calendar invite on the team member's calendar, one source-attributed record.
Can it cancel or reschedule a meeting from a phone call?
Yes. The caller gives their email, AnyCRM finds the soonest upcoming Event linked to the matching Lead or Contact, the AI Receptionist reads it back, and AnyCRM either reschedules in place or cancels by writing a completed Task with the reason on the related record and updating the Event in place. Never a DELETE that would Recycle-Bin the Event and erase the activity-timeline entry.
What if a caller has two upcoming Events in Salesforce?
AnyCRM returns every upcoming Event for that Lead or Contact (Subject, date, time, owning team member) and the AI Receptionist asks which one to change before doing anything. It never assumes.
Does it handle our validation rules and restricted picklists?
Yes. At setup AnyCRM reads your LeadSource picklist values, your Record Type IDs per object, your required-field set, and the human-readable explanation of each validation rule, and bakes them into the AI Receptionist's system prompt as a frozen table. The agent can't invent free-text picklist values or skip required fields. Unexpected validation-rule errors are parsed into human-readable sentences so even an edge case becomes a recoverable response on the call.
Does it handle timezones correctly?
Yes. The AI Receptionist confirms the caller's country/timezone, AnyCRM converts the meeting time into UTC for ActivityDateTime (which is how Salesforce expects it), and the AI Receptionist reads the time back to the caller in their local timezone. No customer-facing UTC strings, no off-by-an-hour confirmations.
How is this different from Salesforce's own Agentforce?
Agentforce is Salesforce's AI agent platform: powerful, deeply integrated, and priced as part of the Salesforce licensing footprint (Agentforce Sales tiers start at $175/user/month). It's designed as a build-your-own-agent platform with Agent Builder, Atlas Reasoning, and Agentforce Voice. AnyCRM is the inbound-phone-receptionist layer that sits in front. We answer the business line, capture the lead cleanly into your Salesforce org through the same Connected App contract Agentforce respects, and hand off to your downstream Salesforce flows (which may include Agentforce agents for service or SDR follow-up). You don't have to choose. AnyCRM in front, Agentforce behind, your Salesforce flow in the middle.
Does it create Opportunities?
Not directly. AnyCRM stays focused on the conversation surface: capturing the Lead or Contact, matching the right team member, booking the Event. Lead conversion, Opportunity creation, Stage routing — that's YOUR business policy, and that policy lives inside your Salesforce org, in the receiving flow we wire up for you at onboarding. Every Lead-create and every Event-book in AnyCRM sends a lead event straight into that flow (tagged with source AI Receptionist Call or AI Receptionist Web). Your flow decides which Stage, which pipeline, which LeadSource, which Flow trigger. AnyCRM doesn't try to encode policy that will drift out of date the moment your business changes.
How does the conversion tracking work?
Every lead event AnyCRM produces (from a phone call, a chat conversation, OR a Web-to-Lead form / chatflow) flows through a single conversion pipe. It lands in your Salesforce org for business logic. AND it fires server-side into Google Ads, Facebook Ads, and your analytics platform, using the origin of the domain you registered with AnyCRM. Server-side means the conversion can't be blocked by ad-blockers and doesn't degrade under iOS / Safari tracking restrictions. The result: higher ROAS, lower ad costs, enriched analytics, and attribution that doesn't fragment between web and voice. As far as we can tell, none of our competitors have built this yet.
What about my existing website forms? Do they go through the same pipe?
Yes — that's the whole point. Web-to-Lead forms / chatflows AND the AI Receptionist produce the same lead-event shape with the same source taxonomy. They land in the same place in your Salesforce org, and they fire the same server-side conversion event into your ad platforms. So your bid strategy optimises against unified, real conversions instead of fragmenting across web-only and voice-only stacks.
How long until it's actually capturing leads into Salesforce?
Most teams are live the same afternoon. The Connected App OAuth grant takes a minute. The team roster, picklist, Record Type, and Queue import is automatic. We wire up the lead-receiving flow inside your Salesforce org during onboarding. The phone integration is usually under an hour. Web chat is faster.
Salesforce logoWorks with Salesforce
§ 03 — Availability & Booking

Captures the website inquiry or caller as the right Salesforce record, books the meeting if there's real intent, and feeds one unified conversion pipe for your website forms AND your AI Receptionist.

Every caller who lands on the line becomes the right Salesforce record (a Lead when they're net-new, a Task on the existing Contact when they're already on an Account, with the right OwnerId, LeadSource, and Account link). When they want a meeting, AnyCRM creates a native Salesforce Event on the matched team member's calendar. AND the same lead event flows through one unified pipe (with the same shape, same source attribution, and same server-side conversion path used by your website forms) so your Salesforce business logic and your Google / Facebook / LinkedIn Ads both stay in sync.

A.01

Every caller becomes the right Salesforce record, not a stray missed call

The AI Receptionist captures first name, last name, email, phone, company, and call intent. Then AnyCRM writes the record into Salesforce as a Lead (with the right OwnerId, LeadSource, and RecordTypeId) for net-new callers, or as a Task on the existing Contact and any open Opportunity for returning ones. DURING the call.

A.02

Books meetings as native Salesforce Events

The meeting lands as a Salesforce Event with OwnerId set to the matched team member (so it lands on their calendar, not the integration user's), WhoId pointing at the Lead or Contact, and WhatId pointing at the related Account or Opportunity. Surfaces on the activity timeline of every related record, and syncs to the team member's Google or Outlook calendar through Lightning Sync or Einstein Activity Capture.

A.03

Sends the lead event straight to your CRM. You decide what happens next.

AnyCRM does not pretend to know your deal-creation rules. Every Lead-create and every Event-book sends a lead event straight to your CRM (with source: "AI Receptionist Call" or source: "AI Receptionist Web") where YOUR business logic takes over. Convert the Lead, open the Opportunity, set the Stage, assign the Territory, route through a Flow. We set up the receiving end inside your Salesforce org for you during onboarding, tuned to your industry and your client configuration. AnyCRM doesn't get in the way of policy you've already encoded.

One conversion pipe for your website forms AND your AI Receptionist.

Most businesses run two completely separate conversion-tracking stacks: one for the website (Web-to-Lead forms, chatflows, page-load pixels) and a totally absent one for the phone and the AI Receptionist. So Google Ads and Facebook Ads only learn from form-fills, the bidding optimises for the wrong audience, attribution is broken, and analytics double-count or miss real conversations entirely. AnyCRM closes that gap by running BOTH surfaces through a single conversion pipe.

1. Capture

A lead arrives either through your website form / chatflow OR through the AI Receptionist on phone / chat. Either way, AnyCRM produces the same clean lead-event shape, tagged at source with either AI Receptionist Call, AI Receptionist Web, or your website's form identifier. One vocabulary across both surfaces.

2. Deliver to your CRM

AnyCRM sends the lead event straight to your Salesforce org, into the receiving flow we wired up for you at onboarding. Your business logic decides what happens next: which Lead Queue, which Assignment Rule, which Opportunity, which Stage, which Flow. You don't have to maintain two sets of rules. Web leads and AI Receptionist leads both arrive through the same door.

3. Fire server-side conversion to your ad platforms

The same lead event fires server-side into Google Ads, Facebook Ads, and your analytics platform, using the origin of the domain you registered with AnyCRM. Server-side means the conversion can't be blocked by ad-blockers, doesn't degrade under iOS / Safari tracking restrictions, and lands with full attribution context.

4. Optimise, attribute, report

Because website conversions AND AI Receptionist conversions flow through the same pipe with the same source taxonomy, your Google Ads bid strategy now optimises against real revenue (not just form-fill noise), your Facebook Ads campaigns see the high-intent traffic that picks up the phone, your analytics platform sees a single unified funnel, and attribution stops fragmenting between web and voice.

Most competitor AI Receptionists try to maintain rules for when an Opportunity is created, what Stage it goes in, and which LeadSource to apply. That approach breaks the moment your business changes, and it ignores the conversion-tracking surface entirely. AnyCRM inverts the responsibility. AnyCRM stays focused on the conversation (capture, dedup, route, book, cancel) and delivers a clean lead event to the two destinations that matter: your Salesforce org (for business logic) and your ad platforms server-side (for conversion optimisation, attribution, and ROAS). This is a custom service baked into the AI Receptionist package. We configure the lead-receiving flow inside your Salesforce org AND the server-side conversion tracking at onboarding, matched to your specific industry, ad mix, and analytics setup.

We'll be candid: as far as we can tell, none of our competitors have thought of this yet. They sell AI Receptionists as a phone-answering product. AnyCRM treats the AI Receptionist as one of two equally weighted entries into a unified lead-event pipe, and that's where the real compounding value sits.

For your developer: how this wires into Salesforce

The AI Receptionist asks AnyCRM for availability against the people on your team and gets back open slots in the caller's timezone. No double bookings. Your busy time is always respected. Every AnyCRM call prevents duplicate records by running cross-object dedup across Lead and Contact, links to the existing Account, sets the OwnerId (matched from your team), sends the <code>Sforce-Auto-Assign: TRUE</code> header so your Assignment Rules and Territory rules fire, writes the Event so Lightning Sync / Einstein Activity Capture surfaces it on the team member's connected Google or Outlook calendar, and sends the lead event straight into your CRM tagged with <code>AI Receptionist Call</code> or <code>AI Receptionist Web</code>. The same lead also feeds the AnyCRM Conversion Lift pipeline (covered in the next capability) so your Google, Facebook, and LinkedIn Ads start optimising against the call and chat leads that actually pick up the phone.

getSalesforceAvailability()createSalesforceContactAppointment()
POST/mcp/tools/getSalesforceAvailability
{
  "invitee_timezone": "America/New_York",
  "start_time": "2026-05-15",
  "end_time":   "2026-05-17",
  "event_type_uuid": ["b050bcf6-b5b0-42a8-9359-aba11e711311"],
  "multi_day": true,
  "include_scheduling_url": false
}
200response
{
  "date_range_label": "Friday, May 15, 2026 – Sunday, May 17, 2026",
  "event_types": [{
    "event_type_uuid": "b050bcf6-b5b0-42a8-9359-aba11e711311",
    "total_slots": 15,
    "available_times_by_date": {
      "Friday, May 15, 2026": [
        { "start_time": "2026-05-15T10:00:00-04:00", "status": "available" },
        { "start_time": "2026-05-15T10:30:00-04:00", "status": "available" },
        { "start_time": "2026-05-15T11:00:00-04:00", "status": "available" }
      ]
    }
  }]
}
POST/mcp/tools/createSalesforceContactAppointment
{
  "name": "Jane Doe",
  "email": "jane@example.com",
  "phone": "+14155551234",
  "scheduled_datetime": "2026-05-15T11:00:00",
  "invitee_timezone": "America/New_York",
  "event_type_uuid": "b050bcf6-b5b0-42a8-9359-aba11e711311",
  "questions_and_answers": []
}
200response
{
  "event_uuid": "a7c1f4e9-...",
  "start_time": "2026-05-15T11:00:00-04:00",
  "start_time_utc": "2026-05-15T15:00:00Z",
  "invitee_timezone": "America/New_York",
  "reschedule_url": "https://...",
  "cancel_url": "https://..."
}
Salesforce logoWorks with Salesforce
§ 04 — Ads Conversion Lift

Turns every call and chat into a real conversion event your Google, Facebook, and LinkedIn Ads can actually optimise against. So Cost per Lead drops, ROAS goes up, and CAC stops being a guess.

If you run paid Ads on Google, Facebook, or LinkedIn, here is the uncomfortable truth: those platforms only get smarter when they see real conversions. Today, a Web-to-Lead form-fill counts. A real phone call from a high-intent buyer who picked up the phone at 7pm does NOT count. So Google bids harder on the audience that fills forms (often the cheaper, lower-intent one) and ignores the audience that actually calls. Cost per Lead looks fine. CAC quietly creeps up. ROAS looks misleading. AnyCRM fixes this. Every call and chat the AI Receptionist handles is sent as a real conversion event to Google Ads, Facebook Ads, AND LinkedIn Ads. The bidding algorithm finally sees what's actually working.

1b.01

Every phone call and every chat becomes a tracked conversion. Not just website form-fills.

Today, Google Ads and Facebook Ads probably think your only conversions are Web-to-Lead form-fills. That's why your Cost per Lead looks low but your AEs complain the leads are weak. The high-intent traffic is calling you instead of filling a form, and the Ad platforms have no idea. AnyCRM sends every call and every chat the AI Receptionist handles into your Ad platforms as a real conversion event. Suddenly Google, Facebook, and LinkedIn can see the FULL picture of who is converting from your Ads.

1b.02

Lower Cost per Lead. Better ROAS. Smaller CAC.

Once your Ad platforms can see the phone calls and chats as real conversions, they re-train on a better signal. Bidding shifts toward audiences that actually pick up the phone, not just the audience that loves filling out forms. In practice this means: Cost per Lead drops because you stop overpaying for low-intent form-fills; Return on Ad Spend goes up because the Ads now find people closer to ready-to-buy; and Customer Acquisition Cost shrinks because more of your Ad budget reaches buyers who will actually convert into closed-won Opportunities.

1b.03

The same pipe carries your website forms too. One source of truth across Ads, Salesforce, and Analytics.

AnyCRM doesn't just track AI Receptionist conversions. It also runs your existing Web-to-Lead forms and chatflows through the same pipeline. So a lead from a Google Ad that fills a form on your website AND a lead from a Facebook Ad that called the AI Receptionist three days later both end up tagged, attributed, and counted in exactly the same way. Your Ads platform stops double-counting, your analytics stop fragmenting, and your Salesforce org stops being half-blind to where your leads actually came from.

Imagine you spend $5,000/month on Google Ads. Today, you see 80 Web-to-Lead form-fills and assume that's the full picture. With AnyCRM running, you'll also see (say) 60 phone calls and 45 web chats the AI Receptionist handled, all flowing into Google Ads as real conversions. Suddenly Google sees 185 conversions a month instead of 80. It re-trains on that bigger, better signal. Within weeks, the bidding finds you more of the right kind of buyer. Same $5,000 spend, more real conversations, lower Cost per Lead, higher revenue. That is what "AI Receptionist with AnyCRM" actually means for the bottom line. Not just "it answers the phone."

For your developer: how the Conversion Lift pipeline works with Salesforce

Every Lead-create and Event-book fires through AnyCRM's Conversion Lift pipeline. The lead event lands inside your Salesforce org for business logic, AND fires a real conversion event server-side into Google Ads, Facebook Ads, and LinkedIn Ads using the verified origin of your registered domain. Server-side means the conversion can't be blocked by ad-blockers, doesn't degrade on iOS or Safari, and arrives with full attribution context so the Ad platforms' bidding algorithms can re-train on it. Your existing Web-to-Lead forms run through the same pipeline, so Web and Voice conversions feed the SAME training signal.

createOrUpdatesSalesforceContact()createSalesforceContactAppointment()
Salesforce logoWorks with Salesforce
§ 05 — Search, Reschedule & Cancel

Manages the full Event and Task lifecycle inside Salesforce for anyone calling or chatting.

Every "push the demo to Thursday" or "actually, cancel that" lands with the AI Receptionist instead of in your email inbox. AnyCRM reschedules update the existing Salesforce Event in place. Cancellations follow Salesforce's own idiom. Outcome flagged, reason captured as a completed Task on the related record. Instead of DELETING the Event and erasing the activity timeline, you get crystal clarity on when a Salesforce Event was created, and when and why it was updated by your AI Receptionist.

B.01

Finds the meeting by email in a single step without needing a Salesforce record ID

Customers DO NOT quote Salesforce 18-character record IDs over the phone. We've tested with hundreds of callers and each time they were asked 'Can you tell me the meeting ID from your email?', the response was the same: 'Why can't you find it yourself?'. AnyCRM gives the AI Receptionist an easy way to find the soonest upcoming Event associated to the matching Lead or Contact. And the AnyCRM response forces the AI Receptionist to be human. It reads back the Subject, date, time, and owning team member before changing anything.

B.02

Reschedules in place and keeps the Event data clean

Rescheduling updates the existing Event in a single confirmation. No cancel-then-rebook round-trip means the Event history, the WhoId/WhatId links to the Contact and Opportunity, and the calendar sync all stay intact. Failed reschedules leave the original Event untouched.

B.03

Cancels without erasing the audit trail

When a caller cancels, AnyCRM flags the Event cancelled the way Salesforce's own reporting expects (a completed Task with the reason on the related Lead, Contact, or Opportunity, plus the Event updated in place). No DELETE that would Recycle-Bin the record and strip WHY the meeting fell through. This lets you intuitively track changes for Salesforce Events created or updated by your AI Receptionist.

For your developer: reschedule & cancel by email

AnyCRM's search, reschedule, and cancel all accept just an email. The soonest upcoming Salesforce Event linked to the matching Lead or Contact is resolved inside AnyCRM. No record IDs at the AI Receptionist layer.

searchSalesforceAppointments()rescheduleSalesforceAppointment()cancelSalesforceAppointment()
POST/mcp/tools/searchSalesforceAppointments
{
  "email": "jane@example.com"
}
200response
{
  "meetings": [{
    "event_uuid": "a7c1f4e9-...",
    "event_type_name": "Haircut Only | $50",
    "start_time": "2026-05-15T11:00:00-04:00",
    "status": "active"
  }]
}
POST/mcp/tools/rescheduleSalesforceAppointment
{
  "email": "jane@example.com",
  "scheduled_datetime": "2026-05-16T14:00:00",
  "invitee_timezone": "America/New_York",
  "reason": "Customer asked to move 1 day later"
}
200response
{
  "cancelled_event_uuid": "a7c1f4e9-...",
  "new_event_uuid": "f0e22c91-...",
  "new_start_time": "2026-05-16T14:00:00-04:00",
  "new_start_time_utc": "2026-05-16T18:00:00Z"
}
POST/mcp/tools/cancelSalesforceAppointment
{
  "email": "jane@example.com",
  "reason": "Customer is unwell"
}
200response
{
  "cancelled_event_uuid": "a7c1f4e9-...",
  "status": "cancelled",
  "reason": "Customer is unwell"
}
Salesforce logoWorks with Salesforce
§ 06 — Match Specialists & Services

Routes every caller to the right team member. And maintains the existing OwnerId on the Lead, Contact, or Opportunity instead of randomly reassigning to someone else.

Salesforce orgs run on Users, Roles, Profiles, Queues, and Territories. At setup AnyCRM imports your active Salesforce User roster into its database and enriches each team member with lane, expertise, languages, timezone, and the meeting templates they actually book. The AI Receptionist then routes each caller to the team member who actually handles that lane. Existing OwnerId on Leads, Contacts, and Opportunities is honoured as the source of truth.

C.01

Routes by lane: AE vs SDR vs CS vs SE

"I'd like to talk to someone about pricing" routes to your AE pool. "I'm still evaluating" routes to an SDR for qualification. "I'm already a customer and have a question" routes to the CSM looking after the Account. And the existing OwnerId on the Contact or Opportunity is always preserved.

C.02

Honours existing OwnerId on Leads, Contacts, and Opportunities

If a Lead, Contact, or Opportunity already has an OwnerId, the AI Receptionist doesn't reassign. The Task, the Event, and any new related record attach under the existing Owner. No orphaned duplicate Lead, no Opportunity poached off a team member's forecast.

C.03

Matches fresh inbound callers and website chatters to the right person on the team

New leads with no existing Lead or Contact get assigned via the Lead Queue and Assignment Rule you've designated for that lane, honouring the criteria you set in AnyCRM for matching a lead to a team member. AnyCRM sends Sforce-Auto-Assign: TRUE on every Lead create so your Territory rules, Round-Robin Flows, and Einstein Lead Scoring kick in normally. The AI Receptionist doesn't fight the rules you already use.

For your developer: specialist roster & per-service routing

Team details live in AnyCRM's database, pulled once from Salesforce at setup (every active User with their Profile, Role, Queue memberships, and timezone), enriched with lane, expertise, languages, timezone, and meeting-template duration (valuable context for the AI Receptionist that Salesforce doesn't provide by default). At runtime, one read of the team roster matches caller → lane → team member. New Leads get the matched team member as OwnerId (or drop into the right Queue). Existing records keep theirs. AnyCRM does NOT cache your Opportunity stages, your Lead conversion paths, or your Flows. That policy stays inside your Salesforce org, where it belongs.

listSalesforceTeamMembers()getSalesforceUserProfile()
POST/mcp/tools/listSalesforceTeamMembers
{}
200response
{
  "total_members": 3,
  "members": [
    { "user_uuid": "3d2ed2c0-...", "name": "Michelle Arcona", "role": "user",  "timezone": "America/New_York" },
    { "user_uuid": "2b00d6f3-...", "name": "Casey",           "role": "user",  "timezone": "America/New_York" },
    { "user_uuid": "1809c459-...", "name": "Cielona Boco",    "role": "owner", "timezone": "America/New_York" }
  ]
}
POST/mcp/tools/getSalesforceUserProfile
{
  "user_uuid": "3d2ed2c0-a8fc-45d7-9f67-fc3e6b898bb2"
}
200response
{
  "user_name": "Michelle Arcona",
  "user_timezone": "America/New_York",
  "services": [
    { "event_type_uuid": "b050bcf6-...", "name": "Haircut Only | $50",                 "duration": 50  },
    { "event_type_uuid": "9a858539-...", "name": "Fine Density Haircut & Finish | $70",  "duration": 60  },
    { "event_type_uuid": "c1f70bb1-...", "name": "Full Head + Gloss + Finish | $335",    "duration": 210 },
    { "event_type_uuid": "3c01fa3d-...", "name": "All Over Keratin Treatment | $300",    "duration": 240 }
  ]
}
Salesforce logoWorks with Salesforce
§ 07 — Setup & why it's not just another Salesforce wrapper

Setup in 3 steps. Battle-tested on real Salesforce orgs.

You connect Salesforce once. AnyCRM imports your team, your LeadSource picklist, your Record Types, your Queues, and your meeting templates. AnyCRM also wires up the receiving end inside your Salesforce org so lead events from the AI Receptionist land where your business logic can act on them. Then the AI Receptionist starts capturing leads and booking meetings the same afternoon. No middleware. No prompt-engineering by you.

S.01

Connect Salesforce (Connected App OAuth, 60 seconds)

Authorize AnyCRM on your Salesforce org via the OAuth 2.0 Web Server flow against our Connected App. AnyCRM scopes to the least amount of access needed for the booking lifecycle (REST and SOQL on the standard objects, plus offline refresh). Nothing for analytics, marketing, billing, or forecast data. You can always revoke permissions at any time from Setup → Connected Apps OAuth Usage. Every update to your Salesforce org is signed with AnyCRM's Connected App credentials so it's easy to track what the AI Receptionist did when you audit in Login History and Setup Audit Trail.

S.02

Import the team. Lock in your picklists and Record Types. Wire up your CRM's lead-receiving flow.

AnyCRM imports every active Salesforce User as a bookable team member with lane, expertise, languages, timezone, and meeting-template duration. AnyCRM also freezes your LeadSource picklist values, your Record Type IDs per object, and your active Lead Queues so the AI Receptionist can only write values that actually exist in your org, and locks inbound-call source attribution (always AI Receptionist Call or AI Receptionist Web) so reporting stays consistent. During onboarding we set up the receiving flow inside your Salesforce org so the lead events from the AI Receptionist land where your business logic can act on them. AnyCRM does NOT replicate your Opportunity stages, your conversion Flows, or your Approval processes. Your Salesforce org decides what happens after a lead is captured. AnyCRM just delivers a clean event.

S.03

Drop the AI Receptionist on your phone line and your site

Forward your business number to the AI Receptionist's number and paste the chat widget into your site. The same AI Receptionist (same team roster, same Salesforce org, same lead-event pipe into your CRM and your ad platforms) answers both voice and web. Live the same afternoon.

Why not just use Salesforce's Web-to-Lead + Salesforce Scheduler + Agentforce?

Web-to-Lead, Salesforce Scheduler, and Salesforce's own Agentforce (the AI agent platform formerly known as Einstein Copilot, with its SDR agent and Agentforce Voice) are excellent at the steps AFTER a prospect has chosen to come to you via your website, your authenticated portal, or your existing customer-service surface. They don't pick up your inbound business phone line. A new caller at 9pm gets a missed call, not a Lead. A Web-to-Lead submission sits in the Lead Queue until someone reads it. Agentforce is powerful, but it lives inside your Salesforce licensing footprint (Agentforce Sales tiers start at $175/user/month and climb steeply), it's tuned to the agent-building paradigm rather than the inbound-phone-receptionist paradigm, and the configuration work to make it answer the phone, capture the right Lead, and book on the right team member's calendar is substantial. The AI Receptionist is the layer BEFORE all of that. It picks up the call, asks the right qualifying questions, books the meeting as a native Salesforce Event on the right team member's calendar, writes a clean Lead (with the source set to AI Receptionist Call or AI Receptionist Web, the right RecordTypeId, your locked LeadSource, and a call summary as a Task), AND sends the same lead event straight into your CRM's downstream business logic plus your ad platforms server-side. So your Salesforce Flows, your analytics, and your Google / Facebook Ads bidding all start optimising on a real conversation, not a name and a missed call. Buyers who already run Agentforce: AnyCRM sits in front, captures the call cleanly, and hands the Lead off to Agentforce's downstream agents the way the rest of your stack expects.

For your developer: the enrichment layer (raw Salesforce API vs our MCP tools)

Every tool the AI Receptionist calls is an opinionated wrapper inside AnyCRM. AnyCRM does the messy work for you. Cross-object dedup across Lead and Contact, Account linking, picklist validation against your Record Type, polymorphic WhoId/WhatId pairing, ActivityDateTime UTC math, validation-rule survival, error normalisation, lead-event delivery into your Salesforce org, and server-side conversion tracking into your ad platforms. All of it happens before the LLM ever sees a response. So the AI Receptionist reasons over clean, AI-aligned payloads instead of raw Salesforce internals.

Capturing a new lead

Raw APIWriting a Lead straight into Salesforce looks simple. But Salesforce does not dedup for you across Lead and Contact (the two objects are separate, and a caller who is already a Contact under an existing Account becomes a fresh Lead under the wrong stage if you don't check both). LeadSource is a restricted picklist (send a value not in the picklist and the Lead rejects on a field integrity error). RecordTypeId is required on orgs with multiple Record Types and there is no default (omit it and the Lead is rejected or lands on the wrong page layout). Many production orgs run validation rules requiring Company, Country, or a Lead Score threshold, and the rules surface as opaque field-custom-validation errors with messages your end-users wrote. If you want the Lead routed through a Lead Queue with an Assignment Rule, you need to pass the Sforce-Auto-Assign: TRUE header (it's off by default, so naive integrations create Leads that sit unassigned in the integration user's personal queue forever). And nothing in raw Salesforce fires a server-side conversion event to your ad platforms, so call-driven and chat-driven leads never get optimised for.
Our MCPcreateOrUpdatesSalesforceContact accepts name, email, phone, note, company, lead_intent, plus the matched team member. AnyCRM runs the cross-object dedup across Lead and Contact, picks the surviving record (or creates a new Lead with the right Record Type, your locked LeadSource, and required fields populated from setup defaults), always sends Sforce-Auto-Assign: TRUE so your Assignment Rules fire, parses validation-rule errors into human-readable messages, attaches the call note as a Task on the resulting record, sends the lead event straight into your CRM (with source AI Receptionist Call or AI Receptionist Web), AND fires a server-side conversion event into your ad platforms using the origin of your registered domain. All in one AnyCRM call.

Booking the meeting

Raw APICreating an Event directly against Salesforce is a tight contract. The polymorphic relationship fields are unforgiving: WhoId is restricted to Lead or Contact only; WhatId is Account, Opportunity, Case, Campaign, or any custom object enabled for Activities. Pass a Contact ID in WhatId and the Event rejects. Pass an Opportunity ID in WhoId and same. ActivityDateTime must be UTC; DurationInMinutes is required and there is no default. OwnerId is the calendar the Event lands on (omit it and the Event lands on the integration user's calendar, not the team member's, so they walk into Tuesday morning unaware they have a 10am demo). To get the Event onto the team member's connected Google or Outlook calendar, the team member must have Lightning Sync or Einstein Activity Capture configured.
Our MCPcreateSalesforceContactAppointment takes email, scheduled_datetime (a naive date and time, no offset needed), invitee_timezone, and meeting_template_key. AnyCRM resolves the right team member from the lane, handles the timezone and duration math, builds the polymorphic WhoId/WhatId pair correctly (Lead with no WhatId, or Contact with the Account in WhatId, or Contact with the open Opportunity in WhatId), sets OwnerId to the routed team member so the Event lands on their calendar (not the integration user's), sends the lead event straight into your CRM with the booking context, fires the server-side conversion event into your ad platforms, and returns both local and UTC start times in the response.

Cancelling with a reason

Raw APIDeleting an Event in Salesforce moves the record to the Recycle Bin for 15 days, then permanently removes it. The activity timeline on the related Lead, Contact, or Opportunity loses the entry. The connected-calendar sync drops the entry too. There's no standard CancellationReason field on the Event object, no completed-but-cancelled status, no audit hook. The Event is just gone. Salesforce's own best practice is to preserve the audit trail with a completed Task on the related record carrying the reason, plus an in-place update on the Event itself, instead of a destructive DELETE. Doing that cleanly takes several round-trips.
Our MCPcancelSalesforceAppointment takes email and reason. AnyCRM resolves the soonest upcoming Event, writes a completed Task with the reason as Description on the related Lead, Contact, or Opportunity, and updates the Event in place with the reason on a CancellationReason field (or a [CANCELLED] Subject prefix if the custom field isn't deployed). All in one AnyCRM call. No DELETE, full audit trail, the Event stays on the activity timeline and in the team member's Activity reporting.

Every AnyCRM tool for Salesforce follows the same AI-alignment contract, so the AI Receptionist never has to think about transport:

  • Naive datetimes in, Salesforce-native shape out. The AI Receptionist passes 2026-05-15T11:00:00 and a timezone string. AnyCRM converts to UTC ActivityDateTime and splits DurationInMinutes from the meeting template.
  • Email is the identity. Cancel and reschedule never need a Salesforce 18-character ID at the AI Receptionist layer. Email and soonest-upcoming resolves inside AnyCRM across Lead and Contact.
  • LeadSource, Record Type, Stage, and meeting template come from setup, not the LLM. The AI Receptionist can't invent free-text values that violate your restricted picklists or validation rules. Every value is inherited from the setup-time freeze.
  • Existing OwnerId is sacred. Lead, Contact, and Opportunity OwnerId is preserved on every write. New Leads only get the matched team member (or drop into the right Queue) when no Owner exists.
  • Cancellation preserves the audit trail. Salesforce's idiom for completed-but-cancelled meetings is honoured so reporting stays accurate, the activity timeline keeps the entry, and the Recycle Bin doesn't swallow the audit trail.
  • Assignment Rules fire on every Lead create. AnyCRM always sends Sforce-Auto-Assign: TRUE so your Territory, Round-Robin, and Einstein Lead Scoring rules kick in. Leads don't get orphaned in the integration user's personal queue.
  • Every lead event leaves AnyCRM in two places at once. Your CRM gets the lead event so your business logic can run. Your ad platforms get the server-side conversion event so bidding optimises against real conversations. Both happen on the same AnyCRM call. No race conditions, no missing events.
  • Flat, deterministic shapes. Every AnyCRM response has the same top-level keys across every tool, so the AI Receptionist's prompt never grows with edge-case branching.
  • Errors are messages, not codes. A field-custom-validation error from Salesforce becomes a one-sentence reason the AI Receptionist can repeat to the caller without translation.
  • Idempotent reschedules. If a reschedule fails mid-flight, the original Salesforce Event is preserved. The customer never ends up with nothing.

Multi-team-member setup. Team roster, lanes & system-prompt assembly

If you run more than one team member on Salesforce, AnyCRM imports the team roster once, you link each team member to the lanes they actually cover (AE / SDR / CSM / SE / Partner), and AnyCRM bakes the result into the AI Receptionist's system prompt at setup time. Not at runtime. The AI Receptionist doesn't query your team roster on every call. It already knows who handles what.

  1. Team roster import. AnyCRM imports your active Salesforce Users once and writes each one into its database keyed by crm_user_id (with name, role, lane, timezone, Profile, and Queue memberships).
  2. Per-team-member meeting templates. For each team member AnyCRM resolves the default Record Type per object, the meeting templates they actually book (discovery, demo, technical, executive), and the duration per template. One call per person, cached.
  3. Lane visibility. Each lane is flagged Public, Private or Ignored. The AI Receptionist only routes to and books on Public lanes. You toggle this in the AnyCRM dashboard without re-deploying.
  4. Lead-event receiving flow inside your CRM. During onboarding we wire up the flow inside your Salesforce org that receives lead events from AnyCRM. That's where your Lead-conversion and Opportunity-creation policy lives. AnyCRM doesn't try to own it.
  5. System-prompt assembly. The cached team roster, lane, picklist, and meeting-template JSON is prepended to the AI Receptionist's system prompt before the humaniser splits (personality, etiquettes, tone, speech style). So the AI Receptionist reads the team before it reads its own instructions.
  6. Runtime stays minimal. On a live call the AI Receptionist makes at most one availability call and one booking call. Never a team roster lookup or a picklist describe. Updates to team members, lanes, or templates re-run the cache. The AI Receptionist picks them up on its next deploy.

The end result: the AI Receptionist can match "I'd like to demo the platform with someone on the sales team" → the AE pool → that team member's Demo meeting template → that team member's calendar availability → a booked Salesforce Event on the right team member's calendar with the Lead in WhoId and the Account in WhatId → a lead event delivered straight into your Salesforce org → a server-side conversion event in your ad platforms. Without a single team roster query during the call.

Currently running for B2B SaaS revenue teams, financial-services advisors, manufacturing sales orgs, and professional-services partners. Anyone whose pipeline is in Salesforce but whose phone keeps ringing after the AE has logged off.

Salesforce logoWorks with Salesforce
§ 08 — How AI receptionists usually fail, and why ours can't

How most AI Receptionists built on Smith.ai, My AI Front Desk, or Goodcall fail for B2B SaaS revenue teams, financial-services advisors, manufacturing sales orgs, and professional-services partners that use Salesforce. And why AnyCRM can't.

Most AI Receptionists fail on Salesforce in the same handful of ways. Duplicate Leads when the caller is already a Contact, Leads orphaned in the integration user's personal queue, invented LeadSource and Record Type values that fail validation, Events on the wrong calendar, wrong polymorphic WhoId/WhatId pairing, destructive DELETEs that erase the activity timeline, hardcoded Opportunity-Stage rules that drift away from your real policy, and conversion data that never reaches your ad platforms server-side. AnyCRM can't fail in any of these ways, because each failure was solved one layer down inside AnyCRM. And because AnyCRM delegates Lead-conversion and Opportunity-creation policy to your CRM's own flow rather than trying to encode it, AND runs web and AI Receptionist conversions through a single unified conversion pipe instead of two disconnected stacks.

Duplicate Leads when the caller is already a Contact

Affects:My AI Front DeskGoodcallSmith.ai (AI tier)
Why it happensSalesforce treats Lead and Contact as separate objects with no implicit cross-object dedup. Duplicate Rules and Matching Rules exist but are off by default and only fire if your admin has deployed them. My AI Front Desk's native Salesforce connector and Zapier paths upsert into either Lead OR Contact based on a single configured strategy (their own integration page documents Phone-then-Email matching against ONE chosen object). A caller who's already a Contact under an Account but the integration is set to "Create Lead" becomes a fresh duplicate Lead, the existing Account is never updated, and the AE on the open Opportunity has no idea the customer called. Goodcall writes through a connector positioned as "sync your contacts" with no published cross-object dedup rule. Smith.ai's AI tier pushes a Lead and a conversation-summary Task after the call through a similar one-shot create. None of these can do a real cross-object "search-then-write" because their architecture is one call in, one call out.
Why ours can'tAnyCRM does NOT do a one-shot create. AnyCRM first searches Salesforce across BOTH Lead and Contact on a normalised lowercased + trimmed email, then on a normalised phone, then decides whether to update the existing record or create a new Lead. A returning Contact lands on the existing record with a new Task on the activity timeline (and on any open Opportunity), never as a duplicate Lead. This costs us extra API calls per contact-create. We do it anyway, because the alternative is the duplicate-Lead mess Smith.ai, My AI Front Desk, and Goodcall users live with. Four checks where they do one.

Leads stuck in the integration user's personal queue

Affects:My AI Front DeskGoodcallSmith.ai (AI tier)
Why it happensBy default, a Lead create against Salesforce assigns the new Lead to the running user (the OAuth user the Connected App authenticated as). Assignment Rules, Lead Queues, Territory rules, and Einstein Lead Scoring do not fire unless the request carries the Sforce-Auto-Assign: TRUE header. My AI Front Desk's Zapier-style "Create Lead" action and Zapier surfaces generally don't set this header. Goodcall writes through a connector that applies whatever default behaviour the underlying integration shipped with. Smith.ai pushes Leads in without published documentation that the header is set. So captured Leads sit in the integration user's personal queue, invisible to your actual sales team, with no Lead Score, no Territory assignment, and no AE notification.
Why ours can'tAnyCRM always sends Sforce-Auto-Assign: TRUE on Lead creates. Your Assignment Rules, Lead Queues, Territory rules, and Einstein Lead Scoring all fire automatically. The captured Lead lands in the right Queue, on the right team member, with the right score, the way a Web-to-Lead submission would. Two steps (set the header, write the Lead) where Smith.ai/My AI Front Desk/Goodcall do one.

Inventing LeadSource and Record Type values that don't exist in your org

Affects:My AI Front DeskGoodcallSmith.ai (AI tier)
Why it happensProduction Salesforce orgs run dozens of validation rules and restricted picklist fields (LeadSource, Industry, Rating). My AI Front Desk's connector and Zapier action take whatever the AI generates and post it. There is no "read your org's real picklist values first" step in a Zapier path or a vanilla native connector: it's a single action. So the AI invents a LeadSource like "AI Call" when your picklist values are Web, Phone Inquiry, Partner Referral, the write fails on a field-integrity error, and the integration looks broken. (My AI Front Desk's own help docs even call out FIELD_CUSTOM_VALIDATION_EXCEPTION as a known integration failure.) Goodcall's connector hands the value through to Salesforce the same way. Smith.ai's AI tier picks values from a generic playbook that doesn't match your org's picklists.
Why ours can'tAnyCRM reads your org's real LeadSource picklist values, Record Type IDs per object, required-field set, and the human-readable explanation of each validation rule at setup, and bakes them into the AI Receptionist's system prompt as a frozen table. So when the AI Receptionist captures a lead, it CAN ONLY pick from values that actually exist in your org. Unexpected validation-rule errors are parsed into human-readable sentences so even an edge case becomes a recoverable response. Two extra setup calls Smith.ai/My AI Front Desk/Goodcall don't make, and the difference between writes that always succeed and writes that silently rot your reporting.

Events on the wrong calendar (the integration user's)

Affects:My AI Front DeskGoodcallSmith.ai
Why it happensCreating an Event in Salesforce defaults OwnerId to the running user (which, on an integration, is the OAuth user the Connected App authenticated as), not the routed-to team member. My AI Front Desk's Zapier and native connector surfaces have no documented way to set OwnerId to the matched team member dynamically per call. Goodcall's connector defaults assign based on the underlying integration's behaviour rather than the lane the call belongs to. Smith.ai's human receptionists log Tasks rather than create Events with calendar-correct OwnerId. The Event lands on the integration user's calendar (or nowhere on a real team member's calendar at all), Lightning Sync / Einstein Activity Capture never surfaces it on the team member's connected Google or Outlook calendar, and the team member walks into Tuesday morning unaware they have a 10am demo.
Why ours can'tAnyCRM does multiple things in one call: matches the lane (sales / qualification / customer-success) from the call's intent, looks up the right team member from the AnyCRM team roster, filters out deactivated Users, sets OwnerId to the matched team member's Salesforce User ID, validates the polymorphic WhoId/WhatId pair, AND checks whether the existing Lead/Contact/Opportunity already has an Owner. If the existing Owner contradicts the inferred lane, AnyCRM refuses to overwrite. The Event lands on the team member's Salesforce calendar AND syncs through to their connected Google or Outlook calendar atomically. Five checks where Smith.ai/My AI Front Desk/Goodcall do one.

Wrong WhoId / WhatId polymorphic pairing

Affects:My AI Front DeskGoodcall
Why it happensSalesforce Event relationships are polymorphic but asymmetrical. WhoId is restricted to Lead or Contact only. WhatId is Account, Opportunity, Case, Campaign, or custom objects with Activities enabled. Pass a Contact ID in WhatId and the Event rejects. Pass an Account ID in WhoId and same. My AI Front Desk's Zapier-style "Create Event" action takes whichever ID the AI generates and posts it (no validation against polymorphic eligibility, no inference of the right slot from what's already in the org). Goodcall's connector doesn't expose the polymorphic slot logic in its published surface at all. Smith.ai doesn't create Events with structured polymorphic links from a phone call. A naive AI Receptionist that picks the wrong slot rejects the booking, leaves the caller with no meeting, and doesn't know which field the error was about.
Why ours can'tAnyCRM resolves the polymorphic pair inside the wrapper based on what it found in the dedup step. Lead in WhoId with no WhatId. Contact in WhoId with the Account in WhatId. Contact in WhoId with the open Opportunity in WhatId when one exists. The AI Receptionist can't pick the wrong slot because it doesn't pick the slot at all. AnyCRM does that. Three branches where Smith.ai/My AI Front Desk/Goodcall do zero.

Cancelling by DELETE instead of by completed Task + Event update

Affects:My AI Front DeskGoodcallSmith.ai
Why it happensA raw DELETE on a Salesforce Event moves it to the Recycle Bin for 15 days, then permanently removes it. The activity timeline on the related Lead/Contact/Opportunity loses the entry. The connected-calendar sync drops the entry too. There's no standard CancellationReason field on the Event object. Activity History reporting forgets the meeting ever happened. My AI Front Desk's Zapier-style cancel action (where it exists at all) issues a single DELETE, that's the only Salesforce operation Zapier exposes for it. Goodcall's cancellation, if any, goes through its own scheduler rather than the Salesforce Event itself, so the Salesforce timeline never reflects the cancellation reason. Smith.ai receptionists log a note rather than properly updating the Event, so Activity reporting doesn't count it correctly.
Why ours can'tAnyCRM's cancellation is multi-step. Find the soonest upcoming Event, capture the caller's reason, write a completed Task with the reason as Description on the related Lead/Contact/Opportunity, AND update the Event in place with a CancellationReason field (or a [CANCELLED] Subject prefix if the custom field isn't deployed). The Event stays on the timeline, queryable in Activity reporting, with the reason attached. Three operations where Smith.ai/My AI Front Desk/Goodcall do one (and usually the wrong one).

Encoding your deal-creation policy in the prompt or in middleware

Affects:My AI Front DeskGoodcallSmith.ai (AI tier)
Why it happensMy AI Front Desk's Zapier action set includes a hardcoded "Change Opportunity Stage" and "Create Event" pair that fires on every inbound call. There is no "only progress the Opportunity if the caller is actually ready to buy" logic. The action is single-step, so every call risks pushing an Opportunity Stage forward incorrectly, or clogging the AE's forecast with unqualified Opportunities. Worse, the moment you change your Opportunity Stages or your Lead-conversion flow, you have to go back into Zapier and rebuild the zap. Goodcall's connector applies whatever default behaviour the underlying integration shipped with: change your business, and the connector keeps doing what it did six months ago. Smith.ai's AI tier and human receptionists work from playbooks that drift out of date as your real Salesforce policy evolves. Even Salesforce's own Agentforce (powerful as it is) requires you to encode your Lead-conversion and Opportunity-creation logic inside the agent itself, in Agent Builder, with prompts and Actions and Apex.
Why ours can'tAnyCRM does not encode your Opportunity policy at all. AnyCRM sends a clean lead event straight into your Salesforce org, into the receiving flow we wire up for you at onboarding. YOUR flow decides what happens. New conversion path? Update the flow. New Stage? Update the flow. New LeadSource scheme? Update the flow. AnyCRM's behaviour stays consistent because AnyCRM's job stops at the conversation. Smith.ai/My AI Front Desk/Goodcall can't separate these concerns because their architecture forces business policy into Zapier middleware or a hardcoded action.

Web leads and AI Receptionist leads run on two separate conversion-tracking stacks

Affects:Smith.aiMy AI Front DeskGoodcall
Why it happensSmith.ai, My AI Front Desk, and Goodcall all treat phone and chat conversions as separate from Web-to-Lead and chatflow conversions. None of them fire a real conversion event into Google Ads, Facebook Ads, or LinkedIn Ads when the AI Receptionist closes a call. So your Ad platforms only see the Web-to-Lead form-fills, the bidding optimises for that (lower-intent) audience, your Cost per Lead looks deceptively low, ROAS reporting becomes a fiction, and the high-intent traffic that picks up the phone stays invisible to your Ad stack. Worse, when these competitors DO fire any tracking, it's client-side: blocked by ad-blockers and degraded under iOS / Safari tracking restrictions.
Why ours can'tAnyCRM runs your Web-to-Lead conversions AND your AI Receptionist conversions through the same Conversion Lift pipeline. Same event shape, same source taxonomy, same delivery to your Salesforce org, AND the same server-side conversion event into Google Ads, Facebook Ads, and LinkedIn Ads, using the verified origin of your registered domain. Server-side means it can't be blocked client-side and doesn't degrade on iOS or Safari. The result is what Smith.ai/My AI Front Desk/Goodcall structurally can't deliver: lower Cost per Lead, higher ROAS, smaller CAC, complete analytics funnels, and attribution that doesn't fragment between web and voice.

The AI Receptionist is honest because AnyCRM doesn't let it lie. And AnyCRM is sophisticated because it doesn't pretend to own policy that belongs inside your Salesforce org, while quietly fixing the conversion-tracking gap nobody else has thought to close.

Salesforce logoWorks with Salesforce
§ 09 — Side-by-side comparison

AnyCRM vs Smith.ai, My AI Front Desk, Goodcall on Salesforce

CapabilityAnyCRMSmith.aiMy AI Front DeskGoodcall
Live Salesforce Event booked DURING the call Yes. Native Salesforce Event, team-member-matched OwnerId, calendar-synced via Lightning Sync / Einstein Activity Capture.No. Task logged for manual follow-up.Partial. "Create Event" connector action without OwnerId-as-routed-team-member or polymorphic-pair validation.Partial. Scheduler hop, not a structured native Salesforce Event.
Cross-object dedup-before-write across Lead AND Contact on email and phone Yes. Always.Manual.No. Dedups against one chosen object, not cross-object.No published guarantee.
Preserves existing OwnerId on Leads, Contacts, and Opportunities for returning callers Yes. Existing OwnerId is sacred.Implicit, not guaranteed.No. Can overwrite.Depends on the underlying connector's defaults.
Routes by lane (AE / SDR / CSM / SE) Yes. Lane is part of AnyCRM's team roster.Manual, depends on the receptionist.No.No.
LeadSource, Record Type & meeting templates frozen from your real org values Yes. Read at setup, baked into the prompt as a frozen table.Not API-enforced.No. Writes can fail on unknown values (FIELD_CUSTOM_VALIDATION_EXCEPTION).No structural guard.
Assignment Rules fire on every Lead create (Sforce-Auto-Assign: TRUE) Yes. Always set.Not documented.No. Zapier surfaces don't set it.Not documented.
Cancellation preserves the audit trail (completed Task + Event update, not DELETE) Yes. Salesforce-native cancellation.Manual.No. DELETE strips the timeline.No. Cancellation happens in the scheduler, not the Event.
Reschedule in place (no cancel-then-rebook) Yes.Manual.No.No.
Lead-conversion / Opportunity-creation policy delegated to YOUR Salesforce flow Yes. Lead event delivered straight into your CRM, into the receiving flow we wire up at onboarding.No. Policy lives in Zapier or in the receptionist's training.No. Hardcoded "Create Lead" / "Change Opportunity Stage" actions.No. Connector-default behaviour.
Unified conversion pipe: web forms AND AI Receptionist → CRM + ad platforms server-side Yes. Same shape, same source taxonomy, same server-side delivery to your CRM and your ad platforms.No. Web and voice run on separate stacks.No. Web and voice run on separate stacks.No. Web and voice run on separate stacks.
Server-side conversion events to Google Ads, Facebook Ads, and analytics (origin = your registered domain) Yes. Every call and chat lead lands server-side.No.No.No.
Source attribution stays consistent across web and voice Yes. AI Receptionist Call, AI Receptionist Web, plus your Web-to-Lead form identifiers.Manual / inconsistent.No standardised taxonomy.Whatever the underlying connector defaults to.
Scale ceiling Bounded by Salesforce API limits, not by staffing.Bounded by human receptionist staffing.Bounded by Zapier rate limits and action contracts.Bounded by the scheduler-and-sync hop.
Salesforce logoWorks with Salesforce
§ 10 — Your Salesforce data passes through. It doesn't stick.

Your Salesforce data passes through AnyCRM. It doesn't stick.

AnyCRM processes your Salesforce data to answer the call. Then forgets it. The only thing AnyCRM persists is a conversation history ID so the AI Receptionist can recognise a returning caller. Leads, Contacts, Accounts, Opportunities, Events, Tasks. All of it stays in Salesforce, owned by your Salesforce org.

What AnyCRM stores

Conversation history IDs only. So the AI Receptionist can pick up where it left off if a caller hangs up and rings back. No call audio, no transcripts of record data, no caller PII.

What AnyCRM doesn't

Caller names, emails, phone numbers, Salesforce 18-character IDs, your team roster, your picklists, your Record Types, your Opportunity stages, your forecast data. None of it. AnyCRM reads what it needs, hands it to the LLM, fires the events, and discards the payload.

Where data lives

In your Salesforce org and in whatever systems your CRM's flow forwards lead events to. Leads, Contacts, Accounts, Opportunities, Events, Tasks all live in Salesforce. Source-attributed (always AI Receptionist Call or AI Receptionist Web), attributable to AnyCRM's Connected App in Login History and Setup Audit Trail, revocable. AnyCRM does not build a shadow CRM alongside yours.

Revocation

Revoke the AnyCRM Connected App in Setup → Connected Apps OAuth Usage and the AI Receptionist loses access immediately. There is no "export your data" step because there is no data to export. It was never AnyCRM's to hold.

For your developer: OAuth scopes & the smallest-surface principle

Salesforce uses OAuth 2.0 scopes on a Connected App. AnyCRM requests only the smallest set required for the contact + meeting capture lifecycle. Nothing for analytics, nothing for marketing, nothing for billing, nothing for forecast or quote data.

  • api (REST + SOQL). Read and write on Lead, Contact, Account, Opportunity, Event, Task, User. The lead-capture and booking work.
  • refresh_token, offline_access. So the AI Receptionist can refresh its access token without re-prompting your admin every two hours.
  • Read-only on User, Profile, UserRole, Group, GroupMember. The SOQL the setup workflow runs once to hydrate the team roster. No write access to User records.
  • Read on Account and Opportunity. So an inbound call from a Contact in an open Opportunity is attached to the right WhatId, not orphaned on the Account.
  • Not requested: Forecast, Quote, Order, Product2, PricebookEntry, AccountTeamMember, OpportunityLineItem, billing or subscription objects, custom finance objects, your other Connected Apps.

Same OAuth grant any Salesforce AppExchange app uses. Just a smaller surface. AnyCRM holds the access and refresh tokens (every write is signed by AnyCRM's Connected App credentials, so each Event and Lead change is attributable to AnyCRM in your org's Login History and Setup Audit Trail). The LLM never sees the token, and every tool call is logged with the operation name, never the raw payload.

Salesforce logoWorks with Salesforce
§ 11 — Pricing & the Transparency Ladder

$36 to get started. No monthly subscription. No commission on voice minutes. Ever.

The AI Receptionist industry has settled into a quiet little racket: wrap a public voice provider (usually Eleven Labs) and a public chat platform in your own UI, sell it back on a monthly subscription with a metered minute allowance, and pocket a 3–5× markup on every minute your customer's caller spends on the phone. The customer never sees the underlying price. We did not want to build that business.

AnyCRM uses Eleven Labs for voice. We say that out loud because it is true and because pretending otherwise would be the start of a small lie that grows. You pay Eleven Labs directly — at Eleven Labs' published price — and AnyCRM charges 0% commission on top. We make money from the Quickstart, the DIY Upgrades, and the optional Custom Implementation. Not from your call volume. The more customers call your business, the better — for you, not us.

The Transparency Ladder — you choose how far up you climb.

Most AI Receptionist products sell one thing: a monthly plan with a minute cap. AnyCRM sells five things, ordered by how much we do for you. Start at $36 with a prompt-and-pasted DIY agent. Stop there if it's enough. Or keep climbing through the upgrades to a full custom implementation with MCP tools, conversion tracking, and a CRM-side flow we configure for you.

Step 1
The Quickstart
$36 one-time

A prompt pack and a deployment guide. You wire up a basic AI Receptionist on web chat and voice using OUR humanizer prompts and OUR step-by-step videos.

  • Two humanizer prompts (warmth, pacing, filler words)
  • Web chat + voice setup videos
  • Same-afternoon live deployment
  • No MCP tools (no booking writes into your CRM)
  • No conversion tracking
  • No CRM-side lead-event flow
Step 1b · Order bump
30-min 1:1 Setup Call
+$63 one-time

Add this at checkout. We walk through your setup together so the Quickstart lands faster, without you reading the docs alone.

  • Live setup walkthrough
  • Humanizer prompt tuning to your voice
  • Q&A about your industry's quirks
Step 2
Availability & Booking Upgrade
$98–$196 one-time

Adds the first round of MCP tools so the AI Receptionist actually books appointments into your CRM (not just talks about booking them).

  • getAvailability + createContactAppointment MCP tools
  • Live booking into your CRM
  • Dedup-before-write on email and phone
  • Still DIY — you wire the tools yourself with our videos
Step 3
Full Lifecycle Upgrade
$196–$392 one-time

Adds search, reschedule, and cancel MCP tools. Now the AI Receptionist owns the whole appointment lifecycle — the same one we describe in the Availability and Lifecycle sections above.

  • Search + reschedule + cancel MCP tools
  • Audit-preserving cancellation
  • Specialist / team-member routing if your CRM supports it
  • Still DIY — conversion tracking and CRM flow not included

How AnyCRM stacks up against the monthly-subscription crowd.

Here is what you would pay each provider to handle 500 voice minutes a month — a fair mid-volume number for a service business that picks up after hours. Sourced directly from each vendor's published pricing page.

Cost & structure AnyCRM Smith.ai My AI Front Desk Vocaly AI
Pricing model One-time fee ($36 → $850+) + you pay Eleven Labs directly Monthly subscription, billed per call Monthly subscription, billed per minute Monthly subscription, billed per minute
Entry tier $36 one-time $300/mo (30 calls) $99/mo (200 voice min) $399/mo (2,500 min)
Cost for ~500 voice min / month $0 to AnyCRM + ~$25–85 paid directly to Eleven Labs ~$2,100/mo (Pro tier, ~300 calls) $99 + 300 overage min @ $0.25 = $174/mo $399/mo (2,500 min cap)
Commission / markup on voice minutes 0%. You pay Eleven Labs directly. Bundled (per-call pricing hides minute markup) ~3–5× markup on Eleven Labs' published rate Bundled (rate not disclosed)
Hard monthly minute cap No cap. Eleven Labs scales with your traffic. Yes, by call count Yes (200 min on $99 tier) Yes (2,500 min on $399 tier)
Underlying voice provider disclosed Yes — Eleven Labs. We say it openly. N/A (human receptionists) Not disclosed Not disclosed
CRM-side lead-event flow built for you Yes (Custom Implementation, tuned to your industry) No No (Zapier action list only) No (custom tier only, opaque)
Server-side conversion tracking to Google / Facebook / LinkedIn Ads Yes (Custom Implementation) No No No
Cost over 12 months at ~500 min/mo $36–$850 one-time + ~$300–$1,020 paid to Eleven Labs ~$25,200 ~$2,088 ~$4,788

Pricing as listed on each vendor's published pricing page (Smith.ai, My AI Front Desk / Frontdesk, Vocaly AI, Eleven Labs) at time of publication. Eleven Labs Conversational AI is currently $0.05–$0.17/min depending on plan; "$25–85 paid directly" assumes you sit on the Free, Starter, or Creator plan for low-volume usage. Smith.ai is human-staffed; My AI Front Desk & Vocaly AI are AI-only.

The math is uncomfortable for the industry. A service business paying My AI Front Desk $174/mo for 500 voice minutes is paying roughly $0.35/min, when Eleven Labs' own published rate for that traffic is $0.05–$0.17/min. The difference is pure margin sitting between you and the underlying provider. AnyCRM removes that layer. The Quickstart is $36 once. The Custom Implementation is a one-time quote. You pay your voice provider at their price. We never touch your call volume.
Salesforce logoWorks with Salesforce
§ 12 — The arithmetic

One backend. Six channels. Stacked ROI.

Indicative monthly numbers based on what service businesses already see from a single channel — multiplied by the channels you switch on. Update the agent once; every channel reflects it.

Channel
Customer reach
Leads / mo
Conv. value
Monthly ROI
Website ChatChatKit by OpenAI
100%
45–80
$150 / lead
$6,750 – $12,000
Voice AIEleven Labs
85%
30–50
$200 / lead
$6,000 – $10,000
WhatsAppBird Platform
78%
35–60
$125 / lead
$4,375 – $7,500
Instagram DMsBird Platform
65%
25–45
$100 / lead
$2,500 – $4,500
MessengerBird Platform
55%
20–35
$100 / lead
$2,000 – $3,500
TelegramBotFather direct
35%
15–25
$100 / lead
$1,500 – $2,500
Combined deployment
170–295
$23,125 – $40,000
The single-backend advantage. Six channels, one agent. Update the prompt once and every surface reflects it instantly — no middleware subscriptions, no fragmented flows, no Zapier per-execution billing.
Salesforce logoWorks with Salesforce
§ 13 — How it works

Four steps. One afternoon.

No Zapier. No n8n. If you can copy and paste, you can do this.

01

Open the Quickstart

You get the prompt pack, the humaniser prompts, and the deployment guide.

02

Connect Salesforce

One API key. The agent reads contacts and writes appointments — both ways.

03

Pick your channel

Web chat, voice line, or both. Same backend, same brain.

04

Go live

Test five calls yourself. Send the number to your team. Done.

Salesforce logoWorks with Salesforce
§ 14 — Get started

Live by tonight. Booking customers by tomorrow.

$36 once. If it doesn't work for your business, you've lost less than dinner.

Salesforce logoWorks with Salesforce