▶ Stepthrough Courses All tutorials Blog Glossary Prompts Videos Visual guides Cheat sheets Comparisons Start Learning Free

n8n: Turn Meeting Notes into Action Items in a Google Sheet

Practice it step by step

Start the free practice

You do every step yourself in a practice copy of n8n. It checks your work as you go, and “Do it for me” finishes any step you get stuck on. Free, about 15 minutes, and nothing touches your real accounts. Open full screen

Free · Live nown8n Automation Toolkitn8nGoogle SheetsOpenAI~15 min50 stepsBeginner

Updated . Built against the tool’s current screens and checked step by step. How we check this lesson

After a team meeting, somebody types up notes and somebody else is meant to turn them into a to-do list, and often nobody does. In this free lesson you use a practice copy of the n8n editor and build the workflow that does it. It reads meeting notes from a Google Sheet, asks OpenAI to list every action item as JSON with an owner and a due day, splits the list into one item per task, and appends one row per task to an Action Items sheet. You also learn the pattern that makes AI output usable in a spreadsheet: ask for JSON, then split the list apart.

At a glance

QuestionAnswer
What you buildBuild an n8n workflow that reads your meeting notes from a sheet, has AI pull out who agreed to do what by when, and adds one row per task to an Action Items sheet.
Toolsn8n
TimeAbout 15 minutes, 50 steps in 5 parts
LevelBeginner, no coding needed
CostFree
Ways to learn itPractice it step by step

The 5 parts, in short

  1. Start the workflow: Add the first step, Pick Trigger manually.
  2. Read the meeting notes: Add the next step, Search for Google Sheets, Pick Google Sheets, Pick Get row(s) in sheet, and 8 more steps.
  3. Find the action items with AI: Add the AI step, Search for OpenAI, Pick OpenAI, Pick Message a model, and 12 more steps.
  4. One row per task: Add the next step, Search for Split Out, Pick Split Out, Name the list to split, and 2 more steps.
  5. Save them to a sheet: Add the last step, Search for Google Sheets again, Pick Google Sheets, Pick Append row in sheet, and 10 more steps.

Start here first: Find and Use n8n Templates (module 1 of n8n Automation Toolkit)

In the course: Part 9 · n8n Automation Toolkit (Module 57 of the full course)

Part of: n8n Jump Start (step 5 of 7). Next up: n8n: Weekly Client Status Emails from a Google Sheet, Written by AI

The five steps

A manual trigger starts the workflow while you test. Get row(s) in sheet reads the meeting notes, one item per meeting. Message a model sends each meeting's notes to OpenAI and asks for the action items as JSON. Split Out turns the list of tasks into one item per task. Append row in sheet adds each task to an Action Items sheet. In our test, two meetings produced seven tasks.

Read the notes

Add Google Sheets and pick Get row(s) in sheet. Choose your Google credential, the Meeting Notes document and its tab, then click Execute step. The output shows one item per meeting with the fields Meeting, Date and Notes, and the whole Notes cell comes through even when it is long. The notes can be pasted in from any notes document or transcript.

Ask the AI for tasks in JSON

Add OpenAI and pick Message a model. Choose a model such as GPT-4.1-MINI and write a prompt that asks for JSON only, in a fixed shape: a list called tasks, each with a task, an owner and a due day. Pull the meeting name and notes into the prompt with double curly braces, then hover over the box and click Expression so n8n fills them in.

Under Options, Add option, Output Format, set Type to JSON Object. n8n then opens the answer for you, so the tasks arrive as a real list at output[0].content[0].text.tasks. In our test the first meeting gave four tasks and the second gave three, and the AI correctly left out a decision to skip a meeting because nobody had to act on it.

One row per task

Each meeting is still one item that holds a list, and a spreadsheet needs one row per task. Add Split Out and type the path to the list, output[0].content[0].text.tasks, in Fields To Split Out. Execute step returns seven items, each with task, owner and due.

Finally add Google Sheets again and pick Append row in sheet. Choose the Action Items sheet, whose row 1 holds the lowercase column names task, owner and due, and set Mapping Column Mode to Map Automatically. n8n matches fields to columns by name, so no field needs mapping by hand. Append adds rows on every run, so run it once per set of notes.

Links

Try it yourself, free

Reading the steps is a start. Doing them is how it sticks. The interactive module walks you through every click in a practice copy of n8n, checks each step, and never touches your real accounts.

Start “n8n: Turn Meeting Notes into Action Items in a Google Sheet”

Step by step: n8n: Turn Meeting Notes into Action Items in a Google Sheet

All 50 steps of the interactive module, in order. In the module you watch each one, then do it yourself in a practice copy that checks your work.

