Marketing Ops Documentation: Seven Records That Survive Turnover

Keep the smallest documentation set that lets another person understand the stack, change it deliberately and recover a failed workflow. Seven connected records cover most small teams: the system map, ownership, tracking plan, CRM register, metric definitions, runbooks and decision log. Put each beside the work it governs, link them through one index and test them with someone who did not build the system.

Jafrin Akter AloLast updated 15 min read
On this page
A cobalt ring binder holds white pages and colored dividers, beside Ops Documents: Ready for Use.

What should useful marketing ops documentation answer?

Useful documentation answers four questions: what exists, what it means, why it works this way and how to operate or change it. A list of subscriptions answers only part of the first question.

Start with a customer or reporting workflow that would cause real disruption if its builder disappeared. Trace its source, identity, configuration, destination, operating owner and acceptance evidence. Document the decisions another person cannot safely infer from the interface.

What should useful marketing ops documentation answer?
QuestionRecords that answer itPractical test
What exists and connects?System map and inventoryFind the producer and destination of one important field
Who can decide and act?RACI and role directoryIdentify the authorized operator and backup
What should happen?Tracking plan, CRM register and metric contractsExplain one event, overwrite rule and reported number
Why, and what if it fails?Decision records and runbooksRecover a controlled failure without guessing at the original intent

The goal is continuity, not a large document count. A five-person team can keep several records in one small repository or workspace, provided ownership and links remain clear. A larger team may maintain separate catalogs and operating libraries.

Our martech integration work should leave those definitions and operating records with the implementation. A connection that only its original builder can explain is unfinished handover work.

Which seven records should the team maintain?

Maintain one authoritative home for each type of record and a named role that updates it when the underlying work changes. Seven categories are a useful starting design, not a requirement to create seven long manuals.

1. System map

Record tools, environments, source-to-destination connections, identities used by those connections and the outputs that depend on them. Include the difference between a person's login and a scheduled integration's service identity.

The stack map should let a new operator answer where a field comes from and what breaks if its connection stops. Name the owning role and the location of configuration, monitoring and recovery instructions. Update it when a tool, connection, account or operating identity changes.

Do not place live credentials in the map. Link to the approved secret-management record and the role allowed to retrieve or rotate the secret. A diagram containing a password is an exposure, not a shortcut to continuity.

2. Ownership RACI and role directory

Use the martech RACI to distinguish definition, build and operating responsibilities. Keep the current holder and backup in a role directory so a staff change does not require rewriting every technical page.

The chart should identify who accepts a change, who publishes it, who responds to an incident and who can resume a paused workflow. Tool administrator access does not automatically confer authority to change a revenue definition or customer-communication policy.

Update ownership after role transfers, new suppliers or incidents that expose an unowned decision. Test that the named person can access the evidence needed for their responsibility.

3. Tracking plan

The tracking plan records business triggers, counting units, identifiers, parameters, destinations, allowed fields and acceptance cases. Keep implementation mappings beside the relevant code or release configuration.

A dictionary entry describing demo_requested is not enough. The plan must distinguish successful backend acceptance from a button click, explain retries and identify the authoritative submission ID. Apply the event naming rules without replacing these semantic decisions with naming conventions alone.

Update the plan in the same change that alters the event, consent route, identifier or destination. Link the tests that establish what the released version does.

4. CRM field and workflow register

Record each consequential property's purpose, object, internal name, data type, authoritative writer, empty-value rule and consumers. Record each workflow's entry, exit, write actions, dependencies and owner.

Use the property-ownership guide for precedence and conflict rules. A label such as “Lead source” does not establish whether the field stores first acquisition, latest acquisition, a salesperson's assessment or an import provenance value.

Keep short descriptions in the CRM where administrators see them, with a link to the full contract where needed. Review the register when an integration starts writing, a property changes or a workflow is retired. Removing a workflow can leave copied values and downstream assumptions behind.

5. Metric definitions and data dictionary

Each important report needs a metric contract stating grain, population, time basis, exclusions, calculation, inputs and accountable owner. The marketing metric-contract guide supplies that structure.

For example, “monthly MQLs” can mean people first qualifying during the month or people currently in that stage. A field export cannot decide which definition leadership intended. Preserve both the approved meaning and the implementation that realizes it.

Update definitions when the business question changes, and update mappings when the source schema changes without changing the question. Those are different changes with different effects on historical comparability.

6. Runbooks for costly or recurring failures

Write runbooks for failures that have occurred or would materially affect customers, money or decisions. Each needs a recognizable symptom, first checks, containment, diagnosis, authorized recovery, verification and escalation.

A runbook should say when to stop. “Replay all failed records” is unsafe when the destination may already have processed an uncertain request. Define the reconciliation required before replay and preserve the occurrence identity.

Record the most recent actual drill or incident test in the internal runbook, including the tested version and remaining gaps. Do not mark a procedure tested because someone read it without following its critical path.

7. Decision log

Record decisions whose reasons a future operator might otherwise reverse accidentally: identity keys, field authority, retention, product choice, retry policy or metric exclusions.

Michael Nygard's architecture-decision-record format uses title, context, decision, status and consequences. Keep a reversed decision and mark it superseded with a reference to its replacement, rather than deleting the evidence of why the old system existed. Nygard's original ADR method

Include disadvantages and operating costs, not only the reason the selected option was attractive. “We selected this connector” without its constraints does little for the person planning the next migration.

Where should each record live?

Keep the editable definition near the system or code that changes, then provide a navigable index for people who do not work there daily. Avoid several independently edited copies of the same rule.

Where should each record live?
RecordPractical homeIndex should link toUpdate trigger
Tracking contractVersioned project or maintained registryCurrent event and deployment evidenceEvent or destination change
CRM descriptionsNative property/workflow settings plus registerMeaning, writer and dependenciesProperty or workflow change
Warehouse definitionsModel and column descriptions beside codeModel, lineage and testsModel or metric change
RunbookOperating library accessible during incidentsAlert, source evidence and recovery authorityIncident or drill finding
Decision recordVersioned decision directoryAccepted decision and any successorNew or reversed decision

dbt supports descriptions in project YAML and longer docs blocks, with generated documentation containing model information, tests and warehouse metadata. Its platform Catalog has plan-specific availability; basic generated dbt Docs is a different route. dbt documentation

Mixpanel Lexicon stores descriptions of events and properties. Project owners and admins manage descriptions, while the event Owners field is an Enterprise feature. A team without that feature still needs an owner in its external register. Mixpanel Lexicon

The index should list the record, authoritative location, owning role, current holder or directory link, status and review trigger. Test access with the intended reader. A perfect Git repository is not useful handover if the person answering an incident cannot open it.

What can you generate from live system metadata?

Generate inventory and configuration evidence, then have owners confirm business meaning. Metadata can establish that a field exists and what type it has; it cannot reliably explain why the company uses that field or which team may overwrite it.

What can you generate from live system metadata?
SourceRead routeUseful outputBoundary
GTMVersion headers and selected container versionVersion IDs, tags, triggers and variablesA header listing alone is not the full container configuration
GA4Admin API custom-definition retrievalNames, scopes and configured definitionsChange-history retrieval has a different permission requirement
HubSpotCRM property-definition retrievalInternal names, types, labels and descriptionsDefinitions do not reveal every writer or business policy
dbtProject descriptions, artifacts and supported metadata toolsModels, columns, tests and lineageAvailable tools and APIs depend on the actual deployment and plan

GTM's version-header list and version-get methods accept tagmanager.readonly; retrieve the actual version when the job needs its contents. GTM version headers, GTM version retrieval

GA4 custom-dimension listing accepts analytics.readonly. Its change-history search instead requires analytics.edit and returns only the changes supported by that API. Keep it outside a strictly read-only documentation credential unless a separately approved access design covers the task. GA4 custom definitions, GA4 change-history scope

