Skip to content

WordPress - Sheet Automation

Sheet Automation turns a Google Sheet into a publishing queue. Each row becomes a WordPress post — you define the title, content, categories, and any other metadata right inside the spreadsheet, and Tenwrite handles the rest.

Because each row can target a different WordPress site using the SITE column, a single sheet can manage content across all your sites at once. This makes it particularly useful for bulk publishing and programmatic SEO.

Tenwrite checks your sheet once every hour. New rows create new posts. Rows that have changed update the existing post. Rows that are unchanged are skipped. Rows missing required fields are skipped without error.

The maximum is 200 rows per sheet on Pro and 500 rows per sheet on Agency.

Your sheet must include these exact column names:

ColumnRequiredDescription
SITEYesWordPress site URL (e.g., example.com)
TITLEYesPost or page title
CONTENTYes*Post content — Markdown is supported
GOOGLE DOCYes*Link to a Google Doc to use as content
ColumnOptionsExample
EXCERPTAny textBrief post summary
OBJECT TYPEpost or pagepost
STATUSdraft, publish, future, private, pendingdraft
SLUGURL-safe textmy-awesome-post
CATEGORIESComma-separatedtech, tutorial, google
TAGSComma-separatedwordpress, automation
COMMENT STATUSopen or closedopen
PING STATUSopen or closedopen
PUBLISH DATEYYYY-MM-DD HH:MM2025-12-31 23:59
OUTPUT FORMATwp_blocks or classic_htmlwp_blocks
PRESETbalanced or preset namebalanced
FORMATTINGbalanced or fullbalanced
AUTHORDisplay name or email of the authorBob Kane/bob.kane@email.com
PARENTNumeric ID of the page to mark as parent; ignored when OBJECT TYPE is post41
SEO TITLEAny textWhat is automation
SEO DESCRIPTIONAny textDescribes automation and its forms.
FOCUS KEYPHRASEAny textautomation

If you’re using the GOOGLE DOC column, the referenced document needs to be readable by Tenwrite. There are two ways to do this:

Option A — Share with the service account:

Open the Google Doc, click Share, and add automation@tenwrite-gcp.iam.gserviceaccount.com as a Viewer. Click Share anyway if prompted.

Share button in Google Docs

Google Docs Share dialog

Service account email entered

Option B — Make the doc public:

In the Share dialog, change General access to Anyone with the link (Viewer) and click Done.

General access dropdown with Anyone with the link highlighted

Anyone with the link selected, Done button

Open the Tenwrite add-on or Web Dashboard, go to WordPress > Automations, and switch to the Sheets tab.

Click New Automation (or Create Sheet Automation if none exist). The create form opens.

WordPress Automations sidebar link highlighted with Sheets tab active

Sheet Automation tab with New Automation button

Create Sheet Automation modal

Click Select Google Sheet, choose your spreadsheet from the picker, and select the tab that contains your data.

Google Picker with a spreadsheet selected and the Select button highlighted

Check Enable Automation Immediately if you want it to start on the next hourly run, then click Create Automation.

Completed Create Sheet Automation form before submitting

When the automation processes your sheet, Tenwrite adds and manages two result columns on the selected tab:

  • TENWRITE STATUS shows the latest WordPress state that Tenwrite confirmed for the post or page.
  • TENWRITE LOGS records what Tenwrite did, when it happened, and whether the row needs attention.

These are output columns. You keep working in columns such as TITLE, CONTENT, GOOGLE DOC, and STATUS; Tenwrite writes the result columns for you.

STATUS and TENWRITE STATUS serve different purposes.

  • STATUS tells Tenwrite what you want when it creates or updates the row, such as draft, publish, or future.
  • TENWRITE STATUS tells you what Tenwrite most recently confirmed in WordPress.

For example, a row can keep future in STATUS while TENWRITE STATUS changes from SCHEDULED to PUBLISHED after the scheduled time. Do not type into, rename, or delete the Tenwrite-managed columns.

