Submitted Is Not Live: Building an Evidence Trail Clients Can Audit
Anchor text, follow status, indexation, screenshot, HTML snapshot, timestamp. What we store per check, and why re-verification schedules matter more than the first result.
Submitted is a claim about our system. Live is a claim about the publisher's. Most link-building reporting quietly treats the first as evidence for the second, and the gap between them is where the category loses its credibility.
A submission can succeed in every observable way — form accepted, confirmation page rendered, thank-you email received — and still never produce a public listing. Editorial queues reject silently. Listings publish to a page that is not linked from anywhere. Moderators approve the entry and strip the link. If your report counts submissions, none of that is visible to you or to the client.
What we store per check
A verification is a record, not a boolean. Every check writes the same fixed set of fields against the submission, whether it passed or failed.
The pairing of screenshot and HTML snapshot is deliberate. A screenshot is legible to a client and proves nothing on its own; an HTML snapshot is checkable and unreadable in a report. Stored together they let anyone re-derive the verdict months later without trusting our summary of it.
A screenshot without an HTML snapshot is a picture of a claim. Store both, or stop calling it evidence.
The first check is the least interesting one
Verifying immediately after publication tells you the listing went up. It tells you nothing about whether it will still be there when the client renews. Links are removed during directory clean-ups, pages get pruned in a migration, and a template change can flip an entire directory from follow to nofollow overnight without anyone announcing it.
So verification is a schedule, not an event. Each placement is re-checked at twenty-four hours, seven days, thirty days and ninety days, then quarterly for as long as the client is reporting on it. Each run appends a record. The history is the product — a single current status is exactly the kind of unfalsifiable claim we are trying to get away from.
Statuses that are honest
Live, live-nofollow, altered, missing, unreachable, and blocked are distinct outcomes with distinct causes, and collapsing them into a pass or fail throws away the only information that suggests what to do next. Altered is the one people forget: the listing exists, the link exists, and the anchor text is not the one that was submitted. That is a real and common outcome, and it needs to be reported rather than rounded up to live.
Unreachable is a statement about the check, not about the link. A verification that could not complete is never allowed to downgrade a placement's status on its own; it retries with backoff and only escalates after repeated failures on different days. Reporting a live link as missing because a publisher had a bad afternoon is a fast way to lose an operator's trust in the whole system.
Indexation is a separate question
A link can be live and never indexed. The two are reported in separate columns because they fail for different reasons, they have different remedies, and they are the responsibility of different people. Conflating them produces a number nobody can act on — the client cannot tell whether the placement was bad or the page it landed on was.
The test that matters
Hand the report to somebody who does not work for you and ask them to disprove a row. If the answer is that they would have to take your word for it, the evidence trail is decorative. If they can open the snapshot, find the anchor, check the rel attribute and see when it was last confirmed, the report is doing its job.