HubSpot's properties API retrieves definition information as well as exposing separate mutation operations. Choose the retrieve path and relevant read access rather than granting every capability the API family supports. HubSpot properties API

dbt MCP exposes metadata discovery alongside other capabilities. Self-hosted and remote tool sets differ, and underlying API access depends on the plan. Allowing the whole server is not the same as selecting only the tools a documentation job needs. dbt MCP scope

Record export scope, account, environment, pagination completion and capture identifier. A partial or failed export must not be interpreted as proof that the missing assets were deleted. Treat configuration text as potentially sensitive too; descriptions and templates can contain information that should not reach a general AI prompt.

How should an AI-assisted drift check work?

Let the assistant compare approved metadata snapshots with the maintained records and propose changes for review. Keep inferred descriptions explicitly unconfirmed until the responsible owner accepts them.

Use a bounded procedure:

  1. Obtain complete metadata snapshots through approved read routes.
  2. Remove secrets, customer values and unrelated configuration content.
  3. Match assets by stable system and object identifiers.
  4. Report additions, missing assets, type changes and unconfirmed meaning separately.
  5. Attach the source evidence and propose a documentation diff.
  6. Have the owner accept, reject or investigate each substantive change.

The following is an original proposed review record, not a vendor API response:

JSON
{
  "asset_key": "hubspot:example-account:contact:renewal_date",
  "observed_type": "date",
  "documented_type": "string",
  "finding": "type_mismatch",
  "business_meaning_status": "needs_owner_confirmation",
  "source_snapshot": "crm-schema-capture-042",
  "proposed_action": "review_definition_and_dependent_mappings",
  "automatic_production_change": false
}

A field called renewal_date might describe contract renewal, a reminder date or a legacy import. The assistant should not invent the answer from the name. Likewise, a changed display label is not necessarily a changed internal identifier or business definition.

Use the Claude Code scheduled-check guide for the runtime, trigger and result contract. Require a complete-review status separately from “no differences found.” If an account could not be read, the report is incomplete.

Keep proposed changes behind the real review mechanism. GitHub branch protection can require review and status checks, but bypass permissions and private-repository plan eligibility matter. Verify the effective identity rather than assuming a draft pull request prevents direct modification. GitHub branch protection

The agentic marketing-operations guide covers choosing these recurring jobs. The documentation owner still decides meaning and acceptance.

What does a runbook another operator can follow contain?

A useful runbook takes the operator from a recognizable symptom to a verified outcome, with clear stop conditions and authority. Give it enough context to avoid a plausible but damaging repair.

For a hypothetical “demo requests missing from HubSpot” runbook:

What does a runbook another operator can follow contain?
StageInstructionEvidence or stop condition
Establish impactCompare accepted form submissions with CRM arrivals for the agreed periodSubmission IDs and complete exports; exclude invalid attempts
Check sourceConfirm the backend actually accepted the missing requestsDo not replay button clicks or failed validation
Inspect changeCompare the relevant form/integration release and, if involved, GTM versionIdentify the first failing path rather than assuming all tracking broke
Check destinationInspect integration identity, required fields and property historySeparate denied writes, rejected values and wrong-record matches
RecoverRepair the demonstrated cause and replay only reconciled eligible occurrencesPreserve submission IDs and current permission rules
VerifyRecompare the same source population and destination recordsCounts and identities agree; duplicates and remaining gaps explained

HubSpot's record property history exposes changed values, time and source. Use it to inspect the affected field rather than assuming a record's current value explains the whole sequence. HubSpot property history

The runbook should name who can pause the workflow, who can authorize replay and who accepts recovery. Link to access and secret locations without copying secret values. Include the fallback when the main owner is unavailable.

If the source has twelve valid submissions and the CRM has eleven, identify the missing submission. Do not create a twelfth arbitrary contact merely to match the count. If two CRM records represent one submission, a matching total can still hide both a duplicate and a loss.

How should you record a consequential decision?

Write one decision with its context, status and consequences, then retain the record when the decision changes. The reason matters as much as the final configuration.

Consider an original hypothetical CRM decision:

Plain text
Title: One authoritative workflow writes lifecycle stage
Status: Proposed, pending revenue-process owner acceptance
Context: Three integrations can overwrite the same field.
Decision: Route stage changes through one reviewed workflow.
Consequences: Other integrations submit proposed inputs instead of
writing the field directly. Sales needs an approved override path.
Verification: A stale import cannot regress an accepted stage.
Supersedes: None

This is a proposal until the authorized owner accepts it. The example adds a verification case to the ADR structure; it is not evidence that any client had this incident.

When the business later changes the stage policy, create a successor record and explain the transition. Keep links to affected mappings, reports and tests so the next person can identify what must change with the decision.

How do documentation updates become part of normal delivery?

Include the affected record in the definition of done for the change. A separate cleanup project months later is likely to preserve a description of the old implementation.

How do documentation updates become part of normal delivery?
ChangeRecord to reviewAcceptance question
New event or destinationTracking plan and system mapDoes the released route match the approved contract?
New CRM writer or propertyField/workflow registerAre precedence, blanks and consumers explicit?
Changed metricMetric contract and decision logCan someone explain historical comparability?
Role or supplier transferRACI and role directoryCan the new owner act with the required access?
Incident or failed drillRunbook and relevant definitionDoes the next operator have a verified recovery path?

Use the tracking-governance process to connect these updates to release evidence. A change request can ask which record changed and why “no documentation change” is valid when that is the answer.

Do not make every text correction a heavyweight approval. Reserve substantive owner review for changed meaning, access, customer treatment or operational behavior. Keep routine corrections easy enough that people make them.

How do you prove the documentation survives turnover?

Have someone unfamiliar with the workflow perform a controlled task using the records and their normal permissions. Record where they stop, what they infer incorrectly and which access or explanation is missing.

Choose a bounded task such as tracing one demo request, explaining a metric exception or rehearsing a paused-sync recovery in an approved environment. The original builder can observe and intervene if necessary, but should not narrate the missing steps and call the exercise a pass.

In a hypothetical drill, the operator finds the alert and source record but cannot identify the active integration account. That is an identity/ownership gap. If they locate the account but cannot read the necessary evidence, that is an access gap. If the evidence is available but the recovery instruction is ambiguous, that is a procedure gap.

Assign each gap to a role, repair it and repeat the affected task. A suggested quarterly drill is a planning cadence; increase or change it when releases, turnover or criticality justify it. Use the ownership and operating handoff for a real staff or supplier transition.

How the workflow fits together
A meaningful change or handover identifies the affected records and owners. Missing source evidence or meaning returns to resolution. After records update with the implementation, reviewer and operator checks either expose a gap that returns to ownership or accept the records with maintained review triggers.
Read diagram as text
  • Identify a meaningful stack change or handover to Find affected records and their owners.
  • Find affected records and their owners to Current source evidence and meaning are established?.
  • Current source evidence and meaning are established? to Resolve missing metadata or owner decisions: No.
  • Resolve missing metadata or owner decisions to Find affected records and their owners.
  • Current source evidence and meaning are established? to Update records alongside the implementation: Yes.
  • Update records alongside the implementation to Reviewer approves definitions dependencies and access?.
  • Reviewer approves definitions dependencies and access? to Repair the documented or operating gap: No.
  • Reviewer approves definitions dependencies and access? to Another operator completes the controlled task?: Yes.
  • Another operator completes the controlled task? to Repair the documented or operating gap: No.
  • Repair the documented or operating gap to Find affected records and their owners.
  • Another operator completes the controlled task? to Accept the record and retain its review triggers: Yes
Open full diagram

What should the team leave out of the documentation library?

Leave out content that has no operating consumer or reliable maintenance path. Prefer a direct link to the vendor's current procedure over a long copied manual, while retaining the company-specific settings and decisions the vendor cannot know.

