Trigger filters

Filter-tree syntax for the Tellzm Trigger node.

The Tellzm Trigger node accepts an optional filter tree so a workflow only fires for events that match. Leave blank to receive every event of the chosen type.

Shape

A filter tree is either a single condition or a group:

jsonc
// Single condition (leaf)
{ "field": "status", "op": "eq", "value": "done" }

// AND group
{
  "combinator": "AND",
  "conditions": [
    { "field": "priority", "op": "in", "value": ["urgent", "high"] },
    { "field": "assignee.id", "op": "eq", "value": "{{ $json.userId }}" }
  ]
}

// Nested
{
  "combinator": "OR",
  "conditions": [
    { "field": "status", "op": "eq", "value": "blocked" },
    {
      "combinator": "AND",
      "conditions": [
        { "field": "dueDate", "op": "lt", "value": "{{ $now.toISODate() }}" },
        { "field": "completedAt", "op": "exists", "value": false }
      ]
    }
  ]
}

Operators

OpMeansValue type
eqequal toscalar
neqnot equalscalar
invalue is one of the arrayarray
ninvalue is NOT one of the arrayarray
lt / lteless than (or equal)number or ISO date
gt / gtegreater than (or equal)number or ISO date
containssubstring match on stringstring
existsfield is present and non-nullboolean — pass true to require, false to forbid

Combinators

  • AND — every nested condition must match
  • OR — at least one nested condition must match

Maximum depth is 8 levels and a group can hold up to 50 conditions.

Available fields

Field names follow the event's payload structure. Common ones:

EventUseful fields
task.*id, title, status, priority, projectId, assigneeId, tags, dueDate, parentId, createdAt
project.createdid, name, slug, workspaceId, creatorId, processTemplateId
form.submittedformId, submissionId, respondentId, values.<fieldId>
page.publishedpageId, title, workspaceId, publishedBy
record.upsertedtableId, recordId, values.<fieldId>
calendar.event.createdeventId, subCalendarId, startsAt, endsAt
comment.addedcommentId, entityType, entityId, authorId

Use dotted paths for nested fields — assignee.id, values.fld_abc.

Tips

  • The filter runs server-side before n8n is hit, so filtering aggressively reduces both bandwidth and credit-counted invocations.
  • n8n expressions inside values ({{ $json.x }}) are resolved by n8n at workflow run time, not by Tellzm. Keep values literal in the filter unless you really need workflow-local data.
  • If a workflow never fires when you expect it to, switch your filter off temporarily and add it back one condition at a time.

[!TIP] Start broad, then narrow. It's easier to start with an empty filter (fires for every event), watch one or two runs to see the actual payload shape, then add conditions — than to guess the field names from the docs.