Dividend Tracker Spreadsheet: Free Template With Live Dividend Data
By SmarterDividends Team · November 6, 2026 · Updated November 6, 2026
A dividend tracker spreadsheet is a sheet with one row per holding and columns for shares, cost basis, annual dividend, income, yield, yield on cost and the next ex-dividend and pay dates. The problem, as of November 2026, is data: Google's GOOGLEFINANCE function returns prices but no dividend, yield or ex-dividend figures, which is why most templates rely on numbers typed in by hand and quietly go stale. The free SmarterDividends API fixes that with one IMPORTDATA formula per ticker, returning the annual dividend, forward yield, next ex-date and pay date, payout ratio, safety grade and growth streak in a single row, with no API key.
This guide gives you the full column layout, every formula, a monthly income view and a free starter template.
Where the data can come from
| Data source | Price | Dividend and yield | Ex-date and pay date | Safety grade | Cost |
|---|---|---|---|---|---|
| Typing it in | You type it | You type it | You type it | No | Free, plus your time |
| GOOGLEFINANCE (Google Sheets) | Yes, may be delayed up to 20 minutes | No | No | No | Free |
| SmarterDividends API with IMPORTDATA | Yes | Yes | Yes | Yes (A–F) | Free with attribution |
The column layout
Start with one tab called Holdings. Row 1 holds the headers, and each holding gets its own row from row 2 down. The formulas below are for row 2; copy them down.
| Col | Header | What goes in it | Formula (row 2) |
|---|---|---|---|
| A | Ticker | The symbol, such as KO | Typed |
| B | Shares | Shares you own | Typed |
| C | Cost basis | What you paid per share | Typed |
| D | Price | Current share price | =GOOGLEFINANCE(A2,"price") |
| E | Annual dividend per share | Next 12 months at the current rate | Typed, or from the API (below) |
| F | Annual income | What the holding pays you a year | =B2*E2 |
| G | Yield | Current yield at today's price | =IFERROR(E2/D2,"") |
| H | Yield on cost | Yield on what you paid | =IFERROR(E2/C2,"") |
| I | Next ex-date | Last day to buy is the business day before | Typed, or from the API |
| J | Next pay date | When the cash lands | Typed, or from the API |
| K | Safety grade | A–F | From the API |
| L | Growth streak | Consecutive years of raises | Typed, or from the API |
Format G and H as percentages (Format, Number, Percent). For portfolio totals, put these anywhere below or on a summary tab:
- Total annual income:
=SUM(F2:F200) - Average monthly income:
=SUM(F2:F200)/12 - Portfolio yield:
=SUM(F2:F200)/SUMPRODUCT(B2:B200,D2:D200) - Portfolio yield on cost:
=SUM(F2:F200)/SUMPRODUCT(B2:B200,C2:C200)
If you add to a position at a different price, use your average cost per share in column C. Your broker's cost basis page shows it.
Why most dividend spreadsheets go stale
Google's own documentation for GOOGLEFINANCE lists the attributes it can return: price, priceopen, high, low, volume, marketcap, tradetime, datadelay, volumeavg, pe, eps, high52, low52, change, beta, changepct, closeyest, shares and currency, plus open, close, high, low and volume for history. There is no dividend, yield or ex-dividend attribute. Google also notes quotes may be delayed up to 20 minutes and are not for trading purposes.
So columns E, I, J, K and L in nearly every free template are typed by hand. Companies raise their dividends once a year, ex-dates move every quarter, and a cut can happen at any board meeting. A sheet that was right in January is wrong by spring, and nothing in it tells you so.
Pull live dividend data with IMPORTDATA
The free SmarterDividends dividend API has a spreadsheet format. Add ?format=csv to a stock lookup, and Google Sheets can read it with IMPORTDATA:
=IMPORTDATA("https://smarterdividends.com/api/v1/stocks/KO?format=csv&header=0")
That returns one row for Coca-Cola. With a ticker in A2, build the URL from the cell instead:
=IMPORTDATA("https://smarterdividends.com/api/v1/stocks/"&A2&"?format=csv&header=0")
&header=0 leaves out the header row, so each formula fills exactly one row. Leave it off if you want the column names on top. The row's columns come back in this order:
| # | Column | Example (KO, November 6, 2026) | Notes |
|---|---|---|---|
| 1 | symbol | KO | |
| 2 | name | The Coca-Cola Company | |
| 3 | price | 95.73 | |
| 4 | forward_yield | 0.0221 | A decimal: 0.0221 means 2.21% |
| 5 | annual_dividend | 2.12 | Per share, per year |
| 6 | frequency | quarterly | monthly, quarterly and so on |
| 7 | next_ex_date | 2026-12-01 | Blank when none is declared |
| 8 | next_pay_date | 2026-12-15 | Blank when none is declared |
| 9 | payout_ratio | 0.6195 | A decimal: 0.6195 means 61.95% |
| 10 | growth_streak_years | 55 | Consecutive years of raises |
| 11 | safety_grade | A | A–F |
| 12 | fair_value | 47.1805 | Our fair-value estimate |
| 13 | valuation | overvalued | Our verdict against fair value |
| 14 | as_of | 2026-11-06 | Date of the data |
There's no API key and no sign-up. The data is free to use with attribution, which means a link to smarterdividends.com somewhere in your sheet (a note in the header row is fine). It covers U.S.-listed stocks, ETFs and funds, and tickers are not case sensitive. For share classes, use a dash, as in BRK-B. The full reference is in the API docs.
Formatting tip: select the forward_yield and payout_ratio columns and format them as percentages, and 0.0221 displays as 2.21%.
A layout that uses it
The quickest live tracker puts your own inputs on the left and lets IMPORTDATA fill everything to the right.
| Col | Header | Contents (row 2) |
|---|---|---|
| A | Ticker | Typed |
| B | Shares | Typed |
| C | Cost basis | Typed, per share |
| D to Q | API data (14 columns) | =IF(A2="","",IMPORTDATA("https://smarterdividends.com/api/v1/stocks/"&A2&"?format=csv&header=0")) in D2 only |
| R | Annual income | =IFERROR(B2*H2,"") |
| S | Yield on cost | =IFERROR(H2/C2,"") |
| T | Market value | =IFERROR(B2*F2,"") |
The formula in D2 spills across D through Q: D is symbol, E name, F price, G forward yield, H annual dividend, I frequency, J next ex-date, K next pay date, L payout ratio, M growth streak, N safety grade, O fair value, P valuation and Q as-of date. Type the headers for D1 to Q1 yourself, or put the version without &header=0 in a spare row once to copy them.
A few things keep it tidy:
- Leave D through Q empty apart from the formula in column D. If anything sits in a cell the import needs, Sheets shows a #REF! error instead of the data.
- The
IF(A2="","",...)wrapper stops empty rows from calling the API, so you can copy the formula down 100 rows ahead of time. - A misspelled or unsupported ticker returns an error in that row only. Fix the ticker and the row fills in.
Your totals then become =SUM(R2:R200) for annual income, =SUM(R2:R200)/SUM(T2:T200) for portfolio yield, and =SUM(R2:R200)/SUMPRODUCT(B2:B200,C2:C200) for yield on cost.
Keeping the 12-column layout instead
If you prefer the compact layout from the first table, put the imports on a second tab. On a tab named Data, enter =Holdings!A2 in A2 and the IMPORTDATA formula (pointing at Data!A2) in B2, so the API row spills across B to O. Then pull fields back into Holdings with VLOOKUP, where the number is the column's position in the list above:
- Price (D):
=VLOOKUP($A2,Data!$B:$O,3,FALSE) - Annual dividend per share (E):
=VLOOKUP($A2,Data!$B:$O,5,FALSE) - Next ex-date (I):
=VLOOKUP($A2,Data!$B:$O,7,FALSE) - Next pay date (J):
=VLOOKUP($A2,Data!$B:$O,8,FALSE) - Safety grade (K):
=VLOOKUP($A2,Data!$B:$O,11,FALSE) - Growth streak (L):
=VLOOKUP($A2,Data!$B:$O,10,FALSE)
Still one import per ticker, and your main tab stays readable.
A monthly income view
Annual income is the headline, but most people plan in months. Using the live layout above, add a helper column for payments per year, then twelve month columns.
In U2:
=SWITCH(I2,"monthly",12,"quarterly",4,"semiannual",2,"semi-annual",2,"annual",1,"weekly",52,0)
Put the numbers 1 to 12 in V1 through AG1 (1 is January). Then in V2:
=IFERROR(IF($U2>=12,$R2/12,IF(AND($K2<>"",MOD(V$1-MONTH($K2),12/$U2)=0),$R2/$U2,0)),0)
Copy V2 across to AG2 and down your rows. Each cell shows the income that holding should pay in that month. Monthly and weekly payers spread evenly across the year. Quarterly, semiannual and annual payers land in the months that line up with their next pay date. Total each month with =SUM(V2:V200) at the bottom, and a column chart of that row shows your thin months at a glance.
Treat it as an estimate. It assumes the current dividend and schedule continue, and companies do shift pay dates. When a holding has no declared pay date yet (Realty Income, a monthly payer, showed none in our data on November 6, 2026), monthly payers still fill in, but quarterly payers show zero until the next date is announced. If you want to fill gaps in the calendar, monthly dividend stocks are the usual answer, and the dividend income calculator shows what a monthly target takes.
In Excel
Excel reads the same URL through Power Query. Go to Data, From Web, paste https://smarterdividends.com/api/v1/stocks/KO?format=csv, and load it. Excel creates a small table for that ticker. Right-click it and choose Refresh to update, or set a refresh interval in the query's properties.
Power Query creates one query per URL, so this suits a short list of holdings. For a long list, Google Sheets with the IMPORTDATA layout is less work. The income, yield and yield-on-cost formulas above work the same way in Excel.
Limits to know
- IMPORTDATA refreshes about once an hour. That suits a dividend tracker, since dividends change slowly, but don't use the sheet for intraday prices.
- Google limits the number of import calls per sheet. If a big sheet shows "Loading..." or errors on some rows, split holdings across two spreadsheets or use the Data-tab layout so each ticker is imported once.
- Every row carries an as_of date. Check it if something looks off.
- The safety grade and fair value are our estimates, not guarantees. We publish how the grades did against every recorded cut in our safety track record.
Download the free template
Our dividend tracker template is a CSV you can import into Google Sheets (File, Import, Upload) or open in Excel. It has the 12 columns from the first table and three example rows (Coca-Cola, Johnson & Johnson and Realty Income) filled with our data as of November 6, 2026, using made-up share counts and cost basis.
The example rows hold plain values, so after importing, replace the Annual Income, Yield and Yield on Cost cells with the formulas from the column table, and swap in the IMPORTDATA or VLOOKUP formulas if you want the dividend columns to stay current. Delete the example rows, add your own tickers, and you have a working tracker.
When a spreadsheet stops being enough
A sheet does income, yield and dates well. It struggles with three things.
It can't warn you. Nothing in a spreadsheet emails you the morning a company cuts its dividend, and you only find out the next time you open it and notice the number changed. Our weekly dividend changes page lists every raise and cut if you want to check by hand.
It needs you to look. Safety grades sit in a column, but reading 40 of them every month is a chore. SmarterDividends data shows that only 8% of graded dividend stocks are rated D or F, yet 52% of the cuts recorded since April 2026 came from companies graded D or F beforehand (as of November 6, 2026). An app that flags those few holdings for you does the looking.
It doesn't sync with your broker. Every trade means another manual edit.
When those start to bite, an app is the next step. SmarterDividends free tracks up to 10 holdings; Pro ($99 a year as of November 6, 2026) adds unlimited holdings, a safety grade on every holding and email alerts on raises and cuts, though holdings are pasted or uploaded by CSV rather than synced. If automatic broker sync matters more, Snowball Analytics does that on its paid plans. We compare the methods in best way to track dividends, the free plans in best free dividend tracker, and every app side by side on our dividend tracker comparison.
How we wrote this guide
The column order, formula syntax and example values come from our own API on November 6, 2026. The GOOGLEFINANCE attribute list comes from Google's documentation for the function, checked the same day. SmarterDividends is our product, and the API is ours, so we have an interest in you using it. The layout works just as well with dividends typed in by hand.
Quick decision guide
- If you own a few holdings and enjoy tinkering, build the live layout above.
- If you just want a starting point, download the template.
- If you want an alert when a dividend is cut, use an app with alerts instead of a sheet.
- If you'd like an AI assistant to read the same data, connect our free MCP server.
For informational purposes only, not investment advice.
The dividend market by the numbers
Data as of · Source: SmarterDividends data
- As of Nov 8, 2026, SmarterDividends tracks 3,086 U.S.-listed stocks, ETFs and funds that pay a dividend.
- As of Nov 8, 2026, the median forward dividend yield among U.S.-listed dividend-paying stocks with a market value of at least $500 million is 2.54%.
- As of Nov 8, 2026, 110 U.S.-listed stocks in SmarterDividends' data have raised their dividend for 25 or more consecutive years.
- In the 30 days to Nov 8, 2026, 147 U.S.-listed companies raised their regular dividend and 3 cut it, by ex-dividend date. That is 49.0 increases for every cut.
- In the seven days from Nov 8, 2026, 362 U.S.-listed dividend payers tracked by SmarterDividends have an ex-dividend date.
Cite this page
SmarterDividends, "Dividend Tracker Spreadsheet: Free Template With Live Dividend Data," updated Nov 8, 2026, https://smarterdividends.com/blog/dividend-tracker-spreadsheet
Frequently Asked Questions
Does GOOGLEFINANCE return dividend data?
No. Google's documentation for the GOOGLEFINANCE function lists attributes such as price, pe, eps, high52, low52, marketcap and beta, but no dividend, yield or ex-dividend attribute. Dividend figures in a Google Sheets tracker have to be typed in or imported from another source.
How do I get dividend data into Google Sheets?
Use IMPORTDATA with the free SmarterDividends API. With a ticker in cell A2, =IMPORTDATA("https://smarterdividends.com/api/v1/stocks/"&A2&"?format=csv&header=0") returns one row with the price, forward yield, annual dividend, payment frequency, next ex-dividend and pay dates, payout ratio, growth streak, safety grade, fair value and as-of date. No API key is needed.
What columns should a dividend tracker spreadsheet have?
A useful layout has Ticker, Shares, Cost basis per share, Price, Annual dividend per share, Annual income, Yield, Yield on cost, Next ex-date, Next pay date, Safety grade and Growth streak. Annual income is shares times the annual dividend, yield is the annual dividend divided by price, and yield on cost is the annual dividend divided by cost basis per share.
How do I calculate yield on cost in a spreadsheet?
Divide the annual dividend per share by the price you paid per share. If the annual dividend is in column E and cost basis per share is in column C, the formula in row 2 is =E2/C2, formatted as a percentage. A stock bought at $40 that pays $2.40 a year has a 6% yield on cost.
Can I use the SmarterDividends dividend data in Excel?
Yes. In Excel, use Data, From Web and paste the same URL, for example https://smarterdividends.com/api/v1/stocks/KO?format=csv. Power Query loads the row into a table that you can refresh. The data is free to use with attribution, meaning a link to smarterdividends.com.
How often does IMPORTDATA refresh?
Google Sheets refreshes IMPORTDATA results about once an hour. Google also limits the number of import calls one spreadsheet can make, so very large sheets may show loading errors on some rows.
Track your dividend income
Build a portfolio, project a year ahead, and see every upcoming payment. It's free.
Open the dashboardFor informational purposes only. Not investment advice.
