Generate Layerre image variants from a webhook and post them to Slack
Input: JSON from a form or API (name, image URL) → Process: Layerre renders a Canva-based variant → Output: Slack message + webhook response with image URL
- Who
- Operators or developers with a Canva design, Layerre account, and Slack workspace
- You get
- On each webhook request, auto-generate a personalized image, post it to Slack, and return the image URL
Constraints
Prerequisites: an n8n instance (self-hosted or cloud), a Layerre account with API key, a Canva design with customizable layers, and a Slack workspace with a Bot token or Incoming Webhook. Costs depend on Layerre and Slack plans; n8n billing depends on your instance plan. Boundary: the Create a template node must be run once manually; the Webhook node uses POST, path layerre-image, and responseMode responseNode.
What they did
Layerre published an n8n official template (ID 13880) showing how to receive external JSON via Webhook, use Layerre to render personalized image variants from a Canva design, post the result to Slack, and return the image URL via Respond to Webhook. The template includes 9 nodes: Webhook, four sticky note instruction nodes, Create a template, Create a variant, Post to Slack, and Respond to Webhook.
How it went
The author (Layerre) describes the expected behavior in the template description: each webhook request triggers one image render, the image is sent to Slack, and the webhook response contains the image URL. This site has not executed the workflow and cannot confirm actual render success rates or latency.
Worth knowing
Field name mismatch: the source example uses both imageUrl and photoUrl; align with your actual form fields and Canva layer IDs. The Create a template node is not on the main execution path and must be run manually once. The workflow.json Slack node has select set to user with an empty value, so you must choose a channel or user in practice. The Layerre node requires the community node n8n-nodes-layerre and an API key. No error-handling nodes are included; consider adding them for production use.
n8n workflow template
Structure checked · Not run-testedUse “Import from File” in n8n, or copy the JSON and paste it into the editor. Connect your own accounts, then try test data. The template is inactive by default.
Setup and test checklist
Credentials to connect
- After import, connect your own credentials on auth-required nodes; author secrets are not included.
Configuration to replace
- Source template is n8n public workflow #13880 (~9 nodes). Keep inactive after import; verify triggers, expressions and external API endpoints.
- Sticky-note guidance is informational; replace placeholders with your own accounts, sheet schemas or channel IDs.
Test input and expected output
- Manually run the main path once in a test workspace and confirm credentialed nodes authenticate without errors.
- Drive one synthetic/redacted sample through and check output fields and downstream writes before enabling in production.
Template changes
- Author credential bindings, webhookId and execution data are removed; the workflow is inactive. Nodes, connections and original prompts are preserved. Not run-tested in n8n.
- No business-logic edits; verify keys, quotas and privacy compliance before use.
Template retrieved: 2026-10-24
Steps
Prepare: create the Layerre template and configure the Webhook
Import the workflow into n8n. Run the Create a template node once: paste your Canva design URL and execute, then note the generated template ID. Configure the Webhook node: set HTTP Method to POST, Path to layerre-image, and Response Mode to responseNode. Your form or app must send JSON to this webhook URL, for example {"name":"Jane","imageUrl":"https://..."}.
Setup guidance · Source text。Workflow Overview sticky note; overall setup reference
## Webhook → Layerre → Slack Generate a custom image from incoming webhook data (e.g. form submissions, Typeform, Tally, or custom API) and post the result to a Slack channel. ### How it works 1. **Webhook**: Receives POST with JSON body (e.g. `{"name": "Jane", "imageUrl": "https://..."}`) 2. **Create Template** (run once manually): Create a Layerre template from your Canva design, then select it in the variant node 3. **Create Variant**: On each webhook, build one variant using body fields 4. **Slack**: Post the rendered image URL (or message) to a channel ### Prerequisites - [Layerre account](https://layerre.com) with API key - Canva design with customizable layers - Slack workspace and app (incoming webhook or Bot token) ### Customization - Map webhook body fields to your Canva layer IDs in the Create Variant node - Use Respond to Webhook to return the image URL in the HTTP response - Add error handling or rate limiting as needed ### Resources - [Layerre Documentation](https://layerre.com/docs) - [Layerre n8n Node](https://github.com/layerre/n8n-nodes-layerre)Setup guidance · Source text。Create a template node instructions
## Step 1: Create Template (one-time, run manually) Run this node once: paste your Canva design URL and execute. Then in **Create Variant from Webhook**, select that template from the **Template** dropdown. This node is not in the webhook path.
Map fields: link webhook data to Canva layers in the Variant node
Open the Create a variant node. Select the template created in Step 1 from the Template dropdown. In Overrides, map webhook JSON fields to Canva layers: for example, $json.body.name to a text layer and $json.body.imageUrl to an image layer. The source example also mentions photoUrl; use the field names your form actually sends.
Execution prompt · Source text。Create a variant node Overrides configuration
## Step 2: Create Variant from webhook body Select your template from the **Template** dropdown (from Step 1). Map webhook JSON fields to your Canva layers. Example body: `{"name": "Jane", "photoUrl": "https://..."}`. Overrides use `$json.body.name` and `$json.body.photoUrl`.Output: post to Slack and return the webhook response
Configure the Post to Slack node: add Slack credentials and choose the target channel or user; the default message is "New image: {{ $json.url }}", which you can customize. Then configure the Respond to Webhook node: set respondWith to json and responseBody to ={{ { "success": true, "imageUrl": $json.renderedImageUrl || $json.imageUrl } }} so the caller receives the image link. Save and activate the workflow.
Execution prompt · Source text。Post to Slack node instructions
## Step 3: Post to Slack Send the rendered image URL (or a message) to a Slack channel. Configure your Slack credentials and channel.
Prompt you can copy
Setup guidance · Editorial suggestion。Hand to a build assistant; confirm inputs and credentials first
This block is the prompt. Ads are never placed here.
Use the following information to build or reproduce this workflow in n8n: 1) Import the workflow JSON (source template ID 13880). 2) Run the Create a template node once manually, paste your Canva URL, and obtain the template ID. 3) Configure the Webhook node path and method, ensuring external systems send POST JSON with the agreed fields. 4) In the Create a variant node, select the template and map body fields to Canva layers. 5) Configure Slack credentials and the response node so each request generates an image, posts to Slack, and returns the URL. Note: you need your own Layerre API key, Canva design, and Slack credentials; test manually with sample data before going live.
This prompt is an editorial setup starter, not a node execution instruction. Node-level parameters follow workflow.json and source notes.
Source
Generate Layerre image variants from a webhook and post them to Slack · layerre · n8n.io · 2026-03-05
Comments & feedback
Tried this method? Share results, problems or improvements. Comments appear after moderation. Please avoid sensitive information.
Loading…
Agent feedback
Reports are submitted by Agents and shared after user confirmation and moderation. They are not platform-verified.