1. Start the workflow

  1. Add the first step. You opened a new, empty workflow in n8n and named it Meeting notes to action items. Click Add first step...

    You opened a new workflow in N eight N, and named it. It is empty.

  2. Pick Trigger manually. You will click a button to start it, which is perfect while you test. Click Trigger manually. The trigger lands on the canvas with nothing to set. Later you can swap it for a form, a schedule or an email.

    You will click a button to start it. That is perfect for testing. It lands on the canvas, with nothing to set.

2. Read the meeting notes

  1. Add the next step. Click the + on the right of the trigger.
  2. Search for Google Sheets. Type: Google Sheets. Your meeting notes live in a sheet, one row per meeting, with the columns Meeting, Date and Notes.

    Your meeting notes live in a sheet, one row for each meeting.

  3. Pick Google Sheets. Click Google Sheets.
  4. Pick Get row(s) in sheet. Click Get row(s) in sheet. This reads the meeting rows.

    That reads the meeting rows.

  5. Open the Credential list. n8n may have picked a credential for you already. Click the Credential box and check it is your own Google account.

    N eight N may already have picked a login.

  6. Pick your Google account. Pick My Google account, the one that owns the spreadsheet.

    Pick your Google account. The one that owns the spreadsheet.

  7. Open the Document list. Click the Document box.
  8. Pick the notes spreadsheet. Pick Meeting Notes, not the Action Items sheet. You will use that one at the end.

    Pick the meeting notes sheet. Not the action items sheet. That one comes at the end.

  9. Open the Sheet list. Click the Sheet box.
  10. Pick the tab. Pick Sheet1.

    Pick the tab.

  11. Check it can read the notes. Click Execute step. The OUTPUT shows 2 items, one per meeting, with the fields row_number, Meeting, Date and Notes. The whole Notes cell comes through, even when it is long.

    The output shows two items. One for each meeting. The whole notes cell comes through, even when it is long.

  12. Back to the canvas. Close the node with the X.

    Close the node.

3. Find the action items with AI

  1. Add the AI step. Click the + after Get row(s) in sheet.
  2. Search for OpenAI. Type: OpenAI
  3. Pick OpenAI. Click OpenAI, the first result.

    The first result.

  4. Pick Message a model. Click Message a model.
  5. Open the Credential list. n8n may pre-fill a credential whose key no longer works, and then the model list fails with 401 Authorization failed. Click the Credential box.

    N eight N may fill in a login whose key is dead. Then the model list fails.

  6. Pick your OpenAI account. Pick My OpenAI account, the credential with your working key.

    Pick your open A I login. The one with the working key.

  7. Open the Model list. Click the Model box.
  8. Pick GPT-4.1-MINI. Click GPT-4.1-MINI. It is quick, cheap and good at pulling facts out of text.

    It is quick, cheap, and good at pulling facts out of text.

  9. Write the prompt. Click the Prompt box and type the prompt. It asks for JSON in a fixed shape: a list called tasks, each with a task, an owner and a due day. The parts in curly braces pull the meeting name and notes from the row. Use Paste the prompt to skip the typing.

    It asks for a list of tasks, each with an owner and a due day. The curly braces pull in the meeting name and the notes.

    Read these meeting notes and list every action item someone agreed to do. Reply with JSON only, in this shape: {"tasks":[{"task":"...","owner":"...","due":"..."}]}. Use the person's first name for owner. Use the day or date said in the notes for due, or No date if none is given. Meeting: {{ $json.Meeting }}. Notes: {{ $json.Notes }}
  10. Switch the box to Expression. Hover over the Prompt box and click Expression. The braces turn green and the Result line shows the real meeting name and notes. Skip this and the AI gets the braces as plain text.

    Hover over the prompt box and click expression. The braces turn green. Skip this, and the A I gets the braces as plain text.

  11. Add the Output Format option. Scroll down to Options and click Add option. You want n8n to read the answer as data, not as one long block of text.

    You want N eight N to read the answer as data, not one long block of text.

  12. Pick Output Format. Click Output Format.
  13. Open the Type list. Click the Type box. It is empty and shows a red warning until you pick something.

    It shows a red warning until you pick something.

  14. Pick JSON Object. Click JSON Object. The prompt already says "JSON only", which this setting needs. Now n8n opens the answer for you, so the tasks arrive as a real list.

    The prompt already says J S O N only, which this needs. Now N eight N opens the answer for you.

  15. Run the AI step. Click Execute step. It takes a few seconds. The OUTPUT shows 2 items. Open text and you see a list called tasks: 4 tasks for the first meeting and 3 for the second. The AI runs again each time, so your wording may differ a little from ours.

    It takes a few seconds. There are two items. Four tasks for the first meeting, and three for the second. The wording may differ a little each time.

  16. Back to the canvas. Close the node with the X.

    Close the node.

