Naming Conventions
Consistent naming is the single most impactful practice for long-term maintainability. When a property has 200+ rules and 300+ data elements, the ability to find, understand, and debug any component in seconds depends entirely on naming discipline.
Rules
Use a structured prefix that communicates scope and purpose at a glance. A proven pattern is: [Scope] - [Trigger] - [Action].
- Example:
Global - Page Load - Set Analytics Variables - Example:
PDP - Add to Cart Click - Send Commerce Event - Example:
Checkout - Purchase Complete - Fire Conversion Tags
Data Elements
Prefix data elements with their source type to make debugging faster. When you see a data element in a rule, you immediately know where the value comes from.
dl.prefix: Data layer values, e.g.,dl.page.name,dl.product.idcss.prefix: CSS selector values, e.g.,css.hero.cta.textjs.prefix: Custom JavaScript values, e.g.,js.visitor.segmentconst.prefix: Constant/static values, e.g.,const.report.suite.id
Extensions
You cannot rename extensions, but you can document their purpose. Maintain a shared spreadsheet or wiki page listing every installed extension, its version, its owner, and the rules that depend on it. This prevents orphaned extensions from accumulating over time.
Environment Strategy
Adobe Launch provides three default environments: Development, Staging, and Production. Most enterprise teams need a more nuanced approach that maps to their existing deployment pipeline.
Recommended Environment Setup
- Development: Used by individual developers for active rule building and testing. Multiple dev environments allow parallel workstreams. Data goes to a development report suite.
- QA / Staging: Mirrors production configuration. Used for final validation before publish. Data goes to a staging report suite with the same processing rules as production.
- Production: Live environment. Only reachable through the full approval workflow. Changes published here affect real user data.
Embed Code Management
Never hardcode environment-specific embed codes. Use your CMS or tag deployment system to inject the correct embed code based on the environment. This prevents accidental publication of development tags to production and eliminates the manual step of swapping embed codes during deploys.
Report Suite Routing
Use data elements to dynamically set the report suite ID based on the current environment. A single rule can route data to dev-rsid, staging-rsid, or prod-rsid based on hostname or a data layer flag. This eliminates the need for environment-specific rules.
Extension Management
Extensions are the building blocks of Launch, but unmanaged extension sprawl is a common source of performance problems and security risk. Treat extensions like software dependencies: audit regularly and update intentionally.
Keeping Extensions Updated
- Monthly audit cycle: Check for available updates on a fixed schedule. Review release notes before upgrading. Test in Development before promoting.
- Pin versions in production: Never auto-update extensions in production. Each update should go through the full QA workflow.
- Track breaking changes: Major version bumps (1.x to 2.x) often change data element syntax or rule action behavior. Always test these thoroughly.
Avoiding Extension Bloat
Every extension adds weight to your Launch library. Before installing a new extension, ask: can this be accomplished with a Custom Code action instead? If the extension provides only one small feature, the overhead of an additional dependency may not be worth it.
Quarterly Review
Schedule a quarterly review of all installed extensions. Remove any that are no longer referenced by active rules. Check that each remaining extension is on a supported version and has a clear business owner.
Data Element Best Practices
Data elements are the abstraction layer between your site's data and your tag logic. Well-designed data elements make rules portable, debuggable, and resilient to site changes.
Types and When to Use Them
- Data Layer: The default choice. Reads from a structured JavaScript object. Use this for any value your development team can push to the data layer.
- CSS Selector: Useful for quick prototyping, but fragile in production. A site redesign can break every CSS-based data element. Prefer data layer values.
- Custom Code: For computed values that require logic, like combining two data layer fields or formatting a date. Keep functions short and pure (no side effects).
- Local/Session Storage: For values that need to persist across pages, like campaign parameters captured on the landing page and needed on the conversion page.
Persistence Settings
Choose persistence carefully. A data element with "Page View" duration resets on every page. "Session" persists until the browser closes. "Visitor" uses local storage and survives across sessions. Incorrect persistence is a common source of stale or missing data in reports.
Default Values
Always set a meaningful default value. When a data element returns undefined, rules that reference it may fire with empty variables, creating junk data in your reports. A default of "not set" or "n/a" makes data gaps visible and filterable.
Rule Architecture
Rules are where everything comes together. Poor rule architecture leads to race conditions, duplicate tracking, and debugging nightmares. Good architecture makes the property self-documenting.
Rule Order
Launch processes rules in order from 1 to 100 (lowest first). Use this intentionally:
- Order 1-10: Global setup rules. Set report suite, enable plugins, initialize consent state.
- Order 20-40: Page-level variable rules. Set page name, channel, site section.
- Order 50: The Analytics beacon (Send Beacon action). This is the standard position for the primary page view call.
- Order 60-80: Post-beacon actions like Target calls or audience sync.
- Order 90-100: Cleanup rules that clear variables for the next event.
Conditions and Exceptions
Use conditions to target rules precisely. A rule that fires on "All Pages" and then uses Custom Code to check the page type is harder to understand and debug than a rule with a proper condition. Use exception handling for edge cases: if a data element is undefined, the rule should exit gracefully rather than sending bad data.
One Rule, One Purpose
Avoid "mega rules" that set 20 variables and fire 5 different tags. Break complex tracking into focused, single-purpose rules. This makes testing, debugging, and future modifications significantly easier. A rule should be understandable from its name alone.
Publishing Workflow
The publishing workflow is your safety net. A well-defined process prevents bad code from reaching production and ensures every change is traceable.
Library Management
- One library per release: Group related changes into a single library. Name it with the ticket number and a brief description, e.g.,
JIRA-1234 - Add checkout tracking. - Never add unrelated changes: If you need to fix an unrelated bug, create a separate library. Mixing changes makes rollbacks impossible without collateral damage.
- Build and test in Development first: Every library should be built and validated in the Development environment before moving to Staging.
Approval Process
Require at least one peer review before any library can be promoted to Staging. For production publishes, require approval from the analytics team lead or a designated approver. Document the approval in the library notes for audit purposes.
Scheduling and Rollback
Publish during low-traffic windows when possible. If a publish introduces issues, Launch allows you to revert to the previous library version instantly. Document the rollback procedure so any team member can execute it, not just the person who published.
Permissions and Governance
As your Launch property grows, so does the team working on it. Clear permission boundaries prevent accidental (or unauthorized) changes to production tracking.
User Roles
- Developers: Can create and edit rules, data elements, and extensions. Can build and test in Development. Cannot publish to Staging or Production.
- Approvers: Can review libraries and promote them from Development to Staging. Cannot publish to Production.
- Publishers: Can publish approved libraries to Production. Should be limited to senior team members or designated release managers.
- Viewers: Read-only access for stakeholders who need visibility into the implementation without edit permissions.
Approval Chains
Define a clear approval chain for each type of change. Minor fixes (typo in a data element value) might need only one approver. Major changes (new conversion tracking, third-party tag additions) should require sign-off from analytics, engineering, and legal/privacy teams.
Change Log
Maintain a change log outside of Launch that records who changed what, when, and why. Launch's built-in revision history shows diffs, but it does not capture business context. A simple shared document with date, author, ticket number, and summary is sufficient and invaluable during incident investigation.
