housecall-pro
What this MCP does
Manages Housecall Pro customers, leads, estimates, jobs, schedules, dispatch assignments, employees, invoices, notes, and service price books.
Tools
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['job_id', 'content'], 'properties': {'job_id': {'type': 'string', 'minLength': 1, 'description': 'The job id.'}, 'content': {'type': 'string', 'minLength': 1, 'description': 'The note text.'}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'tags': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Tag names.'}, 'email': {'type': 'string'}, 'notes': {'type': 'string'}, 'company': {'type': 'string', 'description': "The customer's company name."}, 'addresses': {'type': 'array', 'items': {'type': 'object', 'properties': {'zip': {'type': 'string'}, 'city': {'type': 'string'}, 'state': {'type': 'string'}, 'street': {'type': 'string'}, 'country': {'type': 'string'}, 'street_line_2': {'type': 'string'}}}, 'description': 'Addresses to create with the customer.'}, 'last_name': {'type': 'string'}, 'first_name': {'type': 'string'}, 'home_number': {'type': 'string'}, 'lead_source': {'type': 'string'}, 'work_number': {'type': 'string'}, 'mobile_number': {'type': 'string'}, 'notifications_enabled': {'type': 'boolean', 'description': 'Whether the customer receives notifications.'}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['customer_id', 'street', 'city', 'state', 'zip', 'country'], 'properties': {'zip': {'type': 'string', 'minLength': 1}, 'city': {'type': 'string', 'minLength': 1}, 'state': {'type': 'string', 'minLength': 1}, 'street': {'type': 'string', 'minLength': 1}, 'country': {'type': 'string', 'minLength': 1, 'description': 'Country, e.g. US.'}, 'customer_id': {'type': 'string', 'minLength': 1, 'description': 'The customer id.'}, 'street_line_2': {'type': 'string'}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['customer_id'], 'properties': {'note': {'type': 'string'}, 'address': {'type': 'object', 'properties': {'zip': {'type': 'string'}, 'city': {'type': 'string'}, 'state': {'type': 'string'}, 'street': {'type': 'string'}, 'country': {'type': 'string'}, 'street_line_2': {'type': 'string'}}, 'description': 'A new address, if no address_id.'}, 'message': {'type': 'string', 'description': 'Message to the customer.'}, 'options': {'type': 'array', 'items': {'type': 'object', 'properties': {'name': {'type': 'string', 'description': "Option name, e.g. 'Standard repair'."}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'line_items': {'type': 'array', 'items': {'type': 'object', 'required': ['name'], 'properties': {'name': {'type': 'string', 'minLength': 1, 'description': 'Line item name.'}, 'quantity': {'type': 'number', 'description': 'Quantity; up to two decimal places.'}, 'unit_cost': {'type': 'number', 'description': 'Direct cost of one unit to the company, in CENTS (job costing).'}, 'unit_price': {'type': 'number', 'description': 'Selling price of one unit, in CENTS.'}, 'description': {'type': 'string'}}}}}}, 'description': "The estimate's options."}, 'schedule': {'type': 'object', 'properties': {'end_time': {'type': 'string', 'description': 'ISO-8601 end.'}, 'start_time': {'type': 'string', 'description': 'ISO-8601 start.'}, 'notify_customer': {'type': 'boolean'}, 'arrival_window_in_minutes': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}}, 'description': 'When the estimate visit is scheduled.'}, 'address_id': {'type': 'string', 'description': 'An existing address of the customer.'}, 'customer_id': {'type': 'string', 'minLength': 1, 'description': 'The customer id.'}, 'job_type_id': {'type': 'string', 'description': 'From housecall_list_job_types.'}, 'lead_source': {'type': 'string'}, 'estimate_number': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': "Must be unique across the company's estimates; auto-assigned if omitted."}, 'business_unit_id': {'type': 'string'}, 'assigned_employee_ids': {'type': 'array', 'items': {'type': 'string'}}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['customer_id', 'address_id'], 'properties': {'tags': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Tag names.'}, 'notes': {'type': 'string'}, 'schedule': {'type': 'object', 'properties': {'anytime': {'type': 'boolean', 'description': 'Schedule for any time during the day.'}, 'scheduled_end': {'type': 'string', 'description': 'ISO-8601 end.'}, 'arrival_window': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'Arrival window in minutes.'}, 'scheduled_start': {'type': 'string', 'description': 'ISO-8601 start, e.g. 2026-03-23T15:30:00.'}, 'anytime_start_date': {'type': 'string', 'description': 'YYYY-MM-DD; required when anytime is true.'}}}, 'address_id': {'type': 'string', 'minLength': 1, 'description': 'The customer address id.'}, 'line_items': {'type': 'array', 'items': {'type': 'object', 'required': ['name'], 'properties': {'name': {'type': 'string', 'minLength': 1, 'description': 'Line item name.'}, 'quantity': {'type': 'number', 'description': 'Quantity; up to two decimal places.'}, 'unit_cost': {'type': 'number', 'description': 'Direct cost of one unit to the company, in CENTS (job costing).'}, 'unit_price': {'type': 'number', 'description': 'Selling price of one unit, in CENTS.'}, 'description': {'type': 'string'}}}}, 'customer_id': {'type': 'string', 'minLength': 1, 'description': 'The customer id.'}, 'job_type_id': {'type': 'string', 'description': 'From housecall_list_job_types.'}, 'lead_source': {'type': 'string'}, 'invoice_number': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': "Must be unique across the company's jobs; auto-assigned if omitted."}, 'business_unit_id': {'type': 'string'}, 'assigned_employee_ids': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Employees to assign.'}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'note': {'type': 'string'}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'address': {'type': 'object', 'properties': {'zip': {'type': 'string'}, 'city': {'type': 'string'}, 'state': {'type': 'string'}, 'street': {'type': 'string'}, 'country': {'type': 'string'}, 'street_line_2': {'type': 'string'}}, 'description': 'A new address, if no address_id.'}, 'customer': {'type': 'object', 'properties': {'tags': {'type': 'array', 'items': {'type': 'string'}}, 'email': {'type': 'string'}, 'notes': {'type': 'string'}, 'company': {'type': 'string'}, 'addresses': {'type': 'array', 'items': {'type': 'object', 'properties': {'zip': {'type': 'string'}, 'city': {'type': 'string'}, 'state': {'type': 'string'}, 'street': {'type': 'string'}, 'country': {'type': 'string'}, 'street_line_2': {'type': 'string'}}}}, 'last_name': {'type': 'string'}, 'first_name': {'type': 'string'}, 'home_number': {'type': 'string'}, 'lead_source': {'type': 'string'}, 'work_number': {'type': 'string'}, 'mobile_number': {'type': 'string'}, 'notifications_enabled': {'type': 'boolean'}}, 'description': 'A new customer to create with the lead. Give this or `customer_id`.'}, 'address_id': {'type': 'string', 'description': 'An existing address of the customer.'}, 'line_items': {'type': 'array', 'items': {'type': 'object', 'required': ['name'], 'properties': {'kind': {'enum': ['labor', 'materials', 'fixed discount', 'percent discount'], 'type': 'string', 'description': 'Line item kind.'}, 'name': {'type': 'string', 'minLength': 1, 'description': 'Line item name.'}, 'quantity': {'type': 'number', 'description': 'Quantity; up to two decimal places.'}, 'unit_cost': {'type': 'number', 'description': 'Direct cost of one unit to the company, in CENTS (job costing).'}, 'unit_price': {'type': 'number', 'description': 'Selling price of one unit, in CENTS.'}, 'description': {'type': 'string'}}}}, 'customer_id': {'type': 'string', 'description': 'An existing customer. Give this or `customer`.'}, 'lead_source': {'type': 'string'}, 'assigned_employee_id': {'type': 'string'}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['job_id', 'employee_ids'], 'properties': {'job_id': {'type': 'string', 'minLength': 1, 'description': 'The job id.'}, 'employee_ids': {'type': 'array', 'items': {'type': 'string'}, 'minItems': 1, 'description': 'Every employee who should be dispatched.'}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['customer_id'], 'properties': {'expand': {'type': 'array', 'items': {'enum': ['attachments', 'do_not_service'], 'type': 'string'}, 'description': 'Extras to include.'}, 'customer_id': {'type': 'string', 'minLength': 1, 'description': 'The customer id.'}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['estimate_id'], 'properties': {'estimate_id': {'type': 'string', 'minLength': 1, 'description': 'The estimate id.'}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['job_id'], 'properties': {'expand': {'type': 'array', 'items': {'enum': ['attachments', 'appointments'], 'type': 'string'}, 'description': 'Extras to include.'}, 'job_id': {'type': 'string', 'minLength': 1, 'description': 'The job id.'}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['lead_id'], 'properties': {'lead_id': {'type': 'string', 'minLength': 1, 'description': 'The lead id.'}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'q': {'type': 'string', 'description': 'Search by name, email, mobile number or address.'}, 'page': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1, 'description': 'Page number, starting at 1.'}, 'expand': {'type': 'array', 'items': {'enum': ['attachments', 'do_not_service'], 'type': 'string'}, 'description': 'Extras to include in each customer.'}, 'sort_by': {'type': 'string', 'description': 'Customer attribute to sort by, e.g. created_at.'}, 'page_size': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1, 'description': 'Records per page.'}, 'location_ids': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Multi-location accounts: only these location ids (ignored when HOUSECALL_PRO_COMPANY_ID is set).'}, 'sort_direction': {'enum': ['asc', 'desc'], 'type': 'string', 'description': 'Sort direction.'}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'page': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1, 'description': 'Page number, starting at 1.'}, 'sort_by': {'type': 'string', 'description': 'Employee attribute to sort by.'}, 'page_size': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1, 'description': 'Records per page.'}, 'location_ids': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Multi-location accounts: only these location ids (ignored when HOUSECALL_PRO_COMPANY_ID is set).'}, 'sort_direction': {'enum': ['asc', 'desc'], 'type': 'string', 'description': 'Sort direction.'}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'page': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1, 'description': 'Page number, starting at 1.'}, 'sort_by': {'enum': ['created_at', 'updated_at', 'id'], 'type': 'string', 'description': 'Attribute to sort by.'}, 'page_size': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1, 'description': 'Records per page.'}, 'customer_id': {'type': 'string', 'description': "Only this customer's estimates."}, 'work_status': {'type': 'array', 'items': {'enum': ['unscheduled', 'scheduled', 'in_progress', 'completed', 'canceled'], 'type': 'string'}, 'description': 'Only these work statuses. All statuses if omitted.'}, 'employee_ids': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Only records assigned to these employee ids.'}, 'location_ids': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Multi-location accounts: only these location ids (ignored when HOUSECALL_PRO_COMPANY_ID is set).'}, 'sort_direction': {'enum': ['asc', 'desc'], 'type': 'string', 'description': 'Sort direction.'}, 'scheduled_end_max': {'type': 'string', 'description': 'Only estimates ending at or before this time (ISO-8601, e.g. 2026-03-23T15:30:00Z).'}, 'scheduled_end_min': {'type': 'string', 'description': 'Only estimates ending at or after this time (ISO-8601, e.g. 2026-03-23T15:30:00Z).'}, 'scheduled_start_max': {'type': 'string', 'description': 'Only estimates starting at or before this time (ISO-8601, e.g. 2026-03-23T15:30:00Z).'}, 'scheduled_start_min': {'type': 'string', 'description': 'Only estimates starting at or after this time (ISO-8601, e.g. 2026-03-23T15:30:00Z).'}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'page': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1, 'description': 'Page number, starting at 1.'}, 'status': {'type': 'array', 'items': {'enum': ['open', 'pending_payment', 'paid', 'voided', 'uncollectible', 'canceled'], 'type': 'string'}, 'description': 'Only these statuses.'}, 'sort_by': {'enum': ['amount', 'created_at', 'due_amount', 'due_at', 'invoice_number', 'paid_at', 'sent_at', 'status', 'updated_at'], 'type': 'string', 'description': 'Attribute to sort by.'}, 'page_size': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1, 'description': 'Records per page.'}, 'due_at_max': {'type': 'string', 'description': 'Due at or before (ISO-8601, e.g. 2026-03-23T15:30:00Z).'}, 'due_at_min': {'type': 'string', 'description': 'Due at or after (ISO-8601, e.g. 2026-03-23T15:30:00Z).'}, 'paid_at_max': {'type': 'string', 'description': 'Paid at or before (ISO-8601, e.g. 2026-03-23T15:30:00Z).'}, 'paid_at_min': {'type': 'string', 'description': 'Paid at or after (ISO-8601, e.g. 2026-03-23T15:30:00Z).'}, 'location_ids': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Multi-location accounts: only these location ids (ignored when HOUSECALL_PRO_COMPANY_ID is set).'}, 'customer_uuid': {'type': 'array', 'items': {'type': 'string'}, 'description': "Only these customers' invoices."}, 'created_at_max': {'type': 'string', 'description': 'Created at or before (ISO-8601, e.g. 2026-03-23T15:30:00Z).'}, 'created_at_min': {'type': 'string', 'description': 'Created at or after (ISO-8601, e.g. 2026-03-23T15:30:00Z).'}, 'sort_direction': {'enum': ['asc', 'desc'], 'type': 'string', 'description': 'Sort direction.'}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['job_id'], 'properties': {'job_id': {'type': 'string', 'minLength': 1, 'description': 'The job id.'}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['job_id'], 'properties': {'job_id': {'type': 'string', 'minLength': 1, 'description': 'The job id.'}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'page': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1, 'description': 'Page number, starting at 1.'}, 'expand': {'type': 'array', 'items': {'enum': ['attachments', 'appointments'], 'type': 'string'}, 'description': 'Extras to include.'}, 'sort_by': {'enum': ['created_at', 'updated_at', 'invoice_number', 'id', 'description', 'work_status'], 'type': 'string', 'description': 'Attribute to sort by.'}, 'page_size': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1, 'description': 'Records per page.'}, 'customer_id': {'type': 'string', 'description': "Only this customer's jobs."}, 'work_status': {'type': 'array', 'items': {'enum': ['unscheduled', 'scheduled', 'in_progress', 'completed', 'canceled'], 'type': 'string'}, 'description': 'Only these work statuses. All statuses if omitted.'}, 'employee_ids': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Only records assigned to these employee ids.'}, 'location_ids': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Multi-location accounts: only these location ids (ignored when HOUSECALL_PRO_COMPANY_ID is set).'}, 'sort_direction': {'enum': ['asc', 'desc'], 'type': 'string', 'description': 'Sort direction.'}, 'scheduled_end_max': {'type': 'string', 'description': 'Only jobs ending at or before this time (ISO-8601, e.g. 2026-03-23T15:30:00Z).'}, 'scheduled_end_min': {'type': 'string', 'description': 'Only jobs ending at or after this time (ISO-8601, e.g. 2026-03-23T15:30:00Z).'}, 'scheduled_start_max': {'type': 'string', 'description': 'Only jobs starting at or before this time (ISO-8601, e.g. 2026-03-23T15:30:00Z).'}, 'scheduled_start_min': {'type': 'string', 'description': 'Only jobs starting at or after this time (ISO-8601, e.g. 2026-03-23T15:30:00Z).'}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'name': {'type': 'string', 'description': 'Filter job types by name.'}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'page': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1, 'description': 'Page number, starting at 1.'}, 'status': {'enum': ['open', 'won', 'lost'], 'type': 'string', 'description': 'Only leads in this status.'}, 'sort_by': {'enum': ['created_at', 'updated_at', 'id', 'status'], 'type': 'string', 'description': 'Attribute to sort by.'}, 'tag_ids': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Only leads with these tag ids.'}, 'page_size': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1, 'description': 'Records per page.'}, 'customer_id': {'type': 'string', 'description': "Only this customer's leads."}, 'lead_source': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Only leads from these lead sources.'}, 'employee_ids': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Only records assigned to these employee ids.'}, 'location_ids': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Multi-location accounts: only these location ids (ignored when HOUSECALL_PRO_COMPANY_ID is set).'}, 'sort_direction': {'enum': ['asc', 'desc'], 'type': 'string', 'description': 'Sort direction.'}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'q': {'type': 'string', 'description': 'Search by name, description or task number.'}, 'page': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1, 'description': 'Page number, starting at 1.'}, 'expand': {'type': 'array', 'items': {'enum': ['service_materials', 'service_labor_rates'], 'type': 'string'}, 'description': 'Populate these nested lists (empty by default).'}, 'sort_by': {'type': 'string', 'description': 'Service attribute to sort by.'}, 'page_size': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1, 'description': 'Records per page.'}, 'sort_direction': {'enum': ['asc', 'desc'], 'type': 'string', 'description': 'Sort direction.'}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'page': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1, 'description': 'Page number, starting at 1.'}, 'sort_by': {'enum': ['created_at', 'name'], 'type': 'string', 'description': 'Attribute to sort by.'}, 'page_size': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1, 'description': 'Records per page.'}, 'sort_direction': {'enum': ['asc', 'desc'], 'type': 'string', 'description': 'Sort direction.'}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['customer_id'], 'properties': {'tags': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Tag names.'}, 'email': {'type': 'string'}, 'notes': {'type': 'string'}, 'company': {'type': 'string', 'description': "The customer's company name."}, 'last_name': {'type': 'string'}, 'first_name': {'type': 'string'}, 'customer_id': {'type': 'string', 'minLength': 1, 'description': 'The customer id.'}, 'home_number': {'type': 'string'}, 'lead_source': {'type': 'string'}, 'work_number': {'type': 'string'}, 'mobile_number': {'type': 'string'}, 'notifications_enabled': {'type': 'boolean', 'description': 'Whether the customer receives notifications.'}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['job_id', 'start_time'], 'properties': {'job_id': {'type': 'string', 'minLength': 1, 'description': 'The job id.'}, 'notify': {'type': 'boolean', 'description': 'Notify the customer of the new schedule.'}, 'end_time': {'type': 'string', 'description': 'ISO-8601 end time.'}, 'notify_pro': {'type': 'boolean', 'description': 'Notify the assigned employee(s).'}, 'start_time': {'type': 'string', 'minLength': 1, 'description': 'ISO-8601 start time.'}, 'dispatched_employee_ids': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Employees to dispatch to the job.'}, 'arrival_window_in_minutes': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'Arrival window in minutes.'}}}
Recent tool changes
Similar MCP servers
freedom-mcp
Supports company operations through commitments, teams, agents, customer evidence, leads, content workflows, spreadsheets, commer…
Meta Council
Provides governed workflows for consulting, outreach, sales deals, invoices, marketing campaigns, content approvals, accounting a…
GestãoClick
Connects to the GestãoClick ERP to manage customers, suppliers, products, sales, service orders, budgets, and financial records.
Odichat
Manages WhatsApp, Instagram, and Facebook inboxes with contacts, conversations, agents, automation rules, labels, canned response…
Coordinalo — Service Business Operations
Manages appointment-based service businesses, including clients, providers, services, availability, public booking agendas, recur…
StackFast FractWin Expert Brain
Provides governed sales, negotiation, strategy, operations, CRM, estimation, artifact, and risk-management workflows with human a…
GrowthKit Revenue Intelligence
Supports B2B revenue operations with lead campaigns, ICP and company enrichment, CRM records and activities, outreach drafting, t…
KaiCalls
Provides AI phone reception, outbound calling campaigns, call transcripts and recordings, lead management, routing, staff alerts,…