Automation you cannot see is automation you cannot trust. When a non-technical person clicks publish in a dashboard and the post appears on the live site a minute later, something real happened in between: content was validated, a file was committed to a repository, a commit reference was recorded, and a deployment was triggered. If that chain is invisible, every publish becomes an act of faith — and the first time something goes wrong, nobody can say where. Publish Logs exist to close that gap. They turn an automated publish into a readable record of exactly what happened, step by step, so that editors, developers, and account managers can all trust the same source of truth.

This article explains what Publish Logs record, what they deliberately do not expose, how to read a failed publish, when a safe retry is appropriate, and how Deployment Logs complete the picture. The goal is practical: by the end, you should be able to look at a publish that didn't work and know what to do next without guessing.

Why invisible automation erodes trust

A Git-backed publishing workflow has more moving parts than it looks. Acrosite stores your website content as Markdown or MDX with YAML frontmatter in your own GitHub repository, and publishing through the dashboard performs a real sequence of operations against that repository and your hosting provider. Each step can succeed or fail independently.

Consider what an editor experiences without logs. They publish a post. The page doesn't update. Now what? Was the content invalid? Did the commit fail? Did GitHub accept the file but the site never rebuilt? Without a record, the only answer is to ask a developer to dig through commit history, hosting dashboards, and provider settings. That is slow, it does not scale across many client sites, and it makes every editor dependent on an engineer for something as routine as a missing post.

Note

The problem is rarely that automation fails. The problem is that when it fails, nobody can see why — so a five-minute fix turns into an hour of cross-team investigation.

Publish Logs are the antidote. They make the publish pipeline legible to the people who use it, not just the people who built it.

What Publish Logs record

A Publish Log captures each publish attempt as an ordered sequence of steps, so you can see how far the process got and where it stopped. For a successful publish, the record typically reflects this flow:

  1. Validated content — the Content Item and its frontmatter passed the checks required to be committed.
  2. Committed to GitHub — the Markdown or MDX file was written to the connected repository on the configured branch and content path.
  3. Commit SHA saved — the exact commit reference is stored, so the published version is pinned to a precise point in your repository history.
  4. Deployment triggered — the configured deployment trigger profile notified your hosting provider to rebuild.

That commit SHA is more valuable than it first appears. Because Acrosite commits real files to your repository, every published version corresponds to an actual commit you can inspect, diff, or roll back using normal Git tooling. The Publish Log ties the dashboard action to that commit, so "the post I published Tuesday" maps to a specific, verifiable change. This is the heart of GitHub publishing: the commit is the publish, and the log proves it.

Because Acrosite separates content types cleanly — Posts, Pages, and Custom Content Types with their Custom Fields — the log also makes it obvious which Content Item moved and where it landed in your content path, such as content/posts/.

What Publish Logs intentionally do not expose

A log is only trustworthy if it is also safe to read. A teammate, a junior editor, or a contractor should be able to open a Publish Log without ever seeing a credential. Acrosite is deliberate about this boundary.

Publish Logs record the steps and their outcomes. They do not expose:

  • Authentication tokens for the GitHub connection.
  • Deployment hook URLs that trigger your hosting provider.
  • Raw provider payloads returned by GitHub or the host.
  • Any other secret needed to perform the publish.

This matters because the GitHub connection in Acrosite is held at the Workspace level through a GitHub App, scoped to the connected repository — it is not a personal credential pasted into a log. The same principle runs through the product: people see the operational outcome, not the machinery. It is the reason an editor can safely review a publish, and the reason you can hand a Publish Log to a client or a new Team Member without leaking anything. For more on how these boundaries are drawn, see the security overview.

Tip

A good log answers "what happened and where," never "with which secret." If you ever see a token or a raw hook URL in an operational view, that is a leak, not a feature.

Reading a failed publish

Failures are where Publish Logs earn their keep. Because the log is an ordered sequence, a failed publish tells you not just that it failed, but at which step — and that single fact usually points straight at the fix.

Failure at validation

If the log stops at the validation step, nothing was committed to your repository. The content didn't meet the requirements to publish — a required field defined by your Custom Fields may be empty, or the frontmatter may be incomplete. Here the fix lives entirely inside the app: open the Content Item, correct what's flagged, and publish again. Nothing reached GitHub, so there is no partial state to clean up.

