Package Information
Released: 2 mo ago
Downloads: 246 weekly / 938 monthly
Latest Version: 0.1.7
Documentation
@clipform/n8n-nodes-clipform
An n8n community node for Clipform - trigger a workflow whenever a form is completed. Works on n8n Cloud and self-hosted.
Installation
In n8n: Settings → Community nodes → Install, then enter @clipform/n8n-nodes-clipform.
Setup
- Create a Clipform API credential with an API key from your Clipform dashboard (Developer → API keys).
- Add the Clipform Trigger node and activate your workflow.
Output
The trigger fires once per completed form submission, for every form in the workspace - use data.form_id / data.form_name / data.form_tags to filter to a specific form downstream.
| Field | Type | Description |
|---|---|---|
type |
string | Always form.completed. |
version |
string | Payload version (currently 1). |
timestamp |
string (ISO 8601) | When the event was emitted. |
data.form_id |
string (uuid) | The form's id. |
data.form_name |
string | The form's name. |
data.share_id |
string | The form's public share id. |
data.form_tags |
string[] | Tags assigned to the form. |
data.response_id |
string (uuid) | Id of this response set. |
data.submitted_at |
string (ISO 8601) | When the respondent submitted. |
data.session.device |
string | Respondent's device, e.g. desktop. |
data.session.browser |
string | Respondent's browser. |
data.session.country |
string | Respondent's country. |
data.session.city |
string | Respondent's city. |
data.session.time_spent_seconds |
number | Time spent completing the form. |
data.responses[] |
array | One entry per answered node - see below. |
Every data.responses[] item has node_id, prompt, and node_type, plus value fields that depend on node_type:
choice/button-label,option_idopen-text, plusmediaandtranscriptionfor audio/video answersdetails-fields(array of{ type, value }contact fields)draw-media(the drawing, exported as a PNG)file_upload/file_download-files(array of file metadata with signed URLs)
Unknown or future node types still include node_id, prompt, and node_type, so they can be handled generically.
Example payload
{
"type": "form.completed",
"version": "1",
"timestamp": "2024-01-15T10:30:00Z",
"data": {
"form_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"form_name": "Customer Feedback",
"share_id": "abc12345",
"form_tags": ["sales", "vip"],
"response_id": "550e8400-e29b-41d4-a716-446655440000",
"submitted_at": "2024-01-15T10:30:00Z",
"session": {
"device": "desktop",
"browser": "Chrome",
"country": "United States",
"city": "San Francisco",
"time_spent_seconds": 45
},
"responses": [
{
"node_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"node_type": "choice",
"prompt": "How did you hear about us?",
"label": "Option A",
"option_id": "opt-789"
},
{
"node_id": "6f4b2c1e-0d3a-4a2b-9c8d-1e2f3a4b5c6d",
"node_type": "open",
"prompt": "Anything else you'd like to share?",
"text": "I loved it"
}
]
}
}
More detail (media/transcription fields, full field reference): clipform.io/docs/guides/integrations/n8n.
License
MIT