References with a home.
The sales model owns the opportunity. Billing owns the customer lookup. The workspace owns the channel. The workflow refers to those definitions.
Zapier, as a program
Your automation connects your tools.
Its configuration should connect, too.
A Salesforce opportunity. A Stripe customer. A Slack channel. Describe the workflow in one reviewable file, with explicit references to the systems it connects.
Design study · Proposed prelude · No live connections
sales.Opportunityopportunity.StageNameopportunity.AccountIdworkspace.channels.sales01 Write the workflow
02 Check the connections
03 Review the change
01 / The workflow
Triggers start it. Filters decide. Actions pass data to the next system. A proposed Zapier prelude would give those familiar concepts a small, declarative vocabulary.
; Bring the connected systems into scope.
(import "@acme/sales" :as sales)
(import "@acme/billing" :as billing)
(import "@acme/workspace" :as workspace)
(zap closed-won "Welcome a new customer"
(trigger opportunity
(salesforce/updated sales.Opportunity))
(filter (= opportunity.StageName "Closed Won"))
(action customer
(stripe/find-customer billing.account
:salesforce-account opportunity.AccountId))
(action notify
(slack/send-message workspace.channels.sales
:text (str "New customer: " customer.name))))The sales model owns the opportunity. Billing owns the customer lookup. The workspace owns the channel. The workflow refers to those definitions.
opportunity feeds the filter and customer lookup. customer feeds the message. The data dependencies are visible in the source.
The proposal describes a Zapier workflow in Zapier’s terms. A future adapter would need to map these declarations to supported platform resources.
This source is a language design sketch. The imports, Zapier forms, and platform adapters shown here are proposed and cannot be executed by the current package.
02 / The connections
A field mapping is a dependency. A channel is a reference. Open Ontology’s direction is to make these connections part of one checked program, across platform boundaries.
The workflow that connects them.
sales.Opportunity.AccountIdField referencebilling.accountLookup contractworkspace.channels.salesChannel referenceKeep platform configuration in its own project. Let workflows import the definitions they depend on.
A future cross-project checker could point from a changed field to the workflows that still reference it.
Source files can describe the workflow, its inputs, and its dependencies together in a repository.
03 / The change
The review should show what changes and which connections need attention. These static examples illustrate the feedback a future checker could provide.
(slack/send-message
− workspace.channels.sales
+ workspace.channels.customer-success
:text (str "New customer: " customer.name))
The proposed reference resolves to a channel defined in the workspace project. The trigger, filter, and customer lookup keep their existing definitions.
04 / A direction, with clear boundaries
Open Ontology is experimental v0.1. This page explores how a Zapier prelude could fit into that work.
TypeScript and Forma authoring, a portable JSON-safe ontology IR, model checks, and a local in-memory Triplex runtime. The agent guide documents the current ontology prelude.
Read the current agent guideZap declarations, connected platform imports, cross-project checking, and native workflow output. These need implementation and validation against Zapier’s supported interfaces. This page has no Zapier API connection or deployment capability.
Read the package boundaryBuild the vocabulary with us
Explore the foundation. Bring a workflow. Help shape the prelude.