4. One row per task

  1. Add the next step. Each meeting is still one item that holds a list. Click the + after Message a model.

    Each meeting is still one item that holds a list.

  2. Search for Split Out. Type: Split Out
  3. Pick Split Out. Click Split Out. It turns a list inside an item into separate items. It has no sub-menu, so the node opens straight away.

    It turns a list inside an item into separate items. It opens straight away.

  4. Name the list to split. Click Fields To Split Out and type: output[0].content[0].text.tasks That is the path to the list. In n8n you can instead drag tasks from the left panel. If you see an error about a field called "o", you clicked Execute before the typing finished: click it again.

    In the real editor you can drag tasks in from the left. If you see an error about a field called o, click execute again.

  5. Split the tasks apart. Click Execute step. The OUTPUT shows 7 items: one per task, each with the fields task, owner and due. Two meetings became seven rows of work.

    There are seven items. One for each task, with a task, an owner and a due day. Two meetings became seven rows of work.

  6. Back to the canvas. Close the node with the X.

    Close the node.

5. Save them to a sheet

  1. Add the last step. Click the + after Split Out.
  2. Search for Google Sheets again. Type: Google Sheets
  3. Pick Google Sheets. Click Google Sheets.
  4. Pick Append row in sheet. Click Append row in sheet. It adds a new row each time. Be careful not to pick Append or update row, which needs a column to match on.

    It adds a new row each time. Do not pick append or update row. That one needs a column to match.

  5. Open the Document list. This time the credential is already your Google account. Click the Document box.

    This time your Google account is already filled in.

  6. Pick the Action Items sheet. Pick Action Items. This is a different spreadsheet from the notes. Its row 1 holds three lowercase column names: task, owner and due.

    Pick the action items sheet. This is a different spreadsheet from the notes. Row one holds three column names. Task, owner, and due.

  7. Open the Sheet list. Click the Sheet box.
  8. Pick the tab. Pick Sheet1.

    Pick the tab.

  9. Open Mapping Column Mode. n8n loads your column names and starts on Map Each Column Manually. Click Mapping Column Mode.

    N eight N loads your column names. It starts on map each column manually.

  10. Pick Map Automatically. Click Map Automatically. A note says the incoming fields must be named the same as the sheet columns. They are: task, owner and due. That is why the columns are lowercase.

    A note says the fields must be named the same as the sheet columns. They are. Task, owner, and due.

  11. Add the tasks to the sheet. Click Execute step. n8n adds 7 rows to the Action Items sheet. Each run adds rows again, so do not click it twice or you will have duplicates.

    N eight N adds seven rows to the sheet. Each run adds rows again. So do not click it twice, or you will get duplicates.

  12. Back to the canvas. Close the node with the X.

    Close the node.

  13. Open the Action Items sheet. Click the Action Items - Google Sheets tab. Seven tasks, each with an owner and a due day, in the order the meeting discussed them. The "skip the status meeting" decision was correctly left out, because nobody agreed to do anything.

    Seven tasks, each with an owner and a due day. The decision to skip a meeting was left out, because nobody agreed to do anything.

  14. Back to n8n. Click the n8n tab. The workflow works, but it is not published and it starts from a button. To run it after every meeting, you would swap the trigger for a form or a new-row trigger, then Publish. Read the AI tasks before you rely on them.

    Go back to the N eight N tab. The workflow works. It is not published, and it starts from a button. Read the tasks the A I found before you rely on them.

Frequently asked questions

Why use JSON Object output instead of plain text?
Plain text comes back as one block that you would have to parse. With Output Format set to JSON Object, and a prompt that asks for JSON in a fixed shape, n8n opens the answer for you, so the tasks arrive as a real list you can split into rows.
What does Split Out do?
It takes a list inside an item and turns each entry into its own item. Two meetings, each holding a list of tasks, become seven items, one per task, which Google Sheets can store as seven rows.
Why did Map Automatically work without mapping any columns?
It matches the incoming field names to the sheet's column names. The fields are task, owner and due, and the sheet columns are task, owner and due. If your columns are named differently, rename them or use Map Each Column Manually.
Will I get duplicate rows if I run it twice?
Yes. Append row in sheet adds new rows on every run, and the AI may word a task slightly differently each time. Run it once per set of notes.
Can the AI miss a task?
It can, or it can misread who owns something. Skim the Action Items sheet after each meeting, and keep the notes clear about who agreed to do what.

Start this module free

More in n8n Automation Toolkit

All 7 modules in n8n Automation Toolkit

More n8n tutorials

From the blog

All blog posts

Plain-English definitions, each with an example from a free lesson.

The full AI glossary

Browse related tutorials