🗃 Tables and Records: all you need to know

Asana is finally rolling out Tables, a new object type for structured reference data. The help article is fairly short so far, so I’ve pulled together everything I could based on our recent testing, with a side-by-side comparison against regular tasks and projects.

TL;DR: a table is a container (basically a stripped-down version of a project) and a record is a row inside it (a stripped-down version of a task). Records are built for reference data (vendors, assets, properties, customer accounts), not for work. They have no assignee, no due date and no completion state. Instead, you reference records to the tasks, projects and portfolios that do the work.

:thinking: When to use a table (and when not to)

Use a table when you need structured reference data that stays connected to work in Asana: vendors, assets, properties, customer accounts, product catalogues, locations.

Don’t use a table as a CRM / sales pipeline, a BI warehouse, a SQL database, a formula-heavy spreadsheet or a standalone automation platform. Asana is explicit about this.

Rule of thumb: if someone needs to action it by a date, it’s a task. If people need to look it up while doing their tasks, it’s a record.

:package: Who gets it?

Projects & Tasks Tables & Records
Plans All plans Advanced, Enterprise, Enterprise+ only
Where they live Teams, My tasks, portfolios Workspace level (a table belongs to a workspace and can’t be moved into another container)

:compass: How do I get to them?

Tables don’t sit alongside your projects in the sidebar, so they’re easy to miss at first:

  • Projects live under the Work mode
  • Tables live under the Knowledge mode

:brick: Records vs Tasks: fields and metadata

Legend: :white_check_mark: supported :cross_mark: not available

Field / metadata Task Record Notes
Name / title :white_check_mark: :white_check_mark: The only required field when creating a record
Description :white_check_mark: :cross_mark: No native description field. Use a text custom field instead (text fields now support rich text)
Assignee :white_check_mark: :cross_mark: No native assignee. Use a People custom field instead
Due date / start date :white_check_mark: :cross_mark: No native dates. Use a Date custom field instead
Completion (mark complete) :white_check_mark: :cross_mark: Records are reference data, so there is no complete / incomplete state
Completed on / completed by :white_check_mark: :cross_mark: Follows from the above
Created on / created by :white_check_mark: :white_check_mark:
Last modified on :white_check_mark: :white_check_mark:
Collaborators / members :white_check_mark: :white_check_mark: Records can be searched by a member
Permalink :white_check_mark: :white_check_mark:
Tags :white_check_mark: :cross_mark: Use a multi-select field instead
Custom task types and statuses :white_check_mark: :cross_mark:
Basic field types :white_check_mark: :white_check_mark: Tables support text, number, date, single-select, multi-select, people
Reference fields :white_check_mark: :white_check_mark: Records can be connected to tasks, projects, portfolios, goals, teams and other records
Lookup fields :white_check_mark: :white_check_mark: Pull values from a referenced record (not a task). Respects permissions, so nobody sees lookup data from records they can’t access
Formula fields :white_check_mark: :white_check_mark:
ID (custom ID) field :white_check_mark: :cross_mark:
Timer field :white_check_mark: :cross_mark:
Time tracking fields :white_check_mark: :cross_mark:
Sections :white_check_mark: :cross_mark: No sections in tables to place a record in

:hammer_and_wrench: Records vs Tasks: features

Feature Task Record Notes
Comments :white_check_mark: :white_check_mark: Full activity feed
Pinned comments :white_check_mark: :white_check_mark:
Threaded comments :white_check_mark: :white_check_mark:
@ mentions in comments :white_check_mark: :white_check_mark:
Attachments :white_check_mark: :white_check_mark:
Subtasks :white_check_mark: :cross_mark: Records have no parent / child hierarchy
Dependencies :white_check_mark: :cross_mark:
Multihoming (add to multiple containers) :white_check_mark: :cross_mark: A record belongs to just one table. To reuse it elsewhere, reference it from a task, project or portfolio
Approvals / milestones :white_check_mark: :cross_mark:
Recurrence :white_check_mark: :cross_mark: No dates, so nothing to recur
Appears in My tasks / Inbox assignments :white_check_mark: :cross_mark: No assignee, so records don’t land in anyone’s My tasks
Convert to project :white_check_mark: :cross_mark: Sensibly, a record cannot be converted to a table
Duplicate :white_check_mark: :white_check_mark: The API has a Duplicate a task endpoint but no equivalent for records
Advanced search :white_check_mark: :white_check_mark: Search for tables or record using several filters
Task/record-level permissions :white_check_mark: :white_check_mark: Access can be set for specific people on an individual record
Rules can act on it :white_check_mark: :white_check_mark: Can also trigger script actions :wink:
Forms create it :white_check_mark: :white_check_mark: Forms can create records from submissions
Import CSV :white_check_mark: :white_check_mark:
Export CSV :white_check_mark: :white_check_mark: Only CSV, not XLS like Projects
AI Teammates / Asana Dash can read it :white_check_mark: :white_check_mark: One of the main reasons Tables exists: richer context for AI and automation
API :white_check_mark: :white_check_mark: Dedicated /tables and /records endpoints
MCP :white_check_mark: :white_check_mark: Asana’s MCP server includes create, update, search and comment tools for records
Webhooks :white_check_mark: :cross_mark: Not yet for records..?
Archive Project / Table :white_check_mark: :white_check_mark:
Add to Starred :white_check_mark: :white_check_mark:

:gear: Tables vs Projects: the container and the Customize menu

Capability Project Table Notes
Customize menu > Fields :white_check_mark: :white_check_mark: Removing a field disables existing values rather than deleting them, same as projects
Customize menu > Forms :white_check_mark: :white_check_mark:
Customize menu > Rules :white_check_mark: :white_check_mark:
Customize menu > Task templates :white_check_mark: :cross_mark:
Customize menu > Task types :white_check_mark: :cross_mark:
Customize menu > Bundles :white_check_mark: :cross_mark:
Customize menu > Apps :white_check_mark: :cross_mark:
List / grid view :white_check_mark: :white_check_mark: Can create multiple List views, like in projects
Board view :white_check_mark: :cross_mark: Well, it’s a database :man_shrugging:
Timeline / Gantt / Calendar :white_check_mark: :cross_mark: No native dates so nothing to plot
Dashboard :white_check_mark: :white_check_mark:
Overview / Messages / Files / Pages :white_check_mark: :cross_mark:
Members :white_check_mark: :white_check_mark: Uses Asana’s existing permission model at table and record level
Project roles / owner :white_check_mark: :cross_mark:
Sections :white_check_mark: :cross_mark: Use the Group button instead
Status updates :white_check_mark: :cross_mark:
Add to portfolio :white_check_mark: :cross_mark:
Save as template :white_check_mark: :cross_mark:
Duplicate :white_check_mark: :white_check_mark:

:counterclockwise_arrows_button: Converting an existing project to a table

If you’ve been using a project as a makeshift database (vendor list, asset register, client directory), you can now convert it to a table:

  1. Open the project
  2. Click the drop-down next to the project name
  3. Select Create table from project
  4. Choose what should be converted

Things to note before you convert:

  • Project-local custom fields: add local fields to the library if you still want them in your project
  • Task-only data: assignees, due dates, sections, completion status, subtasks and dependencies will get converted into custom fields (people, date, single-select, reference fields)
  • Automations & Forms: early testing did not copy these features into the resulting Table; this may be supported as a fast-follow. If forms will be supported, they will likely generate a new URL.
  • The original project: stays as is after conversion with the option to mark it as archived or not post conversion. You can convert a project to a table, multiple times.

:inbox_tray: Ways to import data

  • CSV import into a new or existing table
  • Forms that create records from submissions
  • API / MCP to create and update records programmatically

:locked_with_key: Permissions in a nutshell

  • Tables use Asana’s existing permission model, at both table and record level
  • Individual records can be shared with specific people
  • Lookups respect access: if you can’t see a record, you won’t see values looked up from it

Have you tried Tables yet? Share what you’re using them for, and let me know if you spot anything I’ve missed so we can keep this post updated, together. :raising_hands:

Richard Sather
Asana Solutions Partner & Forum Leader
:rocket: See all of our top tips & tricks on our website.

9 Likes

Great post, @Richard_Sather!

This is one thing I’ve wondered about but haven’t had a chance to ask Asana about. They are essentially doing this themselves, using a Customer table as a CRM in Asana Client Management. So do you know why they are saying “don’t do it”?

1 Like

Thanks, @Phil_Seeman and good point! But a true CRM requires 2-way reference fields (and a bunch of other stuf) that are still not available - perhaps that’s why?

1 Like

Terrific post, @Richard_Sather; thanks!

Re CRM caveat: This seems like Asana’s messaging to position Tables as more equivalent to a data structure (like a table in a lightweight database) than to a product (like a CRM or BI app) with higher-level product functionality.

2 Likes

I wonder if it will be an issue for folks that there’s no way to organize tables?

They exist at the workspace level. There are no folders or grouping objects like Teams and Portfolios that exist for projects. Nor tags allowed, nor custom fields at the table level (only at the record level).

The limited organization capabilities of teams and projects are a common complaint, and tables don’t even offer those.

3 Likes

Good point; that does make sense to me as what they are intending to convey.

3 Likes

Hi everyone,

With the Table feature recently added, I wanted to confirm its intended functionality.

Can this Table be used as a dynamic lookup reference within Asana Rules (similar to Zapier Tables or Airtable to query a value and dynamically route/assign tasks)?

Or is it purely a visual UI meant for users to view records manually?

Thanks!

2 Likes

To clarify, are you asking about the value of the table record itself, or of a field within that table? I’ll answer both parts. :wink:

For referencing the value of the table record itself, yes you can do this in an automation; you can reference the value of the record as part of a trigger or condition, and you can update the value in an action.

Regarding fields within the table record: fields in a table are not available for you to build this yourself, but if you build the automation using AI, you can reference table fields in a trigger or condition. What you can’t do, at least currently, is set/update a table field in an automation’s action. I.e. in an AI-based automation, you can read from a table’s fields but not write to them.

2 Likes

Thank you for posting this, I saw the tables feature last week and had so many questions!

For custom fields, do we know if there is a way for the “field availability” to be turned off by default for everyone in the org?

Since I could not find much info when I was “poking around” I converted a few projects into tables and then created my own from scratch. I quickly learned the project custom fields were added to my global library and had tons of repeats.

Looking at the settings, the “field availability” is under “Manage access” rather than in the first view of the custom field editor (if that makes any sense).

No - custom fields for a table must be in the organization custom field library, they can’t be local only to that table.

1 Like

Great information, thank you!

  1. I was wondering if we could do a lookup in rules/automation on the values for reading/overwriting related values. Also potentially using those related values extracted to update other custom fields or within text without using AI.

  2. I understand permission can be granted per record. How does it work when you have an automation add a record (if it can), is there a default permission that copies onto it? It would be really nice to be able to do permissions in a matrix, including columns, limiting view and write to values based on the intersection of rights.

Thanks!

1 Like

I think this is answered by my post above, but if not, please ask any specific follow-ups.

Unfortunately automations can’t currently create a new record in a table (although it might be possible via a script action, I haven’t tried that yet).