Skip to content
English
  • There are no suggestions because the search field is empty.

Understanding the Google Sheets integration

Unlike other integrations there are some nuances to how Google Sheets are synced with your Sked Ideas. Use this article as reference for best practices.

Connect a Google spreadsheet and Sked turns its rows into ideas in your content planner. This page explains how your spreadsheet is read, what happens when you change it, and what to do when something does not look right.

Before you start: the sheet wins by default

A Google Sheets source is set by default to Keep updated from the sheet. On that setting the spreadsheet always wins.

Edit a row in the Sheet and Sked rewrites the idea made from that row, throwing away anything someone has changed inside Sked.

If your team edits ideas in Sked after they arrive, change this before you import. The setting is called When the source changes and sits in the source, just below the spreadsheet picker. Choose Create only. New rows still become ideas, but an idea someone has edited in Sked is left alone from then on.

There is a list further down of the things a sync never touches, whichever mode you pick.

Quick start

A layout that behaves:

id Title Date Sync to Sked Caption
1 Spring launch teaser 2026-07-15 yes Doors open Monday.
2 Behind the scenes 2026-07-18 yes A look at the studio.
3 Customer story 2026-07-22   Draft, not ready.

Why each column is there:

  • id gives every row a permanent name of its own, so you can add, remove and reorder rows freely. This is the single most useful thing you can do. Sked also accepts key, row id, rowid, external id or externalid as the name of this column.
  • Title is the only required mapping. Without it every idea imports as "Untitled".
  • Date becomes the idea's scheduled date.
  • Sync to Sked lets you keep drafts out of Sked until they are ready. It is optional.
  • Everything else is yours to map as you like.

Then:

  1. Make sure row 1 of every tab is the real column headers. Not a title, not a merged banner across the top.
  2. In Sked, open the connection, choose a Brand group and tick the Spreadsheets you want to import.
  3. Open Advanced. Under Per-resource mapping, each spreadsheet you ticked gets its own Column mapping. Point Title at a column, and map anything else you want.
  4. Press Test this setup. Sked reads every row of every tab and tells you exactly what would import, before anything does. Fix whatever it reports, then test again.
  5. Press Save & sync.

Each spreadsheet is mapped on its own, so two spreadsheets in one source can have entirely different column names.

Do not skip step 4. The test reads your real spreadsheet, so it catches a merged header row, a Sync to Sked column pointed at the wrong place and a title mapped to a column that does not exist, all of which otherwise look like a healthy green sync that imported nothing.

Reading the test results

The headline says how many rows would become ideas. Below it, each finding is coloured:

  • Red means nothing would import. Save will ask you to confirm before it accepts a setup in this state.
  • Amber is worth fixing, but something would still import.
  • Grey is information, not a problem.

A very large spreadsheet cannot be tested. Sked says so rather than failing quietly. Save the source and watch the first sync in the activity list instead.

How Sked reads your spreadsheet

Every tab that looks like a table is read. A tab qualifies when row 1 has two or more different, non-empty header cells. Its rows all become ideas.

A tab with a single column qualifies only when that one header reads like a column name: at most four words, at most 40 characters, and no sentence punctuation. So a one-column tab headed Title, Content or Post ideas is read. One headed Instructions, Read me, Guide, FAQ or Start here, or holding a whole sentence, is skipped, along with a handful of other words that name a documentation tab rather than a column. A tab with fewer than two rows is skipped as well.

This is how an instructions tab avoids being imported as a pile of ideas. A tab with two or more columns is treated as a table whatever it contains, so if you keep a two-column notes tab in the same spreadsheet, use the Sync to Sked column to keep it out.

Syncs run about every hour, and each one handles the rows that changed. A sync that reports two rows on a two hundred row spreadsheet is healthy, not broken: nothing else has changed since the last one. An edit anywhere in the spreadsheet is picked up. There is no setting to import only new rows, or only rows after a certain date: Sked looks at the whole spreadsheet every time and takes whatever has changed.

You can point one source at several spreadsheets, and you can add several sources to the same connection, each with its own brand group and mapping. You can even point two sources at the same spreadsheet to feed two different brand groups.

Which columns fill which idea fields

Idea field What it is
Title The idea's name. Required.
Details The body of the idea.
Caption Post caption.
Hashtags / keywords Free text.
Creative brief Free text.
Copy brief Free text.
Labels Comma separated in the cell, one label each.
Scheduled date The date the idea sits on in the planner.
Status Used to route ideas, see below.
Link / source URL A link back to wherever the idea came from.

Sked fills some of these automatically when your headers are named the obvious way. A column headed Title or Name fills Title; Description, Notes or Details fills Details; Due, Date, Due date or Due_date fills the scheduled date; Status or Stage fills Status; Labels or Tags fills Labels. Anything else you map yourself.

A field you do not map stays empty on every idea.

How Sked recognises a row, and why an ID column matters

Sked has to know it has seen a row before, so that editing the row updates the same idea instead of creating a second one.

  • With an ID column, the value in that cell is how Sked knows the row. Move it, sort around it, insert above it: the idea stays with it.
  • Without one, Sked goes by where the row sits. Row 5 is simply "row 5".

