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 of the GTM stack, parallel to the sales rail.
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 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 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 story rests on, and it is why agents need lifecycle-managed identities rather than shared service accounts.
Plainspoken voice is a measurable property. Nielsen Norman's tone-of-voice work identifies four primary dimensions including formal-casual and matter-of-fact-enthusiastic, which gives the rubric its axes. Mailchimp's own guide commits to being plainspoken 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.