Article
One global MarTech platform. Twenty countries. Twenty different ways of working. Here is what to standardize globally, what to leave to local teams, and how to build a federated governance model into the platform itself.
35 min read · Applies to: Marketo, Salesforce Marketing Cloud, HubSpot
Written by
One global MarTech platform. Twenty countries. Twenty different ways of working.
Should headquarters control everything? Or should local marketing teams have the freedom to operate independently?
This is one of the most important questions in global MarTech governance, and both extreme answers create problems. Centralize everything, and global marketing operations turns into a queue: every campaign needs approval, local teams miss market opportunities, and regional marketers depend on headquarters for routine work. Decentralize everything, and you get a different kind of mess: different lead lifecycle definitions, inconsistent campaign names, fragmented reporting, duplicated processes and conflicting data practices. One technology ecosystem, but several operating models that struggle to work together.
The answer is not choosing between standardization and flexibility. It is knowing where each belongs, and then building that decision into the platform so people do not have to remember it.
This guide gives you a practical way to do that. By the end you will be able to:
Important: this is a proposed governance framework, not the description of a specific company’s internal operating model. Platform features were checked against vendor documentation in October 2026. Names, countries, numbers and scenarios are illustrative. Nothing here is legal advice; confirm consent and privacy requirements with your own privacy and legal teams.
The most effective global MarTech governance model is usually federated: a global team owns the guardrails, local teams own execution inside those guardrails, and both share accountability for business outcomes. Standardize what must stay consistent across countries: data definitions and lifecycle stages, consent principles and compliance controls, security and access, integration patterns, naming and reporting conventions, and platform architecture. Localize what creates market relevance: messaging and language, audience strategy within approved policies, campaign timing, channel mix and cultural experience. Then enforce the standards in the platform itself (approved templates, required fields and tags, automated naming checks, role-based access, quality gates and approval workflows) rather than in a long document. Give experienced markets more autonomy and smaller markets more central support, keep the standards the same for both, and judge the model by data quality, campaign reliability, speed, reporting comparability, compliance and adoption.
MarTech governance is the set of standards, decision rights, controls and processes that decide how a marketing technology stack is used: who can do what, to which data, following which rules, and how compliance with those rules is checked. In a single-country team, governance can stay informal because everyone sits close together. Across twenty countries, informal governance breaks down quickly.
Three forces pull in different directions:
When these forces are not balanced deliberately, an organization usually drifts toward one of two failure modes.
| Symptom | Over-centralized | Over-decentralized |
|---|---|---|
| Campaign speed | Long queues; local teams wait for headquarters to build routine emails | Fast locally, but every country reinvents the same programs |
| Data | Consistent, but fields that local teams need are often missing | Each country adds its own fields and picklist values; duplicates multiply |
| Lifecycle | One definition, sometimes ignored in practice because it does not fit some markets | Several MQL definitions; global funnel reports are not comparable |
| Reporting | Clean global reports, little local insight | Rich local reports that cannot be rolled up |
| Compliance | Central control, but local legal nuances can be missed | Local practices vary; hard to prove which rule applied to which record |
| People | Regional marketers lose skills and ownership; headquarters burns out | Duplicate headcount and tools; knowledge stays in silos |
The pattern in the right-hand column links directly to Lab #001: the technology “works” (emails send, scores calculate, syncs run), but the business cannot trust what it reports.
Most enterprises end up somewhere on a spectrum between three models. The labels vary (some call the middle option “hybrid” or “hub-and-spoke”), but the decision rights behind them are what matters.
| A. Strong central control | B. Full local autonomy | C. Federated governance | |
|---|---|---|---|
| Who builds campaigns | Central team builds almost everything | Each country builds its own | Countries build from global templates; central team builds shared assets |
| Who sets standards | Central team | Each country, informally | Global team, with regional input through a governance council |
| Speed for local needs | Slow; depends on central capacity | Fast | Fast for routine work, governed for high-risk changes |
| Data and reporting consistency | High | Low | High for shared definitions, flexible for local extensions |
| Local relevance | Often low | High | High |
| Compliance control | Strong, but can miss local nuance | Uneven | Global principles with local legal input |
| Cost profile | Concentrated central headcount | Duplicated skills and tools | Shared platform and CoE, lighter local teams |
| Setup and coordination effort | Medium | Low at first, high later when you try to consolidate | Highest: needs standards, templates, roles, tiers and a council |
| Fits best when | Few markets, low maturity, high regulatory risk, or a platform migration is underway | Business units are truly independent and share no customers, data or reporting | Many markets share customers, data, brand or reporting, and maturity varies |
D. A different model entirely. Some organizations run separate platform instances per region, or outsource execution to an agency while keeping governance in-house. These can be the right call (see Alternatives and variations), but they trade away shared data and comparable reporting, so the decision should be explicit.
For most global organizations that share customers, brand and reporting across markets, federated governance is the strongest default. It is not a compromise where everyone gets half of what they want. It is a deliberate split of responsibilities: global teams own the guardrails, local teams own execution within those guardrails, and both share accountability for business outcomes.
The framework has five principles. The first two decide what is governed globally and locally. The third decides how governance is enforced. The fourth adapts the support model to each market. The fifth decides how you know it is working.
A useful test: if inconsistency in this element would break integration, reporting, compliance or security across countries, standardize it.
| Standardize globally | What the standard covers | Why it must be global | Example standard (illustrative) |
|---|---|---|---|
| Data definitions and lifecycle standards | Field dictionary, picklist values, required fields, lifecycle stages and their entry criteria, lead source taxonomy | Global funnel reporting and CRM sync depend on everyone meaning the same thing | “MQL = behavior score ≥ 50 and fit score ≥ 40 and valid business email. Countries may add local fit criteria but cannot change the threshold logic.” |
| Consent principles and compliance controls | How consent is captured, stored, evidenced and withdrawn; suppression rules; which fields hold consent | Proof of consent and opt-out handling must work for every record, whichever country captured it | “Every opt-in records date, source, wording version and jurisdiction. Withdrawal is processed globally, not per country.” |
| Security, access and integration governance | Roles, permission sets, API users, integration approval, vendor onboarding | One compromised or over-privileged account affects every market | “No shared logins. API users have the minimum permissions for their integration and an owner.” |
| Campaign naming and reporting conventions | Program naming pattern, channels, required tags, period cost rules, UTM conventions | Reports by country, channel and program type only work if names and tags are consistent | “Programs follow YYYY-MM_CC_TYPE_Short-Name; Country and Business Unit tags are required.” |
| Platform architecture and quality requirements | Workspace and partition design, folder structure, template library, deliverability settings, QA checklist | Structural changes are expensive to reverse and affect everyone | “New workspaces or partitions require architecture review. Every email passes the global QA checklist.” |
Practitioner tip: keep the global standard short enough that people can name its parts. Five categories and around twenty concrete rules are easier to enforce than a 50-page manual.
The mirror-image test: if the element mainly affects how relevant a campaign feels to a local audience, and inconsistency would not break anything shared, let the local team decide.
| Localize | What local teams decide | Guardrail that still applies |
|---|---|---|
| Campaign messaging and language | Copy, tone, imagery, translation and transcreation | Brand guidelines and approved claims |
| Market-specific audience strategy | Which segments to target, local fit criteria, account lists | Global data definitions and consent rules; no new personal data fields without review |
| Campaign timing and execution | Send times, cadence, local holidays, event dates | Global communication limits and blackout periods, if any |
| Channel selection and optimization | Mix of email, events, webinars, paid and partner channels; A/B tests | Approved tools and integrations; channel tags for reporting |
| Cultural and customer experience considerations | Form length, local payment or event formats, customer journey nuances | Accessibility, security and consent capture standards |
Global consistency should not come at the expense of local relevance. If a standard keeps blocking a legitimate local need, treat that as a signal to revise the standard, not as a reason for the local team to work around it.
When an item does not fit either list neatly, use the decision tree below. It turns a debate into three questions.
A 50-page governance document means little if marketers must manually remember every rule. Instead, embed standards into everyday workflows:
| Mechanism | What it enforces | Example in Adobe Marketo Engage (verified features) |
|---|---|---|
| Approved campaign templates | Structure, tokens, required campaigns, QA steps | Template programs kept in a shared folder; local teams clone them. Shared folders are read-only in the receiving workspace. |
| Automated naming validation | Naming pattern, country and type codes | A scheduled read-only API audit of program names (see the appendix) |
| Required metadata | Reporting dimensions | Custom tag types set as Required for chosen program types, so a value must be chosen when a program is created |
| Role-based access controls | Who can approve, activate, change admin settings or reach which markets | Roles grouped from permissions, assigned per workspace in Admin > Users & Roles |
| Required campaign quality checks | Content, links, tokens, consent and suppression logic | A pre-launch checklist in the template program, plus approval before activation |
| Reusable integrations and reporting frameworks | One way to connect CRM, webinar and event tools; one reporting model | Central integration ownership; shared reporting definitions |
| Clearly defined approval workflows | Who approves high-risk changes | Tiered approvals by risk and market maturity, managed in your workflow tool |
Good governance should make the right way of working easier than the wrong way. If cloning the approved template is faster than building from scratch, people will use the template.
Not every market has the same expertise, resources or operational capacity. A mature marketing automation team may need more execution autonomy. A smaller market may benefit from centrally managed templates, training and extra operational support. The standards can remain consistent while the support model differs.
| Tier | Typical market profile | Who builds | Who approves launch | Central support |
|---|---|---|---|---|
| 1. Supported | No dedicated MOps person, low volume, new to the platform | Central team or regional hub, from local briefs | Central team | Full service; training plan toward Tier 2 |
| 2. Guided | Trained local users, moderate volume | Local team, from approved templates | Regional hub reviews before activation | Office hours, peer reviews, template updates |
| 3. Autonomous | Certified local admins, high volume, strong track record | Local team, including local templates within standards | Local team; central spot audits | Access to the governance council and early pilots |
Promotion between tiers should depend on criteria a market can see and work toward, for example: a number of trained or certified users, a period of campaigns launched without critical QA defects, naming compliance above an agreed threshold, and no unresolved consent incidents. Demotion should be possible too, but treat it as support, not punishment.
The goal is not to maximize the number of rules. It is to improve outcomes. These six metrics give governance a scorecard. The definitions are suggestions; set your own targets from a measured baseline.
| Outcome | Example measure | How to measure it |
|---|---|---|
| Data quality and consistency | Share of records with valid required fields and allowed picklist values | Scheduled data audits or smart lists per country |
| Campaign reliability | Campaigns launched without critical defects (wrong audience, broken links, missing tokens) | QA checklist results and incident log |
| Speed of execution | Median time from approved brief to launch, per tier | Timestamps in your request or project tool |
| Reporting comparability | Share of programs with compliant names and required tags | The naming audit script plus tag reports |
| Compliance with applicable requirements | Opt-outs processed within your policy window; consent records with complete evidence | Consent field audits, unsubscribe processing logs |
| Adoption of approved capabilities | Share of programs cloned from approved templates; use of shared integrations | Program audits, template usage counts |
Use the three levels from Lab #001: technical success (the rules run), operational success (teams work faster and with fewer errors) and business impact (comparable reporting supports better decisions). If governance improves the first level and harms the second, it needs adjusting.
Most governance conflict comes from ambiguity: two teams both believe they own a decision, or nobody does. A decision rights matrix fixes that. The version below uses a simple RACI-style notation: D decides, C is consulted, I is informed, E executes.
| Decision | Global MarTech CoE | Regional hub | Local team | Privacy and legal | IT security |
|---|---|---|---|---|---|
| Lifecycle stage definitions and MQL logic | D | C | C | I | |
| New global field or picklist value | D | C | C | C | |
| New local field (country-specific) | D (approves) | C | E (requests) | C | |
| Consent capture principles and wording rules | C | I | I | D | |
| Country-specific consent wording | C | C | E | D | |
| Program naming convention and required tags | D | C | I | ||
| Campaign messaging, language and creative | I | C | D | ||
| Audience selection within policy | I | C | D | C (if sensitive) | |
| Campaign timing and channel mix | I | C | D | ||
| New integration or vendor | C | C | E (requests) | C | D |
| Roles, permissions and API users | D | C | I | C | |
| Workspace or partition changes | D | C | I | C | C |
| Activation of a campaign to a new audience | I | D for Tier 1 to 2 | D for Tier 3 | ||
| Exceptions to a global standard | D (via council) | C | E (requests) | C | C |
Publish the matrix where people work (your intranet, the template program description, the request form) and review it at every governance council.
The ten steps below take an organization from “twenty ways of working” to a governed federated model. Steps 4 to 7 include verified configuration paths for Adobe Marketo Engage. If you use another platform, the objective and verification of each step still apply; equivalents for Salesforce Marketing Cloud Engagement and HubSpot are noted where they exist.
Before you start: make every structural change in a sandbox first if you have one. Workspace, partition, tag and role changes affect every user, and some (such as removing a program type from a tag’s “applies to” list) delete existing values.
Objective: replace opinions with facts about the current state, so standards are based on real practice.
Prerequisites: read access to the marketing automation platform and CRM; a contact in each country or region; Marketo API credentials for a read-only API user if you want to run the audit script.
Navigation: your platform’s admin and asset areas; in Marketo, Admin for workspaces, partitions, tags and users, and Marketing Activities for programs.
Detailed Instructions:
Example Configuration: a simple inventory sheet with columns Country | Workspace | Users | Programs (last 12 months) | Naming patterns found | MQL definition | Consent method | Local fields | Top 3 pain points.
Expected Result: a one-page picture of where practices differ, and which differences actually cause problems.
How to Verify: each country lead confirms their row is accurate. Totals match platform counts (users in Admin > Users & Roles, programs from the API or export).
Common Mistakes: auditing only the platform and skipping interviews (you miss the workarounds); treating every difference as a problem (some differences are legitimate localization).
Troubleshooting: if the API audit returns fewer programs than expected, check that the API user’s role can see all workspaces. If a country has no clear lifecycle definition, record “undefined” rather than guessing.
Visual Requirement: a heat map of countries against standards (green = consistent, amber = minor variation, red = conflicting practice).
Objective: define the short list of non-negotiable standards, using the five categories from principle 1.
Prerequisites: the inventory from Step 1; a named owner for each category (for example, data standards owned by the MarTech architect, consent principles by privacy).
Navigation: a shared, version-controlled location: a wiki page, a git repository or a document with change history.
Detailed Instructions:
YYYY-MM_CC_TYPE_Short-Name, the same convention as Lab #002.Example Configuration:
Rule NR-01 Program names match YYYY-MM_CC_TYPE_Short-Name Enforcement: audit (weekly)
Rule NR-02 Country and Business Unit tags are required Enforcement: platform (required tag)
Rule DL-03 Lifecycle stage changes only via global campaigns Enforcement: platform (permissions)
Rule CC-01 Opt-in stores date, source, wording version, region Enforcement: review + audit
Expected Result: a catalog of roughly 15 to 30 rules that fits on a few pages.
How to Verify: every rule has an owner, an enforcement method and a way to test it. Ask a local marketer to read it; if they cannot tell what is mandatory, rewrite it.
Common Mistakes: copying a vendor’s best-practice list wholesale; writing rules no one can check; letting the catalog grow without retiring old rules.
Troubleshooting: if stakeholders cannot agree on a rule, apply the decision tree: does inconsistency break something shared? If not, it is probably a local decision.
Visual Requirement: the standardize vs localize graphic above, adapted with your own rules.
Objective: make ownership explicit and create one forum for changes and exceptions.
Prerequisites: sponsorship from a senior marketing leader; the standards catalog draft.
Navigation: your collaboration and meeting tools; publish the matrix next to the standards catalog.
Detailed Instructions:
Example Configuration: exception request fields: Requesting market | Standard affected | Reason | Risk | Proposed duration | Compensating control | Decision | Expiry date.
Expected Result: a published matrix, a council calendar and an exception log.
How to Verify: pick five recent decisions and check that the matrix names exactly one decider for each.
Common Mistakes: a council with no decision authority; no regional representation; exceptions with no expiry date that silently become permanent.
Troubleshooting: if the council keeps deferring decisions, give the chair the authority to decide after one round of consultation.
Visual Requirement: the decision rights matrix as a one-page graphic.
Objective: structure the platform so ownership is clear, shared assets are reusable and data is separated only where it must be.
Prerequisites: Marketo Admin permissions; the inventory; input from privacy on any data separation requirements. Adobe’s documentation notes that workspaces and person partitions can be complex to set up and recommends contacting Marketo Support before you do.
Navigation: Admin > Workspaces & Partitions.
Detailed Instructions:
Example Configuration (illustrative): workspaces Global, EMEA, Americas, APAC; one shared person partition so customers are de-duplicated globally; a Global Templates folder shared read-only with all regional workspaces.
Expected Result: each region works in its own workspace, uses global templates from a read-only shared folder, and shares one de-duplicated database unless privacy requires otherwise.
How to Verify: log in as a test user with access to one regional workspace. Confirm the shared folder appears with a padlock (read-only) and that other regions’ programs are not visible.
Common Mistakes: creating a workspace per country by default (it multiplies admin effort and blocks sharing); using person partitions for convenience and later finding the same customer duplicated across partitions; moving a program that has members (Marketo does not allow moving a program with members between workspaces).
Troubleshooting: if people do not appear in a workspace, check the workspace’s partition assignments and the assignment rules; Adobe has a support article on leads not showing up in workspaces and partitions. If a cloned asset fails, check that its template is shared with the destination workspace.
Other platforms: Salesforce Marketing Cloud Engagement uses business units in Enterprise and Enterprise 2.0 accounts to control access and sharing, with shared items folders, shared data extensions with per-business-unit permissions and shared suppression lists from parent to child units. HubSpot offers the Brands add-on for Marketing Hub Enterprise to manage multiple brands in one account (accounts that used Business Units have been migrating to Brands), plus team-based asset partitioning.
Visual Requirement: a workspace and partition map showing which regions share people and which share templates. Capture a real screenshot of Admin > Workspaces & Partitions from your own instance.
Objective: make compliant programs the default by giving every market approved templates and required reporting metadata.
Prerequisites: Marketo Admin permissions for tags; the naming and reporting rules from Step 2; a shared template folder from Step 4.
Navigation: Admin > Tags for tag types; Marketing Activities for template programs.
Detailed Instructions:
TPL_Webinar_v3 and store them in the shared global folder.Country), add values (DE, FR, US and so on) with Add Another, select the program types it applies to, select Required and click Create.Business Unit and any other reporting dimension you need.Example Configuration: tag type Country (required, applies to all program types), values from ISO 3166-1 alpha-2; tag type Business Unit (required), values Cloud, Security, Services.
Expected Result: creating a new program prompts for Country and Business Unit; local teams clone templates instead of building from scratch.
How to Verify: create a test program of each type and confirm the required tags must be set. Clone a template into a regional workspace and confirm tokens and campaigns arrive intact.
Common Mistakes: removing a program type from a tag’s “applies to” list (Adobe warns this deletes the tag and its values from existing programs of that type); too many required tags, which pushes people toward picking any value; templates without an owner.
Troubleshooting: if users cannot see the tag, check their role’s tag permissions (Marketo’s role permissions include access to custom tags). If a template clone fails across workspaces, confirm the template’s emails, forms and landing pages are inside the program.
Rollback: to relax a required tag, edit the tag type and clear Required rather than changing its program types, so existing values are preserved.
Visual Requirement: screenshot of the New Tag Type dialog from your sandbox, and a template program tree.
Objective: give each person the permissions their tier and role need, and no more.
Prerequisites: Marketo Admin permissions; the decision rights matrix; the maturity tier of each market.
Navigation: Admin > Users & Roles, Roles and Users tabs.
Detailed Instructions:
Global Admin, Regional Approver, Local Marketer (Builder), Local Marketer (Launch), Analyst (Read Only), and API-only roles per integration.Example Configuration (illustrative): a German marketer has Local Marketer (Launch) in EMEA (Tier 3) and Analyst (Read Only) in Global; a Brazilian marketer in a Tier 2 market has Local Marketer (Builder) in Americas.
Expected Result: people can do their work in their own region, approvers control activation where the tier requires it, and admin rights are limited to the global team.
How to Verify: log in as test users for each role and attempt an activation, an admin change and access to another region’s workspace. Only allowed actions should succeed.
Common Mistakes: granting Admin to solve a one-off problem; leaving multiple roles selected on a user without realizing that Marketo then defaults to the most restrictive permission; shared logins for agencies.
Troubleshooting: if a user unexpectedly cannot perform an action, check whether several roles are selected for that workspace. Note that you cannot edit your own role; Adobe’s documentation says another admin must do it.
Visual Requirement: a role-to-tier table; screenshot of the Edit User dialog showing roles per workspace.
Objective: check every program against the naming standard automatically, so compliance is measured instead of assumed.
Prerequisites: a Marketo API-only user with a read-only role; a client ID and secret from a custom service stored in a secrets vault; Python 3.10 or later with the requests package; somewhere to schedule a job (a CI pipeline, a cloud function or a server).
Navigation: Admin > Users & Roles for the API user; Admin > Integrations > LaunchPoint (New Service, service type Custom) for the client ID and secret; your scheduler for the job.
Detailed Instructions:
NAME_PATTERN, WORKSPACE_COUNTRIES, TYPE_CHANNELS and the template prefixes to exempt.MKTO_BASE_URL, MKTO_CLIENT_ID and MKTO_CLIENT_SECRET from your vault. Never hard-code credentials.python3 marketo_naming_audit.py. It pages through programs using the documented Browse Programs endpoint (up to 200 per call) and writes naming_audit.csv.Example Configuration: 0 6 * * MON python3 marketo_naming_audit.py in a scheduler, with the CSV sent to the regional hub channel.
Expected Result (illustrative output):
naming-standard v2.1: 37 findings, details in naming_audit.csv
EMEA DE 212 programs 97.6% compliant
EMEA FR 144 programs 91.0% compliant
Americas BR 88 programs 84.1% compliant
How to Verify: create two test programs in a sandbox, one compliant and one with a deliberate error (for example a US country code in the EMEA workspace). The audit should report only the second.
Common Mistakes: giving the audit user write permissions it does not need; auditing template and archive folders; publishing a compliance league table without agreeing the rules first.
Troubleshooting: error 601 or 602 means the access token is invalid or expired (the script refreshes it); 606 means the rate limit was hit (the script backs off and retries); a result with no programs and a “No assets found” warning usually means the API user cannot see the workspace. See Lab #002’s troubleshooting table for more Marketo error codes.
Visual Requirement: a sample of the CSV report and the per-country compliance chart.
Objective: catch high-impact mistakes before launch without sending every routine email to headquarters.
Prerequisites: the decision rights matrix; the maturity tiers; a workflow tool your organization already uses for approvals.
Navigation: your workflow or project tool; the QA checklist in each template program description.
Detailed Instructions:
Example Configuration: a request form field Risk level that routes medium and high requests to the regional approver and global team automatically.
Expected Result: routine work moves quickly; risky changes get the right eyes; there is a record of every approval.
How to Verify: sample ten recent launches per tier and check that each has a completed checklist and the right approver.
Common Mistakes: one approval path for everything; approvers who rubber-stamp because volume is too high; checklists that live outside the workflow.
Troubleshooting: if approval times grow, check the volume per approver and move low-risk work down a tier rather than adding more approvers.
Visual Requirement: a risk-by-tier approval matrix.
Objective: give each market the autonomy it has earned and a visible path to more.
Prerequisites: tier criteria agreed by the council; training materials; the roles from Step 6.
Navigation: your learning platform and the governance council agenda.
Detailed Instructions:
Example Configuration: promotion criteria to Tier 3 (illustrative): two certified users, six months without a critical QA defect, naming compliance above 95 percent, no open consent incidents.
Expected Result: markets know their tier, why they are in it and what it takes to move up.
How to Verify: each market lead can state their tier and next step. Roles in Admin > Users & Roles match the published tiers.
Common Mistakes: tiers based on market size instead of capability; no route to promotion; treating Tier 1 as a permanent status.
Troubleshooting: if a strong market resists Tier 2 controls, use evidence (QA results, compliance data) and a time-boxed path to Tier 3 rather than an indefinite review.
Visual Requirement: the three-tier support model graphic above.
Objective: prove the model is working and improve it continuously.
Prerequisites: baseline data from Step 1; the audit script; QA and request data.
Navigation: your BI or reporting tool; the council agenda.
Detailed Instructions:
Example Configuration: a monthly dashboard with one row per region and columns for each outcome metric, plus a trend line against the baseline.
Expected Result: governance decisions are based on evidence, and standards evolve with the business.
How to Verify: after two or three cycles, at least some metrics should show movement against the baseline. If none do, revisit whether the rules target real problems.
Common Mistakes: reporting only the number of rules or approvals; never retiring a standard; measuring compliance without measuring speed.
Troubleshooting: if metrics improve but local teams are unhappy, look at speed of execution and exception turnaround first.
Visual Requirement: the outcome metrics scorecard graphic above.
Want the next lab in your inbox? The Enterprise MarTech Lab publishes practical frameworks like this one. Subscribe to the newsletter.
Illustrative scenario. The company, numbers and outcomes below are hypothetical and are used to show how the framework could be applied. They are not a description of a real organization.
The business problem. A B2B technology company runs Adobe Marketo Engage across twenty countries. Germany, the UK and the US have experienced local teams; twelve smaller markets have one generalist marketer each. Leadership wants a global pipeline report, but each region defines an MQL differently and program names follow at least four patterns. Smaller markets wait days for headquarters to build routine emails, while larger markets have quietly built their own templates.
The technical context. One Marketo instance with three regional workspaces (EMEA, Americas, APAC) and one shared person partition; a CRM integration owned by IT; several webinar and event integrations set up by different regions; consent fields that differ between EMEA and the Americas.
The proposed solution. A federated model: a global MarTech CoE owns the standards catalog, templates, integrations and reporting model; three regional hubs review and support; local teams build and launch within the guardrails. Markets are placed in tiers: Germany, the UK and the US in Tier 3; five markets in Tier 2; twelve in Tier 1.
The implementation approach.
How success would be measured. Compared with the baseline: naming and tag compliance, share of programs cloned from templates, median brief-to-launch time per tier, critical QA defects per hundred launches, share of records with complete consent evidence, and whether the global pipeline report can be produced without manual reconciliation.
Potential risks and limitations. Tier 3 markets may see new controls as a loss of autonomy; regional hubs need capacity; renaming programs can break saved reports or filters that reference names; a single shared database means privacy must confirm that cross-border processing is permitted; and governance work competes with campaign work for the same people.
A shared global platform concentrates both value and risk. Treat these as baseline controls, and involve your privacy, legal and security teams in setting the details.
Federated governance is a strong default, not a universal answer. These variations are worth considering:
| Option | When it fits | Trade-offs |
|---|---|---|
| Strong central control (A) | Few markets, low local maturity, a platform migration, or a recent compliance incident | Bottlenecks as volume grows; plan a route toward federated once foundations are stable |
| Full local autonomy (B) | Business units that share no customers, brand or reporting | Duplicated cost; no comparable reporting; harder to consolidate later |
| Regional hubs | Many countries with uneven maturity; time zone or language clusters | Adds a layer that must stay aligned with the global standards |
| Separate instances per region | Strict data residency requirements or truly independent businesses | No shared database or templates; reporting must be combined elsewhere |
| Central CoE with agency execution | Limited local headcount; seasonal peaks | Agencies need the same roles, templates and QA as internal teams |
Many organizations evolve over time: central control during a migration, federated once standards and templates exist, with more Tier 3 markets as capability grows.
| Symptom | Likely cause | What to do |
|---|---|---|
| Local teams bypass templates | Templates are slow, outdated or missing a common use case | Ask why; add or update templates; make cloning the fastest path |
| Global funnel numbers differ by report | Lifecycle definitions or status change logic vary by country | Centralize lifecycle campaigns; lock status changes to global campaigns |
| Naming compliance stays low | Rule not enforced at creation; unclear examples | Publish examples in the template, run the weekly audit, review results with hubs |
| Approval queue keeps growing | Every change routed to headquarters regardless of risk | Introduce risk levels and tiers; move low-risk approvals to peer or hub review |
| A market cannot see shared templates | Folder not shared with that workspace, or role lacks access | Share the parent folder with the workspace; check role permissions |
| People “missing” from a workspace | Person partition assignment or assignment rules | Check the workspace’s partitions and assignment rules |
| Duplicate records across countries | Separate person partitions, or inconsistent matching fields | Review partition design with Marketo Support; standardize email and country fields |
| Users unexpectedly lack permissions | Multiple roles selected, so the most restrictive applies | Leave one role per workspace unless the combination is intended |
| Required tag missing on old programs | Tag made required after programs were created | Backfill with a one-off audit; the requirement applies at creation |
| Opt-out from one country still emailed elsewhere | Suppression handled per workspace or per system | Make unsubscribe processing global and sync it to every connected system |
Global MarTech governance is the set of standards, decision rights, controls and processes that decide how a marketing technology platform is used across countries and business units. It covers data definitions, consent, security and access, naming and reporting conventions, platform architecture, and how changes and exceptions are approved.
For most global organizations that share customers, brand and reporting, neither extreme works well. A federated model, where a central team owns standards and shared assets and local teams execute within them, combines consistency with local speed. Full centralization can suit small or low-maturity setups, and full decentralization can suit truly independent business units.
Standardize anything whose inconsistency would break integration, reporting, compliance or security across countries: data definitions and lifecycle stages, consent principles and evidence, roles and access, integration patterns, naming and tagging conventions, and platform architecture and quality requirements.
Local teams should control what makes campaigns relevant to their market: messaging and language, audience strategy within approved policies, timing, channel mix and cultural or customer experience choices.
Use workspaces to separate regional assets, use person partitions only when data must be separated, share approved templates from a read-only global folder, make reporting tags required, assign roles per workspace, audit program names automatically and route high-risk changes through an approval workflow. Adobe recommends contacting Marketo Support before setting up workspaces and partitions.
It is an operating model in which a global team owns the guardrails (standards, architecture, shared assets and reporting), regional or local teams own execution within those guardrails, and both share accountability for business outcomes.
Keep one set of standards and vary the support model. Less mature markets get centrally built campaigns and more review; mature markets get more autonomy and lighter, audit-based oversight. Base each market’s tier on clear criteria, such as training, QA results and compliance scores, and review it regularly.
Track outcomes rather than rules: data quality, campaign reliability, speed of execution, reporting comparability, compliance with applicable requirements and adoption of approved capabilities. Compare against a baseline taken before the new model goes live.
Global teams should own the guardrails. Local teams should own execution within those guardrails. And both should share accountability for business outcomes.
That is the principle behind a federated MarTech operating model. Not complete centralization. Not uncontrolled decentralization. A deliberate balance of shared standards, clear responsibilities and local autonomy, built into the platform so the right way is also the easy way.
The best global MarTech governance model does not control every action. It enables consistent execution without suppressing local innovation.
Now it is your turn. If you managed marketing automation across 20 countries, which approach would you choose?
Share your answer and your reasoning in the comments. I am interested in how others approach this challenge.
Continue the series:
The script below is the complete reference implementation used in Step 7. It only makes GET calls, so it can run under a read-only API user. It was tested offline against a mocked Marketo API (valid and invalid names, every rule, paging across three pages, a rate-limit retry and the CSV report). It has not been run against a live Marketo instance; test it in a sandbox first.
"""
Read-only Marketo program naming and taxonomy audit (reference implementation).
EverythingMartech, The Enterprise MarTech Lab #003.
What it does
1. Pages through every program with the documented Browse Programs endpoint
(GET /rest/asset/v1/programs.json, maxReturn up to 200, offset paging).
2. Checks each program against the global naming convention and taxonomy:
name pattern, country allowed for the workspace, type code allowed,
and type code consistent with the program channel.
3. Writes a CSV of findings per workspace and prints a summary per country.
What it deliberately does NOT do
- Rename, move, update or delete anything. It only makes GET calls, so the
API user can have a read-only role.
Status: illustrative reference code. It was tested against a mocked Marketo API,
not against a live Marketo instance. Run it against a sandbox first.
Requires: Python 3.10+, requests (pip install requests)
Environment variables: MKTO_BASE_URL (for example https://123-ABC-456.mktorest.com),
MKTO_CLIENT_ID, MKTO_CLIENT_SECRET. Keep the secrets in a vault, never in code.
"""
from __future__ import annotations
import csv
import os
import re
import sys
import time
from collections import Counter, defaultdict
from dataclasses import dataclass
import requests
# ---------------------------------------------------------------------------
# 1. Global standards (owned by the global MarTech team, versioned in git)
# ---------------------------------------------------------------------------
STANDARD_VERSION = "naming-standard v2.1" # example label, keep it in the report
# Naming convention: YYYY-MM_CC_TYPE_Short-Name, for example 2026-11_DE_WBN_AI-in-Manufacturing
NAME_PATTERN = re.compile(
r"^(?P<yyyy>20\d{2})-(?P<mm>0[1-9]|1[0-2])_(?P<cc>[A-Z]{2})_(?P<type>[A-Z]{3})_(?P<short>[A-Za-z0-9-]{3,60})$"
)
# Which country codes may appear in each workspace. Example values only.
WORKSPACE_COUNTRIES = {
"EMEA": {"DE", "FR", "GB", "ES", "IT", "NL", "SE", "PL", "AE", "ZA"},
"Americas": {"US", "CA", "BR", "MX"},
"APAC": {"AU", "JP", "SG", "IN", "KR", "CN"},
"Global": {"XX"}, # "XX" = global programs run by headquarters
}
# Allowed program type codes and the Marketo channel each one must use.
TYPE_CHANNELS = {
"WBN": {"Webinar"},
"EVT": {"Tradeshow", "Roadshow", "Field Event"},
"EML": {"Email Blast"},
"NUR": {"Nurture"},
"CNT": {"Content"},
"OPS": {"Operational"},
}
# Folders that hold templates or archives are reported but not scored.
EXEMPT_NAME_PREFIXES = ("TPL_", "zz_Archive", "_Template")
@dataclass
class Finding:
workspace: str
program_id: int
program_name: str
channel: str
country: str
rule: str
detail: str
# ---------------------------------------------------------------------------
# 2. Deterministic checks (pure functions, easy to unit test)
# ---------------------------------------------------------------------------
def check_program(p: dict) -> list[Finding]:
name = p.get("name", "")
ws = p.get("workspace", "Unknown")
channel = p.get("channel", "")
pid = p.get("id", 0)
if name.startswith(EXEMPT_NAME_PREFIXES):
return []
m = NAME_PATTERN.match(name)
if not m:
return [Finding(ws, pid, name, channel, "", "name_pattern",
"Does not match YYYY-MM_CC_TYPE_Short-Name")]
cc, type_code = m["cc"], m["type"]
findings = []
allowed_countries = WORKSPACE_COUNTRIES.get(ws)
if allowed_countries is None:
findings.append(Finding(ws, pid, name, channel, cc, "unknown_workspace",
f"Workspace '{ws}' is not in the standard"))
elif cc not in allowed_countries:
findings.append(Finding(ws, pid, name, channel, cc, "country_workspace",
f"Country {cc} is not allowed in workspace {ws}"))
if type_code not in TYPE_CHANNELS:
findings.append(Finding(ws, pid, name, channel, cc, "type_code",
f"Type code {type_code} is not in the approved list"))
elif channel and channel not in TYPE_CHANNELS[type_code]:
findings.append(Finding(ws, pid, name, channel, cc, "type_channel",
f"Type {type_code} should use channel {sorted(TYPE_CHANNELS[type_code])}, found '{channel}'"))
return findings
def country_of(name: str) -> str:
m = NAME_PATTERN.match(name)
return m["cc"] if m else "??"
# ---------------------------------------------------------------------------
# 3. Minimal read-only Marketo client
# ---------------------------------------------------------------------------
class MarketoError(Exception):
pass
class MarketoReader:
RETRYABLE = {"606", "615", "604", "608"} # rate limit, concurrency, timeout, temporarily unavailable
REAUTH = {"601", "602"} # invalid or expired access token
PAGE_SIZE = 200 # documented maximum for maxReturn
def __init__(self, base_url: str, client_id: str, client_secret: str, session=None):
self.base_url = base_url.rstrip("/")
self.client_id = client_id
self.client_secret = client_secret
self.http = session or requests.Session()
self._token = None
self._token_expiry = 0.0
def _get_token(self) -> str:
if self._token and time.time() < self._token_expiry - 60:
return self._token
resp = self.http.get(
f"{self.base_url}/identity/oauth/token",
params={"grant_type": "client_credentials",
"client_id": self.client_id, "client_secret": self.client_secret},
timeout=30,
)
resp.raise_for_status()
body = resp.json()
self._token = body["access_token"]
self._token_expiry = time.time() + int(body.get("expires_in", 0))
return self._token
def get(self, path: str, params=None, max_attempts: int = 5):
for attempt in range(1, max_attempts + 1):
headers = {"Authorization": f"Bearer {self._get_token()}"}
resp = self.http.request("GET", f"{self.base_url}{path}", params=params,
headers=headers, timeout=60)
resp.raise_for_status()
body = resp.json()
if body.get("success"):
return body.get("result", []) # "No assets found" comes back as success with no result
codes = {str(e.get("code")) for e in body.get("errors", [])}
if codes & self.REAUTH:
self._token = None
continue
if codes & self.RETRYABLE and attempt < max_attempts:
time.sleep(min(2 ** attempt, 20))
continue
raise MarketoError(body.get("errors", []))
raise MarketoError([{"code": "retry", "message": "Gave up after retries"}])
def all_programs(self):
offset = 0
while True:
page = self.get("/rest/asset/v1/programs.json",
params={"maxReturn": self.PAGE_SIZE, "offset": offset})
yield from page
if len(page) < self.PAGE_SIZE:
return
offset += self.PAGE_SIZE
# ---------------------------------------------------------------------------
# 4. Report
# ---------------------------------------------------------------------------
def run_audit(programs, out_path: str = "naming_audit.csv") -> dict:
findings, totals = [], Counter()
for p in programs:
if p.get("name", "").startswith(EXEMPT_NAME_PREFIXES):
continue
totals[(p.get("workspace", "Unknown"), country_of(p.get("name", "")))] += 1
findings.extend(check_program(p))
with open(out_path, "w", newline="", encoding="utf-8") as f:
w = csv.writer(f)
w.writerow(["standard", "workspace", "program_id", "program_name", "channel", "country", "rule", "detail"])
for x in findings:
w.writerow([STANDARD_VERSION, x.workspace, x.program_id, x.program_name,
x.channel, x.country, x.rule, x.detail])
failing = defaultdict(set)
for x in findings:
failing[(x.workspace, x.country or country_of(x.program_name))].add(x.program_id)
summary = {}
for key, total in sorted(totals.items()):
bad = len(failing.get(key, ()))
summary[key] = {"programs": total, "non_compliant": bad,
"compliance_pct": round(100 * (total - bad) / total, 1) if total else 100.0}
return {"findings": findings, "summary": summary}
def main() -> int:
reader = MarketoReader(os.environ["MKTO_BASE_URL"], os.environ["MKTO_CLIENT_ID"],
os.environ["MKTO_CLIENT_SECRET"])
result = run_audit(reader.all_programs())
print(f"{STANDARD_VERSION}: {len(result['findings'])} findings, details in naming_audit.csv")
for (ws, cc), s in result["summary"].items():
print(f" {ws:<10} {cc:<3} {s['programs']:>4} programs {s['compliance_pct']:>5}% compliant")
return 1 if result["findings"] else 0 # non-zero exit lets a scheduler flag the run
if __name__ == "__main__":
sys.exit(main())
Offline tests are in code/test_marketo_naming_audit.py (run python3 test_marketo_naming_audit.py).
Get the next insight in your inbox.
Prefer to talk it through?
Book a 30 or 60 minute consultation on MarTech, automation or AI workflows.
Newsletter
Practical insights on marketing automation, AI, enterprise architecture, and technology strategy.
Marketing Operations
Emails deliver and the CRM sync runs, so why do results disappoint? Separate technical success from business impact and run a practical audit.
Enterprise MarTech Lab #001 · 25 min read
AI & Automation
What the Marketo API can and cannot do, a governed architecture with validation and human approval, and where to draw the line between AI and people.
Enterprise MarTech Lab #002 · 35 min read
Comments