Sked decides once per tab, from its header row, whether it goes by id or by position, and that applies to every row on the tab.

On a tab with no id column, Sked can still keep an idea with its row when you insert a row above it, by matching the content. That is the only case it can handle, and only when the match is unmistakable. It cannot do it after you delete a row, after you reorder rows, or when two rows swap places, and it never does it for two rows holding identical content. In those cases ideas end up showing the content of whichever row now sits in their old place.

An id column removes all of this. It does not matter what the values are, only that each row has one and no two rows share it.

Two more cases:

  • A blank cell in an id column. The row still imports, using its row number as its id. Filling the id in later makes Sked treat it as a different row, so it imports again as a new idea and the original is left behind. A row with a blank id is never kept with its idea when it shifts, so fill the column in.
  • Two rows with the same id. The first one wins. The others are skipped, and the sync tells you how many.

Adding, changing and deleting rows, and changing tabs

Editing a row updates its idea, subject to the update mode below.

Adding a row is safe with an id column: the new row becomes a new idea and nothing else changes. Without one, every row below it shifts down a place, and Sked keeps their ideas with them where it can.

Deleting a row: Sked never deletes the idea. That is deliberate, so nothing you do in the spreadsheet can destroy work in Sked. The consequence is that with an id column the idea simply stays behind, no longer updated by anything. Without one, every row below it shifts up, Sked cannot follow them, and their ideas can end up showing the wrong row's content.

If a tab has no id column and you want to remove something, clear the row's contents rather than deleting the row. Better still, add an id column.

Moving or reordering rows is safe with an id column. Without one, ideas can end up showing another row's content.

Renaming a tab is safe. Sked knows a tab by a hidden id Google gives every tab, which a rename does not change, so the ideas from that tab stay put.

Deleting a tab stops its rows being read. The ideas it already created stay in Sked, no longer updated by anything.

Renaming or removing the id column is the one change that re-creates everything. If Sked no longer recognises a column as the id column, the whole tab falls back to position and treats every row as new, so the whole tab imports again as fresh ideas and the originals are left behind. Decide your id column before you import.

Update modes, and what a sync never touches

Keep updated from the sheet (the default). Changing a row rewrites the mapped fields on the idea it created, even the ones someone has since edited inside Sked. Their work is replaced by whatever the sheet now says.

Create only. New rows become ideas. A row that has already been imported keeps being updated only for as long as nobody has touched its idea in Sked. The moment someone edits that idea, the sheet stops overwriting it and their version stands. Any change to a mapped field counts as an edit, and so does dragging the idea to a different stage in the planner.

Whichever mode you choose, a sync only ever writes the fields you mapped. These are never touched by an import:

  • assignees
  • social accounts on the idea
  • attached media
  • pinned items
  • sign-off and approvals
  • ordering in the planner

The Sync to Sked column

Sync to Sked sits under Advanced, inside each spreadsheet's own mapping block, next to its column mapping. Map a column to it and only rows whose cell reads as yes are imported. Leave it unmapped and every row is imported.

When your spreadsheet has a likely column, Sked suggests it and offers a button to use it. Take the suggestion if it names the column you meant.

Values that count as yes: a ticked checkbox, or the text true, yes, y, 1, x, a tick character, checked, or v. Capitals and spaces around the value do not matter. Anything else, including an empty cell, means no.

If your spreadsheet says yes in its own words, fill in Values that mean yes and list them. Be aware that your list replaces the built-in words entirely: once you set it, yes, true and a ticked box stop counting unless you list them too.

Two things worth knowing:

  • Turning a row off does not delete its idea. The idea stays in Sked exactly as it was and simply stops being updated.
  • Turning it back on updates the same idea, rather than creating a second one.

If you map this column and then delete or rename it in the spreadsheet, every row reads as no and nothing imports.

Date formatting

The reliable way: format the cell as a date in Google Sheets, or type it as 2026-07-15. Both are unambiguous and always read correctly.

Other formats that work:

Example Notes
2026-07-15 Always safe.
15/07/2026 Day first, unless your spreadsheet's language is US English.
2026/07/15 Year first is always read as year first, whatever the language.
15 Jul 2026, July 15th, 2026 Month names, either order, with an optional weekday in front.
28 Jul, Tue 28 Jul, Jul 28 A month name with no year. See below.
2026-07-15 14:30 A time can follow any of these.

When neither of the first two numbers is over 12, as in 05/07/2026, the date is genuinely ambiguous, and Sked follows your spreadsheet's own language setting to decide whether it means 5 July or 7 May. As soon as one of them is over 12 the order settles itself and the language setting does not come into it.

A month name with no year gets whichever year puts that date closest to today. On 2 January, 28 Dec is five days ago rather than eleven months away; on 30 December, 3 Jan is next week. The sync says how many dates had their year guessed, so you can check them. This applies only to month names: a numeric date with no year is not read at all.

