Description
n8n-nodes-perspective
n8n community node for Perspective.co β Funnels, CRM, metrics, and webhooks




—
Perspective is a mobile-first, no-code funnel builder for lead generation and sales. This package brings the full Perspective External API (CRM, metrics, workspaces) and the outgoing webhooks (new lead, funnel completed) directly into your n8n workflows.
β¨ Features
- π― Action node β paginated CRM, metrics & workspaces via the official REST API
- β‘ Webhook Trigger β receive new leads and funnel completions in real time, no API key required
- π Polling Trigger β schedule-based fetch of new contacts, fully automatic per-funnel selection
- π Funnel resource locator β searchable dropdown of all your funnels, auto-loaded from
/v1/workspaces - π€ AI-tool ready β the action node is
usableAsTool: true, so AI agents can call Perspective directly - π‘οΈ API-key auth β
x-perspective-api-keyheader, validated against/v1/workspaceson save - π¦ Zero runtime dependencies β no npm bloat in your n8n install
- Installation
- Operations
- Webhook Trigger
- Polling Trigger
- Credentials
- Compatibility
- Resources
- Version history
Table of contents
Installation
In n8n, go to Settings β Community Nodes β Install and enter:
n8n-nodes-perspective
Or follow the community node installation guide for self-hosted installs:
npm install n8n-nodes-perspective
Operations
The Perspective action node supports three resources.
π₯ Contact (CRM)
| Operation | Endpoint | Notes |
|—|—|—|
| Get Many | GET /v1/funnels/{funnelId}/contacts | Paginated (1β100 per page, 0-based), sortable by psconvertedat, email, firstName, lastName |
| Get | GET /v1/funnels/{funnelId}/contacts/{contactId} | Single contact lookup |
| Create | POST /v1/funnels/{funnelId}/contacts | At least email or phone required. Optional: firstName, lastName, website, birthday, address, skipAutomationTrigger |
| Update Field | PUT /v1/funnels/{funnelId}/contacts/{contactId}/values | Set a single field by name (standard, address subfield, or any custom property) |
π Metric
| Operation | Endpoint | Notes |
|—|—|—|
| Get KPI | GET /v1/funnels/{funnelId}/metrics/kpis/{subtype} | 9 KPIs: conversion rate, completion rate, new contacts, total sessions, time on page, time to completion, message stats |
| Get Chart | GET /v1/funnels/{funnelId}/metrics/charts/{subtype} | 7 charts: contacts over time, page-to-page conversion, activity by daytime, devices, top UTM sources, time on page, button clicks. A/B test filter for page-to-page conversion |
| Get Insight | GET /v1/funnels/{funnelId}/metrics/insights/{insightId} | Survey responses & feedback per insight block (e.g. question_1234) |
All metric operations take a from / to ISO 8601 date range and an optional timezone offset (minutes).
π’ Workspace
| Operation | Endpoint |
|—|—|
| Get Many | GET /v1/workspaces β list all workspaces and their funnels |
Webhook Trigger
The Perspective Trigger node receives outgoing webhooks from Perspective. Two events fire:
email or phone fieldSetup
1. Add a Perspective Trigger node to your workflow and activate the workflow.
2. Copy the production webhook URL from the trigger node.
3. In Perspective, open the funnel β Settings β Webhooks and add the URL for the desired event (New Lead and/or Funnel Completed). You can configure up to 3 webhooks per event.
4. Submit a test lead in Perspective β the workflow fires with the lead payload.
Payload shape
{
"id": "contact-id",
"funnelName": "My Lead Magnet",
"meta": {
"createdAt": "2026-05-07T14:32:11.000Z",
"lastSeenAt": "2026-05-07T14:35:42.000Z",
"completedAt": "2026-05-07T14:35:42.000Z",
"convertedAt": "2026-05-07T14:34:08.000Z",
"globalId": "global-contact-id"
},
"profile": {
"email": { "value": "ada@example.com", "title": "Email" },
"firstName": { "value": "Ada", "title": "First Name" },
"phone": { "value": "+49 β¦", "title": "Phone" },
"quiz_q1": { "value": "Option 2", "title": "How did you hear about us?" }
}
}
> The trigger does not require an API key β webhook URLs are the secret. Keep your workflow URL private.
Polling Trigger
The Perspective Polling Trigger node fetches new contacts on a schedule β no manual webhook setup in Perspective required. Just pick a funnel, set the polling interval, and the node emits new items each tick.
Setup
1. Add a Perspective Polling Trigger to your workflow.
2. Pick the funnel from the searchable dropdown (loaded via /v1/workspaces).
3. Choose the event:
– New Converted Lead (default) β watermark on meta.psconvertedat. Fires only when contacts submit email/phone.
– New Contact β watermark on meta.psfirstseen_at. Fires for any visitor that lands and gets tracked.
4. Set the polling schedule (every minute, hour, custom cron).
5. Activate the workflow.
How it works
GET /v1/funnels/{funnelId}/contacts?sortField=psconvertedat&sortOrder=-1&limit=100.staticData and survives restarts.When to use which trigger
| Scenario | Recommended trigger |
|—|—|
| You’re on the Free / Starter plan (no API key) | Webhook Trigger |
| You want true real-time delivery | Webhook Trigger |
| You want fully automatic setup, no Perspective dashboard touching | Polling Trigger |
| You need historical contacts on workflow activation | Use Action node with a Schedule trigger |
> The Polling Trigger requires an API key (Scale Plan / legacy Volume Plan). Each poll counts against your API quota.
Credentials
The action node requires a Perspective API credential.
1. In Perspective, go to Account Settings β API (app.perspective.co/en/settings). Only admins can create keys.
2. Create an API key (it is shown only once β save it immediately).
3. In n8n, create a new Perspective API credential and paste the key. n8n verifies it by calling GET /v1/workspaces.
The API is available from the Scale Plan (or legacy Volume Plan) onwards. The trigger node works on all plans.
Compatibility
2.xResources
Version history
0.1.0
License
MIT Β© Tim QuerengΓ€sser