Example: n8n workflow

This example shows two n8n workflows: a simple digital product sale with Slack notifications, and a physical product workflow with address collection and shipping updates.


Workflow 1: Digital product with notifications

Workflow overview

NodeTypePurpose
Manual triggerManual TriggerStart the workflow to create a listing
Create listingHTTP RequestPOST /v1/listings
Order webhookWebhookReceive order.paid events from ListBee
Send Slack notificationSlackPost to #sales when an order is paid

Node 1: Create listing

Use an HTTP Request node to call POST /v1/listings.

Configuration:

FieldValue
MethodPOST
URLhttps://api.listbee.so/v1/listings
AuthenticationHeader Auth
Header nameAuthorization
Header valueBearer lb_...
Body typeJSON

Body:

1{
2 "name": "Python Async Patterns",
3 "price": 1900,
4 "deliverable": "https://my-bucket.s3.amazonaws.com/python-async.pdf"
5}

Response fields used downstream:

  • {{ $json.url }} — product page URL
  • {{ $json.slug }} — listing slug
  • {{ $json.fulfillment }}"managed" or "external"
  • {{ $json.readiness.sellable }} — whether buyers can purchase

Node 2: Order webhook

Add a Webhook node to receive order events from ListBee.

Configuration:

FieldValue
HTTP methodPOST
Path/listbee-orders (your choice)
Response modeImmediately

Copy the webhook URL from n8n (e.g. https://your-n8n.example.com/webhook/listbee-orders) and register it in ListBee:

1POST https://api.listbee.so/v1/webhooks
2Authorization: Bearer lb_...
3Content-Type: application/json
4
5{
6 "url": "https://your-n8n.example.com/webhook/listbee-orders",
7 "events": ["order.paid", "order.fulfilled"]
8}

Incoming order.paid payload:

1{
2 "object": "event",
3 "id": "evt_...",
4 "type": "order.paid",
5 "data": {
6 "object": {
7 "object": "order",
8 "id": "ord_...",
9 "status": "paid",
10 "listing_id": "lst_...",
11 "amount": 1900,
12 "currency": "usd",
13 "buyer_email": "buyer@example.com",
14 "checkout_data": null,
15 "shipping_address": null,
16 "fulfillment_status": "pending",
17 "paid_at": "2026-04-02T10:00:00Z",
18 "created_at": "2026-04-02T09:59:00Z"
19 }
20 }
21}

Node 3: Slack notification

Add a Slack node after the webhook node.

Configuration:

FieldValue
ResourceMessage
OperationPost
Channel#sales
TextNew order: {{ $json.data.object.buyer_email }} paid ${{ ($json.data.object.amount / 100).toFixed(2) }} for listing {{ $json.data.object.listing_id }}

Workflow 2: Physical product with shipping

This workflow handles physical products — collecting a shipping address, processing the order, and updating shipping status.

Workflow overview

NodeTypePurpose
Create physical listingHTTP RequestPOST /v1/listings with external fulfillment + address
Order webhookWebhookReceive order.paid events
Process orderCodeExtract shipping address and order details
Ship orderHTTP RequestPOST /v1/orders/{id}/ship with tracking info
Fulfill orderHTTP RequestPOST /v1/orders/{id}/fulfill when delivered

Create the listing

1{
2 "name": "Handmade Leather Boots",
3 "price": 18900,
4 "fulfillment": "external",
5 "checkout_schema": [
6 {
7 "key": "size",
8 "type": "select",
9 "label": "Shoe size",
10 "required": true,
11 "options": ["EU 38", "EU 39", "EU 40", "EU 41", "EU 42", "EU 43", "EU 44"]
12 },
13 {
14 "key": "shipping_address",
15 "type": "address",
16 "label": "Shipping address",
17 "required": true
18 }
19 ]
20}

Process the order.paid webhook

The order.paid event includes checkout_data and shipping_address:

1{
2 "type": "order.paid",
3 "data": {
4 "object": {
5 "id": "ord_abc123",
6 "status": "paid",
7 "buyer_email": "buyer@example.com",
8 "checkout_data": {
9 "size": "EU 42"
10 },
11 "shipping_address": {
12 "line1": "123 Main St",
13 "line2": "Apt 4B",
14 "city": "Portland",
15 "state": "OR",
16 "postal_code": "97201",
17 "country": "US"
18 },
19 "fulfillment_status": "pending"
20 }
21 }
22}

Use a Code node to extract the shipping details:

1const order = $json.data.object;
2const address = order.shipping_address;
3
4return [{
5 json: {
6 order_id: order.id,
7 buyer_email: order.buyer_email,
8 size: order.checkout_data.size,
9 ship_to: `${address.line1}, ${address.city}, ${address.state} ${address.postal_code}, ${address.country}`,
10 }
11}];

Ship the order

After you ship the product, use an HTTP Request node:

FieldValue
MethodPOST
URLhttps://api.listbee.so/v1/orders/{{ $json.order_id }}/ship
HeaderAuthorization: Bearer lb_...

Body:

1{
2 "carrier": "USPS",
3 "tracking_code": "9400111899223456789012",
4 "seller_note": "Ships from Portland. Estimated 3-5 days."
5}

Mark as fulfilled

When delivered, use another HTTP Request node:

FieldValue
MethodPOST
URLhttps://api.listbee.so/v1/orders/{{ $json.order_id }}/fulfill
HeaderAuthorization: Bearer lb_...

Body: {}


Using the ListBee n8n community node

If you prefer a purpose-built node over HTTP Request, install the ListBee community node:

$# In your n8n instance settings → Community nodes → Install
$n8n-nodes-listbee

The community node provides credential management, typed fields, and auto-completion for all ListBee endpoints. See the n8n node docs for setup instructions.


Next steps


Copy for AI assistants

Cursor / Claude Code
1# ListBee — n8n integration
2#
3# Option A: HTTP Request node (no extra install)
4# Method: POST
5# URL: https://api.listbee.so/v1/listings
6# Header: Authorization: Bearer lb_...
7# Body: { name, price (cents), deliverable } ← managed fulfillment
8# Body: { name, price, fulfillment: "external", checkout_schema: [...] } ← external
9#
10# Option B: Community node (recommended)
11# Install: n8n-nodes-listbee
12# Handles auth, typed fields, all endpoints
13#
14# Receiving orders in n8n:
15# 1. Add Webhook node → copy URL
16# 2. Register: POST /v1/webhooks { url, events: ["order.paid", "order.fulfilled"] }
17# 3. Payload: { object: "event", type: "order.paid", data: { object: { order } } }
18#
19# Order fields: id (ord_...), status, listing_id, amount, currency,
20# buyer_email, checkout_data, shipping_address, fulfillment_status, paid_at
21#
22# Ship: POST /v1/orders/{id}/ship { carrier, tracking_code, seller_note? }
23# Fulfill: POST /v1/orders/{id}/fulfill {}
24#
25# Auth: Authorization: Bearer lb_...
26# Docs: https://docs.listbee.so/n8n