ConnectWyze

Workflows

A workflow connects a data source to one or more templates, maps data source fields to template variables, and runs the render — producing a generated image for every active data source item.


What it is

A workflow is the execution layer of Creative Automation. It defines:

  • Which data source supplies the item data.
  • Which template(s) define the visual design.
  • How fields map — which data source column drives which template layer variable.
  • When to run — manually, on a schedule, or automatically when the data source updates.
  • What to output — image format, quality, file naming, and artboard selection.

When you run a workflow, ConnectWyze creates a Generation Run. The run iterates over every active data source item, renders the template for each one, and stores the image in your workspace storage. Items whose data has not changed since the last run are skipped automatically — so re-runs are fast and cost-free for unchanged items.


When you'd use it

  • You have a data source of 2 000 products and a branded template; you want one export-ready image per product.
  • Your data source refreshes nightly and you want new or updated products re-rendered automatically.
  • You manage multiple markets and want a different template per language, selected automatically based on a language field in the data source.
  • You need the same image in Square, Story, and Banner formats — configured once on the template, rendered in a single run.
  • You want to receive a webhook call when a run finishes so you can push image URLs to an external system.

Quick start (user)

Create a workflow

  1. Go to /dashboard/creative/workflows and click New Workflow.
  2. Enter a name.
  3. Select the Data Source that will supply the data.
  4. Select one or more Templates. For multi-template mode, each template gets its own row.
  5. For each template, open Field Mapping and map each template layer variable to the matching data source field (e.g. template variable headline → field product_name).
  6. Set Trigger:
    • On Data Source Update — run automatically whenever the data source finishes a sync (default).
    • Scheduled — enter a cron expression and timezone.
    • Manual — run only when you click Run.
  7. Configure Output: format (JPG is recommended for speed), quality, and file naming pattern.
  8. Click Save.

Run a workflow

Click Run on the workflow card or detail page. A Generation Run is created and queued. Progress appears in /dashboard/creative/runs.

When the run completes, the generated images are available in /dashboard/creative/creatives.


Settings reference

Workflow settings

Field Type Default Description
Name string Display name.
Description string Optional notes.
Data Source data source ID The data source for this workflow.
Trigger ON_FEED_UPDATE | SCHEDULED | MANUAL ON_FEED_UPDATE When the workflow runs. (Enum values retain the legacy FEED naming for backward compatibility.)
Schedule cron string null Cron expression. Required when Trigger is SCHEDULED.
Timezone string UTC Timezone for schedule interpretation.
Is Active boolean true Inactive workflows do not trigger on data source updates or schedules.
Output Format PNG | JPG | WEBP PNG Image format. JPG is approximately 3× faster than PNG for most templates.
Output Quality 1–100 90 Compression quality for JPG/WEBP.
File Naming string `` Template for output file names. Use , , or ``.
Media Rotation NONE | DAILY | WEEKLY | MONTHLY WEEKLY For data source items with multiple media files per field, controls how ConnectWyze rotates through them over time. NONE always picks the first.

Field mapping

Each template in the workflow has a Field Mapping table. Each row maps a template layer variable (left column) to a data source field name (right column). You can also map Focal Points — for image layers, you can bind the focal point X and Y values to numeric data source fields.

Per-template settings (optional overrides):

Field Description
Label Identifies this template slot (e.g. English, Instagram Square).
File Naming Override the workflow's default file naming for this template only.
Output Format Override format for this template.
Output Quality Override quality for this template.
Artboard IDs Limit rendering to specific artboard IDs from a multi-size template. Leave empty to render all artboards.
Enabled Toggle this template slot on or off without removing it.

Conditional template selection

By default, when a workflow has multiple templates, ConnectWyze renders every template for every data source item. Conditional template selection changes this: the workflow evaluates a set of rules against each item and picks exactly one template per item.

Enabling conditional rules

On the workflow form, turn on Use Conditional Rules. The template list changes to a rules editor. Each template slot gets a condition block, and you designate a Default Template that is used when no rule matches.

Rule structure

Each rule is a condition tree evaluated against the data source item's data object. Rules support:

  • Single conditions: field + operator + value
  • Groups: AND or OR of nested conditions

Supported operators:

Operator Description
equals / not_equals Exact string match
contains / not_contains Substring match
starts_with / ends_with String prefix/suffix
greater_than / less_than Numeric comparison (values coerced to number)
greater_than_or_equal / less_than_or_equal Numeric comparison
is_empty / is_not_empty Null, undefined, or empty-string check
matches_regex ECMAScript-compatible regular expression
in / not_in Value is/is not in a comma-separated list

Priority

Rules are evaluated in order from top to bottom. The first rule that matches wins. Drag rules to reorder them. If no rule matches, the Default Template is used; if no default is set, the item is skipped.

Testing rules

Use the Test Rules panel in the workflow form to paste a sample data source item JSON and see which template would be selected.


Output — Runs and Creatives

Each run creates a GenerationJob record. The run tracks:

Field Description
Status PENDINGPROCESSINGCOMPLETED | FAILED | CANCELLED
Total Items Number of data source items in scope for this run.
Completed Images successfully rendered.
Failed Items that errored during render.
Skipped Items skipped because their data was unchanged since the last run.

