Coda Packs

Get more out of Coda packs

select carefully and avoid complexity

Christiaan Huizer
9 min readApr 26, 2023

--

Some people believe I dislike packs. That is not true, but the communication about packs gives me mixed feeling. There is so much enthusiasm — at least in a certain segment of the Coda community — whereby packs are praised as a medicine for almost anything, that makes me uncomfortable. Some pack makers like to give the impression that packs are the ultimate solution.

I am afraid they are not.

Quite a few packs (including the one I created) try to provide a solution for what most makers believe should be natively solved by Coda. It is a kind of duct tape for Coda experts to extend the current Coda functionality. These packs offer at best a temporary solution by partly fixing a deeper and fundamental problem. That said, I could not live without packs and I love and appreciate some of them very much for what they help us to achieve. Many docs would be useless without packs.

In this blog I’ll try to explain why I believe you should be careful with packs in order to benefit most of them.

There are roughly two sorts of packs. The first type permits you to bring in Coda functions in a simplified manner, the second deals with (other) software platforms. In this blog I talk about the latter.

I can see a few applications of simplified Coda functions (like financial formulas), but not many. I noticed for example a pack dealing with relative dates. In my opinion this can and should be fixed with good to follow code. There is by the way a second pack on this matter, at least that is what the name suggests, but the documentation does not really help. It could be more alike a paid pack showing delta values. This can also be solved without a pack, but that is for most makers too difficult. This delta value is something people ask for and in my opinion should be supported by Coda natively. Today most makers have to pay for it since the complex formula is not publicly available (but maybe I post it later this year).

Basics about Coda Packs

Packs permit makers to integrate or the functions of a software platform in Coda or to bring in data from that platform. An example of functions is email. The Gmail Pack permits the Coda maker to send emails, while the Typeform pack brings in the results of your surveys. Both are examples of packs created and maintained by Coda. These packs extend the functionality of Coda. Other integrations like Google Drive, Trello, Slack also allow users to automate tasks, streamline workflows and collaborate more efficiently. At least that is the idea.

The Coda Pack building platform

With the Coda Pack building platform, makers can create their own custom Packs to integrate with their favorite apps or services. You need to have a decent understanding of Javascript (and not just a bit!) and and quite some time available to understand how the Pack studio can be of help in building, testing, publishing, and selling your pack.

Hi @The_Lab — Welcome to the Coda community! We aim to enable non-professional coders to build a Pack, but it will be a bumpy ride if you don’t have any experience with JavaScript. source

First it was only Coda offering integrations, while now we have a mix of Coda (supported) packs and packs made (and supported) by makers.

I came across an article sharing pros & cons for Shopify plugin creators, it seems to me that many points are valid for Coda pack makers as well.

Coda docs as stand alone

Do we always need Packs? No, it is very well possible to use a doc without packs. When I create business cases for certain clients I receive invoices in PDF, I type over the data I need and the functions in the tables do the rest. I communicate with the client via notifications, a native Coda solution. No packs needed.

However docs relating to other data and or functions have numerous advantages. One of them is that it enables Coda to offer features it did not develop (yet) and for which the company sensed an important demand. These packs expand the functionalities of the platform without the need for Coda development, maintenance and support. From a Coda perspective that is great additional value.

Packs permit Coda to learn

Coda can observe via the various packs which type of features or functions really matter to their target group and can decide to integrate them. As a result a (part of a) pack becomes a core feature of the product. This is to the advantage of the maker, the Coda client. [edit Nov 2023, the AI in our docs is directly related to an AI pack that became popular and triggered Coda to do ‘something’.]

A native solution works often better than any pack. The new feature will fit seamless in the rest off the application, it follows the Coda way of doing things and as a result you understand this new feature rapidly. Once a feature, Coda will maintain it, solve bugs and provide instructions on how to use it. Certain pack features become core features over time, others won’t.

Coda created a form logic and although inferior to most specialized related products, it has a few great advantages like a new submission can trigger an automation. Packs that bring in new data as a row won’t benefit from this. I use Coda forms because it reduces the complexity in my docs.

Packs create complexity

The data brought in via packs can enhance productivity due to streamlined workflows and customizations of data views (Team plan only). Also collaboration and data accessibility are important additional benefits. Nevertheless there is one major concern as I see it: complexity and here I borrow a bit from the article you find here.

complexity — learning