Failure after commit

If the log shows the content was committed and the commit SHA was saved, but the deployment step failed, the situation is different. Your content is safely in the repository — the published version exists and is pinned to a real commit — but the site may not have rebuilt. The problem is on the deployment side, not the content side, and that distinction tells you to look at your deployment trigger profile and Deployment Logs rather than re-editing the post.

Failure at the deployment trigger

If the commit succeeded but the trigger to your hosting provider didn't fire as expected, the content is correct and present; only the rebuild needs attention. Knowing this prevents the most common overreaction — re-publishing identical content and creating duplicate commits when the real issue was a rebuild that simply needs to be triggered again.

The value here is diagnostic precision. Instead of "publishing is broken," the log lets you say "the commit landed at this SHA, and the deployment trigger is what needs attention." That is a sentence an editor can act on and a developer can verify.

Safe retries and what they protect

When a publish fails at a step where it is safe to do so, the failed publish can be retried. "Safe" is the operative word. A retry should re-run the pipeline without creating a mess — it should not silently produce duplicate commits or push content that was never validated.

A practical retry checklist:

  • Read the log first. Identify the last successful step before doing anything.
  • If it failed at validation, fix the Content Item, because no retry will succeed against invalid content.
  • If it failed after a successful commit, prefer re-triggering deployment over re-publishing the content, so you don't duplicate a commit that already exists.
  • Confirm the result in the new log entry rather than assuming the retry worked.

This is also why Acrosite keeps content states clean. Drafts remain private in the app until published, Scheduled publishing holds an approved draft and commits it only at the chosen time, and a retry operates within that same disciplined model. The log gives you confidence that a retry advanced the process rather than scrambling it.

How Deployment Logs complete the picture

A commit makes content real in your repository; a deployment makes it visible on the live site. These are two different events, and Acrosite records them separately so you can reason about each.

After a successful commit, the configured deployment trigger profile asks your hosting provider to rebuild — manually or automatically, depending on how the Project is set up. Publish Logs capture that the deployment was triggered. Deployment Logs record the result of that trigger: this is deployment visibility, and it answers the second half of the question. The post is committed — did the site actually rebuild?

Separating the two prevents a classic confusion. If a page hasn't updated, the logs tell you whether the content never committed (a content problem visible in the Publish Log) or whether it committed but the rebuild didn't complete (a deployment problem visible in the Deployment Logs). For teams running Next.js sites or other Git-backed static frameworks, where a build step stands between the commit and the live page, that separation is exactly the clarity you need. You can read more in the Publish Logs feature overview and the wider features list.

A short end-to-end example

Here is how the records line up for a normal publish of a blog post:

Content Item: "Spring product update" (Post)
Publish Log
  - Validated content ............ ok
  - Committed to GitHub .......... ok  (content/posts/spring-product-update.md)
  - Commit SHA saved ............. ok  (a1b9c4e)
  - Deployment triggered ......... ok
Deployment Logs
  - Rebuild requested ............ ok
  - Rebuild completed ............ ok

If the last line had failed instead, you would know the content is safely committed at a1b9c4e and that only the rebuild needs another look — no re-editing, no duplicate commits, no guesswork.

Frequently asked questions

Each Publish Log records an ordered sequence of steps for a publish attempt: that content was validated, committed to GitHub, the commit SHA saved, and the deployment triggered. It shows how far the process got and where it stopped, which is what makes diagnosing a failure quick.
No. Publish Logs record the steps and outcomes but deliberately never expose authentication tokens, deployment hook URLs, or raw provider payloads. That is what makes them safe to share with Team Members or clients without leaking anything sensitive.
Read the log to find the last successful step. If it failed at validation, fix the Content Item and publish again, since nothing reached your repository. If it failed after a successful commit, the content is already safe — focus on the deployment side and re-trigger the rebuild rather than re-publishing.
Yes, failed publishing can be retried where it is safe to do so. The key is to read the log first: retrying invalid content won't help, and re-publishing content that already committed can create duplicate commits, so a post-commit failure is usually better resolved by re-triggering deployment.
Publish Logs cover the steps up to and including triggering a deployment — validation, commit, commit SHA, and the trigger itself. Deployment Logs record the result of that trigger, giving you deployment visibility into whether your hosting provider actually rebuilt the site.