Platform features are currently in invite-only beta.
Sign up here to be considered for one of our next phases.
Three ways, in order of how much they cost you
A shared record
Both apps point at the same core app. No coupling at all.
A reference
Your field names another app’s entity. One line.
A subscription
Your workflow reacts to what another app announces.
A shared record
The cheapest connection is the one you do not author. Two apps that both point atcore_organizations.organization are talking about the same company, and neither keeps its own
spelling of the name.
See Core apps.
A reference into another app
An ordinary reference field, with another app’s key intargetApp:
cordango check validates it against the other apps in your workspace, so a typo in the app key or
the entity is caught before you build.
Installed together, or not yet
A reference has to resolve to a real table, and the two rules differ by where you are:
That second row is deliberate. An app that named a companion and could only be installed after it
would make every app in a connected set un-installable on its own, which is the opposite of the
point. The write still refuses a reference into an app that is not there, so nothing is trusted — it
is only not refused early.
A subscription to what another app announces
An automation whose trigger names another app:{{record.*}} is the source app’s record — the purchase request. That is what lets a
subscription carry data without either app declaring a payload shape.
What you may subscribe to
Reach for
state.entered when several transitions end in the same place. Three approval steps that
all reach approved are one fact, and it is the state, not any one of the commands.
Writing into another app
AcreateRecord effect may name the app it writes into:
updateRecord deliberately cannot do this. Updating a record somewhere else means finding it
first, and that is a cross-app query, which is not built yet.
Who a reaction runs as
The subscribing app’s owner. Not the person whose click caused the event: approving a purchase is not agreeing to have budgets written on your behalf. Not an administrator either. The same permission question is asked that the API asks before an ordinary create, so a reaction can never do something the person it runs as could not do by hand. A revoked grant stops it, visibly, in the run log. Loops are bounded by the same depth cap that bounds a cascade inside one app, so A reacting to B reacting to A terminates.Seeing what is there
What is not built yet
Cross-app queries. A purchase request cannot display “this would take Marketing over its plan”,
even though the budget line it points at knows the number. Reading another app’s field at display
time is planned, not built.Suggested connections. Cordango can already tell you what every app announces and what every app
accepts. Matching the two automatically and offering to wire them is planned.
A worked example
The connected starter pack is eight apps in three workspaces that use every mechanism on this page. Start withfinance/, which is the shortest path to seeing a
purchase approval turn into committed spend.
