Description
n8n-nodes-posty5
N8N community nodes for Posty5 – Automate URL shortening, QR code generation, HTML hosting, and social media publishing in your N8N workflows.
π What is Posty5?
Posty5 is a comprehensive platform for digital content management and distribution:
- URL Shortening – Create branded short links with analytics
- QR Code Generation – Generate QR codes for URLs, WiFi, email, SMS, and more
- HTML Hosting – Host static HTML pages with custom domains
- Form Management – Collect and manage form submissions
- Social Media Publishing – Automate video publishing to YouTube, TikTok, Facebook, and Instagram
π¦ Installation
Via NPM
npm install n8n-nodes-posty5
Via N8N Community Nodes
1. Open N8N
2. Go to Settings β Community Nodes
3. Search for n8n-nodes-posty5
4. Click Install
π Setup
Get Your API Key
1. Visit Posty5 Studio
2. Create a new API key
3. Copy the key for use in N8N
Configure Credentials in N8N
1. Add Posty5 API credentials
2. Paste your API key
3. Click Test. It asks the API which key this is (GET /api/api-key/current):
a good key passes, a wrong or revoked one fails with “Invalid or revoked API
key”. Requests go to https://api.posty5.com; there is no base URL to set.
Every request the nodes send carries X-Posty5-Client: posty5-n8n/
(from 4.5.0), which the API uses to tell n8n traffic apart. It is not a
credential and needs no setup.
π Available Nodes
1. Posty5 Short Link
Create and manage shortened URLs. Each link counts its visits.
Operations:
| Operation | What it sends |
| — | — |
| Create | Destination URL and Template (required), plus Name, Custom Slug and Additional Fields: Tag, Reference ID, Landing Page with its Page Title and Page Description, Android URL, iOS URL. |
| Get | Retrieve link details, including its visit count and Android/iOS URLs. |
| Get Analytics | Visits, unique visitors and bot visits over a range, a series by day/week/month, and breakdowns (country, device, OS, browser, referrer, channel = click or scan, language). See Get Analytics. |
| Get Statistics | Counts over all your short links: totals, visits per day, links created per day, top 10 links by visits. See Get Statistics. |
| List | Filters: Search (name), Destination URL Contains, Tag, Reference ID, Landing Page Enabled, Created From Date / Created To Date (YYYY-MM-DD, applied only as a pair, whole UTC days). |
| Update | Reads the link, then saves it with your changes on top: anything you leave alone keeps its stored value. Template may stay empty to keep the current one. Destination URL is under Additional Fields. The Custom Slug cannot be changed. |
| Create Many | One short link per input item in batched calls (up to 100 rows per request): Destination URL, Name, Custom Slug, Template, Row Fields (Tag, Reference ID), Defaults (Template ID, Tag, Reference ID) and Options (Batch Size, Fetch Page Metadata, Fail on Any Row Error). See Create Many. |
| Delete | Remove links. |
| Set Rules | Changes only the rule sections you add: access (Active From, Expires At, Max Visits, Fallback URL, Password / Remove Password), Routing Rules, Variants, UTM, Pixels. Empty clears a section. |
| List Tags | Your links’ distinct tags (optional Starts With), one item per tag. |
| Check Health | Queues one destination check of a link (once per 10 minutes; plan-gated). |
| Create / Get / List / Update / Delete Campaign | Link campaigns (/api/link-campaign): name, description, color, UTM, archived. Delete Campaign with Detach Links detaches the campaign’s links first. |
Create and Update also take, under Additional Fields: Tags (comma-separated;
Tag is deprecated but still works), Campaign, the access fields above,
UTM, Routing Rules (JSON), Variants (JSON), Pixels with **Pixels
Consent Acknowledged (required the first time), and Health Monitor**. List
filters gain Tags and Campaign.
> Secrets: the Password field is masked in the editor, but n8n stores node
> parameters inside the workflow. Put the password in an expression that reads
> a secret (environment variable or a credential-backed node) rather than
> typing it in, and never share the workflow JSON with a literal password.
Template is a dropdown of your QR code templates and the public ones; the
Posty5 API requires one on every API-key create and update. On Update, a Tag,
Reference ID, Android URL or iOS URL you add but leave empty clears it.
Use Cases:
2. Posty5 QR Code
Generate QR codes for 14 different types.
QR Types:
Operations:
| Operation | What it sends |
| — | — |
| Create | QR Type, its content fields and Template (required), plus Name, Mode and Additional Fields: Tag, Reference ID, Landing Page with its Page Title and Page Description. |
| Get | Retrieve QR code details. |
| Get Analytics | Scans, unique visitors and bot visits over a range, a series and breakdowns, as on the Short Link node. See Get Analytics. |
| Get Statistics | Counts over all your QR codes, as on the Short Link node (top list topQRCodes). See Get Statistics. |
| List | Filters: Search (name), Tag, Reference ID, Mode, Created From Date / Created To Date (YYYY-MM-DD, applied only as a pair, whole UTC days). |
| Update | Reads the QR code, then saves the content you enter with everything else kept. Template may stay empty to keep the current one; Mode defaults to Keep Current. |
| Create Many | One QR code per input item in batched calls (up to 100 rows per request): QR Type and its fields, Name, Mode, Template, Row Fields (Tag, Reference ID), Defaults and Options (Batch Size, Fail on Any Row Error). See Create Many. |
| Delete | Remove QR codes. |
| Render | Downloads a QR code as a file in a binary field (default data) for the next node to email, upload or post. Format PNG / SVG / PDF; Print Preset (loaded from the design catalogue: Sticker 3cm, Business Card, Flyer 5cm, Table Tent 8cm, Poster 15cm, Custom 20β500 mm) with DPI 150 / 300 / 600 for PNG; with no preset, Size (Px) for PNG and SVG. The json carries qrCodeId, format, presetId, fileName, mimeType, fileSize. |
| Check Scannability | A report on whether a saved QR code (as rendered) or a template will scan: verdict (good / warning / poor), checks (contrast, inverted colours, logo coverage, quiet zone, module size, dot scale) and symbol. A Print Preset adds the module size in mm. It only warns. |
| List Templates | { _id, name } rows of My Templates or Public Templates, filtered by Search, up to Limit: the IDs the Template field takes. |
The design comes from the template, and Posty5 builds the encoded text from the
content fields: the node sends the content as qrCodeTarget and nothing else.
Mode. Static (the default) encodes the content in the image. Dynamic: the
image points to a Posty5 link, so you can change where it goes later without
reprinting. Mode is hidden for WiFi, which cannot be dynamic (the API answers
400). Create sends mode only for Dynamic, so saved workflows keep producing
static codes; Update sends it only when you pick one. Outputs carry mode and
dynamicSince (null for a static code).
Scan Rules (dynamic codes, Starter plan and above): Active From, Expires At,
Max Scans and Fallback URL (where gated scans go). Shown on Create for Dynamic
and on Update. On Update, leave it empty to keep the current rules; any rule set
replaces all of them, and Clear Scan Rules removes them. Outputs carry access.
Dynamic-only types. App Store Links and File have no static form: Mode is
hidden and the node always sends mode: dynamic (Scan Rules are shown on
Create). A Social Profile code with 2 or more profiles is sent as dynamic too.
File QR codes. Set Binary Property (default data) to the input binary
holding the file, e.g. from an HTTP Request or Read Binary File node. The node
checks the type and size, asks Posty5 for a signed upload URL
(POST /api/qr-code/file/upload-url), uploads the bytes there (no API key is
sent to the storage URL), then creates the code with the returned
bucketFilePath. File Name overrides the binary’s name. On Update, leave
Binary Property empty to keep the stored file. Create Many does not offer File:
the bulk route cannot upload.
Render and plans. Plain PNG up to 2048 px works on every plan. SVG, PDF, a
print preset, a DPI or a PNG over 2048 px need Starter or higher; otherwise the
node fails with the API’s message (*This feature is not available on your
current plan.), or outputs it as error with Continue On Fail*. Rendering
costs no credits. PDF with no preset prints at Flyer 5cm. The file is named by
the API (
Create Many (Short Link and QR Code)
Create Many turns every input item into one row and sends them to
POST /api/short-link/bulk / POST /api/qr-code/bulk in chunks of
Batch Size (default and maximum 100): 250 items are 3 requests. Each chunk
carries Idempotency-Key: n8n-, so retrying the
same execution is not charged twice; a new run creates new records.
statuscreated / failed), id, shortUrl or qrCodeDownloadURL, errors.
status: "failed". Turn onerror on every item of that chunk.
Get Analytics (Short Link and QR Code)
GET /api/short-link/:id/analytics or GET /api/qr-code/:id/analytics, the
same numbers the dashboard’s Analytics tab and the Posty5 SDKs read. Reading
analytics costs no credits.
| Parameter | What it sends |
| — | — |
| Short Link ID / QR Code ID | The record to read. |
| Range | Last 7 / 30 / 90 Days (today included, “today” counted in the Time Zone option, else the workflow’s time zone) or Custom with From and To dates (both days included). Sent as from / to, YYYY-MM-DD. Default: last 30 days. |
| Interval | day (default), week (points start on Monday) or month (points start on the 1st). |
| All Breakdowns My Plan Allows | On (default): breakdown=all. Breakdowns your plan does not include are listed in meta.locked with the plan that adds them, instead of failing. |
| Breakdowns | Off the toggle: the ones you pick, comma-joined. None picked: breakdown is left out and the API returns every breakdown your plan allows. |
| Output | Full Response (one item, the API answer unchanged) or Series as Items (one item per series point, each with meta, handy for Google Sheets). |
| Options β Breakdown Rows | Rows per breakdown, 1β50 (API default 10); the rest is summed into an other row. |
| Options β Time Zone | IANA name, e.g. Africa/Cairo. Empty: the workflow’s time zone (Workflow Settings β Timezone, default the instance’s GENERIC_TIMEZONE). Always sent as tz, so the API counts days in the same zone the presets use. |
The answer is { totals: { visits, uniqueVisitors, botVisits }, series: [{ date,
visits, uniqueVisitors }], breakdowns: { . Bots and link-preview fetchers count only in botVisits;
uniqueVisitors over several days is the sum of each day’s unique visitors.
Naming a breakdown your plan does not include, or a range further back than it
allows, fails with the API’s own plan message (HTTP 403). An unknown ID fails
with the API’s 400 “The Short Link Is Not Found” / “The QR Code Is Not Found”.
Get Statistics (Short Link and QR Code)
GET /api/short-link/statistics or GET /api/qr-code/statistics: counts over
all your links (or QR codes), with no ID. Period is Today, Last 7 Days,
Last 30 Days (default), This Month or Custom with From / To
(YYYY-MM-DD); sent as the API’s period (today, 7d, 30d, month,
custom). Days are UTC days. The answer is one item, unchanged: { range: {
from, to, period }, data: { totals, daily: [{ _id, createdCount, visitorsSum }],
topLinks | topQRCodes } }. totals holds the lifetime totalVisitors counter
(it includes visits from before visit analytics launched) and the in-range
visitsInRange, uniqueVisitorsInRange and botVisitsInRange; visitorsSum
is visits by people that day. Reading statistics costs no credits.
3. Posty5 HTML Hosting
Host static HTML pages with CDN delivery.
Operations:
YYYY-MM-DD, applied only as a pair, whole UTC days).)Use Cases:
4. Posty5 HTML Variables
Manage dynamic variables for HTML pages.
Operations:
Variable Keys: Must start with pst5_
5. Posty5 Form Submission
Collect and manage form submissions from HTML pages.
Operations:
Filters:
6. Posty5 Social Publisher Workspace
Manage social media workspaces/organizations.
Operations:
7. Posty5 Social Publisher Post
Publish creator-owned videos to connected social media platforms. TikTok publishing requires the Posty5 creator-controlled review and confirmation flow.
Supported Platforms:
Operations:
YYYY-MM-DD, applied only as a pair, whole UTC days).)Long video (up to 60 minutes):
Long video is charged by duration β 50 credits for every started 5 minutes, so a 12-minute video costs 150. The duration is measured server-side from the file; there is no duration field to send.
Use Quote Long Video first to branch a workflow on cost before committing:
HTTP Request (fetch video) -> Quote Long Video -> IF credits < 500 -> Publish Long Video -> Get Post Status
Platform limits differ, and are checked when the post is created rather than
mid-upload:
| Platform | Longest accepted video |
| — | — |
| YouTube | 12 hours |
| Facebook | 4 hours |
| Instagram | 15 minutes (Reels) |
| TikTok | Per-creator, read from the connected account |
A workspace publish goes out to the targets that accept the video and reports
the rest in refusedTargets on the item, so a later node can branch on a
partial publish. An account publish is refused outright instead, and nothing is
charged.
Requires the socialMediaPublisher.longVideoPost plan feature.
Uploads resume. Binary video is sent to the API’s resumable endpoint in
8MiB chunks, so a dropped connection costs one chunk rather than the whole
transfer. The node falls back to a single signed PUT when the server does not
offer the resumable service.
> Note on memory. n8n’s binary helper hands a node the whole file as a
> Buffer, so a 60-minute video is in memory before the upload starts. Chunking
> bounds what a dropped connection costs, not what the workflow allocates β
> prefer the URL source for very large videos.
Video Sources:
Uploaded images: Publish Image with the Uploaded Bucket File source
takes a file you already uploaded through generate-upload-urls, so the node
cannot reserve a post ID for it. Also pass the postId from that response as
Upload Post ID. Posty5 deletes an uploaded file only from the folder of the
post that owns it, so without the ID the image stays in storage after the post
is published or deleted.
TikTok Direct Post is not exposed as a public repost workflow in these n8n nodes. Do not use TikTok publishing to copy arbitrary third-party videos from TikTok, YouTube, Facebook, Instagram, or any other platform.
Platform-Specific Settings:
Post-publish comments:
Up to five comments per post, through the Comments collection. Each one
carries its own text, its own delay (0-1440 minutes after the post goes live),
its own optional image and its own per-platform switches.
at no enabled platform is dropped before it is charged.
endpoint, so a comment aimed at it reports notSupported rather than failing.
text-only, so an image bound for either is dropped with a reason rather than
failing the comment.
The older single Comment collection still works and is marked deprecated. It
is mapped into the first entry of Comments when that is empty, and the two
are never sent together β the API refuses a request carrying both.
8. Posty5 Trigger
Starts a workflow when a short link is visited, a QR code is scanned or a
visit/scan milestone is reached. Activating the workflow registers a Posty5
webhook endpoint for the node’s URL; deactivating it removes the endpoint.
| Setting | Meaning |
| — | — |
| Events | Short Link Visited, QR Code Scanned, Short Link Visit Milestone, QR Code Scan Milestone |
| Links | All my links and QR codes, or specific short link / QR code IDs (comma-separated) |
| Options | Include Bot Visits (off), Milestones (100,1000, up to 10), Delivery (each event, or batched every 1 min / 5 min / 1 h), Split Batches Into Items (on) |
WEBHOOK_URL set to a public HTTPS address (or a tunnel). Posty5 refuses
private or plain-HTTP URLs.
window) before the workflow runs; a forged one gets 401.
itself. A scan of a short link’s QR image arrives as Short Link Visited with
channel: "qr"; dynamic QR codes send QR Code Scanned.
id, type, createdAt, data) plus webhookId for de-duplication.
by deactivating and re-activating the workflow. An endpoint Posty5 disabled
after repeated failures is recreated on the next activation.
π‘ Workflow Examples
Example 1: URL Shortener β QR Code
Create a short link and generate a QR code for it:
HTTP Request (Get URL)
β
Posty5 Short Link (Create)
β
Posty5 QR Code (Create URL type)
β
Posty5 QR Code (Render, Format PDF, Print Preset Flyer 5cm; QR Code ID = {{ $json._id }})
β
Send Email (Attachments: data)
Example 2: Form Submission β Email Notification
Monitor form submissions and send notifications:
Schedule Trigger (every 5 minutes)
β
Posty5 Form Submission (List - filter by status: new)
β
IF (has new submissions)
β
Send Email
β
Posty5 Form Submission (Update status to read)
Example 3: Social Media Publishing
Publish a video to multiple platforms:
Trigger (Manual/Webhook)
β
Read Binary File (video.mp4)
β
Posty5 Social Publisher Post (Publish)
- Platforms: YouTube, TikTok, Instagram
- Video: Binary data
- Scheduled: Now
β
Posty5 Social Publisher Post (Get Post Status)
β
Send Notification
Example 4: Landing Page Deployment
Deploy HTML page from GitHub and create short link:
GitHub Trigger (on push)
β
Posty5 HTML Hosting (Create from GitHub)
β
Posty5 Short Link (Create)
β
Slack Notification (with short URL)
Example 5: Weekly Top Countries to Slack
Schedule Trigger (every Monday)
β
Posty5 Short Link (Get Analytics: Last 7 Days, Breakdowns = Country, Breakdown Rows = 5)
β
Slack (post totals.visits and breakdowns.country)
Example 6: Slack Message on Click
Posty5 Trigger (Short Link Visited, specific short link)
β
Slack β Send Message ("{{$json.data.target.name}} opened from {{$json.data.visit.country}}")
Example 7: Sheet Rows β Short Links (Create Many)
Google Sheets β Get Rows (800 rows)
β
Posty5 Short Link β Create Many (Destination URL = {{$json.url}}, Defaults β Template ID)
β 8 API calls, one output item per row
Google Sheets β Update Row (shortUrl, status)
π§ Advanced Features
Pagination
All list operations support pagination:
// Return all results (automatic pagination)
returnAll: true;// Or limit results
returnAll: false;
limit: 50;
Filtering
Most list operations support filters:
{
tag: "marketing",
refId: "campaign-2024",
search: "keyword"
}
Binary Data Handling
Nodes support binary data for:
Use N8N’s binary data system:
// From HTTP Request node
binaryPropertyName: 'data';// From Read Binary File node
binaryPropertyName: 'data';
Scheduling
Social Publisher Post supports scheduling:
scheduledPublishTime: 'now';
// or
scheduledPublishTime: new Date('2024-12-31T10:00:00Z');
π Versioned writes (5.0.0)
Version 2 of the Short Link, QR Code, HTML Hosting, Form Submission and Social
Publisher Post nodes protects updates and deletes from overwriting someone
else’s change:
Short Link’s Set Rules, Update Campaign and Delete Campaign): the
v of the item as you read it. It defaults to {{ $json.v }}, so a
Get β Update chain works as is. It is sent as If-Match.
409 conflict: *”The item changed since it was read (current version N). Get it again, then
update.”*
Fail (default) or Use Latest (Overwrite), which reads the item and uses its current version
(last write wins, your explicit choice).
write operations: they read the item first and overwrite it, exactly as
before.
X-Posty5-Client: posty5-n8n/.π Error Handling
All nodes support N8N’s “Continue on Fail” option:
{
json: {
error: 'Error message here';
}
}
Common errors:
π Resources
π€ Support
π License
MIT License – see LICENSE file for details
π Credits
Built with β€οΈ by the Posty5 team
Powered by:


