Build Dashboards and Kanban Boards with the Google Sheets Canvas Tool

With the new Sheets Canvas feature, we can build professional-looking interactive dashboards directly in our Google Sheets, using nothing more than natural language prompts. It’s a huge upgrade from how we used to build dashboards in Sheets.

Sheets Canvas to build a professional dashboard

Previously, we clumped together charts and used formatting tricks such as borders and background cell colors to try and recreate a professional look. It was all rather challenging and time-consuming, with limited interactive options. (Read this post to see what I mean.)

Alternatively, we might have connected Google Sheets to a third-party tool, but these incurred extra costs, introduced security risks, and were often still pretty janky.

In this post, we are going to take a look at this new Sheets Canvas feature.

Sheets Canvas Availability

At the time of writing (August 2026), the Sheets canvas feature is only available to Google Workspace customers on Business or Enterprise Standard and Plus plans, or AI Pro for Education add-on subscribers, or to consumers on Google AI Pro and Ultra plans.

How To Build A Dashboard with Sheets Canvas

Firstly, you need to have your data ready to go in a Google Sheet, preferably in a Tables format, which is best for Gemini.

Secondly, it pays to think about your dashboard design before you start building it.

That way, you won’t end up building something that isn’t useful. Instead, you plan what information will be shown on the dashboard and how it will work, which will result in a more successful outcome.

For example, ask yourself these questions:

  • What are the key metrics to show?
  • Who is the intended audience for this dashboard?
  • How technically literate are they? Will they understand how to read complex charts?
  • How familiar are they with this data and its background context?

With your data and design plan to hand, you’re ready to start creating a Sheets Canvas.

There are three entry points:

  1. From the toolbar: Insert > Canvas
  2. Using the “Create a canvas” button in the bottom left of your Sheet, next to the Sheet names.
    (Both 1 and 2 open the Gemini sidebar with the Canvas option pre-selected.)
  3. You can select “Create canvas” directly in the Gemini sidebar too.

1. Insert menu:

Toolbar menu to insert a Sheets Canvas

2. Create a canvas button:

Insert button for Canvas feature in Google Sheets

3. Create canvas in Gemini Sidebar:

Canvas feature in Gemini sidebar of Google Sheet

With Gemini sidebar open and the canvas feature selected, make sure you select the correct dataset(s) for the dashboard.

Use the button next to the Canvas option and choose the sheet containing your data. If you already have that sheet open, then it will automatically be selected, and you can deselect the other sheets if you don’t need them.

Select data in Sheets Canvas

Now you’re ready to insert your prompt.

Example 1: Real Estate Dashboard

Consider this dataset of real estate transactions:

Real Estate data in Google Sheets

Here’s an example prompt to build a dashboard for this data:

Build a comprehensive real estate transaction dashboard to track performance, commissions, and lead generation. Include the following elements:

1. Key Performance Indicators (KPIs): Calculate the total sum of Sales Price, Commission Income, Agent Commission, and Net Profit for Tax for all “Closed” and “Paid” deals.

2. Agent Performance: Create a summary table or chart showing the total Commission Income and Net Profit generated by each Agent.

3. Lead Source Analysis: Create a bar chart breaking down total Sales Price and total number of transactions by Lead Source to see which marketing channels are most effective.

4. Buyer vs. Seller Split: Create a visual breakdown comparing the number of transactions and total Commission Income based on the Deal Side (Buyer vs. Seller).

5. Deal Pipeline: Provide a quick count of transactions categorized by Deal Status to show how many deals are currently pending versus closed.

Please format this with a clean, professional layout, using bold headers for each section and placing the charts logically next to the summary tables. 

Use hex color #0F9E59 as the primary color and #9E0F9C as the secondary color.

Pro Tip: Save your best dashboard prompts in a prompt library for future reuse.

Typically, Gemini takes a few minutes to build the dashboard, depending on how complex your prompt is.

The output for the real estate data example looks like this:

A real estate dashboard built using Google Sheets Canvas

