Install
openclaw skills install airtable-participantsRead and query retreat participant data from the Ceremonia Airtable base. Use this skill when asked about participants, subscriber counts, retreat attendance...
openclaw skills install airtable-participantsQuery retreat participant data from the Ceremonia Airtable base. This is the authoritative source of truth for who receives emails and SMS messages. Access is read-only by default — record modifications require Austin's explicit instruction per change.
Ensure AIRTABLE_API_KEY is set in .env.
You will also need:
Store confirmed values in TOOLS.md and MEMORY.md once verified.
Participant records are expected to have at minimum these fields:
| Field | Type | Description |
|---|---|---|
| name | Text | Full name |
| Primary email address | ||
| phone | Phone | E.164 format preferred (+1XXXXXXXXXX) |
| retreat_status | Select | e.g., active, alumni, prospective, unsubscribed |
| tags | Multi-select | e.g., february-2026, guide-circle, donor |
| last_contact | Date | Most recent outreach date |
| donation_status | Select | e.g., donor, non-donor |
[VERIFY actual field names with Austin on first use — update this section when confirmed]
curl -s "https://api.airtable.com/v0/{BASE_ID}/{TABLE_NAME}?filterByFormula={retreat_status}='active'&fields[]=name&fields[]=email" \
-H "Authorization: Bearer $AIRTABLE_API_KEY" | jq '.records[].fields'
curl -s "https://api.airtable.com/v0/{BASE_ID}/{TABLE_NAME}?filterByFormula=AND({retreat_status}='active',{phone}!='')&fields[]=name&fields[]=phone" \
-H "Authorization: Bearer $AIRTABLE_API_KEY" | jq '.records[].fields'
curl -s "https://api.airtable.com/v0/{BASE_ID}/{TABLE_NAME}?fields[]=retreat_status" \
-H "Authorization: Bearer $AIRTABLE_API_KEY" | jq '[.records[].fields.retreat_status] | group_by(.) | map({status: .[0], count: length})'
curl -s "https://api.airtable.com/v0/{BASE_ID}/{TABLE_NAME}?filterByFormula=FIND('february-2026',ARRAYJOIN({tags}))" \
-H "Authorization: Bearer $AIRTABLE_API_KEY" | jq '.records[].fields'
Note: Airtable paginates at 100 records. Use the offset parameter from the response to fetch subsequent pages:
curl -s "https://api.airtable.com/v0/{BASE_ID}/{TABLE_NAME}?offset={OFFSET_TOKEN}" \
-H "Authorization: Bearer $AIRTABLE_API_KEY" | jq .
Always paginate fully before reporting totals or building recipient lists.
When Austin instructs a record change (e.g., marking someone unsubscribed, updating last_contact):