Skip to content
PaalChat Docs

Create automation

.md
POST
https://whatsapp.paaltech.org/api/v1/businesses/{external_id}/automations

Token ability: automations.manage ยท Authentication

When trigger happens to a contact and the optional conditions (a segment condition tree) hold, run steps in order. See the Automations guide for triggers and steps. The definition is checked when saved (templates must be APPROVED).

Path parameters

external_id string required

Your own ID for the business (Multi-SKUUL - the tenant ID).

Max 191 characters. Pattern ^[A-Za-z0-9._:-]+$.

Body parameters

name string required

Max 191 characters.

trigger string required

One of: message_received, keyword, contact_created, conversation_status, date_reached.

trigger_config object | null

keyword: {keywords: [...]}; conversation_status: {status}; date_reached: {field: a date custom field, offset_days: -3 = three days before}.

conditions object | null

{"all": [...]} or {"any": [...]} of conditions {"field", "op", "value"} or nested groups (3 levels, 30 conditions). Fields: name, phone, email, locale, timezone, external_id, created_at, tag (has, not_has), consent.<category> (eq granted|revoked|none), last_incoming_at (within_days, older_than_days), custom.<key> (by the field's type). Ops: eq, neq, gt, gte, lt, lte, contains, starts_with, in, exists, not_exists, within_days, older_than_days.

Example {"all":[{"field":"custom.class","op":"eq","value":"SHS 2"},{"field":"custom.fee_balance","op":"gt","value":0}]}.

steps array of objects required

In order. send_template {template, language, parameters, category?, topic?}; send_text {text} (inside the 24-hour window); add_tag / remove_tag {tag}; set_status {status}; add_note {text}; notify {data} (automation.action callback); wait {minutes | hours | days}.

Max 20 items.

Responses

201

Saved and active.

401

unauthenticated - missing, invalid, revoked or expired token

403

missing_ability, product_suspended or product_token_required

404

not_found - not yours, or does not exist

422

validation_failed - fields are invalid; see errors.

429

rate_limited - over 300 requests/minute for this product

Errors always look like {"error": {"code", "message"}} - see Errors and status codes.