> **Building with AI coding agents?** Install the authstack plugin with one command. This equips your agent with accurate Scalekit implementation patterns.
>
> **Recommended** (the `-y` flags skip prompts, so the command runs without an interactive terminal):
> ```bash
> npx -y @scalekit-inc/cli setup -y
> ```
>
> Global:
> ```bash
> npm install -g @scalekit-inc/cli
> scalekit setup -y
> ```
>
> Supports Claude Code, Cursor, GitHub Copilot, Codex + skills for other Agent Skills-compatible agents in `~/.agents/skills`.
> Skills: integrate-agentkit, implement-saaskit, add-mcp-oauth, implement-sso, implement-scim.
> [Full setup guide](https://docs.scalekit.com/dev-kit/build-with-ai/)

---

# Connect AI agents to Follow Up Boss

The Follow Up Boss connector lets your AI agent act in each user's Follow Up Boss account. Each user connects their own Follow Up Boss API key once, and Scalekit sends it with every call, so your agent never handles credentials. It comes with 85 tools.

**Authentication:** API Key
**Categories:** CRM & Sales
**Tools:** 85: 58 read, 27 write, 0 destructive
**Users sign in with:** API key
**Built by:** Scalekit connector
**Try it:** [Playground in the Scalekit dashboard](https://app.scalekit.com/ws/signup?sk_intent=playground&provider=FOLLOWUPBOSS)

## Setup

1. ### Install the SDK

   **Node.js**

   ```bash
   npm install @scalekit-sdk/node dotenv
   ```

   **Python**

   ```bash
   pip install scalekit-sdk-python python-dotenv
   ```

2. ### Set your credentials

   Add your Scalekit credentials to your `.env` file. Find values in **[app.scalekit.com](https://app.scalekit.com)** > **Developers** > **API Credentials**.

   ```sh title=".env"
   SCALEKIT_ENVIRONMENT_URL=<your-environment-url>
   SCALEKIT_CLIENT_ID=<your-client-id>
   SCALEKIT_CLIENT_SECRET=<your-client-secret>
   ```

3. ### Create the Follow Up Boss connection

   In **AgentKit > Connections**, create a Follow Up Boss connection. The name you give it is the `connection_name` your code passes. See [Configure connections](/agentkit/connections/).

## Tools

Pass the exact name to `execute_tool`, with an input like each tool's example. To ask for a tool that's missing, use the [request form](https://scalekitsupport.portal.usepylon.com/forms/request-a-connector-tool).

**Node.js**

```typescript
const result = await actions.executeTool({
  toolName: 'followupboss_action_plan_people_list',
  toolInput: {},
  connector: 'followupboss',
  identifier: 'user_123',
})
```

**Python**

```python
result = actions.execute_tool(
    tool_name="followupboss_action_plan_people_list",
    tool_input={},
    connection_name="followupboss",
    identifier="user_123",
)
```

`result.data` is the app's response as JSON, and `result.execution_id` (`executionId` in Node.js) is the ID of the call.

### `followupboss_action_plan_people_list`

List Action Plan Assignments · Read-only

List action plans applied to a person, or people on an action plan, in Follow Up Boss.
Returns assignments with their id, person, action plan and status (Running or Paused).
Use it to find an assignment ID before pausing or resuming it with followupboss_action_plan_person_update.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `action_plan_id` (`integer`, optional): Return people on this action plan ID.
- `limit` (`integer`, optional): Maximum number of records to return, from 1 to 100. Follow Up Boss returns 10 when this is omitted.
- `offset` (`integer`, optional): Number of records to skip before returning results, used for paging (e.g. 25 to get the second page of 25). Results are newest first by default.
- `person_id` (`integer`, optional): Return action plans applied to this person ID.

Example input: `{}`

### `followupboss_action_plans_list`

List Action Plans · Read-only

List action plans (automated follow-up sequences) in Follow Up Boss.
Returns action plans with id, name and status.
Use it to find an action plan ID before applying it with followupboss_action_plan_person_apply.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `ids` (`string`, optional): Comma-separated action plan IDs.
- `limit` (`integer`, optional): Maximum number of records to return, from 1 to 100. Follow Up Boss returns 10 when this is omitted.
- `names` (`array`, optional): Action plan names to match exactly; each is sent as a names[] parameter. Example: ["New Buyer Lead"]
- `offset` (`integer`, optional): Number of records to skip before returning results, used for paging (e.g. 25 to get the second page of 25). Results are newest first by default.
- `sort` (`string`, optional): Field to sort by: id, name. Prefix with a minus sign for descending order (e.g. -id).
- `status` (`string`, optional): Status filter: Active, Deleted, or Active,Deleted for both. One of: `Active`, `Deleted`, `Active,Deleted`.

Example input: `{}`

### `followupboss_appointment_get`

Get Appointment · Read-only

Get one appointment in Follow Up Boss by ID.
Returns its title, start and end, location, description, invitees, type and outcome.
Use it when you have the appointment ID. Use followupboss_appointments_list to find appointments.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `id` (`integer`, required): Numeric ID of the appointment.

Example input: `{"id":1}`

### `followupboss_appointment_outcome_get`

Get Appointment Outcome · Read-only

Get one appointment outcome in Follow Up Boss by ID.
Returns the outcome's name and order.
Use it when you have the outcome ID. Use followupboss_appointment_outcomes_list to see all outcomes.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `id` (`integer`, required): Numeric ID of the appointment outcome.

Example input: `{"id":1}`

### `followupboss_appointment_outcomes_list`

List Appointment Outcomes · Read-only

List appointment outcomes (such as Met or No Show) in the Follow Up Boss account.
Returns appointment outcomes with id, name and order.
Use it to get an outcome_id for followupboss_appointment_update.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `limit` (`integer`, optional): Maximum number of records to return, from 1 to 100. Follow Up Boss returns 10 when this is omitted.
- `offset` (`integer`, optional): Number of records to skip before returning results, used for paging (e.g. 25 to get the second page of 25). Results are newest first by default.
- `sort` (`string`, optional): Field to sort by: orderWeight, id, name. Prefix with a minus sign for descending order (e.g. -orderWeight). Defaults to orderWeight.

Example input: `{}`

### `followupboss_appointment_type_get`

Get Appointment Type · Read-only

Get one appointment type in Follow Up Boss by ID.
Returns the type's name and order.
Use it when you have the type ID. Use followupboss_appointment_types_list to see all types.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `id` (`integer`, required): Numeric ID of the appointment type.

Example input: `{"id":1}`

### `followupboss_appointment_types_list`

List Appointment Types · Read-only

List appointment types (such as Showing or Listing Appointment) in the Follow Up Boss account.
Returns appointment types with id, name and order.
Use it to get a type_id for followupboss_appointment_create.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `limit` (`integer`, optional): Maximum number of records to return, from 1 to 100. Follow Up Boss returns 10 when this is omitted.
- `offset` (`integer`, optional): Number of records to skip before returning results, used for paging (e.g. 25 to get the second page of 25). Results are newest first by default.
- `sort` (`string`, optional): Field to sort by: orderWeight, id, name. Prefix with a minus sign for descending order (e.g. -orderWeight). Defaults to orderWeight.

Example input: `{}`

### `followupboss_appointments_list`

List Appointments · Read-only

List appointments in Follow Up Boss, filtered by person, user or a date range.
Returns a page of appointments with title, start and end, location, invitees, type and outcome.
Use it to see a calendar or a contact's appointments. Use followupboss_appointment_get for one appointment by ID. start and end must be sent together.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `end` (`string`, optional): End of the date range to search (ISO 8601). Must be used with start.
- `limit` (`integer`, optional): Maximum number of records to return, from 1 to 100. Follow Up Boss returns 10 when this is omitted.
- `offset` (`integer`, optional): Number of records to skip before returning results, used for paging (e.g. 25 to get the second page of 25). Results are newest first by default.
- `person_id` (`string`, optional): Return appointments for this person ID, or a comma-separated list of person IDs.
- `start` (`string`, optional): Start of the date range to search (ISO 8601). Must be used with end.
- `user_id` (`integer`, optional): Return appointments for this user ID.

Example input: `{}`

### `followupboss_automation_get`

Get Automation · Read-only

Get one automation in Follow Up Boss by ID.
Returns the automation's name, status, triggers and steps.
Use it when you have the automation ID. Use followupboss_automations_list to find automations.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `id` (`integer`, required): Numeric ID of the automation.

Example input: `{"id":1}`

### `followupboss_automation_people_list`

List Automation Runs · Read-only

List pairings of automations and the people they have run, or will run, on in Follow Up Boss.
Returns pairings with id, automation, person and status (Initial, Running, Paused or Completed).
Use it to find a pairing ID before pausing or resuming it with followupboss_automation_person_update.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `automation_id` (`integer`, optional): Return pairings for this automation ID.
- `limit` (`integer`, optional): Maximum number of records to return, from 1 to 100. Follow Up Boss returns 10 when this is omitted.
- `offset` (`integer`, optional): Number of records to skip before returning results, used for paging (e.g. 25 to get the second page of 25). Results are newest first by default.
- `person_id` (`integer`, optional): Return pairings for this person ID.
- `status` (`string`, optional): Return pairings with this status. One of: `Initial`, `Running`, `Paused`, `Completed`.

Example input: `{}`

### `followupboss_automation_person_get`

Get Automation Run · Read-only

Get one automation-person pairing in Follow Up Boss by ID.
Returns the pairing's automation, person and status.
Use it when you have the pairing ID. Use followupboss_automation_people_list to find pairings.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `id` (`integer`, required): Numeric ID of the automation-person pairing.

Example input: `{"id":1}`

### `followupboss_automations_list`

List Automations · Read-only

List automations in Follow Up Boss.
Returns automations with id, name, status and trigger details.
Use it to find an automation ID, for example one with a manual trigger to run with followupboss_automation_person_trigger.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `enabled_only` (`boolean`, optional): Set to true to return only enabled automations.
- `limit` (`integer`, optional): Maximum number of records to return, from 1 to 100. Follow Up Boss returns 10 when this is omitted.
- `manual_only` (`boolean`, optional): Set to true to return only automations with a manual trigger.
- `offset` (`integer`, optional): Number of records to skip before returning results, used for paging (e.g. 25 to get the second page of 25). Results are newest first by default.
- `status` (`string`, optional): Return automations with this status. One of: `Active`, `Disabled`, `Deleted`.

Example input: `{}`

### `followupboss_call_get`

Get Call · Read-only

Get one logged call in Follow Up Boss by ID.
Returns the call's direction, numbers, outcome, duration, note, person and user.
Use it when you have the call ID. Use followupboss_calls_list to find calls.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `id` (`integer`, required): Numeric ID of the call.

Example input: `{"id":1}`

### `followupboss_calls_list`

List Calls · Read-only

List logged phone calls in Follow Up Boss, filtered by person or phone number.
Returns a page of calls with direction, phone numbers, outcome, duration, note and user.
Use it to review call history. Use followupboss_call_get for one call by ID.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `from_number` (`string`, optional): Return calls made from this number.
- `limit` (`integer`, optional): Maximum number of records to return, from 1 to 100. Follow Up Boss returns 10 when this is omitted.
- `offset` (`integer`, optional): Number of records to skip before returning results, used for paging (e.g. 25 to get the second page of 25). Results are newest first by default.
- `person_id` (`integer`, optional): Return only calls with this person ID.
- `phone` (`string`, optional): Return calls with this phone number, incoming or outgoing.
- `to_number` (`string`, optional): Return calls made to this number.

Example input: `{}`

### `followupboss_current_user_get`

Get Current User · Read-only

Get the Follow Up Boss user whose API key the connection uses.
Returns the user's id, name, email, role and account details.
Use it to check who the agent is acting as. Use followupboss_users_list for other users and followupboss_identity_get for account details.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs: none.

Example input: `{}`

### `followupboss_custom_field_get`

Get Custom Field · Read-only

Get one people custom field definition in Follow Up Boss by ID.
Returns the field's label, name, type, choices and display settings.
Use it when you have the field ID. Use followupboss_custom_fields_list to see all fields.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `id` (`integer`, required): Numeric ID of the custom field.

Example input: `{"id":1}`

### `followupboss_custom_fields_list`

List Custom Fields · Read-only

List the custom fields defined for people in the Follow Up Boss account.
Returns custom fields with id, label, name (the customXxx key), type and dropdown choices.
Use it to learn the keys to pass in custom_fields on followupboss_person_create and followupboss_person_update. Use followupboss_deal_custom_fields_list for deal fields.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `label` (`string`, optional): Return the custom field with this label.
- `limit` (`integer`, optional): Maximum number of records to return, from 1 to 100. Follow Up Boss returns 10 when this is omitted.
- `offset` (`integer`, optional): Number of records to skip before returning results, used for paging (e.g. 25 to get the second page of 25). Results are newest first by default.
- `sort` (`string`, optional): Field to sort by: id, name or orderWeight. Prefix with a minus sign for descending order. One of: `id`, `name`, `orderWeight`, `-id`, `-name`, `-orderWeight`.

Example input: `{}`

### `followupboss_deal_custom_field_get`

Get Deal Custom Field · Read-only

Get one deal custom field definition in Follow Up Boss by ID.
Returns the field's label, name, type, choices and settings.
Use it when you have the field ID. Use followupboss_deal_custom_fields_list to see all deal fields.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `id` (`integer`, required): Numeric ID of the deal custom field.

Example input: `{"id":1}`

### `followupboss_deal_custom_fields_list`

List Deal Custom Fields · Read-only

List the custom fields defined for deals in the Follow Up Boss account.
Returns deal custom fields with id, label, name, type and dropdown choices.
Use it to understand custom data on deals. Use followupboss_custom_fields_list for people fields.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `label` (`string`, optional): Return the deal custom field with this label.
- `limit` (`integer`, optional): Maximum number of records to return, from 1 to 100. Follow Up Boss returns 10 when this is omitted.
- `offset` (`integer`, optional): Number of records to skip before returning results, used for paging (e.g. 25 to get the second page of 25). Results are newest first by default.
- `sort` (`string`, optional): Field to sort by: id, name or orderWeight. Prefix with a minus sign for descending order. One of: `id`, `name`, `orderWeight`, `-id`, `-name`, `-orderWeight`.

Example input: `{}`

### `followupboss_deal_get`

Get Deal · Read-only

Get one deal in Follow Up Boss by ID.
Returns the deal's name, stage, pipeline, price, people, users, commissions and dates.
Use it when you have the deal ID. Use followupboss_deals_list to find deals.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `id` (`integer`, required): Numeric ID of the deal.

Example input: `{"id":1}`

### `followupboss_deals_list`

List Deals · Read-only

List deals in Follow Up Boss, filtered by pipeline, user, person or status.
Returns deals with name, stage, pipeline, price, people, users, commission and key dates.
Use it to review a pipeline or a client's deals. Use followupboss_deal_get for one deal by ID.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `include_archived` (`integer`, optional): Set to 1 to include archived deals. One of: `0`, `1`.
- `include_deleted` (`integer`, optional): Set to 1 to include deleted deals. One of: `0`, `1`.
- `limit` (`integer`, optional): Maximum number of records to return, from 1 to 100. Follow Up Boss returns 10 when this is omitted.
- `offset` (`integer`, optional): Number of records to skip before returning results, used for paging (e.g. 25 to get the second page of 25). Results are newest first by default.
- `person_id` (`integer`, optional): Return deals for this person ID.
- `pipeline_id` (`integer`, optional): Return deals in this pipeline ID. List pipelines with followupboss_pipelines_list.
- `status` (`string`, optional): Return only deals with this status. One of: `Active`, `Archived`, `Deleted`.
- `user_id` (`integer`, optional): Return deals for this user ID.

Example input: `{}`

### `followupboss_email_campaigns_list`

List Email Marketing Campaigns · Read-only

List email marketing campaigns recorded in Follow Up Boss by connected email marketing tools.
Returns campaigns with id, name, subject, origin and originId.
Use it to review campaigns. Use followupboss_email_events_list for per-person opens, clicks and bounces.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `limit` (`integer`, optional): Maximum number of records to return, from 1 to 100. Follow Up Boss returns 10 when this is omitted.
- `offset` (`integer`, optional): Number of records to skip before returning results, used for paging (e.g. 25 to get the second page of 25). Results are newest first by default.
- `origin` (`string`, optional): Return campaigns from this originating system, e.g. Mailchimp.
- `origin_id` (`string`, optional): Return the campaign with this ID in the originating system.

Example input: `{}`

### `followupboss_email_events_list`

List Email Marketing Events · Read-only

List email marketing events (deliveries, opens, clicks, bounces, unsubscribes, spam reports) recorded in Follow Up Boss.
Returns events with type, person, campaign and timestamp.
Use it to see how a contact engaged with marketing email. Use followupboss_email_campaigns_list for the campaigns themselves.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `limit` (`integer`, optional): Maximum number of records to return, from 1 to 100. Follow Up Boss returns 10 when this is omitted.
- `offset` (`integer`, optional): Number of records to skip before returning results, used for paging (e.g. 25 to get the second page of 25). Results are newest first by default.
- `person_id` (`integer`, optional): Return email marketing events for this person ID.
- `type` (`string`, optional): Event type to return. One of: `delivered`, `open`, `click`, `bounced`, `soft-bounce`, `hard-bounce`, `unsubscribe`, `spamreport`.
- `updated_after` (`string`, optional): Return events created or updated after this time (ISO 8601).

Example input: `{}`

### `followupboss_email_template_get`

Get Email Template · Read-only

Get one email template in Follow Up Boss by ID, optionally with merge fields filled in for a person.
Returns the template's name, subject and HTML body.
Use it to read or preview a template. Use followupboss_email_template_merge to merge it for several recipients.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `id` (`integer`, required): Numeric ID of the email template.
- `merge_person_id` (`integer`, optional): Person ID to fill merge fields (such as %contact_name%) with, together with the current user's details.

Example input: `{"id":1}`

### `followupboss_email_templates_list`

List Email Templates · Read-only

List email templates in Follow Up Boss.
Returns templates with id, name, subject and sharing setting.
Use it to find a template ID. Use followupboss_email_template_get for the full body, optionally merged for a person.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `limit` (`integer`, optional): Maximum number of records to return, from 1 to 100. Follow Up Boss returns 10 when this is omitted.
- `offset` (`integer`, optional): Number of records to skip before returning results, used for paging (e.g. 25 to get the second page of 25). Results are newest first by default.

Example input: `{}`

### `followupboss_event_get`

Get Event · Read-only

Get one lead event in Follow Up Boss by ID.
Returns the event's type, source, message, description, person and property details.
Use it when you have the event ID. Use followupboss_events_list to find events for a person.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `id` (`integer`, required): Numeric ID of the event.

Example input: `{"id":1}`

### `followupboss_events_list`

List Events · Read-only

List lead events (inquiries, registrations, property views and other activity) in Follow Up Boss, optionally filtered by person, event type or property.
Returns a page of events with type, source, message, person and property details, plus _metadata with total and the next cursor.
Use it to review a lead's activity history. Use followupboss_event_get for one event by ID.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `has_property` (`boolean`, optional): true returns only events linked to a property; false only those without one.
- `limit` (`integer`, optional): Maximum number of records to return, from 1 to 100. Follow Up Boss returns 10 when this is omitted.
- `next` (`string`, optional): Pagination cursor. Pass the _metadata.next value from the previous response to get the following page; this is faster than offset for deep paging.
- `offset` (`integer`, optional): Number of records to skip before returning results, used for paging (e.g. 25 to get the second page of 25). Results are newest first by default.
- `person_id` (`integer`, optional): Return only events for this person ID.
- `property_address` (`string`, optional): Partial match on the event's property address.
- `type` (`string`, optional): Comma-separated event types to include, e.g. Registration,Property Inquiry.

Example input: `{}`

### `followupboss_group_get`

Get Group · Read-only

Get one user group in Follow Up Boss by ID.
Returns the group's name, type and members.
Use it when you have the group ID. Use followupboss_groups_list to see all groups.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `id` (`integer`, required): Numeric ID of the group.

Example input: `{"id":1}`

### `followupboss_groups_list`

List Groups · Read-only

List user groups (used for lead routing) in the Follow Up Boss account.
Returns groups with id, name, type and member users.
Use it to see how users are grouped. Use followupboss_groups_round_robin_list when you also need round-robin distribution data.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `limit` (`integer`, optional): Maximum number of records to return, from 1 to 100. Follow Up Boss returns 10 when this is omitted.
- `offset` (`integer`, optional): Number of records to skip before returning results, used for paging (e.g. 25 to get the second page of 25). Results are newest first by default.
- `sort` (`string`, optional): Field to sort by: id or name. Prefix with a minus sign for descending order. One of: `id`, `name`, `-id`, `-name`.
- `type` (`string`, optional): Agent groups contain admins and agents; Lender groups contain lenders. One of: `Agent`, `Lender`.

Example input: `{}`

### `followupboss_groups_round_robin_list`

List Groups with Round Robin · Read-only

List user groups in Follow Up Boss together with their round-robin lead distribution data.
Returns groups with members and round-robin settings and state.
Use it to see who is next in a lead rotation. Use followupboss_groups_list for plain group membership.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `limit` (`integer`, optional): Maximum number of records to return, from 1 to 100. Follow Up Boss returns 10 when this is omitted.
- `offset` (`integer`, optional): Number of records to skip before returning results, used for paging (e.g. 25 to get the second page of 25). Results are newest first by default.
- `sort` (`string`, optional): Field to sort by: id or name. Prefix with a minus sign for descending order. One of: `id`, `name`, `-id`, `-name`.
- `type` (`string`, optional): Agent groups contain admins and agents; Lender groups contain lenders. One of: `Agent`, `Lender`.

Example input: `{}`

### `followupboss_identity_get`

Get Identity · Read-only

Get identity and authentication details for the connected Follow Up Boss account.
Returns the account and the authenticated user (id, name, email, role).
Use it to confirm which account the connection belongs to. Use followupboss_current_user_get for the user's full profile.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs: none.

Example input: `{}`

### `followupboss_note_get`

Get Note · Read-only

Get one note in Follow Up Boss by ID, optionally with its threaded replies and reactions.
Returns the note's subject, body, person, author and timestamps.
Use it to read a note you have the ID for. Notes are created with followupboss_note_create.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `id` (`integer`, required): Numeric ID of the note.
- `include_reactions` (`boolean`, optional): Set to true to include reactions left on the note (and on its replies, if those are included).
- `include_threaded_replies` (`boolean`, optional): Set to true to include replies posted on the note. Reply bodies may contain HTML.

Example input: `{"id":1}`

### `followupboss_people_list`

List People · Read-only

Search people (leads and contacts) in Follow Up Boss by name, email, phone, stage, source, assigned agent, tags, price, smart list or activity date; all filters combine with AND.
Returns a page of person records (id, name, stage, source, assigned agent, emails, phones, tags) plus _metadata with total and the next cursor.
Use it to browse or find people. Use followupboss_person_get when you have the ID, and followupboss_person_duplicate_check to test whether an email or phone already exists.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `assigned_lender_id` (`integer`, optional): Return people assigned to this lender user ID.
- `assigned_lender_name` (`string`, optional): Return people assigned to the lender with this full name.
- `assigned_pond_id` (`integer`, optional): Return people in this pond ID.
- `assigned_to` (`string`, optional): Return people assigned to the agent with this full name.
- `assigned_user_id` (`integer`, optional): Return people assigned to this user ID.
- `contacted` (`boolean`, optional): true returns only people who have been contacted; false only those who have not.
- `email` (`string`, optional): Exact email address to look up.
- `fields` (`string`, optional): Comma-separated fields to return instead of the default set. Use allFields for everything or allCustom for all custom fields; custom fields are prefixed with custom. The id is always returned.
- `first_name` (`string`, optional): Partial match on first name.
- `ids` (`string`, optional): Comma-separated person IDs to fetch several people at once.
- `include_trash` (`boolean`, optional): Set to true to include people in the Trash stage, which are left out by default.
- `include_unclaimed` (`boolean`, optional): Set to true to include unclaimed leads offered to the current user.
- `last_activity_after` (`string`, optional): Return people whose last activity is after this date and time (YYYY-MM-DD HH:MM:SS, UTC).
- `last_activity_before` (`string`, optional): Return people whose last activity is before this date and time (YYYY-MM-DD HH:MM:SS, UTC).
- `last_name` (`string`, optional): Partial match on last name.
- `limit` (`integer`, optional): Maximum number of records to return, from 1 to 100. Follow Up Boss returns 10 when this is omitted.
- `name` (`string`, optional): Partial match on full name (e.g. drew also matches Andrew).
- `next` (`string`, optional): Pagination cursor. Pass the _metadata.next value from the previous response to get the following page; this is faster than offset for deep paging.
- `offset` (`integer`, optional): Number of records to skip before returning results, used for paging (e.g. 25 to get the second page of 25). Results are newest first by default.
- `phone` (`string`, optional): Phone number to look up.
- `price_above` (`integer`, optional): Return people whose price is above this value.
- `price_below` (`integer`, optional): Return people whose price is below this value.
- `smart_list_id` (`integer`, optional): Return people matching this smart list ID. List smart lists with followupboss_smart_lists_list.
- `sort` (`string`, optional): Field to sort by: created, id, updated, name, firstName, lastName, price, stage, lastActivity, lastCommunication, nextTask. Prefix with a minus sign for descending order (e.g. -created). Custom field names also work. Defaults to created.
- `source` (`string`, optional): Return people from this lead source, e.g. Zillow.
- `stage` (`string`, optional): Return people in this stage, e.g. Lead or Past Client. List stage names with followupboss_stages_list.
- `tags` (`string`, optional): Comma-separated tags; people with any of them are returned (e.g. Buyer,Zillow matches either).

Example input: `{}`

### `followupboss_person_duplicate_check`

Check Duplicate Person · Read-only

Check whether a person with a given email address or phone number already exists in Follow Up Boss.
Returns the matching person's details when one exists.
Use it before creating a contact to avoid duplicates. Use followupboss_people_list for broader searches. Provide email, phone or both.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `email` (`string`, optional): Email address to check. Provide this, phone, or both.
- `phone` (`string`, optional): Phone number to check. Provide this, email, or both.

Example input: `{}`

### `followupboss_person_get`

Get Person · Read-only

Get one person (lead or contact) in Follow Up Boss by ID.
Returns the person record: name, stage, source, assigned agent and lender, emails, phones, addresses, tags, price and the fields you request.
Use it when you have the person's ID. Use followupboss_people_list to find a person by name, email or other filters.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `id` (`integer`, required): Numeric ID of the person.
- `fields` (`string`, optional): Comma-separated fields to return instead of the default set. Use allFields for everything, allCustom for all custom fields, or include relationships to embed related contacts.

Example input: `{"id":1}`

### `followupboss_person_relationship_get`

Get Person Relationship · Read-only

Get one relationship (a contact related to a person) in Follow Up Boss by ID.
Returns its name, type, emails, phones, addresses and the person it belongs to.
Use it when you have the relationship ID. Use followupboss_person_relationships_list to find them.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `id` (`integer`, required): Numeric ID of the relationship.

Example input: `{"id":1}`

### `followupboss_person_relationships_list`

List Person Relationships · Read-only

List relationships (spouses, partners, family and other related contacts) attached to people in Follow Up Boss.
Returns relationships with name, type, contact details and the person they belong to.
Use it to see who is related to a contact. Use followupboss_person_relationship_get for one relationship by ID.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `first_name` (`string`, optional): Partial match on first name.
- `last_name` (`string`, optional): Partial match on last name.
- `limit` (`integer`, optional): Maximum number of records to return, from 1 to 100. Follow Up Boss returns 10 when this is omitted.
- `name` (`string`, optional): Partial match on the relationship's full name.
- `offset` (`integer`, optional): Number of records to skip before returning results, used for paging (e.g. 25 to get the second page of 25). Results are newest first by default.
- `person_id` (`integer`, optional): Return relationships for this person ID.
- `sort` (`string`, optional): Field to sort by: id, created, updated, name, firstName, lastName, personId. Prefix with a minus sign for descending order (e.g. -id).

Example input: `{}`

### `followupboss_pipeline_get`

Get Pipeline · Read-only

Get one deal pipeline in Follow Up Boss by ID.
Returns the pipeline's name and its stages.
Use it when you have the pipeline ID. Use followupboss_pipelines_list to see all pipelines.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `id` (`integer`, required): Numeric ID of the pipeline.

Example input: `{"id":1}`

### `followupboss_pipelines_list`

List Pipelines · Read-only

List deal pipelines in Follow Up Boss, including each pipeline's stages.
Returns pipelines with id, name and their deal stages (id and name).
Use it to get a stage_id for followupboss_deal_create or a pipeline_id for followupboss_deals_list.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `limit` (`integer`, optional): Maximum number of records to return, from 1 to 100. Follow Up Boss returns 10 when this is omitted.
- `name` (`string`, optional): Return the pipeline with exactly this name.
- `offset` (`integer`, optional): Number of records to skip before returning results, used for paging (e.g. 25 to get the second page of 25). Results are newest first by default.

Example input: `{}`

### `followupboss_pond_get`

Get Pond · Read-only

Get one pond in Follow Up Boss by ID.
Returns the pond's name and members.
Use it when you have the pond ID. Use followupboss_ponds_list to see all ponds.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `id` (`integer`, required): Numeric ID of the pond.

Example input: `{"id":1}`

### `followupboss_ponds_list`

List Ponds · Read-only

List ponds (shared pools of unassigned leads) in the Follow Up Boss account.
Returns ponds with id, name and member users.
Use it to get an assigned_pond_id for people tools or the people_list filter.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `limit` (`integer`, optional): Maximum number of records to return, from 1 to 100. Follow Up Boss returns 10 when this is omitted.
- `offset` (`integer`, optional): Number of records to skip before returning results, used for paging (e.g. 25 to get the second page of 25). Results are newest first by default.

Example input: `{}`

### `followupboss_smart_list_get`

Get Smart List · Read-only

Get one smart list in Follow Up Boss by ID.
Returns the smart list's name and filter settings.
Use it to inspect a smart list. Use followupboss_people_list with smart_list_id to get its people.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `id` (`integer`, required): Numeric ID of the smart list.

Example input: `{"id":1}`

### `followupboss_smart_lists_list`

List Smart Lists · Read-only

List smart lists (saved people filters) in Follow Up Boss.
Returns smart lists with id and name.
Use it to find a smart list ID, then pass it as smart_list_id to followupboss_people_list to get the people in it.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `all` (`boolean`, optional): Set to true to return all smart lists from both the classic and current interfaces.
- `fub2` (`boolean`, optional): Set to true to return smart lists made in the current Follow Up Boss interface; by default only classic-interface lists are returned.
- `limit` (`integer`, optional): Maximum number of records to return, from 1 to 100. Follow Up Boss returns 10 when this is omitted.
- `offset` (`integer`, optional): Number of records to skip before returning results, used for paging (e.g. 25 to get the second page of 25). Results are newest first by default.

Example input: `{}`

### `followupboss_stage_get`

Get Stage · Read-only

Get one people stage in Follow Up Boss by ID.
Returns the stage's name and order.
Use it when you have the stage ID. Use followupboss_stages_list to see all stages.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `id` (`integer`, required): Numeric ID of the stage.

Example input: `{"id":1}`

### `followupboss_stages_list`

List Stages · Read-only

List the people stages (Lead, Prospect, Active Client, Past Client, Trash and any custom stages) in the Follow Up Boss account.
Returns stages with id, name and order.
Use it to get valid stage names for followupboss_person_create, followupboss_person_update and the stage filter on followupboss_people_list. Deal stages come from followupboss_pipelines_list.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `limit` (`integer`, optional): Maximum number of records to return, from 1 to 100. Follow Up Boss returns 10 when this is omitted.
- `offset` (`integer`, optional): Number of records to skip before returning results, used for paging (e.g. 25 to get the second page of 25). Results are newest first by default.
- `sort` (`string`, optional): Field to sort by: orderWeight, id, name. Prefix with a minus sign for descending order (e.g. -orderWeight). Defaults to orderWeight.

Example input: `{}`

### `followupboss_task_get`

Get Task · Read-only

Get one task in Follow Up Boss by ID.
Returns the task's name, type, due date and time, assignee, person and completion status.
Use it when you have the task ID. Use followupboss_tasks_list to find tasks.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `id` (`integer`, required): Numeric ID of the task.

Example input: `{"id":1}`

### `followupboss_tasks_list`

List Tasks · Read-only

List tasks in Follow Up Boss, filtered by person, assignee, name, type, completion or due date.
Returns a page of tasks with id, name, type, due date, assignee, person and completion status.
Use it to see what is due or overdue. Use followupboss_task_get for one task by ID.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `assigned_to` (`string`, optional): Return tasks assigned to the user with this full name.
- `assigned_user_id` (`integer`, optional): Return tasks assigned to this user ID.
- `due` (`string`, optional): Due-date bucket: today, overdue or upcoming. One of: `today`, `overdue`, `upcoming`.
- `due_end` (`string`, optional): Return tasks due at or before this date and time (ISO 8601).
- `due_start` (`string`, optional): Return tasks due at or after this date and time (ISO 8601).
- `is_completed` (`boolean`, optional): true returns completed tasks; false returns open tasks.
- `limit` (`integer`, optional): Maximum number of records to return, from 1 to 100. Follow Up Boss returns 10 when this is omitted.
- `name` (`string`, optional): Partial match on task name (e.g. world matches hello world).
- `offset` (`integer`, optional): Number of records to skip before returning results, used for paging (e.g. 25 to get the second page of 25). Results are newest first by default.
- `person_id` (`integer`, optional): Return only tasks for this person ID.
- `type` (`string`, optional): Task type, or a comma-separated list: Follow Up, Call, Email, Text, Appointment, Showing, Closing, Open House, Thank You.

Example input: `{}`

### `followupboss_team_get`

Get Team · Read-only

Get one team in Follow Up Boss by ID.
Returns the team's name, leaders and members.
Use it when you have the team ID. Use followupboss_teams_list to see all teams.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `id` (`integer`, required): Numeric ID of the team.

Example input: `{"id":1}`

### `followupboss_team_inboxes_list`

List Team Inboxes · Read-only

List the shared team inboxes in the Follow Up Boss account.
Returns team inboxes with id, name and members.
Use it to see which shared inboxes exist and who can access them.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs: none.

Example input: `{}`

### `followupboss_teams_list`

List Teams · Read-only

List teams in the Follow Up Boss account.
Returns teams with id, name and members.
Use it to see team structure. Use followupboss_team_get for one team.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `limit` (`integer`, optional): Maximum number of records to return, from 1 to 100. Follow Up Boss returns 10 when this is omitted.
- `offset` (`integer`, optional): Number of records to skip before returning results, used for paging (e.g. 25 to get the second page of 25). Results are newest first by default.

Example input: `{}`

### `followupboss_text_message_get`

Get Text Message · Read-only

Get one text message in Follow Up Boss by ID.
Returns the message body, direction, phone numbers, person and timestamps.
Use it when you have the message ID. Use followupboss_text_messages_list for a conversation.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `id` (`integer`, required): Numeric ID of the text message.

Example input: `{"id":1}`

### `followupboss_text_messages_list`

List Text Messages · Read-only

List text messages in Follow Up Boss for a person or phone number.
Returns text messages with body, direction, phone numbers, person and timestamps.
Use it to read a conversation with a contact. Use followupboss_text_message_get for one message by ID. Provide person_id or a phone number.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `from_number` (`string`, optional): Return text messages sent from this phone number.
- `limit` (`integer`, optional): Maximum number of records to return, from 1 to 100. Follow Up Boss returns 10 when this is omitted.
- `offset` (`integer`, optional): Number of records to skip before returning results, used for paging (e.g. 25 to get the second page of 25). Results are newest first by default.
- `person_id` (`integer`, optional): Return text messages for this person ID.
- `to_number` (`string`, optional): Return text messages sent to this phone number.

Example input: `{}`

### `followupboss_text_template_get`

Get Text Message Template · Read-only

Get one text message template in Follow Up Boss by ID.
Returns the template's name, message and sharing setting.
Use it when you have the template ID. Use followupboss_text_templates_list to find templates.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `id` (`integer`, required): Numeric ID of the text message template.

Example input: `{"id":1}`

### `followupboss_text_templates_list`

List Text Message Templates · Read-only

List text message templates in Follow Up Boss.
Returns templates with id, name, message and sharing setting.
Use it to find a template ID. Use followupboss_text_template_merge to fill it in for a person.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `limit` (`integer`, optional): Maximum number of records to return, from 1 to 100. Follow Up Boss returns 10 when this is omitted.
- `offset` (`integer`, optional): Number of records to skip before returning results, used for paging (e.g. 25 to get the second page of 25). Results are newest first by default.

Example input: `{}`

### `followupboss_timeframes_list`

List Timeframes · Read-only

List the buying/selling timeframes (for example 0-3 months) defined in the Follow Up Boss account.
Returns timeframes with id and name.
Use it to get a timeframe_id for followupboss_person_create or followupboss_person_update.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs: none.

Example input: `{}`

### `followupboss_unclaimed_people_list`

List Unclaimed Leads · Read-only

List unclaimed leads currently offered to the connected user (first-to-claim lead routing).
Returns the unclaimed people available to claim.
Use it to see leads waiting to be picked up. Use followupboss_person_claim to take one and followupboss_person_unclaimed_ignore to pass on it.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `limit` (`integer`, optional): Maximum number of records to return, from 1 to 100. Follow Up Boss returns 10 when this is omitted.
- `offset` (`integer`, optional): Number of records to skip before returning results, used for paging (e.g. 25 to get the second page of 25). Results are newest first by default.

Example input: `{}`

### `followupboss_user_get`

Get User · Read-only

Get one Follow Up Boss user by ID.
Returns the user's name, email, phone, role, status and team details.
Use it when you have a user ID. Use followupboss_users_list to search users.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `id` (`integer`, required): Numeric ID of the user.

Example input: `{"id":1}`

### `followupboss_users_list`

List Users · Read-only

List users (agents, brokers, lenders and admins) in the Follow Up Boss account, optionally filtered by role, name or email.
Returns users with id, name, email, role and status.
Use it to find a user ID for assigning people, tasks or deals. Use followupboss_user_get for one user and followupboss_current_user_get for yourself.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `email` (`string`, optional): Email address of the user.
- `fields` (`string`, optional): Comma-separated fields to return, or allFields for everything (calling details are only returned when named).
- `include_deleted` (`boolean`, optional): Set to true to include deleted users.
- `limit` (`integer`, optional): Maximum number of records to return, from 1 to 100. Follow Up Boss returns 10 when this is omitted.
- `name` (`string`, optional): Exact full name of the user (no partial matching).
- `offset` (`integer`, optional): Number of records to skip before returning results, used for paging (e.g. 25 to get the second page of 25). Results are newest first by default.
- `role` (`string`, optional): Return users with this role, e.g. Broker, Agent or Lender.
- `sort` (`string`, optional): Field to sort by: id, name, created. Prefix with a minus sign for descending order (e.g. -id).

Example input: `{}`

### `followupboss_action_plan_person_apply`

Apply Action Plan to Person · Write

Start an action plan for a person in Follow Up Boss.
Returns the new action-plan assignment.
Use it to enroll a contact in a follow-up sequence. Get the plan ID from followupboss_action_plans_list.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `action_plan_id` (`integer`, required): ID of the action plan to apply.
- `person_id` (`integer`, required): ID of the person to enroll.

Example input: `{"action_plan_id":1,"person_id":1}`

### `followupboss_action_plan_person_update`

Pause or Resume Action Plan · Write

Pause or resume an action plan that is applied to a person in Follow Up Boss.
Returns the updated assignment.
Use it to stop or restart a contact's sequence. Get the assignment ID from followupboss_action_plan_people_list.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `id` (`integer`, required): ID of the action-plan assignment (from followupboss_action_plan_people_list), not the action plan itself.
- `status` (`string`, required): Running to resume, Paused to pause. One of: `Running`, `Paused`.

Example input: `{"id":1,"status":"Running"}`

### `followupboss_appointment_create`

Create Appointment · Write

Create an appointment in Follow Up Boss with a title, start and end time, and optional invitees, location, type and outcome.
Returns the created appointment.
Use it to book a showing or meeting. Use followupboss_task_create for a to-do without a calendar slot.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `end` (`string`, required): End date and time (ISO 8601, UTC or with a time zone offset).
- `start` (`string`, required): Start date and time (ISO 8601, UTC or with a time zone offset).
- `title` (`string`, required): Title of the appointment.
- `all_day` (`boolean`, optional): Set to true for an all-day appointment.
- `created_by_id` (`integer`, optional): User ID to record as the creator. Only admins can set this; otherwise the current user is used.
- `description` (`string`, optional): Description or agenda for the appointment.
- `invitees` (`array`, optional): Users and people to invite. A user item has userId and name; a person item has personId, name and email. Example: [{"userId": 1, "name": "Tom Minch"}, {"personId": 123, "name": "John Q Customer", "email": "johnq@example.com"}]
- `location` (`string`, optional): Location or address of the appointment.
- `outcome_id` (`integer`, optional): Appointment outcome ID. List outcomes with followupboss_appointment_outcomes_list.
- `send_invitation` (`boolean`, optional): Set to true to email an invitation to the invitees (and an SMS reminder if appointment reminders are enabled).
- `type_id` (`integer`, optional): Appointment type ID. List types with followupboss_appointment_types_list.

Example input: `{"end":"<end>","start":"<start>","title":"<title>"}`

### `followupboss_appointment_update`

Update Appointment · Write

Update an appointment in Follow Up Boss, for example to reschedule it, change invitees or record an outcome.
Returns the updated appointment.
Use it to reschedule or close out an appointment. The vendor requires title, start and end on every update, so resend the current values for any you are not changing. Get the ID from followupboss_appointments_list.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `end` (`string`, required): End date and time (ISO 8601, UTC or with a time zone offset).
- `id` (`integer`, required): Numeric ID of the appointment.
- `start` (`string`, required): Start date and time (ISO 8601, UTC or with a time zone offset).
- `title` (`string`, required): Title of the appointment.
- `all_day` (`boolean`, optional): Set to true for an all-day appointment.
- `description` (`string`, optional): Description or agenda for the appointment.
- `invitees` (`array`, optional): Users and people to invite. A user item has userId and name; a person item has personId, name and email. Example: [{"userId": 1, "name": "Tom Minch"}, {"personId": 123, "name": "John Q Customer", "email": "johnq@example.com"}]
- `location` (`string`, optional): Location or address of the appointment.
- `outcome_id` (`integer`, optional): Appointment outcome ID. List outcomes with followupboss_appointment_outcomes_list.
- `send_invitation` (`boolean`, optional): Set to true to email an invitation to the invitees (and an SMS reminder if appointment reminders are enabled).
- `type_id` (`integer`, optional): Appointment type ID. List types with followupboss_appointment_types_list.

Example input: `{"end":"<end>","id":1,"start":"<start>","title":"<title>"}`

### `followupboss_automation_person_trigger`

Trigger Automation for Person · Write

Manually run an automation for a person in Follow Up Boss.
Returns the new automation-person pairing.
Use it to start an automation that has a manual trigger. Find one with followupboss_automations_list (manual_only true).

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `automation_id` (`integer`, required): ID of the automation to run.
- `person_id` (`integer`, required): ID of the person to run it for.

Example input: `{"automation_id":1,"person_id":1}`

### `followupboss_automation_person_update`

Pause or Resume Automation Run · Write

Pause or resume an automation that is running for a person in Follow Up Boss.
Returns the updated pairing.
Use it to stop or restart an automation for one contact. Get the pairing ID from followupboss_automation_people_list.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `id` (`integer`, required): Numeric ID of the automation-person pairing.
- `status` (`string`, required): Paused to pause, Running to resume. One of: `Running`, `Paused`.

Example input: `{"id":1,"status":"Running"}`

### `followupboss_call_create`

Log Call · Write

Log a phone call with a person in Follow Up Boss, with direction, outcome, duration and a note.
Returns the created call record.
Use it to record a call made outside Follow Up Boss. Use followupboss_note_create for a general note.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `is_incoming` (`boolean`, required): true for an incoming call, false for an outgoing call.
- `person_id` (`integer`, required): ID of the person the call was with.
- `phone` (`string`, required): Phone number the call was made to or from.
- `duration` (`integer`, optional): Length of the call in seconds.
- `from_number` (`string`, optional): Number the call was made from.
- `note` (`string`, optional): Call log note.
- `outcome` (`string`, optional): Result of the call. One of: `Interested`, `Not Interested`, `Left Message`, `No Answer`, `Busy`, `Bad Number`.
- `recording_url` (`string`, optional): URL of the call recording.
- `to_number` (`string`, optional): Number the call was made to.
- `user_id` (`integer`, optional): User who made or received the call. Only admins can set this; otherwise the current user is used.

Example input: `{"is_incoming":true,"person_id":1,"phone":"<phone>"}`

### `followupboss_call_update`

Update Call · Write

Update a logged call in Follow Up Boss, for example its note, outcome or duration; fields you leave out stay unchanged.
Returns the updated call record.
Use it to correct a call log. Get the ID from followupboss_calls_list.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `id` (`integer`, required): Numeric ID of the call.
- `duration` (`integer`, optional): Length of the call in seconds.
- `from_number` (`string`, optional): Number the call was made from.
- `is_incoming` (`boolean`, optional): true for an incoming call, false for an outgoing call.
- `note` (`string`, optional): Call log note.
- `outcome` (`string`, optional): Result of the call. One of: `Interested`, `Not Interested`, `Left Message`, `No Answer`, `Busy`, `Bad Number`.
- `person_id` (`integer`, optional): ID of the person the call was with.
- `phone` (`string`, optional): Phone number the call was made to or from.
- `recording_url` (`string`, optional): URL of the call recording.
- `to_number` (`string`, optional): Number the call was made to.
- `user_id` (`integer`, optional): User who made or received the call. Only admins can set this; otherwise the current user is used.

Example input: `{"id":1}`

### `followupboss_deal_create`

Create Deal · Write

Create a deal in a Follow Up Boss pipeline stage, with people, agents, price, commission and transaction dates.
Returns the created deal.
Use it to start tracking a transaction. Get a stage ID from followupboss_pipelines_list first.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `name` (`string`, required): Name of the deal.
- `stage_id` (`integer`, required): ID of the pipeline stage the deal is in. Get stage IDs from followupboss_pipelines_list (each pipeline lists its stages).
- `agent_commission` (`integer`, optional): Agent's share of the commission.
- `commission_value` (`integer`, optional): Total commission value for the deal.
- `description` (`string`, optional): Description of the deal.
- `due_diligence_date` (`string`, optional): Due diligence date (YYYY-MM-DD).
- `earnest_money_due_date` (`string`, optional): Earnest money due date (YYYY-MM-DD).
- `final_walk_through_date` (`string`, optional): Final walk-through date (YYYY-MM-DD).
- `mutual_acceptance_date` (`string`, optional): Mutual acceptance date (YYYY-MM-DD).
- `order_weight` (`integer`, optional): Sort weight to force the deal's position within its stage.
- `people_ids` (`array`, optional): IDs of the people (clients) on the deal. Example: [1234, 1235]
- `possession_date` (`string`, optional): Possession date (YYYY-MM-DD).
- `price` (`integer`, optional): Deal price in whole currency units.
- `projected_close_date` (`string`, optional): Projected close date (YYYY-MM-DD).
- `team_commission` (`integer`, optional): Team's share of the commission.
- `user_ids` (`array`, optional): IDs of the users (agents) on the deal. Example: [12]

Example input: `{"name":"<name>","stage_id":1}`

### `followupboss_deal_update`

Update Deal · Write

Update a deal in Follow Up Boss, for example to move it to another stage or change its price, people or dates; fields you leave out stay unchanged.
Returns the updated deal.
Use it to advance or edit a deal. Get the ID from followupboss_deals_list.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `id` (`integer`, required): Numeric ID of the deal.
- `commission_value` (`integer`, optional): Total commission value for the deal.
- `description` (`string`, optional): Description of the deal.
- `due_diligence_date` (`string`, optional): Due diligence date (YYYY-MM-DD).
- `earnest_money_due_date` (`string`, optional): Earnest money due date (YYYY-MM-DD).
- `final_walk_through_date` (`string`, optional): Final walk-through date (YYYY-MM-DD).
- `mutual_acceptance_date` (`string`, optional): Mutual acceptance date (YYYY-MM-DD).
- `name` (`string`, optional): Name of the deal.
- `people_ids` (`array`, optional): IDs of the people (clients) on the deal. Example: [1234, 1235]
- `possession_date` (`string`, optional): Possession date (YYYY-MM-DD).
- `price` (`integer`, optional): Deal price in whole currency units.
- `projected_close_date` (`string`, optional): Projected close date (YYYY-MM-DD).
- `stage_id` (`integer`, optional): ID of the pipeline stage the deal is in. Get stage IDs from followupboss_pipelines_list (each pipeline lists its stages).
- `user_ids` (`array`, optional): IDs of the users (agents) on the deal. Example: [12]

Example input: `{"id":1}`

### `followupboss_email_template_create`

Create Email Template · Write

Create an email template in Follow Up Boss.
Returns the created template.
Use it to save reusable email content. Merge fields like %contact_name% are filled in when the template is used.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `body` (`string`, required): HTML body of the email.
- `name` (`string`, required): Name of the template.
- `subject` (`string`, required): Email subject line.
- `is_shared` (`boolean`, optional): Set to true to share the template with other users in the account.

Example input: `{"body":"<body>","name":"<name>","subject":"<subject>"}`

### `followupboss_email_template_merge`

Merge Email Template · Write

Fill in an email template's merge fields for a person and a list of recipients in Follow Up Boss.
Returns the merged subject and body ready to send.
Use it to prepare personalized email content. It does not send the email.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `template_id` (`integer`, required): ID of the email template.
- `merge_person_id` (`integer`, optional): Person whose details fill merge fields like %contact_name%.
- `recipients` (`object`, optional): Recipients for the To: line, as an object with a to list of {name, email}. Example: {"to": [{"name": "Jane Doe", "email": "jane@example.com"}]}

Example input: `{"template_id":1}`

### `followupboss_email_template_update`

Update Email Template · Write

Replace an email template's name, subject and body in Follow Up Boss.
Returns the updated template.
Use it to edit a template. All three fields are required, so resend current values for any you are not changing (read them with followupboss_email_template_get).

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `body` (`string`, required): New HTML body.
- `id` (`integer`, required): Numeric ID of the email template.
- `name` (`string`, required): New name of the template.
- `subject` (`string`, required): New subject line.

Example input: `{"body":"<body>","id":1,"name":"<name>","subject":"<subject>"}`

### `followupboss_event_create`

Send In Lead or Event · Write

Send a new lead or a lead activity (inquiry, property view, registration, call and so on) into Follow Up Boss, the recommended way to add leads.
Returns the event, with the person it was matched to or created for (people are de-duplicated by email and phone). A 204 means the lead was ignored by an account rule.
Use it for inbound leads so lead routing, action plans and automations run. Use followupboss_person_create to add a contact by hand without lead-flow behavior.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `campaign` (`object`, optional): Marketing campaign attribution. source is required inside it; medium, term, content and campaign are optional. Example: {"source": "Google", "medium": "organic", "term": "austin homes"}
- `description` (`string`, optional): Any extra information about the inquiry or activity.
- `message` (`string`, optional): Message the lead wrote with the inquiry.
- `occurred_at` (`string`, optional): When the event happened (ISO 8601). Events more than a day old are treated as historical and do not trigger workflows.
- `page_duration` (`integer`, optional): For Viewed Page events: seconds the visitor spent on the page.
- `page_referrer` (`string`, optional): For Viewed Page events: the referring URL the visitor came from.
- `page_title` (`string`, optional): For Viewed Page events: title of the page viewed.
- `page_url` (`string`, optional): For Viewed Page events: URL of the page viewed.
- `person` (`object`, optional): The lead who triggered the event. Include identifying details so Follow Up Boss can match or create the person: firstName, lastName, emails and phones (lists of {value, type}), plus optional stage, source, tags, assignedUserId, price, addresses, id (to target a known person) and custom fields (keys starting with custom). Example: {"firstName": "Jane", "lastName": "Doe", "emails": [{"value": "jane@example.com"}], "phones": [{"value": "555-555-1234"}], "tags": ["Buyer"]}
- `property` (`object`, optional): The property the event is about: street, city, state, code (ZIP as a string), mlsNumber, price, forRent, url, type, and bedrooms, bathrooms, area (square feet) and lot (acres) as strings. Example: {"street": "100 Main St", "city": "Austin", "state": "TX", "code": "78701", "price": 450000, "mlsNumber": "1234567"}
- `property_search` (`object`, optional): What the lead was searching for: type, neighborhood, city, state, code (ZIP or list of ZIPs), minPrice, maxPrice, minBedrooms, maxBedrooms, minBathrooms, maxBathrooms. Example: {"city": "Austin", "state": "TX", "minPrice": 300000, "maxPrice": 500000, "minBedrooms": 3}
- `source` (`string`, optional): Name of the lead source (the brand or website the lead came from), e.g. MyWebsite.com or Zillow.
- `system` (`string`, optional): Name of the system that captured the lead, e.g. the website platform or CRM integration.
- `type` (`string`, optional): Kind of event. Use Registration for a new sign-up, an Inquiry type for questions, or Viewed/Saved Property, Visited Website, Incoming Call, Property Search and so on for activity on an existing lead. One of: `Registration`, `Inquiry`, `Seller Inquiry`, `Property Inquiry`, `General Inquiry`, `Viewed Property`, `Saved Property`, `Visited Website`, `Incoming Call`, `Unsubscribed`, `Property Search`, `Saved Property Search`, `Visited Open House`, `Viewed Page`.

Example input: `{}`

### `followupboss_note_create`

Create Note · Write

Add a note to a person's timeline in Follow Up Boss.
Returns the created note with its id, subject, body and author.
Use it to log context about a contact. Use followupboss_call_create to log a phone call instead.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `person_id` (`integer`, required): ID of the person the note is about.
- `body` (`string`, optional): Content of the note. Plain text unless is_html is true.
- `is_html` (`boolean`, optional): Set to true to render HTML tags in the body in the Follow Up Boss interface.
- `subject` (`string`, optional): Title or subject of the note.

Example input: `{"person_id":1}`

### `followupboss_note_update`

Update Note · Write

Edit an existing note in Follow Up Boss; fields you leave out stay unchanged.
Returns the updated note.
Use it to correct or extend a note. Use followupboss_note_create to add a new one.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `id` (`integer`, required): Numeric ID of the note.
- `body` (`string`, optional): New content of the note.
- `is_html` (`boolean`, optional): Set to true to render HTML tags in the body.
- `person_id` (`integer`, optional): ID of the person the note is linked to; set it to move the note to another person.
- `subject` (`string`, optional): New title or subject of the note.

Example input: `{"id":1}`

### `followupboss_person_claim`

Claim Lead · Write

Claim an unclaimed lead for the connected user in Follow Up Boss.
Returns the claim result; a 409 means the lead was already claimed.
Use it after followupboss_unclaimed_people_list to take a lead. Use followupboss_person_unclaimed_ignore to pass instead.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `person_id` (`integer`, required): ID of the unclaimed lead to claim.

Example input: `{"person_id":1}`

### `followupboss_person_create`

Create Person · Write

Manually add a person (contact) to Follow Up Boss with their name, stage, contact details, tags, assignment and custom fields.
Returns the created person record, or the existing match when deduplicate is true and one is found.
Use it to add a contact by hand. Use followupboss_event_create to send in a new lead from a lead source, which also triggers lead-routing automations.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `addresses` (`array`, optional): Mailing or contact addresses for the person (not the address of a property they want to buy or sell). Each item can have a type (home, work, mailing, investment), street, city, state (2-letter code), code (ZIP, as a string) and country. Example: [{"type": "home", "street": "100 Main St", "city": "Austin", "state": "TX", "code": "78701"}]
- `assigned_lender_id` (`integer`, optional): ID of the lender (user with the Lender role) to assign to the person.
- `assigned_lender_name` (`string`, optional): Full name of the lender to assign, as an alternative to assigned_lender_id.
- `assigned_pond_id` (`integer`, optional): ID of the pond to put the person in. List ponds with followupboss_ponds_list.
- `assigned_to` (`string`, optional): Full name of the agent to assign the person to, as an alternative to assigned_user_id.
- `assigned_user_id` (`integer`, optional): ID of the agent (user) to assign the person to. Get user IDs from followupboss_users_list. Use this or assigned_to.
- `background` (`string`, optional): Free-text background information about the person. Can span several lines.
- `collaborators` (`array`, optional): User IDs to add as collaborators on the person. Example: [12, 15]
- `contacted` (`boolean`, optional): Whether the person has been contacted. Setting this to true pauses any running action plans for the person.
- `created_at` (`string`, optional): Creation time to record, for importing historical leads (ISO 8601, UTC).
- `custom_fields` (`object`, optional): Values for the account's custom fields, as an object whose keys are the custom field names (they always start with custom, e.g. customClosingDate). Find the names with followupboss_custom_fields_list. Set a key to null to clear that field. Example: {"customClosingDate": "2025-06-30"}
- `deduplicate` (`boolean`, optional): Set to true to return an existing person with the same email or phone instead of creating a duplicate (the existing record is not changed). By default a new person is always created.
- `emails` (`array`, optional): Email addresses for the person. Each item needs a value (the address) and usually a type such as work or home; the first item becomes the primary address. Example: [{"value": "jane@example.com", "type": "home"}]
- `first_name` (`string`, optional): First (given) name of the person.
- `last_name` (`string`, optional): Last (family) name of the person.
- `phones` (`array`, optional): Phone numbers for the person. Each item needs a value and usually a type such as mobile, home, work or fax; the first item becomes the primary number. Example: [{"value": "555-555-1234", "type": "mobile"}]
- `price` (`integer`, optional): Price of the property in the person's first inquiry, or their estimated buy/sell price, in whole currency units.
- `source` (`string`, optional): Lead source to record for the person, e.g. Zillow or Open House.
- `source_url` (`string`, optional): Direct link to the person's record at the lead provider.
- `stage` (`string`, optional): Stage name such as Lead, Prospect, Active Client, Past Client or Trash. Stage names are account-specific; list them with followupboss_stages_list.
- `tags` (`array`, optional): Tags to apply to the person. A Seller tag marks the lead as a seller; otherwise the lead is treated as a buyer. Example: ["Buyer", "Zillow"]
- `timeframe_id` (`integer`, optional): ID of the buying/selling timeframe for the person. List valid IDs with followupboss_timeframes_list.

Example input: `{}`

### `followupboss_person_relationship_create`

Create Person Relationship · Write

Add a related contact (spouse, partner, family member and so on) to a person in Follow Up Boss.
Returns the created relationship.
Use it to record a co-buyer or household member. Use followupboss_person_create for an independent contact.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `person_id` (`integer`, required): ID of the person the relationship belongs to.
- `addresses` (`array`, optional): Mailing or contact addresses for the related contact (not the address of a property they want to buy or sell). Each item can have a type (home, work, mailing, investment), street, city, state (2-letter code), code (ZIP, as a string) and country. Example: [{"type": "home", "street": "100 Main St", "city": "Austin", "state": "TX", "code": "78701"}]
- `emails` (`array`, optional): Email addresses for the related contact. Each item needs a value (the address) and usually a type such as work or home; the first item becomes the primary address. Example: [{"value": "jane@example.com", "type": "home"}]
- `first_name` (`string`, optional): First name of the related contact.
- `last_name` (`string`, optional): Last name of the related contact.
- `phones` (`array`, optional): Phone numbers for the related contact. Each item needs a value and usually a type such as mobile, home, work or fax; the first item becomes the primary number. Example: [{"value": "555-555-1234", "type": "mobile"}]
- `type` (`string`, optional): How they are related to the person, e.g. Spouse, Partner or Brother.

Example input: `{"person_id":1}`

### `followupboss_person_relationship_update`

Update Person Relationship · Write

Update a related contact's name, type or contact details in Follow Up Boss; fields you leave out stay unchanged.
Returns the updated relationship.
Use it to correct a relationship. Get the ID from followupboss_person_relationships_list.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `id` (`integer`, required): Numeric ID of the relationship.
- `addresses` (`array`, optional): Mailing or contact addresses for the related contact (not the address of a property they want to buy or sell). Each item can have a type (home, work, mailing, investment), street, city, state (2-letter code), code (ZIP, as a string) and country. Example: [{"type": "home", "street": "100 Main St", "city": "Austin", "state": "TX", "code": "78701"}]
- `emails` (`array`, optional): Email addresses for the related contact. Each item needs a value (the address) and usually a type such as work or home; the first item becomes the primary address. Example: [{"value": "jane@example.com", "type": "home"}]
- `first_name` (`string`, optional): First name of the related contact.
- `last_name` (`string`, optional): Last name of the related contact.
- `phones` (`array`, optional): Phone numbers for the related contact. Each item needs a value and usually a type such as mobile, home, work or fax; the first item becomes the primary number. Example: [{"value": "555-555-1234", "type": "mobile"}]
- `type` (`string`, optional): How they are related to the person, e.g. Spouse, Partner or Brother.

Example input: `{"id":1}`

### `followupboss_person_unclaimed_ignore`

Ignore Unclaimed Lead · Write

Ignore (pass on) an unclaimed lead offered to the connected user in Follow Up Boss.
Returns no content on success.
Use it to decline a lead from followupboss_unclaimed_people_list. Use followupboss_person_claim to take it instead.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `person_id` (`integer`, required): ID of the unclaimed lead to ignore.

Example input: `{"person_id":1}`

### `followupboss_person_update`

Update Person · Write

Update fields on an existing person in Follow Up Boss; fields you leave out stay unchanged.
Returns the updated person record.
Use it to change a contact's stage, assignment, contact details, tags or custom fields. Note that emails, phones and tags replace the existing lists unless merge_tags is set for tags. Get the ID from followupboss_people_list.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `id` (`integer`, required): Numeric ID of the person.
- `addresses` (`array`, optional): Mailing or contact addresses for the person (not the address of a property they want to buy or sell). Each item can have a type (home, work, mailing, investment), street, city, state (2-letter code), code (ZIP, as a string) and country. Example: [{"type": "home", "street": "100 Main St", "city": "Austin", "state": "TX", "code": "78701"}]
- `assigned_lender_id` (`integer`, optional): ID of the lender (user with the Lender role) to assign to the person.
- `assigned_lender_name` (`string`, optional): Full name of the lender to assign, as an alternative to assigned_lender_id.
- `assigned_pond_id` (`integer`, optional): ID of the pond to put the person in. List ponds with followupboss_ponds_list.
- `assigned_to` (`string`, optional): Full name of the agent to assign the person to, as an alternative to assigned_user_id.
- `assigned_user_id` (`integer`, optional): ID of the agent (user) to assign the person to. Get user IDs from followupboss_users_list. Use this or assigned_to.
- `background` (`string`, optional): Free-text background information about the person. Can span several lines.
- `contacted` (`boolean`, optional): Whether the person has been contacted. Setting this to true pauses any running action plans for the person.
- `custom_fields` (`object`, optional): Values for the account's custom fields, as an object whose keys are the custom field names (they always start with custom, e.g. customClosingDate). Find the names with followupboss_custom_fields_list. Set a key to null to clear that field. Example: {"customClosingDate": "2025-06-30"}
- `emails` (`array`, optional): Email addresses for the person. Each item needs a value (the address) and usually a type such as work or home; the first item becomes the primary address. Sending this replaces the existing list, so include every address you want to keep. Example: [{"value": "jane@example.com", "type": "home"}]
- `first_name` (`string`, optional): First (given) name of the person.
- `last_name` (`string`, optional): Last (family) name of the person.
- `merge_tags` (`boolean`, optional): Set to true to add the tags you send to the person's existing tags instead of replacing them.
- `phones` (`array`, optional): Phone numbers for the person. Each item needs a value and usually a type such as mobile, home, work or fax; the first item becomes the primary number. Sending this replaces all existing numbers (including ones linked to relationships), so include every number you want to keep. Example: [{"value": "555-555-1234", "type": "mobile"}]
- `price` (`integer`, optional): Price of the property in the person's first inquiry, or their estimated buy/sell price, in whole currency units.
- `stage` (`string`, optional): Stage name such as Lead, Prospect, Active Client, Past Client or Trash. Stage names are account-specific; list them with followupboss_stages_list.
- `tags` (`array`, optional): Tags to apply to the person. By default this replaces all existing tags; set merge_tags to true to add to them instead. Example: ["Buyer", "Zillow"]
- `timeframe_id` (`integer`, optional): ID of the buying/selling timeframe for the person. List valid IDs with followupboss_timeframes_list.

Example input: `{"id":1}`

### `followupboss_task_create`

Create Task · Write

Create a task for a person in Follow Up Boss, assigned to an agent, with an optional type, due date and reminder.
Returns the created task.
Use it to schedule follow-up work. Use followupboss_appointment_create for a calendar appointment instead. Provide assigned_user_id or assigned_to.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `person_id` (`integer`, required): ID of the person the task is about.
- `assigned_to` (`string`, optional): Full name of the agent to assign the task to. Required if assigned_user_id is empty.
- `assigned_user_id` (`integer`, optional): ID of the user to assign the task to. Required if assigned_to is empty.
- `due_date` (`string`, optional): Due date in YYYY-MM-DD format, for tasks without a time.
- `due_date_time` (`string`, optional): Due date and time, with an optional time zone offset (ISO 8601). Needed for reminders.
- `is_completed` (`boolean`, optional): Set to true to create the task already completed.
- `name` (`string`, optional): Name of the task.
- `remind_seconds_before` (`integer`, optional): Send an email and desktop reminder this many seconds before the due time. Only works when due_date_time is set.
- `type` (`string`, optional): Task type. One of: `Follow Up`, `Call`, `Text`, `Email`, `Appointment`, `Showing`, `Closing`, `Open House`, `Thank You`.

Example input: `{"person_id":1}`

### `followupboss_task_update`

Update Task · Write

Update a task in Follow Up Boss, for example to mark it complete, rename it, change its type or reassign it; fields you leave out stay unchanged.
Returns the updated task.
Use it to complete or reassign a task. Get the ID from followupboss_tasks_list.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `id` (`integer`, required): Numeric ID of the task.
- `assigned_to` (`string`, optional): Full name of the agent to reassign the task to.
- `assigned_user_id` (`integer`, optional): ID of the user to reassign the task to.
- `is_completed` (`boolean`, optional): Set to true to mark the task complete, or false to reopen it.
- `name` (`string`, optional): New name of the task.
- `person_id` (`integer`, optional): ID of the person the task should be linked to.
- `type` (`string`, optional): New task type. One of: `Follow Up`, `Call`, `Text`, `Email`, `Appointment`, `Showing`, `Closing`, `Open House`, `Thank You`.

Example input: `{"id":1}`

### `followupboss_text_template_create`

Create Text Message Template · Write

Create a text message template in Follow Up Boss.
Returns the created template.
Use it to save reusable text content. Merge fields like %contact_name% are filled in when the template is used.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `message` (`string`, required): Body of the text message.
- `name` (`string`, required): Name of the template.
- `is_shared` (`boolean`, optional): Set to true to share the template with other users in the account.

Example input: `{"message":"<message>","name":"<name>"}`

### `followupboss_text_template_merge`

Merge Text Message Template · Write

Fill in a text message template's merge fields for a person and a list of recipients in Follow Up Boss.
Returns the merged message text.
Use it to prepare a personalized text. It does not send the message.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `template_id` (`integer`, required): ID of the text message template.
- `person_id` (`integer`, optional): Person whose details fill merge fields like %contact_name%.
- `recipients` (`object`, optional): Recipients, as an object with a to list of {name, phone}. Example: {"to": [{"name": "Jane Doe", "phone": "555-555-1234"}]}

Example input: `{"template_id":1}`

### `followupboss_text_template_update`

Update Text Message Template · Write

Replace a text message template's name and message in Follow Up Boss.
Returns the updated template.
Use it to edit a template. name and message are both required, so resend the current value for whichever you are not changing.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `id` (`integer`, required): Numeric ID of the text message template.
- `message` (`string`, required): New body of the text message.
- `name` (`string`, required): New name of the template.
- `is_shared` (`boolean`, optional): Set to true to share the template with other users.

Example input: `{"id":1,"message":"<message>","name":"<name>"}`

## Related

Other CRM & Sales connectors ([all 97](/agentkit/connectors/?category=crm-sales)):

- [Insightly](/agentkit/connectors/insightly/): Scalekit connector, API key, 108 tools
- [HubSpot](/agentkit/connectors/hubspot/): Scalekit connector, OAuth, 457 tools
- [Salesforce](/agentkit/connectors/salesforce/): Scalekit connector, OAuth, 74 tools


---

## More Scalekit documentation

| Resource | What it contains | When to use it |
|----------|-----------------|----------------|
| [/llms.txt](/llms.txt) | Structured index with routing hints per product area | Start here — find which documentation set covers your topic before loading full content |
| [/llms-full.txt](/llms-full.txt) | Complete documentation for all Scalekit products in one file | Use when you need exhaustive context across multiple products or when the topic spans several areas |
| [sitemap-0.xml](https://docs.scalekit.com/sitemap-0.xml) | Full URL list of every documentation page | Use to discover specific page URLs you can fetch for targeted, page-level answers |
