Before you start
Three things from MsgVibe
API key
Create one under Dashboard → API keys. It starts with mvk_live_ and is shown once.
Design ID
Open a design in the template gallery. Its ID is the last part of the studio address.
Brand kit ID
Save your logo and colours once on the Brand kits page and copy the kit's ID.
Workflow 1
Create a video
Any trigger node, then HTTP Request.
- 1Start a workflow with your trigger, for example Shopify Trigger (order paid), Google Sheets Trigger (row added) or a Webhook from your own app.
- 2Add an HTTP Request node:
Method
POST
URL
https://api.msgvibe.com/v1/videosAuthentication
Generic Credential Type → Header Auth. Name
Authorization, valueBearer mvk_live_…Send Body
On, Body Content Type JSON, Specify Body: Using JSON
- 3Paste this JSON, replace the two IDs, and swap the sample words for expressions from your trigger.JSON body with n8n expressions
{ "templateUniqueId": "YOUR_DESIGN_ID", "brandKitId": "YOUR_BRAND_KIT_ID", "aspectRatio": "9:16", "currency": "USD", "promotion": { "title": "Thank you, {{ $json.customer.first_name }}!", "subtitle": "Order {{ $json.order_number }} is on its way", "offerText": "Use THANKS10 for 10% off your next order", "cta": "Shop again" }, "sharePage": { "headline": "{{ $json.customer.first_name }}, thank you for your order", "button": { "kind": "link", "label": "Shop again", "url": "https://yourstore.com" }, "recipient": { "name": "{{ $json.customer.first_name }} {{ $json.customer.last_name }}", "email": "{{ $json.customer.email }}" } }, "externalId": "order-{{ $json.order_number }}" } - 4Click Execute step. The output has
video.idandstatus: queued, and 1 credit is used. Activate the workflow.
Workflow 2
Get the finished video, views and clicks
- 1Create a second workflow that starts with a Webhook node. Set HTTP Method to POST and copy the Production URL.
- 2Activate the workflow. The production address only answers while the workflow is active.
- 3In MsgVibe, open Automations → Connected hooks. Choose Video ready, paste the address and click Add hook.
- 4Make one video with workflow 1. The event arrives under
body:What MsgVibe sends{ "event": "video.completed", "data": { "id": "vid_1791306844787a1b2c3d4_0", "status": "done", "outputUrl": "https://www.msgvibe.com/v/0118el0bon/thank-you-sarah.mp4", "shareUrl": "https://www.msgvibe.com/w/aB3dE5fG7h1", "externalId": "order-1042", "metadata": { "name": "Sarah Lee", "email": "sarah@example.com" } } }Use
{{ $json.body.data.shareUrl }}for the page link and{{ $json.body.data.metadata.email }}for the person's email. - 5Add the next nodes, for example Gmail or Send Email with the page link, or Slack to tell your team. Add more hooks for Video viewed and Button clicked to react when a lead watches.
Other ways to connect: Zapier app · Make · Shopify thank-you video · API reference
FAQ
Questions
Is there a MsgVibe node for n8n?
Not yet. The HTTP Request and Webhook nodes that ship with n8n cover everything, on n8n Cloud and self-hosted.
Where do I keep the API key?
In an n8n credential of the type Header Auth, with the name Authorization and the value Bearer followed by your key. The key is then stored encrypted and never appears in the workflow.
My self-hosted n8n is not reachable from the internet. Can it still receive events?
MsgVibe can only call public https addresses. Use n8n’s tunnel or a reverse proxy for the webhook, or poll GET /v1/videos/{id} every 15 seconds with a Wait node until the status is done.
How do I check that an event really came from MsgVibe?
Each event has an X-MsgVibe-Signature header, an HMAC-SHA256 of the body with your signing secret. The developer docs show the check in JavaScript, which you can paste into a Code node.
What does it cost?
MsgVibe uses 1 credit per video; a failed video is refunded. n8n counts workflow executions on your n8n plan, or nothing when self-hosted.