StatusMeaning
DRAFTThe post or page is saved in WordPress but is not live.
SCHEDULEDWordPress is set to publish it at a future date and time.
PUBLISHEDThe post or page is live.
PENDING REVIEWThe item is waiting for an editor or administrator to review it.
PRIVATEThe item is published privately and is only visible to people with the right access.
TRASHEDThe item is in the WordPress trash and may still be restored.
MISSINGTenwrite can no longer find the linked item in WordPress. It may have been deleted.
NOT EXPORTEDThe row is not linked to a WordPress post or page because one has not been created yet.

The cells are color-coded to make large sheets easier to scan: published items are green, scheduled items are blue, review items are amber, private items are purple, and trashed or missing items are red. The written label is always the final meaning, so you do not need to rely on color alone.

Each log line includes a date and time, an action, and a simple explanation. Timestamps use your account or spreadsheet time zone when available, with UTC as the fallback. The newest entry appears at the bottom.

Log actionWhat happened
EXPORTEDTenwrite created the WordPress post or page for the first time.
SYNCEDTenwrite updated the WordPress item already linked to the row.
SKIPPEDTenwrite intentionally did not create or update the row. Read the message for why.
EXPORT FAILEDTenwrite could not create the item. The message explains what you should check.
SYNC FAILEDTenwrite could not update the existing item. The message explains what went wrong.
STATUS INITIALIZEDTenwrite checked WordPress and filled in the row’s current status for the first time.
STATUS CHANGEDWordPress now reports a different state from the last one Tenwrite confirmed.

The cell keeps the latest 10 Tenwrite entries so a busy sheet stays readable. If older entries have been removed, the first line says so. Open Automations > View Last Run for fuller run details and errors.

  • A new, updated, or newly tracked row receives its confirmed status during an automation run.
  • A SCHEDULED row is checked on later hourly runs so it can change to PUBLISHED after WordPress publishes it.
  • A TRASHED or MISSING row is checked on the next few eligible runs, then no more than once a day. If you restore the item, Tenwrite can detect that and update the row.
  • Other rows show the latest state Tenwrite confirmed while processing them. A change made directly in WordPress may not appear until Tenwrite processes that row again.
  • A temporary WordPress or connection problem does not automatically change a row to MISSING; Tenwrite keeps the last confirmed state instead.

You can sort or move existing rows without losing their Tenwrite tracking. If you clear every editable input cell from a row, Tenwrite clears its managed status and logs after confirming that the row is still empty. To create a separate item, add a fresh row rather than copying a fully processed row.

The Sheets tab lists all your automations with run stats — total runs, posts created, rows processed, failures — and when each last ran. Use the action button in each row to pause or resume.

Sheet automations list showing automation rows with status and run statistics

SITETITLECONTENTOBJECT TYPECATEGORIESTAGS
shop.comRed T-ShirtComfortable cotton…postProducts, Clothingproduct, t-shirt
events.comConcert InfoCheck out this event…postEvents, Musicevents, music
company.comAbout UsLearn about our company…pagecompany, about
  • Check that SITE, TITLE, and either CONTENT or GOOGLE DOC are present in every row.
  • Verify the exact column names match (they’re case-sensitive).
  • Make sure the automation is enabled.
  • Confirm your WordPress sites are connected.
  • Confirm each row has SITE, TITLE, and content.
  • Check that STATUS uses exact values: draft, publish, future, private, or pending.
  • If using Google Doc links, make sure the doc is shared with the service account or set to public.

Scheduled posts aren’t publishing at the right time

Section titled “Scheduled posts aren’t publishing at the right time”
  • Use YYYY-MM-DD HH:MM format for PUBLISH DATE.
  • STATUS must be exactly future for scheduled posts.
  • Posts are scheduled during the next automation run after the form is submitted.

The sheet values are not showing in Blogger

Section titled “The sheet values are not showing in Blogger”
  • If a doc has a Frontmatter table, it overrides the corresponding sheet columns. This is intentional — the doc’s own metadata takes priority.

Need help? Contact support@tenwrite.com with your sheet link and a description of the issue.

Tenwrite is an independent product not affiliated with or endorsed by Google LLC, Blogger, or WordPress Foundation. Google Docs, Gmail, Google Workspace are trademarks of Google LLC. WordPress is a trademark of the WordPress Foundation.