bluesales

n8n community node for BlueSales — build and run AI voice calling agents (Blues), manage brains, leads, phone numbers, calls and calendars.

Package Information

Released: 1 mo ago
Downloads: 0 weekly / 0 monthly
Latest Version: 0.1.0
Author: BlueSales

Documentation

n8n-nodes-bluesales

An n8n community node for BlueSales — AI voice calling agents ("Blues") that answer your phone, qualify leads, and book appointments.

This package ships two nodes:

Node Type What it does
BlueSales Action Full CRUD over every BlueSales API resource, plus initiating live calls
BlueSales Trigger Polling trigger Starts a workflow when a call completes, a lead is added, or a Blue is created

Installation · Credentials · Operations · Example workflows · Publishing


Installation

From the n8n UI (self-hosted)

  1. Go to Settings → Community Nodes → Install.
  2. Enter n8n-nodes-bluesales.
  3. Agree to the risks prompt and select Install.

Manually (self-hosted)

cd ~/.n8n
npm install n8n-nodes-bluesales
# restart n8n

Local development

git clone https://github.com/bluesales-ai/n8n-nodes-bluesales.git
cd n8n-nodes-bluesales
npm install
npm run build
npm link

# in your n8n custom-extensions folder
mkdir -p ~/.n8n/custom && cd ~/.n8n/custom
npm init -y            # only the first time
npm link n8n-nodes-bluesales

# then start n8n
n8n start

npm run dev recompiles on change; restart n8n to pick up new builds.


Credentials

Create an API key in the BlueSales dashboard under Dashboard → API → Create API Key. Keys start with bsk_.

In n8n, add a BlueSales API credential:

Field Value
API Key your bsk_… key
Base URL https://api-v2.bluesales.ai/functions/v1 (only change for a self-hosted backend)

The key is sent as an X-API-Key header on every request.

Permissions

BlueSales API keys are scoped. A key needs the matching permission for each operation, or the API answers 403 Missing permission: …:

Resource Permissions
Blue blues:read, blues:write, blues:delete
Business Profile business_profiles:read, business_profiles:write, business_profiles:delete
Brain brains:read, brains:write, brains:delete
Product/Service products_services:read, products_services:write, products_services:delete
Lead List lead_lists:read, lead_lists:write, lead_lists:delete
Lead leads:read, leads:write, leads:delete
Phone Number phone_numbers:read, phone_numbers:write
Call calls:read, calls:write
Calendar calendar:read, calendar:write
Compliance compliance:read, compliance:write
Voice (none — shared catalogue)

The credential's Test button calls GET /api/voices, which has no permission gate, so the test passes for any valid key regardless of how narrowly it is scoped.


Operations

Blue

A Blue is an AI voice agent. Every Blue needs a business profile; outbound Blues additionally use a product/service and a lead list.

Operation API call
Create POST /api/blues
Get GET /api/blues/{id}
Get Many GET /api/blues — filter by type (inbound/outbound) and role
Update PATCH /api/blues/{id}
Delete DELETE /api/blues/{id}

Create exposes the full agent configuration: voice type and voice ID, opening line, who speaks first, background sound, keypad access, voicemail, persona (Blue Identity), purpose, call transfer (always/smart + destination number), email notifications, and the outbound calling window (days, timezone, start/end time).

Business Profile can be Use Existing (pick from a dropdown) or Create Inline — the latter creates the profile in the same request and needs business_profiles:write.

Roles depend on type:

  • Inbound — receptionist, front_desk, hotline, concierge, custom_agent
  • Outbound — appointment_booking, sales, custom_campaign

Brain

A brain is the knowledge base a Blue answers from.

Operation API call
Create POST /api/brains
Get GET /api/brains/{id} — includes the status field
Get Many GET /api/brains
Update PATCH /api/brains/{id}
Delete DELETE /api/brains/{id}
Upload File POST /api/brains/{id}/upload
Train POST /api/brains/{id}/ingest

Upload File takes a binary field from the incoming item (default data) — PDF, TXT or CSV — base64-encodes it and starts ingestion.

Ingestion is asynchronous. After Create (with text or a website), Upload File, or Train, poll Get until status is active:

BlueSales (Brain → Upload File)
  → Wait (30s)
  → BlueSales (Brain → Get)
  → If  {{ $json.status === 'active' }}  → done
                                         → loop back to Wait

Business Profile / Product-Service / Lead List / Lead

Standard Create · Get · Get Many · Update · Delete against /api/business-profiles, /api/products-services, /api/lead-lists and /api/leads.

Product/Service Create requires product_name, description, type (product/service), genre (b2b/b2c), price and category. Optional fields cover min/max price and whether the Blue may negotiate.

Lead Create requires a lead list and a phone number in E.164 format; everything else (name, company, job title, email, address, timezone, LinkedIn…) is optional.

Phone Number

Operation API call
Get / Get Many GET /api/phone-numbers[/{id}]
Import POST /api/phone-numbers

Import brings a number you already own in Twilio into BlueSales. It verifies the number against your Twilio account and registers it with the voice provider. Buying new numbers is dashboard-only.

Call

Operation API call
Initiate POST /api/calls
Get GET /api/calls/{id} — transcript, summary, duration, outcome
Get Many GET /api/calls — filter by Blue, period, success, and free-text search
Get Recording GET /api/calls/{id}/recording — returns a presigned URL and its expiry

Initiate places a call immediately. Beyond the required name and number, Additional Customer Fields become variables the Blue can use in the conversation.

Get Recording returns a short-lived URL. Fetch it in the same run (e.g. with an HTTP Request node) rather than storing it.

Calendar

Operation Endpoint
Get Available Slots GET /api-get-calendar-slots — output is one item per free slot
Create Event POST /api-create-calendar-event
Register Connection POST /api-register-calendar-connection

API access must be enabled on the calendar connection in the BlueSales dashboard.

Register Connection with provider webhook is the bring-your-own-calendar path: BlueSales POSTs {action: "create_event", calendar_id, title, start_time, end_time, …} to your URL whenever a Blue books. Point it at an n8n Webhook node to run your own booking logic.

Compliance

Get and Update the account-level GDPR / HIPAA / CPRA settings at /api/compliance.

Voice

Operation API call
Get GET /api/voices/{id}
Get Many GET /api/voices — filter by type, gender, accent, and a name search

Voices are a shared, read-only catalogue, so there is no create, update or delete, and no
permission is needed on the API key. The Voice field on the Blue resource is a dropdown
fed by this endpoint; use the voice id as voice_id when creating or updating a Blue.


Trigger node

BlueSales Trigger polls on the schedule you set on the node.

Event Watches
Call Completed New rows in the call log — optionally filtered by Blue and by success
Lead Created New leads — optionally filtered by lead list
Blue Created Newly created Blues

The first poll only records a watermark, so activating a workflow never replays history. Each later poll emits records newer than the previous poll, oldest first. A manual execution returns the single newest record so you can map fields.

The trigger inspects the 100 newest records per poll. If you expect more than that between polls, poll more often.


Example workflows

examples/ contains importable workflow JSON:

  • call-completed-to-slack.json — Call Completed trigger → filter unsuccessful calls → format the summary.
  • csv-to-lead-list-and-call.json — create a lead list, import leads from incoming items, then have a Blue call each one.
  • provision-inbound-blue.json — business profile → brain (with text) → wait for training → create an inbound receptionist Blue on a phone number.

Import with Workflows → Import from File, then select your BlueSales credential on each node.


Compatibility

Tested against n8n 1.82+ and the BlueSales API v2. Requires Node.js 20.15 or newer.

Resources

License

MIT

Discussion