What to avoid:

  • Dots, as in 15.07.2026. These are only read on spreadsheets whose language writes dates that way, such as German or Russian. On an English spreadsheet a dotted value is not treated as a date, because it is more often a version number or a score.
  • Two-digit years, as in 15/07/26. They are always read as the 2000s.
  • Ambiguous numeric dates, as in 05/07/2026. Use 2026-07-05 and the question does not arise.

If Sked cannot read a date, the idea still imports, with no scheduled date. Run Test this setup and it tells you how many rows this would happen to, and on which tab.

Status routing

Status routing sits in the same place, just under the Sync to Sked column. That column decides whether a row imports at all; status routing decides where it lands.

If you map a Status column, you can send ideas to either Idea Pador Workspace depending on the value in that cell. Each value gets its own row in the routing editor, with a third option of "don't route" that leaves it alone.

So a spreadsheet whose Status column reads Ready, In progress and Idea might route Ready and In progress to Workspace, and leave Idea unrouted so it lands in Idea Pad.

Matching is exact, including capitalisation, so Ready and ready are two different values. Any value you have not routed, and any row with an empty status, lands in Idea Pad.

The routing editor only offers values it has actually seen in your spreadsheet, gathered from every tab's Status or Stage column, plus any value you have already routed. If a status you plan to use is missing from the list, put it in one row of the spreadsheet, save the source, and it appears.

Spreadsheet size limits

A single sync imports up to 25,000 rows. Anything beyond that is picked up on the next one.

When a tab holds more rows than one sync can take, Sked stops following rows that moved on it, and the sync names those tabs. An id column matters more the bigger your spreadsheet gets.

Troubleshooting errors: when something looks wrong

Each sync in the connection's activity list describes what it did. Find your message in this table.

What you see What it means What to do
"This source has never created an idea." Nothing has ever arrived from this source, which is different from a quiet hourly run. Check row 1 of each tab is real column headers, that the tabs you expect are in the spreadsheet you selected, and that any Sync to Sked column is still there and ticked.
"No row passed the Sync to Sked column, which holds ..." The column you picked can never say yes, often because it is a Status column. Point it at the tick-box column, or list the values that should import.
"N rows were skipped by the Sync to Sked column." Working as intended. Those rows are not ticked. Nothing, unless you expected them to import.
"N rows had no title and were imported as Untitled." Title is mapped to a column that is missing or empty. Check row 1 is a plain header row with no merged cells, fix the mapping, then Re-import.
"Column X mapped to Y is not on the sheet." The mapping names a column that does not exist. Fix the mapping, then Re-import.
"Column X mapped to Y is on the sheet but was empty on every row." The mapping is fine; the sheet is blank there. Fill the column in, or unmap it.
"N rows were skipped because their id repeats another row on the same tab." Two rows share an id. The first wins. Make the ids unique.
"N due dates had no year, so Sked used the closest ones to today." A date gave a day and a month but no year, so Sked picked the closest year. Nothing, unless a guess is wrong. Add the year in the spreadsheet to choose a different one.
"... is too large for Sked to reattach rows that moved." The tab has more rows than one sync handles, so Sked could not follow rows that moved. Give that tab an id column.
"N rows were left unchanged because the idea has been edited in Sked, or the row has not changed since the last sync." Either the source is on Create only and someone has edited those ideas, or nothing changed. Nothing, unless you expected the sheet to overwrite them.
"N rows were ignored because they were sent under the previous row-id scheme." Normal for a short while after the setup changes. Nothing. It stops on its own.
"Sync could not be started" The request to Google never ran. Press Retry sync.

Two problems the activity list cannot tell you about:

Ideas showing the wrong row's content, or duplicated. Almost always Sked has matched rows to the wrong ideas. Did someone delete a row, reorder rows, rename the id column, or fill in an id that was blank? Add an id column to stop it recurring. Ideas that already picked up the wrong content need fixing by hand.

Edits in the sheet not appearing. The source is on Create only and somebody has edited that idea in Sked, so the sheet no longer overwrites it. Either edit it in Sked from now on, or switch the source to Keep updated from the sheet and accept that the sheet wins.

Making a fix take effect

  • Test this setup re-reads the spreadsheet and tells you what would import, changing nothing. Use it whenever you change a mapping.
  • Save & sync saves your changes and starts a sync.
  • Re-import, on the source, re-reads the spreadsheet and re-applies the mapping to rows already imported. Use it after fixing a header row or a column that was missing. It is unavailable while you have unsaved changes ("Save your changes first, then re-import.") or while a sync is already running for that source.
  • Sync now, on the connection, reads the spreadsheet straight away instead of waiting for the next hourly sync. It runs every import configured on the connection, media included.

Also: importing media files

The same Google Sheets connection can import a list of media file links into your Sked Library, as a separate setup on the same card. See How to sync media files from Google Sheets to Library.

If you configure both imports on the same spreadsheet, and a tab has both a header row and a url column, that tab feeds both: one idea per row and one Library file per row. Keep them in separate spreadsheets unless you want that.