Refreshing Sync Tables on Demand with NoOp Actions

For a few different Packs now (Copper, QuickBooks), I’m running into the following workflow issue:

  • I sync-table some data from an outside SaaS tool
  • I make some changes in the outside SaaS tool, that I want to update more or less instantly in Coda (so that users can take further actions, or so that Automations can be triggered)
  • This isn’t possible, because you can’t…
    • Tell Coda to refresh a sync table via formula, automation, API…, nor
    • Push data into a sync table via Zapier/Integromat

So you’re kind of left choosing between Zapier and Packs, and accepting tradeoffs:

  • Sync table is guaranteed not to be missing anything, but doesn’t update fast
  • Zapier updates fast, but may miss changes, fall out of sync without warning, etc.

But I just thought of somewhat of a workaround:

Create Actions in your Packs that do not in fact take any action, but instead just return a sync table row. You’d call them something like RefreshCustomer()

  • Users could attach this to a Button column if they want to be able to manually refresh a certain row
  • When something changes on your outside data source, have Zapier/Integromat fire a record into a support table (could be a single-column table with Customer ID), triggering an automation to call the action on the relevant row.


*Important caveat: This doesn’t get us around the problem that Actions cannot return objects with dynamic schemas. So if you have rows with partially dynamic schemas, you’re still out of luck, in that even actions that have impacts on your data will not show updates to dynamic columns until you refresh the entire sync table


What a creative idea! I was pondering something similar the other day, but never got around to testing it out.

1 Like