2-Way Hub-and-Spoke

How would you implement a hub-and-spoke set of documents, such that each employee has a private time tracking doc, and the data is aggregated into a management doc?

@Paul_Danyliuk 's Sync Tables Pro seems like a reasonable basis (I haven’t really done any hub-and-spoke stuff yet but my understanding is this is the best way to implement that pattern).

I see how I can push data out from the hub to the spokes.

I see how I could have a Time Tracking Transactions table in the hub, and use row-level permissions to show each employee only their own transactions in their spoke docs.

But how could I let employees add transactions from within their private docs? Some kind of support table in the spoke template that pushes to the hub via webhooks…? (Only thing is I would want fairly quick UI response in the spoke doc…) Is this the dream for the upcoming “merge tables” feature referenced in the Pack description (where each spoke would have its own Transactions table, all of which get aggregated to a single one in the hub doc)?

2 Likes

Hi @Nick_HE . Do you need a separate doc for each person? You could have a single doc and page where you filter the view of the time tracking table based on the current user. This requires you include a column for the coda user name (so you can filter based on that). When I have used this approach,

I have setup a welcome page the user to press a button to notify the admin that they have logged in for the first time so that they can be added to user list (a separate table / view that is used as a column in the main table). When they add new rows to your time tracking table, it should default to their Coda user name. In the use case where I have done this, the admin has pre-created the table entries for the user using automations so that when I add their Coda User Name to the user table, they will be able to see their assigned rows (they do not see anything until the admin takes that action). So, this approach may not apply perfectly to your use case.

If you do need or want a separate doc, you could probably achieve a similar result using Cross Doc. It is definitely more set up for each doc, but it should work in a similar fashion.

1 Like

Thanks @Jim_Holincheck !

Yeah I need data privacy between the users unfortunately.

One other tip (that I think I learned from Paul too haha) is to have a button that shows up for new users. Clicking it adds User() to the user table and then disables the button (to avoid the admin having to add them).

Best way to do this (without wacky workarounds like my two way sync pack or 3rd party software) is likely going to be using sync pages (when their next iteration comes out)

And then automating the creation of sync pages and their container docs via buttons for all the employees.

This process can be fully automated aside from setting the filters on the source tables that will act as a users sync page/table, that’s its only downfall

But if you want a solution now that’s what I’ve built the two way sync pack for. I’ve used it to successfully build out these hub-spoke model docs.

Everything is instant (row adds, etc) because it’s all native coda tables.

Ooh interesting @Scott_Collier-Weir !

I haven’t tried this Pack yet. Would I still need to manually create a filtered view per employee in the hub doc? (So that each person only sees their own records in the spoke)

Nope!

Not at all. Confident you could set it up - it would allow for a fully automated set up.

You simply have a helper table defining WHERE (aka url) the spoke docs are. BUT there’s also an easy process to create your spoke docs with the coda doc pack so all that is auto logged.

So if a task is assigned to person A, there is a lookup to the helper table that defines where person A’s doc is.

Then, when the two way sync pack runs it sends the tasks back and forth between person As doc and the hub

If you need a quick loom let me know.

1 Like

Hey @Scott_Collier-Weir a loom would be useful as I tried myself using your pack before without success.

Hi @Scott_Collier-Weir,
I would absolutely LOVE to be able to do what you’ve described here. I have been trying to work out how to create two different hub-and-spoke systems.
One system is very similar to what OP @Nick_HE described, only instead of time tracking, it would be for employees to submit availability.
The other system is a combo of project management and task management, where Docs act as the container for all projects that a department/team are working on.

Can you please let me know if there is a way I can facilitate/contribute financially to a 1-on-1 session, or an explainer video?

Hey Sam! Have you tried using the pack yet and/or have you seen the explanation video that accompanies the pack?

Great questions - after finding this thread, I found and watched a number of your explainer videos.
I’m in the process of attempting to build a bare-bones version of the system, regularly referring back to your videos and other community threads as I go.

I’ll check back in here with an update once I’ve given it a decent bit of fumbling around/practice.

Update - I’ve spent a decent amount of time going through the loom explainer video. It’s great, thank you for going to the effort of recording it. I’ve learnt a lot about how to set up the 2-way sync. That said, still I seem to be missing something.

I’ll try and describe the issue I’m having:

Doc A=source Doc
Table A=source Table

Doc B=target Doc
Table B=target Table

Action: Click “Sync Row” button in Doc A on a row created in Table A.
Result:

  • Coda pop-up notification that reads, “1 external action performed”.
  • No change to Table B (no new row created).

Action: Click “Sync Row” button in Doc B on a row created in Table B.
Result:

  • Coda pop-up notification that reads, “1 external action performed”.
  • Corresponding row is created in Table A.

Action: Click “Sync Row” button in Doc A on a row created in Table B.
Result:

  • Coda pop-up notification that reads, “1 external action performed”.
  • Corresponding row in Doc B, Table B is updated to reflect changes made in Doc A Table A.

Do you have any suggestions as to where I should be looking to keep troubleshooting?

Can you share screenshots of both button setups?

Absolutely:

This topic was automatically closed 90 days after the last reply. New replies are no longer allowed.