Notice how the colors match the colors mentioned in the prompt (#0F9E59 as the primary color and #9E0F9C as the secondary color).

Also, notice the “Add New Deal” button in the top right corner. When you click this, it opens a pop-up with a form to add new deals:

Add new data button in Sheets Canvas

This data is inserted directly into your original data table in Google Sheets. It’s a great way for users to add new data without leaving the dashboard view, and it saves users from needing to navigate the data in the spreadsheet itself.

At the the top of the canvas is a small edit bar for making changes, sharing, or deleting the canvas:

To use the “Copy link” button to share the canvas, you need to first grant file access (through the regular “Share” button in the top right of your Google Sheet) to anyone you want to share the canvas with.

Example 2: Kanban Board

The Sheets canvas tool is not limited to regular dashboards, though.

It can also build interactive Kanban boards, which is my favorite use case and a killer feature.

Build a Kanban board in Google Sheets with the Canvas feature.

Kanban boards are visual project management tools that organize tasks into columns and allow you to drag and drop cards between these columns.

Previously, this sort of interactivity was impossible inside of Google Sheets, but now with this new Sheets Canvas feature, you can build a fully featured Kanban board with a single prompt.

For example, here is a client pipeline data set for training contracts:

Sales Data Pipeline in Google Sheets

And here’s an example prompt to generate a Kanban board from this data:

Please generate a Kanban board layout with the following specifications:

1. Structure: Group the data using the “Stage” column.

2. Card Details: Under each Stage header, create individual “cards” or grouped cells for each transaction. Each card should display the most critical information at a glance:

  • Company & Client Name
  • Deal Size & Expected Value

3. Formatting:

  • Please apply conditional formatting or color-coding to the cards based on the “Probability” column (e.g., green for high probability, yellow for medium, red/gray for low) so I can easily identify which deals are most likely to close.
  • Ensure the layout is clean and minimalist.

The output from this prompt looks something like this:

Kanban Board in Sheets Canvas

You can then drag these cards into different columns as needed to show progress. When you drag a card into a new column, the data in the underlying sheet also updates to reflect that, so they are always synced in real time.

And as with the dashboard from earlier, there is also a button to add new data from the Kanban canvas rather than having to go back to the actual spreadsheet data.

Here are 6 more mini apps you can create with Sheets canvas.

Limitations

At the moment, if you want to modify the dashboard generated by the Sheets Canvas tool, you give it an additional prompt in the Gemini sidebar. For example, you might prompt Gemini with “change the leads pie chart into a bar chart“.

Unfortunately, when Gemini updates the dashboard, other elements might inadvertently change too.

I think the real breakthrough will come when we can click on individual features within the Dashboard or Kanban board and give specific instructions to modify that specific feature only with a prompt. Hopefully that is something coming down the line.

Conclusion

This new Sheets Canvas feature is a fantastic tool that dramatically expands the possibilities of what you can do with data in Google Sheets.

And, whilst the regular chart tool will remain extremely useful for specific analysis and one-off charts, the old way of building dashboards is rapidly becoming obsolete.

I can’t imagine spending hours manually positioning charts, hand-picking background cell colors and borders, and all manner of other dark arts, to build a dashboard the old way, knowing it wouldn’t even look half as good as what this new canvas tool can build in a few minutes.

If you have access to this canvas tool, then I encourage you to experiment with it to build your dashboards.

Making Google Sheets look less like… Google Sheets

This is a guest post from Josh Cottrell-Schloemer.

Google Sheets is an incredibly powerful spreadsheet tool for pulling, processing, and presenting data. But many people don’t realize that you can also use it to build interactive dashboards.

With a bit of creativity we can go from this:

Dashboard Data Table in Google Sheets

To this:

Google Sheets Dashboard

The skills to build this type of dashboard aren’t difficult to learn and you can get started with a basic knowledge of Google Sheets.

Here’s a walkthrough of the dashboard shown above:


Continue reading Making Google Sheets look less like… Google Sheets

Dashboard Design Checklist: From a Blank Google Sheet to Business Insights

Dashboard design is hard.

You start with a blank canvas, or a blank Google Sheet in this case, and you have to somehow turn that into business insights, which will grow your bottom line, make your organization more efficient or help you understand your customers better.

Dashboard design process
Notice the blank sheet is Draft 1 and the final dashboard is Draft 4. It’s an iterative process. Click to open larger image in new browser tab.

The blank screen stares back at you, waiting for you to do something.

It feels overwhelming.

You clasp your hands around the back of your head, lean back in your chair and rue the day you mentioned building a dashboard to your boss.

It was supposed to be easy. Easy to create a masterpiece, a thing of beauty to wow your team.

Meanwhile, that blank Sheet continues to stare back at you, emptier than ever.

Dashboard design starts with a blank Google Sheet
Dashboard design starts with a blank Google Sheet

Continue reading Dashboard Design Checklist: From a Blank Google Sheet to Business Insights

How to build a real-time sales dashboard for E-junkie using Google Sheets and Apps Script

It’s day two of a four day product launch. You’ve worked hard all year to create a fantastic product, test your sales systems and tell the world about this amazing offer. You know you’ve sold 100 products so far, but…

…you don’t know whether your ads are effective, which affiliates are really killing it versus which have forgotten about your launch, or even whether your own emails are converting.

Looking at your sales log only, and having to decipher what’s happened since the last time you looked an hour ago, is like trying to drive in the dark without headlights.

Thankfully there is a better way to track your sales, so you can see your data, get insights about what’s working and what’s not, and immediately act to increase your bottom line.

This post looks at how to build a real-time dashboard for the E-junkie digital sales platform using Google Sheets:

Google Sheet e-junkie real-time dashboard
Google Sheet e-junkie real-time dashboard (fictitious data)

Want your own copy of this dashboard?
Click here to access your copy of this template >>

E-junkie is a digital shopping cart, used for selling digital products and downloads. The system handles the shopping cart mechanics, but does not do any data analytics or visualizations.

You can view a transaction log (i.e. a list of all your sales) but if you want to understand and visualize your sales data, then you’ll need to use another tool to do this. Google Sheets is a perfect tool for that.

You can use a Google Sheet to capture sales data automatically in real-time and use the built-in charts to create an effective dashboard.

You’d be crazy not to have a tracking system set up, to see and understand what’s going on during sales events or product launches. This E-junkie + Google Sheets solution is effective and incredibly cheap ($5/month for E-junkie and Google Sheets is free).

The Write Life ran a Writer’s Bundle sale this year, during the first week of April. It’s a bundled package of outstanding resources for writers, including ebooks and courses, heavily discounted for a short 4-day sales window.

I created a new dashboard for The Write Life team to track sales and affiliates during the entire event. This year’s dashboard was a much improved evolution of the versions built for the Writer’s Bundle sales in 2014 (which, incidentally, was my first blog post on this website!) and 2015.

The biggest improvement this year was to make the dashboard update automatically in real-time.

In previous years, the dashboard was updated every 3 hours when new data was manually added from a download of E-junkie sales data. This time, using Apps Script, I wrote a script and set up E-junkie so that every sale would immediately appear in my Google Sheet dashboard.

So, it truly was a real-time dashboard.

Animated e-junkie sales chart in Google Sheets
Animated chart showing fictitious sales data during a flash sale

The real-time dashboard in Google Sheets

Here’s the final dashboard, annotated to show the different sections:

Annotated Google Sheets dashboard
Annotated Google Sheets dashboard with fictitious data (click to enlarge)

There are too many steps to detail every single one, but I’ll run through how to do the E-junkie integration in detail and then just show the concepts behind the Google Sheet dashboard setup.

How to get data from E-junkie into Google Sheets

New to Apps Script? Check out my primer guide first.

Open up a new Google Sheet and in the code editor (Tools > Script editor…) clear out any existing code and add the following:

function doPost(e) {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheetByName('Sheet1');
  
  if (typeof e !== 'undefined') {
    var data = JSON.stringify(e);
    sheet.getRange(1,1).setValue(data);
    return;
  }
}

Save and then publish it:

Publish > Deploy as a web app...

and set the access to Anyone, even anonymous, as shown in this image:

access Google sheets web app

You’ll be prompted to review permissions:

Apps script review permissions

followed by:

Apps script confirm permissions

Click Allow.

This is a one-time step the first time you publish to the web or run your script.

Now we want to test this code by sending a POST request method to this Sheet’s URL to see if it gets captured.

We’ll use a service called hurl.it to send a test POST request.

Open hurl.it, select the POST option in the first dropdown menu, add the URL of your published sheet into the first text box and, for good measure, add a parameter, like so (click to open large version):

Hurl to test POST request

Click “Launch Request”, head back to your Google Sheet and you should now see some data in cell A1 like this (click to open large version):

POST data in Google Sheet

where the data is something like this (the custom parameter shown in red):

{"parameter":{"testValue":"Ben"},"contextPath":"","contentLength":13,"queryString":null,"parameters":{"testValue":["Ben"]},"postData":{"type":"application/x-www-form-urlencoded","length":13,"contents":"testValue=Ben","name":"postData"}}

Voila! The data sent by the POST action is sitting pretty in our Google Sheet!

It’s essentially exactly the same mechanics for the E-junkie example.

So now we know it’s working, let’s change the Sheet and the code to handle E-junkie data.

For the Sheet: Delete the data in cell A1, and add a row of headings that match the headings in lines 12 to 33 of the code below (omitting the data.):

E-junkie Google Sheet set-up

(This screenshot doesn’t show all the columns, some are off-screen to the right.)

For the code: Delete all the previous code and replace with this (note that I’m still referring to Sheet1, so if you’ve changed the name of your Sheet to something else you’ll need to change it in the code on line 4 as well):

function doPost(e) {
  
  var ss= SpreadsheetApp.openById("<Sheet ID>");
  var sheet = ss.getSheetByName("Sheet1");
  
  var outputArray = [];
  
  if(typeof e !== 'undefined') {
    var data = e.parameter;
    
    outputArray.push(
      data.ej_txn_id,
      data.invoice,
      data.payment_date,
      data.item_name,
      data.from_email,
      data.receiver_email,
      data.discount_codes,
      data.mc_gross,
      data.payment_type,
      data.payer_id,
      data.payer_email,
      data.first_name,
      data.last_name,
      data.residence_country,
      data.payer_status,
      data.payment_status,
      data.payment_gross,
      data.affiliate_id,
      data.item_affiliate_fee_total,
      data.mc_currency,
      data.payer_business_name,
      data.payment_fee
    );
    
    sheet.appendRow(outputArray);
  }
  
  return;
}

Here’s the e-junkie code on GitHub.

Save your code and update the published web app (Publish > Deploy as a web app… and click Update).

Copy this updated application URL to your clipboard. Log in to E-junkie and navigate to Edit Preferences:

E-junkie menu

Paste in your URL into the Custom/Third-Party Integration Common Notification URL text box:

E-junkie custom integration

And that’s it!

Whenever you make a sale through E-junkie, you should now see the data show up in your Sheet.

Further reading on the E-junkie integration: Official E-junkie integration documentation

Thanks:

Thanks to Google Developer Expert Riël Notermans who pointed out how to fix the redirect issue I was dealing with in earlier versions of the script.

Thanks to all the kind folks on Stack Overflow who helped me get this working.

Build Business Dashboards With Google Sheets

Digital marketing dashboard in Google Sheets
Learn how to build beautiful, interactive dashboards in my online course.
9+ hours of video content, lifetime access and copies of all the finished dashboard templates.
Learn more

How I created the dashboard in Google Sheets with E-junkie data

Really the crux of this whole example was getting the E-junkie data into my Google Sheet in real-time. Once I had that up and running, I was free to do anything I wanted with the data.

Data staging

The E-junkie sales data looked like this in my Google Sheet once the transactions started to come in (blurred to hide details):

E junkie data

From this raw data, I created a staging table for the line tracking chart:

staging table for line chart

This table was driven by checking whether the hour date in column E of the current row (green) was less than the current time and then counting sales up to that point. The 2014 and 2015 datasets were included for reference.

The extra columns J, K and M were created for the chart annotations (see how to create an annotated line graph in Google Sheets).

To ensure everything updated in near real-time, I changed the calculation settings (File > Spreadsheet settings... > Calculation) to: On change and every minute

Progress tracking chart

The line tracking chart showed progress during the sale period, against the 2014 and 2015 benchmarks.

In action, it looked like this (showing fictitious data, and sped up to show progress through the sale period):

Animated Apps Script chartAnimated Apps Script chart
Read more about how the progress tracking line chart was created (including animation) here.

Revenue/profit bar chart

The revenue/profit chart was a standard bar chart showing total revenue and total profits against the target metrics (fictitious numbers):

Revenue and Profit bar chart

Sales channel metrics

The lower portion of the chart was a breakout of all the different sales channels we tracked, everything from individual emails, to ads (Facebook and Pinterest) and different affiliates.

Every one of these channels had their own row, showing the actual sales performance against that channel’s projected sales (click to view larger version; numbers are fictitious):

Example of sales data

The key formula driving this section of the dashboard was a simple COUNTIF formula, labeled 1 above, which counted the number of sales in the E-junkie dataset attributed to this channel:

=COUNTIF('ejunkie staging data'!$S$4:$S,D25)

The sparkline formula for the green bar charts, labeled 2 above, was:

=IF(J25=0,"",SPARKLINE(J25,{"charttype","bar";"max",MAX($G$25:$G$36);"color1","#4caf50"}))

Note: both of these formulas work for the data in row 25.

In action

One fun thing we did with the dashboard this time around, which I’d never done previously, was to show it full screen on a big TV during the sale, using an Apple TV and AirPlay:

Google Sheet e-junkie dashboard on big screen

Cool! 🙂

6 advanced techniques to master in Google Data Studio

Google launched a new business intelligence tool called Data Studio in May 2016. It’s a really smart reporting tool for quickly creating powerful, stunning dashboards from multiple Google data sources.

It’s a great option for small/medium businesses already using Google tools, who want to build bespoke dashboards for that 40,000ft view of their business.

Google Data Studio Example Reports

Here are two example reports for a mid-size website (~500k pageviews a month).

Firstly, a mobile performance dashboard:

Data Studio Mobile Performance Dashboard Continue reading 6 advanced techniques to master in Google Data Studio