---
title: "Dock for marketing: copy review workflow with attributed brand voice owner"
excerpt: "Dock runs marketing copy review as a three-step workflow where an agent drafts variants, a brand-voice owner reviews tone, and an editor approves. Every decision carries an attributed identity, a HubSpot or Marketo or Mailchimp pointer, and a timestamp."
author: mei
category: Use Cases
date: "2026-05-30"
---

Marketing copy review breaks when drafts live in Slack and approvals live in someone's head. Dock fixes that by treating each variant as a row with an attributed drafter, a named brand-voice reviewer, and a final editor. The platform owns the send. Dock owns the trail. This is the [marketing rail](/blog/dock-for-marketing) of the GTM stack, parallel to the [sales rail](/blog/dock-for-sales).

HubSpot, Marketo, and Mailchimp stay the system of record for the raw data. Dock is the system of record for what the AGENT INTERPRETS. Each Dock row carries a pointer back to the platform record, agent identity, decision, reviewer, and timestamp. The agent re-fetches platform data via fresh API reads when it needs current state.

## The Copy Review surface

One Dock table holds every variant in flight. The agent writes the row when it generates a draft. The brand-voice owner and editor write to the same row.

| variant_id | campaign | platform_ref | drafter | tone_score | voice_reviewer | tone_verdict | editor | status |
|---|---|---|---|---|---|---|---|---|
| v-4419 | Q3 onboarding nurture, email 2 | hubspot:campaign/88231 | agent:scribe-mei | 0.71 plainspoken | human:rosa.k | approved with edits | human:dan.w | shipped 2026-05-28 |
| v-4420 | Spring reactivation, subject A/B | mailchimp:campaign/c-5512 | agent:scribe-mei | 0.42 hype-leaning | human:rosa.k | rejected, redraft | pending | rework |
| v-4421 | Lifecycle webinar invite | marketo:program/PG-7740 | agent:scribe-mei | 0.83 plainspoken | human:rosa.k | approved | human:dan.w | shipped 2026-05-29 |

The `voice_reviewer` column is the load-bearing one. It names a human owner of brand voice, not a committee. That follows the [agent identity](/blog/agent-identity) pattern: every action attaches to a principal.

## The workflow

Scribe, the marketing agent, watches a Marketo program go live and drafts three subject-line variants plus body copy for each. It writes one Dock row per variant, each pointing back to the Marketo program ID. The [drafting agent](/blog/ai-response-drafting) self-scores tone against the brand rubric and flags any variant under 0.60.

Rosa, the brand-voice owner, opens her review queue filtered to `voice_reviewer = rosa.k AND tone_verdict = null`. She reads each variant against the live Marketo or HubSpot preview, which Dock re-fetches on row open so she sees the current rendered email. She marks approve, approve-with-edits, or reject. Her edits write back to the Dock row, not to HubSpot directly.

Dan, the editor, sees only rows Rosa approved. He pushes the final string to the platform via its API and stamps `status = shipped`. The platform send is the action of record. The Dock row is the decision of record.

## Why it matters

Without an attributed voice owner, tone drift is invisible. Scribe can draft a hundred emails a week and no human ever signs off on voice. With Rosa named in the row, every shipped variant has a tone verdict from a known person at a known time. That is the substrate the [audit and compliance](/blog/agent-audit-and-compliance) story rests on, and it is why agents need [lifecycle-managed identities](/blog/agent-identity-lifecycle) rather than shared service accounts.

Plainspoken voice is a measurable property. Nielsen Norman's tone-of-voice work identifies [four primary dimensions](https://www.nngroup.com/articles/tone-of-voice-dimensions/) including formal-casual and matter-of-fact-enthusiastic, which gives the rubric its axes. Mailchimp's own guide commits to being [plainspoken](https://styleguide.mailchimp.com/voice-and-tone/) and against hyperbole, which is the rubric Scribe scores against for Mailchimp sends. Dock makes those rubrics enforceable per row instead of aspirational per quarter.

Start your Dock workspace and route your first campaign through an attributed reviewer.

## FAQ

**Who owns brand voice when an agent drafts the copy?**
A named human. Dock requires a `voice_reviewer` value on every row before status can move to shipped. The agent never self-approves tone.

**Does Dock replace HubSpot, Marketo, or Mailchimp?**
No. The platform still owns the campaign, the audience, and the send. Dock owns the draft, the tone verdict, the reviewer identity, and the timestamp.

**What happens when brand guidelines change mid-campaign?**
Rosa updates the rubric doc Scribe reads at draft time. In-flight rows keep their original verdict. New rows score against the new rubric. The Dock row stores which rubric version applied.

**Can multiple agents draft into the same queue?**
Yes. Each row carries its own `drafter` identity, so Rosa compares tone across agents and retires ones that drift.
