n8n-nodes-velocms
VeloCMS community node for n8n. Trigger workflows on blog events (post published, member subscribed, order paid) and automate content management — all without writing code.
Installation
In your n8n instance, go to Settings → Community Nodes and install:
n8n-nodes-velocms
Or via CLI:
npm install n8n-nodes-velocms
Credentials setup
In your VeloCMS admin panel, go to Settings → API Keys.
Create a new API key with the scopes you need:
posts:read,posts:write— Post resourcemedia:read,media:write— Media resourcecomments:read,comments:write,comments:moderate— Comment resourcemembers:read,members:write— Member resourcewebhooks:read,webhooks:write— Webhook resource + the Trigger node (required)
API access requires a Pro or higher VeloCMS plan, and webhook subscriptions require Pro or higher as well.
Copy the generated key (shown once, starts with
velo_...).In n8n, add a new VeloCMS API credential:
- API Key: paste your
velo_...key - Base URL: your blog URL (e.g.
https://myblog.velocms.org)
- API Key: paste your
VeloCMS Trigger node
Starts your workflow when VeloCMS events occur.
Supported events
| Event | Fires when |
|---|---|
post.created |
A new post is created |
post.updated |
A post is edited |
post.published |
A post is published or scheduled |
post.unpublished |
A published post is reverted to draft |
post.deleted |
A post is permanently deleted |
page.published |
A page builder page is published |
member.subscribed |
A reader subscribes (free or paid) |
member.unsubscribed |
A member cancels |
member.tier_changed |
A member upgrades or downgrades |
comment.posted |
A new comment is submitted |
comment.approved |
A comment is approved by the admin |
comment.deleted |
A comment is deleted |
order.paid |
A product order is paid |
order.refunded |
An order is refunded |
order.shipped |
An order is marked as shipped |
product.created |
A new product is created |
product.updated |
A product is updated |
cart.abandoned |
Included for forward-compatibility — not yet dispatched by VeloCMS |
gift_card.issued |
A gift card is purchased or admin-issued |
media.uploaded |
A file is uploaded to the media library |
HMAC signature verification
Every VeloCMS webhook delivery is signed with HMAC-SHA256. The trigger node automatically:
- Reads
X-VeloCMS-Signature: v1={hex}andX-VeloCMS-Timestampheaders. - Rejects deliveries where
|now - timestamp| > 300 seconds(replay protection). - Computes the expected HMAC of
v1:{timestamp}:{raw_body}with your subscription secret. - Returns HTTP 401 and stops workflow execution if the signature does not match.
The subscription secret is generated by VeloCMS when you activate the workflow and is stored securely in n8n's workflow static data. It is never exposed in logs or workflow output.
Delivery envelope
Every workflow item is the event's data payload — for a post.* event, that looks like:
{
"post_id": "abc123",
"title": "My Post Title",
"slug": "my-post-title",
"status": "published",
"published_at": "2026-06-14T10:00:00Z",
"excerpt": "A short summary...",
"tags": ["intro", "welcome"],
"author_name": "Jane Doe",
"tenant_id": "tenant-uuid"
}
The full delivery envelope (with id, event, version, created, tenant) is visible in the raw webhook headers/body if you need it for deduplication.
VeloCMS Action node
Interacts with the VeloCMS REST API v1. The resource/operation set below reflects the endpoints VeloCMS's route handlers actually implement — a couple of endpoints some third-party docs describe (e.g. POST /members, GET /comments/{id}) don't exist on the real API, so those operations were never exposed here.
Resources and operations
| Resource | Operations |
|---|---|
| Post | Create, Update, Get, Get All, Publish, Delete |
| Member | Get All, Delete (members are created via the reader-facing subscribe flow, not the admin API) |
| Media | Get, Get All, Upload from URL, Delete |
| Comment | Get All, Create, Moderate (sets status to Approved / Pending / Spam) |
| Webhook | Create, Get All, Get, Delete, Test, Rotate Secret |
Upload from URL downloads the file from the URL you provide and re-uploads it to VeloCMS as a real multipart/form-data request (VeloCMS's media endpoint requires an actual file part, not a JSON URL reference). Files over 25 MB are rejected.
Pagination
Post / Member / Media / Comment "Get All" operations support:
- Return All: fetches every page automatically (up to 100 items/page).
- Limit + Page: fetches one specific page.
Webhook "Get All" is the one exception: GET /api/v1/webhooks always returns the tenant's complete subscription list in one response (it's not a server-paginated endpoint — subscription counts are small). The node still honors Return All / Limit + Page, but applies them client-side over that full list.
Rate limiting
If VeloCMS rate-limits your request (HTTP 429), the node throws a NodeOperationError with the Retry-After seconds in the message so you can handle it in your workflow's error path.
Example workflows
Post published → send Slack notification
- Add VeloCMS Trigger → select event
post.published. - Add Slack node → send message:
New post: {{$json.title}} — https://myblog.velocms.org/blog/{{$json.slug}}.
New member → add to Mailchimp audience
- VeloCMS Trigger → event
member.subscribed. - Mailchimp node → add/update subscriber with
{{$json.email}}.
Order paid → create invoice in QuickBooks
- VeloCMS Trigger → event
order.paid. - QuickBooks node → create invoice with order data from
{{$json}}.
Weekly post report → email digest
- Schedule Trigger → every Monday 09:00.
- VeloCMS (Action) → Post → Get All → filter by
status=published. - Gmail → send digest to editorial team.
New comment → moderate automatically
- VeloCMS Trigger → event
comment.posted. - A filter/rule node checks the comment body for spam signals.
- VeloCMS (Action) → Comment → Moderate → set Status to
spamorapproved.
Webhook subscription lifecycle
When you activate a workflow with the VeloCMS Trigger:
- n8n calls the
createlifecycle method. - The node registers a webhook subscription in VeloCMS (
POST /api/v1/webhooks). - VeloCMS returns a subscription ID and signing secret, both stored in the workflow's static data.
When you deactivate the workflow:
- n8n calls the
deletelifecycle method. - The subscription is removed from VeloCMS (
DELETE /api/v1/webhooks/{id}).
When n8n restarts with an active workflow:
- n8n calls
checkExists(GET /api/v1/webhooks/{id}). - If the subscription still exists → continue using it.
- If not → create a new one automatically.
Secret rotation
If you need to rotate your webhook's signing secret, use the Action node's Webhook → Rotate Secret operation (POST /api/v1/webhooks/{id}/rotate-secret) — it returns the new secret once, immediately invalidating the old one. n8n's Trigger node won't automatically pick up a secret rotated this way, though, so:
- Deactivate the workflow using the VeloCMS Trigger.
- Reactivate it — a fresh subscription with a new secret is created automatically.
If you rotate your VeloCMS API key instead, just update the VeloCMS API credential with the new key — no workflow reactivation needed.
Troubleshooting
"No webhook secret stored" — The workflow was activated without going through the VeloCMS create lifecycle. Deactivate and reactivate the workflow.
"Invalid signature" — The delivery was rejected because the HMAC didn't match. Common causes:
- The webhook secret was rotated (see Secret rotation above).
- The raw body was modified in transit (rare).
- Clock skew between VeloCMS and your n8n instance is > 5 minutes.
"VeloCMS rate limit reached" — Your API key has exceeded its hourly quota. The error message includes the Retry-After seconds.
"401 Invalid API key" — Check that the API key starts with velo_ and has not been revoked. In VeloCMS admin: Settings → API Keys.
"Invalid or unknown fields in request body" (Post Create/Update) — VeloCMS's API rejects unrecognized JSON keys rather than silently dropping them. If you're building a custom expression for the post body, use content_html (not content/body) and featured_image_url (not featured_image).
Support
- Documentation: velocms.org/help/how-do-i-connect-zapier-or-n8n-to-velocms
- Issues: github.com/VeloCMS/n8n-nodes-velocms/issues
- VeloCMS: velocms.org
License
MIT — see LICENSE.