I am not talking about the installation of the packs, that is simple. The next step is how to use the packs properly, understanding their limitations and start thinking as the creator of the pack. What did she have in mind?

You learn to see the logic for one pack, maybe a few, but not with many. Certainly not when they have multiple options (all showing the good intentions of the maker). The documentation is often limited and there is no help desk. With some luck someone in the community wants to help out in case the pack maker fails to respond. Maybe some pack makers believe that their logic is self explanatory and no further support is needed. That is a mistake.

complexity — Coda Formula Language (CFL)

Packs use the building blocks typical for Coda like tables and buttons and allow you to write new functions. Although the functions written by pack makers are close to the CFL, it is not CFL. It is a layer on top of CFL.

We take as example the pack I developed to make communication easier between docs. You can send (and update) rows in other docs using a webhook.

This pack has only three input fields:

  • the URL
  • the token
  • the columns you want to communicate

To understand the details and why this pack matters, I wrote a blog:

The main documentation of this pack is indeed my blog, I also added an example doc to show how it all works. The pack is for free, because I believe all makers should be able to benefit from a logic that can replace many cross doc functionalities. By the way, this pack does more for you than the recent launched full-page embeds which are ‘view only’.

Here it comes, as long as the logic I developed remains in this pack, Coda won’t write about it, nor will they provide support for it and you have to understand what I had in mind. I did my best to keep it simple, but seen some questions I got, the pack is not as self evident as I assumed initially.

This packs with only three variables adds complexity to your doc. Most makers can handle a limited amount of complexity but too much of it ends in orphaned docs and quite some frustration. In this blog I wrote that Coda in general is not very good yet in taking away complexity, although recent developments point in the right direction, but we are not ‘there’ yet.

Coda packs and focus

In most of my docs I use packs. However I try to limit the packs per doc and to give each doc a specific task. Specialized docs are linked via the mentioned webhook pack to keep data aligned. To inform team members, I use notifications. Since docs in my set up become communicative (we even offer Two Way Sync) we can replace other tools for example to harvest hours worked per day per consultant.

The webhook pack replaces a limited amount of packs. There are still many tools which great value on their own for which you need a dedicated pack. Two free packs come to mind offering direct value:

Packs like these two can be of great help, but only if you compose the doc in such a way to are able to maintain it without too much effort. It is a tedious job to open many panels and to search for the logic put in place that creates an unexpected or unwanted outcome. Complexity easily turns against you and complexity is always time consuming.

Data architecture, one main task per doc and a stringent focus are key to profit most of any pack.

Nevertheless, we have to remain attentive.

General disadvantages related to Packs

It can become a costly affair to have multiple paid packs active in your workspace for which you pay per maker. Combined with the initial affordable Coda pricing, it can become a serious cost. Put that aside, other considerations to be moderate enthusiastic about (certain) packs are:

  • Speed. Pack move data between platforms via the Coda servers. That takes time. When instant updates are not important there is a second element: you don’t know how efficient the code in the pack is written. It may very well produce the correct outcome, but in an inefficient way and when you handle a lot of data, this can become problematic. The pack maker won’t tell you this upfront. Pack code is often not available for review.
  • Bugs & updates. You depend on the maker of the pack. Coda as maker provides more stability, you can file a bug and they will respond. Other makers don’t have these procedures and that may hinder your business for a certain time.

I am not talking about security risks since I believe Coda covered this rather well. As far as I know, your private data cannot be leaked towards an other server or exported to a Coda doc. May I be mistaken, please contact me.

Long story short, check if you really need a pack and if so, make sure you have clear focus in your docs.

My name is Christiaan and I support SMB with calculations (budgets and — Human Resource — planning) and I prefer using Coda to get the job done. More about me below.

I hope you enjoyed this article. If you have questions feel free to reach out. Though this article is for free, my work (including advice) won’t be, but there is always room for a chat to see what can be done. Besides you find my (for free) contributions to the Coda Community and on Twitter.

Coda comes with a set of building blocks ー like pages for infinite depth, tables that talk to each other, and buttons that take action inside or outside your doc ーso anyone can make a doc as powerful as an app (source).

Not to forget: the Coda Community provides great insights for free once you add a sample doc.

--

--

Christiaan Huizer
Christiaan Huizer

Written by Christiaan Huizer

I write about how to Coda . You find blogs for beginners and experienced makers. I publish about 1 / week. Welcome!