Progress formula: (completed + failed + skipped) / totalItems.

PENDING runs show an In Queue badge. Once processing begins, a live progress bar updates as the render worker reports back.

Completed images are available immediately in /dashboard/creative/creatives as the run processes; you do not need to wait for the full run to finish.


Webhooks

Workflows can send outbound HTTP webhook notifications on three run events.

Events

Event Fires when
job.started A generation run begins processing.
job.completed A generation run finishes with status COMPLETED.
job.failed A generation run finishes with status FAILED.

(Event values retain the job.* naming for backward compatibility with existing webhook subscribers.)

Webhook payload

All three events share the same payload shape:

{
  "event": "job.completed",
  "jobId": "clxxxxxxxxxx",
  "automationId": "clxxxxxxxxxx",
  "automationName": "Product Cards – EN",
  "status": "COMPLETED",
  "completed": 1842,
  "failed": 3,
  "skipped": 155,
  "total": 2000,
  "hostedUrl": "https://connectwyze.com/api/creative/hosted/your-slug"
}

hostedUrl is only present in job.completed payloads when the workflow has a hosted export configured with a slug.

Configuring webhooks

Webhooks are workspace-level and are configured in Dashboard → Settings → Webhooks. Each webhook:

  • Has a target URL that receives POST requests.
  • Subscribes to one or more events (job.started, job.completed, job.failed).
  • Can optionally filter to specific workflow IDs or data source IDs — if no filter is set, it fires for all workflows.
  • Is signed using HMAC-SHA256; verify the X-Signature header to authenticate the payload.

Webhooks are delivered fire-and-forget. If a webhook endpoint returns a non-2xx response repeatedly, ConnectWyze disables the webhook automatically and logs the failure.


Developer / API

Workflow endpoints

Method Endpoint Description
GET /api/creative/workflows List workflows in the workspace.
POST /api/creative/workflows Create a workflow.
GET /api/creative/workflows/[id] Get workflow detail.
PATCH /api/creative/workflows/[id] Update settings, field mapping, or rules.
DELETE /api/creative/workflows/[id] Delete the workflow.
POST /api/creative/workflows/[id]/test-rules Evaluate conditional rules against a sample item.

Create a workflow (example)

POST /api/creative/workflows
{
  "name": "Product Cards",
  "feedId": "clxyz123…",
  "trigger": "ON_FEED_UPDATE",
  "outputFormat": "JPG",
  "outputQuality": 90,
  "fileNaming": "_card",
  "templates": [
    {
      "templateId": "cltemplate1…",
      "label": "Square",
      "fieldMapping": {
        "headline": "product_name",
        "price_label": "pricing_price",
        "product_image": "image_url"
      },
      "artboardIds": []
    }
  ]
}

Test conditional rules

POST /api/creative/workflows/[id]/test-rules
{
  "item": {
    "product_id": "SKU-001",
    "category": "footwear",
    "is_sale": true,
    "price": 89.99
  }
}

Response includes the matched template ID (or defaultTemplateId if no rule matched).


ASCII diagram

Data source items
    │  (active items only)
    ▼
Workflow
    │  field mapping:
    │    product_name → "headline"
    │    pricing_price → "price_label"
    │    image_url → "product_image"
    │
    ├── [conditional rules?]
    │       item.category == "footwear" → Template A
    │       item.is_sale == true        → Template B
    │       (default)                   → Template C
    │
    ▼
GenerationJob (status: PENDING → PROCESSING → COMPLETED)
    │  progress: completed / totalItems
    │
    ▼
GeneratedImage[]  (one per item × template × artboard)
    │  stored in workspace storage (R2 / S3 / GCS)
    │
    ├── Creatives (/dashboard/creative/creatives)
    └── Webhooks: job.started · job.completed · job.failed

Troubleshooting

Symptom Cause Fix
Workflow does not trigger after data source update Workflow trigger is not ON_FEED_UPDATE, or isActive is false Check Trigger and Is Active on the workflow settings page.
All items are skipped Items have not changed since the last run To force a full re-render, check Force Regenerate when running the workflow.
Field mapping shows no fields to select Data source has not been synced yet Trigger a data source sync first, then return to the field mapping panel.
Conditional rule never matches Rule field name does not match the data source field name Field names are case-sensitive. Use the Test Rules panel to verify the exact field names in a sample item.
Wrong template selected Rule order — an earlier rule matches before the intended one Drag rules into the correct order; rules are evaluated top to bottom and the first match wins.
Run completes with many failures Template variable missing required data in some items Check the run logs for the failing items; add a fallback value in the field mapping or filter those items by tag.
Webhook not firing Webhook is disabled or target URL returning errors Check the webhook delivery log in Settings → Webhooks. Re-enable the webhook if it was auto-disabled.
job.completed payload missing hostedUrl Workflow has no hosted export with a slug configured Set up a hosted export on the workflow's export settings if you need the hosted URL in the webhook payload.
Run stuck in PENDING Render worker queue is full Runs dispatch automatically; a short wait clears the queue. Contact support if a run is pending for more than 10 minutes.