Skip to main content

How workflows connect to Propeller

A workflow is a small automation that does a job for you, like flagging quotes that are about to expire or drafting a follow-up. The examples in this library are built in a tool called n8n, but the idea works the same in any similar tool. This page explains how a workflow connects to Propeller and where its results show up, in plain terms first and technical detail after.

In plain terms

Think of a workflow as an assistant that works with your Propeller data. Two things are worth knowing about any workflow in this library.

How it starts. Some workflows wait inside Propeller until someone starts them, for example by clicking a button or chatting with an agent on a page. Others run on their own on a schedule, for example every morning. Nobody clicks anything.

Where its results land. A workflow that someone started answers on the spot, in the panel on the page, like a chat reply. A workflow that runs on its own drops its results into Propeller for you to pick up later, usually as tickets in the Action Hub.

Each entry in the library shows which kind it is at the top, so you know what to expect before you install it. The rest of this page is detail you only need when you build or connect a workflow yourself.

Two ways a workflow runs

Embedded in Propeller. The workflow waits behind a webhook and Propeller calls it when someone uses it. This is how chat and button agents work: a user clicks the Workflows button on a page such as the quote editor, interacts with the agent and Propeller sends the request to the workflow. The workflow answers and the response appears in the panel.

Workflows panel with AI agents

Outside Propeller. The workflow runs on its own, for example on a schedule. It calls the Propeller API to read or change data and pushes its results into Propeller, for example as tickets in the Action Hub. Nobody has to click anything.

Action Hub with tickets

The building blocks

BlockWhat it doesWhere
API keyLets your workflow read and change Propeller dataAdmin > API Key Management, see API Keys
AgentConnects an embedded workflow to a page in Propeller through its webhook URLAdmin > Agents, see AI Agents
Action HubShows tickets that workflows and agents create, so sales reps can act on themSales > Action Hub, see Action Hub

Every workflow needs an API key. The other two each matter for one of the two kinds: an agent for a workflow embedded in Propeller, the Action Hub for a workflow that runs on its own and leaves tickets behind.

For whoever builds the workflow

The rest of this page is technical. If you are choosing or requesting a workflow rather than building one, you can stop here.

Connecting an embedded agent

For an embedded agent, you paste your workflow's webhook URL into the agent configuration. The configuration also supports basic authentication and a signature salt to secure the connection.

Webhook and security configuration of an agent

The request and the response

When a user interacts with an agent, Propeller sends a request to your webhook. The body contains the user's message as requestMessage and the context of the page as requestMetadata.payload, for example the quote the user is looking at.

Your workflow answers with a JSON response with three fields:

FieldWhat it is
conversationIdThe id that ties the messages of one conversation together. See below
responseMessageThe text shown to the user in the agent panel
responseMetadataOptional extra data, for example a processed flag and a timestamp

Your workflow creates the conversation id

This is the part that surprises most builders. The first request of a conversation contains no conversation id, because the conversation does not exist yet. Propeller does not generate one for you. Your workflow generates it and returns it as conversationId in the response. Any unique string works. The library examples use a timestamp or the n8n execution id.

From then on, Propeller sends that id back as conversationId in the body of every follow-up request in the same conversation. Return the same id again so the conversation stays together.

So the rule is: reuse the conversation id from the request when there is one, generate one when there is not. In code that looks like this:

const conversationId = body.conversationId
|| body.requestMetadata?.conversationId
|| String(Date.now());

Every example in the library follows this pattern, so you can copy it from any entry.

What this means for the library

Every entry in the workflow library is labeled with where it runs:

  • Embedded in Propeller entries need an agent configured in Admin > Agents pointing at your workflow.
  • Outside Propeller entries need an API key and, when they create tickets, the Action Hub.

The install guide of each entry walks through the exact steps.