Avoid secrets, unnecessary customer records, unexplained screenshots, obsolete duplicate definitions and long histories that conceal the current rule. A screenshot can clarify a difficult state, but it should support the instruction rather than become the only way to find the control.

Keep internal tested timestamps, versions and evidence where they help an operator assess the procedure. Do not confuse those operational records with a marketing claim that the whole stack is always current.

Checklist

  • One index links authoritative records and owning roles.
  • System and connection identities can be found without exposing secrets.
  • Tracking, CRM and metric records preserve actual meaning and writers.
  • Metadata exports record scope and completeness.
  • AI-inferred descriptions remain unconfirmed until accepted.
  • Runbooks include stop conditions, authority and verification.
  • Superseded decisions remain linked to their replacements.
  • Relevant records change with the implementation.
  • A new operator has completed a controlled task using normal access.
  • Failed drills produce owned repairs and retests.

For an inherited stack with unclear ownership, start with the $99 martech audit. For an implementation or handover, request a detailed integration scope that includes the records and acceptance tasks the next operator will need. These same maintained definitions also supply better context for an AI assistant.

Keep reading

Browse all Martech Strategy guides

Questions people ask

Can one page serve as the entire operating library for a very small team?

It can serve as the index and hold several short records, but it should not hide different owners or meanings inside one unstructured narrative. Link to the current configuration, event contract and recovery evidence. Split a section when it changes independently or becomes difficult to find. The test is whether another person can complete the relevant task, not how many separate files exist.

Should an exported property description be treated as an approved business definition?

No. It is evidence of what the tool currently stores, which may be incomplete, outdated or written for another purpose. Compare it with the authoritative contract and confirm discrepancies with the owner. Preserve whether an entry was observed, inferred or accepted. Automatically copying a confident description into a new catalog can spread an old ambiguity without resolving it.

What should an operator do when the runbook conflicts with the live configuration?

Stop the conflicting recovery step and establish which version and business rule are authoritative. Preserve the discrepancy and escalate to the named owner rather than changing production to make it resemble an old document. Once the intended behavior is confirmed, repair the configuration or the runbook as appropriate and retest the affected path. Record why the mismatch occurred so the review trigger improves.

Can documentation access be broader than production-system access?

Often it should be, so reviewers and new operators can understand the workflow without receiving administrator permissions. Review the content first: configuration can contain sensitive identifiers, internal URLs or secrets. Provide a minimized operating view and controlled links to restricted evidence where needed. Reading the procedure should not implicitly grant the ability to execute every action it describes.

How should a team handle a decision whose original owner has left?

Use the current role directory to assign an accountable successor, then review the decision's context, consequences and supporting evidence. Keep any uncertainty visible rather than inventing the departed person's reasoning. If the old rationale cannot be established, record a new decision based on current requirements and tests, preserving the earlier record as historical context with its limits clearly stated.

Sources

  1. Michael Nygard: Architecture decision records
  2. dbt documentation and Catalog
  3. Mixpanel Lexicon
  4. GTM version-header API
  5. GTM version retrieval API
  6. GA4 custom-dimension retrieval
  7. GA4 change-history permissions
  8. HubSpot property-definition API
  9. dbt MCP capabilities and plan boundaries
  10. GitHub branch protection
  11. HubSpot record property history
Portrait of Jafrin Akter Alo

Written by

Jafrin Akter Alo

Data Engineer and Co-founder at Martechdevs and Growth and Analytics Partners

Jafrin writes practical guides to marketing technology, customer data, analytics and AI workflows. Martechdevs is a Growth and Analytics Partners company.

View LinkedIn profile

Book a Free Call

Thirty minutes on your stack and what it needs. Free, and no pitch.

Thirty minutes, and you leave with a plan

We look at what you have, what it is costing you and what to do about it first.

  • 30 minutes
  • Video call, link on booking
  • No obligation

What we'll cover

  • Your current stack and where it hurts
  • Quick wins we can ship first
  • An integration roadmap
  • Timeline, scope and next steps

Calendar not loading? Open it in a new tab or email hello@martechdevs.com.