Skip to main content

QuickBooks: Sync Log

The Sync Log is the unified history of every journal entry that's reached or attempted to reach QuickBooks Online from this store — both automatic syncs and ...

Written by Ryan VanVuren

The Sync Log is the unified history of every journal entry that's reached (or attempted to reach) QuickBooks Online from this store — both automatic syncs and manually-approved entries, in one timeline.

Sync Log overview

One grid, both sync paths. The Source column tells you which one each row came from.

Who can use this: Admins only. The Manager, Shift Lead, Buyer, and Cashier roles don't have QuickBooks access.


Where to find it

From the sidebar: QuickBooks > Sync Log. Direct URL: /admin/{typeNum}/quickbooks/sync-log.

By default the page loads the last 30 days.


What "sync" means here — auto vs. manual

There are two ways a journal entry can land in QBO:

Source

Path

Logged as

🔵 AUTO

Nightly cron job in Auto mode → direct post → success / failure record

A row in qb_sync_log

🟣 MANUAL

Daily close staged for approval → admin reviews + clicks Approve → post

A row in qb_staged_entries

For a long time these had separate tables and the "Sync Log" only showed AUTO rows — so manual-mode stores saw an effectively empty Sync Log even though they were clearly approving entries through the queue.

The page now unifies both into one chronological history. The new Source column tells you at a glance which path produced each row.

Source chips — AUTO (neutral) and MANUAL (accent)

MANUAL chip carries a faint accent tint (the "a human acted here" rows). AUTO chips stay neutral — they're the background hum of the cron.


Filters

Three filters compose at the top of the grid:

Filter toolbar — date range + source + status

Filter

Default

Options

From / To

Last 30 days

Any date range

Source

All

All / Auto (cron) / Manual (approval)

Status

All

All / Posted / Failed / Pending / Rejected / Voided

Filters compose — Source: Manual + Status: Posted shows you every manually-approved entry that successfully posted.


Status meanings

After the unification, statuses are normalized across both sources:

Status

Auto path

Manual path

Posted

Successfully posted to QBO

Approved + posted to QBO

Failed

Cron tried and QBO rejected

(rare — manual posts that fail usually become rejected)

Pending

Auto job still processing (transient)

Waiting in the Approval Queue

Rejected

(n/a)

Admin explicitly rejected the entry

Voided

(rare)

Previously posted, then voided in QBO


Doc # is a QBO link

Every posted (or voided) row's DocNumber cell is a clickable link that opens the journal entry directly in QuickBooks Online — right page, right company, no searching.

Hover state on a clickable Doc # link

Dotted underline + tiny external-link icon = clickable. Opens in a new tab.

Behind the scenes the link targets:

https://{sandbox.}qbo.intuit.com/app/journal?txnId=N&realmId=M

The same pattern works in the Dashboard activity feed and the Audit Log Details column — wherever a posted Doc # appears, it's a deep-link.


Smart per-row actions

Actions are state-specific — only what makes sense for each row, no busywork navigation:

Per-row actions cluster

Row state

Action

Posted (any source)

(Doc # link IS the action — opens the JE in QBO)

Voided

(Doc # link — view the voided state in QBO)

Auto + Failed

Retry — re-runs the auto-sync for this date

Manual + Rejected/Failed

Re-sync this date — creates a fresh staged entry for the approval queue

Manual + Pending

Open in Queue — deep-link to the specific row in the Approval Queue with auto-scroll and highlight

Tip: "Open in Queue" pulses the matching row's background for 2 seconds when you arrive, so you can spot the entry you came for even when the queue is long.


Retry vs Re-sync

Both call the same backend endpoint (manual sync for a date), but the use cases differ:

  • Retry (auto + failed): the nightly cron tried, QBO returned an error (period closed, token expired, mapping deleted). Fix the cause, then click Retry to re-run.

  • Re-sync (manual + rejected/failed): you rejected an entry because the DRS data was bad, or you fixed an underlying mapping that produced the rejection. Click Re-sync once the source data or mapping is corrected — a new pending entry appears in the queue.

In both cases the system creates a fresh qb_staged_entries row (or directly posts in auto mode) for the date. The old rejected/failed row is preserved as an audit record — never deleted.


How is this different from the Audit Log?

Sync Log = "what entries posted (or tried to post) to QBO?"

  • One row per business date

  • Shows the final state (posted / failed / pending / etc.)

  • Optimized for "did Tuesday's entry land?"

Audit Log = "every action that happened, in order"

  • Multiple rows per entry (one per event: staged, edited, approved, sync_posted, voided)

  • Append-only, immutable

  • Optimized for "who changed what, when?" — compliance and debugging

Use the Sync Log for daily operational checks. Use the Audit Log when you need to trace the full lifecycle of a specific entry or answer a "who/when?" question.


What's next

Did this answer your question?