Documentation
← 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.

PropertyTypeDescription
slugstringRequired. 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.
namestringHuman-readable display name.
descriptionstringShort summary shown in the catalog.
versionstringSemantic version string (e.g. "1.0.0").
authorstringName of the creator or organization.
templatestring (HTML)Required. The Handlebars template string rendered when the module is active.
action_keystringRequired for Action modules only. Internal ID used by the rule engine.
preview_enabledbooleanIf true, shows a live preview pane in the Wrangle Builder when configuring this action.
settings_schemaobject (JSON Schema)Configuration schema for Integrations.
action_schemaobject (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" 
      }
    }
  }
}