Waymaker tables
Manage data tables in Commander. Create structured databases, query records, and integrate with other tools.
Overview
Manage data tables in Commander. Create structured databases, query records, and integrate with other tools.
Usage
waymaker tables <subcommand> [options]
Subcommands
| Subcommand | Description |
|---|---|
list | List tables |
get | Get table schema |
create | Create a new table |
enable-webhook | Enable webhook receiver and print endpoint URL |
records | Manage table records |
fields | Manage table fields |
query | Query table data |
List Tables
waymaker tables list --workspace <workspace-id>
Output:
Tables (6)
id name records fields updated
---------------------------------------------------------
tbl_abc123 Contacts 1,250 12 2 hours ago
tbl_def456 Companies 340 8 1 day ago
tbl_ghi789 Deals 89 15 3 hours ago
tbl_jkl012 Products 156 10 1 week ago
JSON Output
waymaker tables list --workspace ws_xxx --json
[
{
"id": "tbl_abc123",
"name": "Contacts",
"record_count": 1250,
"field_count": 12,
"workspace_id": "ws_xxx",
"updated_at": "2026-01-21T08:00:00Z"
}
]
Get Table Schema
waymaker tables get <table-id>
Output:
Contacts
ID: tbl_abc123
Workspace: ws_xxx
Records: 1,250
Created: January 1, 2026
Fields: (12)
name text required
email email required, unique
phone phone
company link → Companies
status select [lead, customer, churned]
deal_value currency
created_at datetime auto
updated_at datetime auto
owner user
tags multiselect
notes longtext
last_contact datetime
JSON Output
waymaker tables get tbl_abc123 --json
Create Table
waymaker tables create "New Table" \
--workspace <workspace-id> \
--project <project-id>
Output:
✓ Table created
ID: tbl_new123
Name: New Table
Workspace: ws_xxx
Add fields with:
waymaker tables fields add tbl_new123 --name "field_name" --type text
Create with Inline Columns
waymaker tables create "Products" \
--workspace ws_xxx \
--project proj_xxx \
--columns "name:text!,sku:text,price:currency,category:select[Electronics,Clothing,Home]"
Column Specification Format:
name:type[options]!
name— Column nametype— Column type (text, number, email, url, phone, select, etc.)[options]— For select types, comma-separated values inside brackets!— Mark as required
Commas inside [brackets] are treated as option separators, not column separators.
Create with Schema File
waymaker tables create "Products" \
--workspace ws_xxx \
--project proj_xxx \
--schema ./schema.json
Schema file format:
{
"columns": [
{ "name": "name", "type": "text", "required": true },
{ "name": "sku", "type": "text", "unique": true },
{ "name": "price", "type": "currency" },
{ "name": "category", "type": "select", "options": ["Electronics", "Clothing", "Home"] }
]
}
Custom display names: Column headers in Commander are auto-generated from name (e.g., organization_name → "Organization Name"). To customize, add a title field:
{ "name": "org_name", "title": "Organization", "type": "text" }
Create with Fields (JSON)
waymaker tables create \
--workspace ws_xxx \
--name "Products" \
--fields '[
{"name": "name", "type": "text", "required": true},
{"name": "sku", "type": "text", "unique": true},
{"name": "price", "type": "currency"},
{"name": "category", "type": "select", "options": ["Electronics", "Clothing", "Home"]}
]'
Enable Webhook
Enable a webhook receiver on a table so external forms or services can POST data directly as new rows.
waymaker tables enable-webhook <table-id>
Output:
✓ Webhook enabled
Table ID: 63037397-0d09-4f40-a321-eabb00729805
Token: whk_a1b2c3d4e5f6...
── Webhook URL ──
https://apps.waymakerone.com/functions/v1/tables-webhook-receiver?table_id=63037397-...&token=whk_a1b2c3...
POST JSON data to this URL to insert rows into the table.
Usage with Custom Forms
Once enabled, POST JSON matching your table schema to the webhook URL:
curl -X POST "<webhook-url>" \
-H "Content-Type: application/json" \
-d '{"name": "Jane Doe", "email": "jane@example.com", "status": "New"}'
This is the recommended pattern for developers and AI agents building custom frontend forms that write to Waymaker Tables.
Manage Records
List Records
waymaker tables records <table-id> list
Output:
Records: Contacts (1,250 total)
id name email status deal_value
--------------------------------------------------------------------------
rec_001 John Smith john@company.com customer $50,000
rec_002 Jane Doe jane@example.com lead $25,000
rec_003 Bob Wilson bob@startup.io customer $15,000
Get Single Record
waymaker tables records <table-id> get <record-id>
Create Record
waymaker tables records <table-id> create \
--data '{"name": "New Contact", "email": "new@company.com", "status": "lead"}'
Output:
✓ Record created
ID: rec_new123
Table: Contacts
Update Record
waymaker tables records <table-id> update <record-id> \
--data '{"status": "customer", "deal_value": 50000}'
Delete Record
waymaker tables records <table-id> delete <record-id>
Bulk Create
waymaker tables records <table-id> create \
--file ./contacts.json \
--bulk
Manage Fields
Add Field
waymaker tables fields add <table-id> \
--name "new_field" \
--type text
Field Types
| Type | Description |
|---|---|
text | Single line text |
longtext | Multi-line text |
number | Numeric value |
currency | Currency value |
percent | Percentage |
email | Email address |
phone | Phone number |
url | URL/link |
select | Single select |
multiselect | Multiple select |
checkbox | Boolean |
date | Date only |
datetime | Date and time |
user | User reference |
link | Link to another table |
attachment | File attachment |
formula | Computed field |
Add Select Field
waymaker tables fields add tbl_abc123 \
--name "priority" \
--type select \
--options "low,medium,high,urgent"
Add Link Field
waymaker tables fields add tbl_abc123 \
--name "company" \
--type link \
--link-table tbl_companies
Update Field
waymaker tables fields update <table-id> <field-name> \
--name "new_name"
Delete Field
waymaker tables fields delete <table-id> <field-name>
Query Table Data
waymaker tables query <table-id> \
--filter '{"status": "customer"}'
Output:
Query Results: 450 records
id name email deal_value
---------------------------------------------------------------
rec_001 John Smith john@company.com $50,000
rec_003 Bob Wilson bob@startup.io $15,000
...
Complex Filters
waymaker tables query tbl_abc123 \
--filter '{
"and": [
{"status": {"eq": "customer"}},
{"deal_value": {"gte": 10000}},
{"created_at": {"gte": "2026-01-01"}}
]
}'
Sort Results
waymaker tables query tbl_abc123 \
--filter '{"status": "customer"}' \
--sort "deal_value:desc"
Select Specific Fields
waymaker tables query tbl_abc123 \
--filter '{"status": "lead"}' \
--fields "name,email,deal_value"
Pagination
waymaker tables query tbl_abc123 \
--limit 50 \
--offset 100
Query as JSON
waymaker tables query tbl_abc123 --filter '{"status": "lead"}' --json
Options Reference
list
| Option | Type | Description |
|---|---|---|
--workspace | string | Required. Workspace ID |
--json | flag | Output as JSON |
get
| Option | Type | Description |
|---|---|---|
--json | flag | Output as JSON |
create
| Option | Type | Description |
|---|---|---|
--workspace | string | Required. Workspace ID |
--project | string | Project ID (required for table to appear in Explorer) |
--name | string | Required. Table name |
--columns | string | Inline column spec (e.g., "name:text!,status:select[A,B]") |
--schema | string | Schema file path (JSON) |
--fields | string | Initial fields as JSON array |
enable-webhook
No additional options. Generates a token automatically and prints the full webhook URL.
records
| Option | Type | Description |
|---|---|---|
--data | string | Record data as JSON |
--file | string | Import from JSON file |
--bulk | flag | Bulk import mode |
--json | flag | Output as JSON |
fields
| Option | Type | Description |
|---|---|---|
--name | string | Field name |
--type | string | Field type |
--required | flag | Make field required |
--unique | flag | Enforce uniqueness |
--options | string | Options for select types |
--link-table | string | Target table for link type |
query
| Option | Type | Description |
|---|---|---|
--filter | string | Required. Filter as JSON |
--sort | string | Sort order (field:asc/desc) |
--fields | string | Comma-separated field names |
--limit | number | Maximum results |
--offset | number | Skip records |
--json | flag | Output as JSON |
AI Agent Workflow
# List all tables
TABLES=$(waymaker tables list --workspace ws_xxx --json)
# Query specific data
LEADS=$(waymaker tables query tbl_contacts \
--filter '{"status": "lead", "deal_value": {"gte": 10000}}' \
--json)
# Count by status
echo $LEADS | jq 'group_by(.status) | map({status: .[0].status, count: length})'
# Create record from AI analysis
waymaker tables records tbl_contacts create \
--data "$AI_GENERATED_CONTACT"
# Bulk update
for id in $(echo $LEADS | jq -r '.[].id'); do
waymaker tables records tbl_contacts update $id \
--data '{"last_contact": "'$(date -Iseconds)'"}'
done
# Export for analysis
waymaker tables query tbl_contacts \
--filter '{"created_at": {"gte": "'$(date -v-30d +%Y-%m-%d)'"}}' \
--json > /tmp/recent_contacts.json
Related Commands
- forms - Form submissions → Tables
- automations - Table-triggered automations
- sheets - Spreadsheet data