Quick overview
Keep one native OrbitPage menu section in sync with approved Google Sheets rows. Preview additions, edits and explicit deletions, then review the exact diff by email before saving a private draft or publishing. This prototype is unpublished and starts in SAMPLE mode, without external calls.
How it works
- Manual and thirty-minute checks share one configuration; the schedule remains disabled while the workflow is unpublished.
- SAMPLE runs isolated fictional scenarios. PREVIEW reads a real source and computes differences without changing the menu or emailing a reviewer.
- Real runs read unformatted sheet values, the current native menu, publication revision and a dedicated n8n Data Table ownership registry.
- Approved rows update one managed section. Existing page blocks, other menu sections, unmanaged items and item fields outside the sheet mapping are preserved.
- Missing and unapproved rows keep their previous items. Deletion requires an approved DELETE row and ALLOW_DELETIONS enabled.
- EMAIL_APPROVAL records a pending claim and emails a before/after diff. Decline or expiry releases that claim without changing the page.
- Approval re-reads the sheet, menu, publication and claim. A changed source, revision, ownership record or manually edited managed field blocks the write.
- The reviewed menu is written with an exact revision precondition. Read-back checks confirm content and private/public revision before recording success; uncertain outcomes stay held for reconciliation.
Setup
- Import OrbitPage_Sheets_Sync.json into n8n 2.x and run Manual check with MODE set to SAMPLE; no credentials are required for the sample branch.
- Install n8n-nodes-orbitpage 0.3.2 or newer. For real reads, select Google Sheets and OrbitPage credentials; select the same OrbitPage credential on all OrbitPage nodes.
- Import sample-items.csv into a sheet named Items. Keep the eight headers and stable lowercase IDs; use TRUE/FALSE for approved and available, and numeric prices without currency symbols.
- In Configuration, set SPREADSHEET_ID, SHEET_NAME, SYNC_KEY, SECTION_NAME, EXPECTED_CURRENCY and a dedicated REGISTRY_TABLE_NAME. Run PREVIEW and inspect the result. With a Service Account, share the source sheet with that account first.
- Before real writes, enable, configure and publish the native menu in OrbitPage. The expected currency must match it; the workflow does not change global menu settings or add a navigation block.
- To review real changes, choose EMAIL_APPROVAL, connect SMTP and set one authorized FROM_EMAIL and APPROVAL_EMAIL. The default approval timeout is forty-eight hours.
- PUBLISH_AFTER_APPROVAL defaults to false: approval saves a private draft. Publish or reconcile that draft separately before another sync. Set it true only when automatic publication of explicitly reviewed changes is intended.
- Keep this draft unpublished during design and validation. Publishing the workflow and submitting any public template are separate owner decisions.
Requirements
- Import OrbitPage_Sheets_Sync.json into n8n 2.x and run Manual check with MODE set to SAMPLE; no credentials are required for the sample branch.
- Install n8n-nodes-orbitpage 0.3.2 or newer. For real reads, select Google Sheets and OrbitPage credentials; select the same OrbitPage credential on all OrbitPage nodes.
- Import sample-items.csv into a sheet named Items. Keep the eight headers and stable lowercase IDs; use TRUE/FALSE for approved and available, and numeric prices without currency symbols.
- In Configuration, set SPREADSHEET_ID, SHEET_NAME, SYNC_KEY, SECTION_NAME, EXPECTED_CURRENCY and a dedicated REGISTRY_TABLE_NAME. Run PREVIEW and inspect the result. With a Service Account, share the source sheet with that account first.
- Before real writes, enable, configure and publish the native menu in OrbitPage. The expected currency must match it; the workflow does not change global menu settings or add a navigation block.
- To review real changes, choose EMAIL_APPROVAL, connect SMTP and set one authorized FROM_EMAIL and APPROVAL_EMAIL. The default approval timeout is forty-eight hours.
- PUBLISH_AFTER_APPROVAL defaults to false: approval saves a private draft. Publish or reconcile that draft separately before another sync. Set it true only when automatic publication of explicitly reviewed changes is intended.
- Keep this draft unpublished during design and validation. Publishing the workflow and submitting any public template are separate owner decisions.
Customization
- SAMPLE is isolated; PREVIEW creates or reuses only the n8n registry table and reads providers, without menu writes or approval emails.
- Enable ALLOW_DELETIONS only for intentional reviewed removals. Never reset the registry to resolve a single error or rename stable IDs to reorder items.
- Preserve the registry after successful runs. Pending or uncertain records require manual reconciliation; do not run overlapping manual checks against a scheduled instance.
- Change schedule frequency and APPROVAL_TIMEOUT_HOURS as needed. Keep exact revision checks, source rechecks and read-back verification enabled.
- See
DESIGN.md for the schema, ownership rules, limits and validation boundaries. No AI or paid model API is required; ordinary hosting, Sheets, SMTP and OrbitPage quotas still apply.