← Back to Module Development
JSON Reference
Complete glossary of properties for the Module Definition JSON object.
Root Object
The root of your module file must contain these keys.
| Property | Type | Description |
|---|---|---|
| slug | string | Required. A unique identifier for your module. Must be URL-safe (a-z, 0-9, hyphens). Example: "my-banner-v1" |
| type | "action" | "integration" | Required. Determines where the module is used. See Concepts. |
| name | string | Human-readable display name. |
| description | string | Short summary shown in the catalog. |
| version | string | Semantic version string (e.g. "1.0.0"). |
| author | string | Name of the creator or organization. |
| template | string (HTML) | Required. The Handlebars template string rendered when the module is active. |
| action_key | string | Required for Action modules only. Internal ID used by the rule engine. |
| preview_enabled | boolean | If true, shows a live preview pane in the Wrangle Builder when configuring this action. |
| settings_schema | object (JSON Schema) | Configuration schema for Integrations. |
| action_schema | object (JSON Schema) | Configuration schema for Actions. |
Module Templates
Minimal Action Module
Use this template for modules that appear in the Wrangle Builder (e.g. Banners, Redirects).
json
{
"slug": "minimal-demo-action",
"type": "action",
"name": "My Action",
"version": "1.0.0",
"author": "Me",
"template": "<h1>Hello {{name}}</h1>",
"action_key": "demo_action",
"action_schema": {
"type": "object",
"properties": {
"name": { "type": "string", "title": "Who to greet?" }
}
}
}Minimal Integration Module
Use this template for account-wide tools (e.g. Analytics Pixels, Chat Widgets).
json
{
"slug": "minimal-pixel-integration",
"type": "integration",
"name": "My Analytics Pixel",
"version": "1.0.0",
"author": "Me",
"template": "<script>console.log('Pixel ID: {{pixel_id}}');</script>",
"settings_schema": {
"type": "object",
"required": ["pixel_id"],
"properties": {
"pixel_id": {
"type": "string",
"title": "Pixel ID",
"description": "Found in your analytics dashboard"
}
}
}
}