Build better products with our product team
There should be a setting in the new launch to be able to track s.products without going to the custom code to build the product string.Kind of like how the old GTM had a checkbox to enable e-commerce tracking and it would just read the dataLayer Enhanced Ecommerce (UA) Developer Guide | Google Tag Manager for Web Tracking | Google Developers
Current behavior allows an invalid, nonexistent, or blank Program Name value to be treated as "Is Any" rather than returning no results or generating an error. In my example, I have a list of program names provided to me by a team member. I put it in the Member of Program is and pasted them all in along with a constraint of status = Event > Registered. The smart list gave me thousands of results. In reality, none of those programs I put in the Member of Program criteria was even valid. So why would it show me any results?This behavior is counterintuitive and creates a significant risk for audience selection, reporting accuracy, and operational decision-making. If a user enters an invalid Program Name, the Smart List appears to function correctly while silently broadening the audience. As a result, configuration errors can go undetected and may lead to unintended campaign execution or inaccurate reporting.From a product usability and data integrity perspective, an invalid filter value should not default to a broader audience. User expectations would generally be one of the following:Return 0 results when the Program Name does not exist. Display a validation error indicating the Program Name is invalid. Display a warning that the specified Program Name could not be validated.Recommended behavior:Validate Program Name values when the Smart List is saved or executed. Return no matches for invalid or nonexistent Program Names. Surface a warning or error message to help users identify and correct configuration issues.This enhancement would improve data quality, reduce the risk of audience selection errors, and make filter behavior more consistent with user expectations.
I have several report builder reports that got out to many stakeholders. Anytime a change is made to one of the reports, it needs to be rescheduled so that the report will send with the changes. Simply going in to edit the schedule of the report and selecting “current workbook” does not actually update the file sent to the latest file with the changes. Because of this, the schedule needs to be set up from scratch again, which can be quite tedious when the recipient list is long and each individual needs to get re-entered because publishing lists are no longer an option.
We would like the ability to limit users from being able to delete a task assigned to them. We don’t log hours we we are unable to remove that ability from them in the Project Preferences. The issue is when we try to remove the delete functionality from them, it also removes the ability for them to complete the work on the task. We tried going a layout template route as well suggested by support. According to support, Layout Templates only control the Delete action in the task Details view; there isn't a way to hide that same action in the project's task list (grid) view, since that's tied directly to the Delete permission on the Access Level. Because unchecking Delete at the Access Level can also block completing multi-assignee tasks, there isn't a configuration that fully satisfies both goals (deletion blocked everywhere, completion always working) at the same time today.
Today: In the web UI, to create a new version of an existing asset, the uploaded file must have the same filename in the same folder. If the filename is different, AEM treats it as a new, separate asset, not as a version.Desired behaviour:New versions of an asset can be added regardless of the file name, e.g. by selecting the asset and clicking “add new version”.Reasoning:Updated files often come with new names but should still be stored as versions of existing assets. E.g. if a legacy asset was uploaded (or migrated from our old DAM) with the file name: coporate-presentation-2022-v1.ppt, I want to be able to upload a new version that is called hbk-coporate-presentation-2026.ppt We are not starting a DAM from scratch or renaming 30,000 files. That means that even though we can update to newer versions in AEM Assets, any errors, bad naming or typos in old file names get carried over into the new version. When users download the updated file, it has the file name of the first version, e.g. coporate-presentation-2022-v1.ppt, even though it is the 2026 version. That is confusing and unacceptable.
It would be very helpful to have the same Copy icon available in the Union Schema that is currently available when browsing attributes in the Schema menu. Why is this feature important?When working with schemas, it is very common to need the exact path of an attribute — for example, when configuring audiences, journeys, queries, or other Adobe Experience Platform components.In the Schema menu, the Copy icon makes this extremely convenient: you simply click the icon and the attribute path is copied to the clipboard.However, this functionality is currently missing from the Union Schema view. Since the Union Schema is also frequently used to inspect and identify attributes, having to manually select the entire path is a small but unnecessary friction point, especially for long or deeply nested paths. How I would like it to workI would like the Union Schema to have the same Copy icon next to each attribute/path, following the existing behavior in the Schema menu. Clicking the icon would copy the complete attribute path to the clipboard. How it works currentlyCurrently, the Union Schema does not display a Copy icon for attributes.To copy an attribute path, you have to manually select the entire path and then use:Ctrl + C, orRight-click → CopyThis is a minor inconvenience, but adding the Copy icon would make the experience more consistent with the Schema menu and considerably more convenient when working with attribute paths. Thank youFilipe Freitas
Would love to have a button in WF that takes me to a text mode cheat code library vs. searching community or using AI. Any Workfront user could submit a cheat code and it gets added to a database behind the scenes. This would help all users be able to have quick access to effective text mode that works. This would speed up being able to implement solutions for reporting for businesses.
Currently, the only time the pre-defined sorts in a view (ie: sorts specified and saved in a view) are utilized is in a report (ie: View = Report Default). a) If you change the view on the report - from Report Default to another view - and the newly selected view has its own sorts defined, the report uses the sorts from the Report Default view; the report does not use the sorts defined in the selected view. b) Pre-defined sorts in views are not utilized when using views in a project. All of the above was confirmed by Workfront Support. Would like the system to use the sorts defined in the selected view, both in reports and in the project. Thanks
Currently the Percent Complete roll up at the Program level only takes into account Projects that are in "Current" status. This does not make much sense as you are completely ignoring all projects that have been fully completed and marked as such. If all projects under a program have been marked as complete status, then the Percent Complete at the Program level should show 100%
I am very frustrated by the lack of sharing ability with the Approval Workflows. why is the functionality limited to either a specific person, or the entire company? so either i spend time selecting the exact users for over 400 different workflows. OR i share it with the entire instance and everyone has access to everything in a giant never ending list? We need to be able to share with specific groups and specific teams, Exactly the same way that all the other sharing permissions operate.
Description—It would be ideal if we could Upload and Host an Image to be used in our Custom Forms. Currently, we only have the option to add images by adding the URL of an image hosted somewhere else. The images/documents inside Workfront do not work, as they expire after a few minutes. Why is this feature important to you - This would make the feature easier to use, and located all in one place (Workfront) How would you like the feature to work? If I choose to add an Image in the Custom Form, it would be helpful if I had the option to Upload a File to be used. That file will stay in Workfront and be connected to that Custom Form. Any User with access to the Custom form would also have access to the file. Current Behaviour—Currently, there is no option to upload an Image. We can only enter a URL. Images and documents hosted in Workfront can be added as part of the URL, but because those URLs expire after a few minutes, they generate an Error or broken link and a bad experience.
Rename “Last month” to “1 month ago” in order to enable proper sorting in rows with “2 months ago” & “3 months ago”, Additionally create more “X months ago” to cover at least last 13 months so that trending can be done. Same with week ago would be optimal! Reason? Since person containers are affected by the selected reporting date range, the segment can be evaluated over the panel range rather than independently for every month row. This is a problem when trending monthly numbers over a longer timespan than 3 months (also the 3 backwards monthly date ranges defy sorting in the right order which messes up bar charts due to “Last month”). Creating custom date ranges allows both proper sorting & meaningful bar charts. However this means each month a new one must be created. Better as suggested to have the X months ago made available in Workspace.
SUMMARYTwo related asks, the second building on the first:1. An email level or template level switch that disables click tracking for every link in an email at once, equivalent to isOpenTrackingDisabled for the open pixel.2. Allow that decision to reference a person field, so link rewriting is suppressed per recipient at send time rather than fixed per asset.TODAYOpting a link out of click tracking is a per link operation only. It requires either unticking "Track Link" on each individual anchor in the Email Designer, or adding the mktNoTrack class to each anchor in the HTML. Adobe Support has confirmed there is no email level, template level or REST API setting that disables click tracking for all links at once, and that no such capability is on a published roadmap.WHY THIS MATTERSUnder the CNIL recommendation applicable since 14 April 2026, and the Italian Garante deadline of 28 October 2026, click measurement for campaign performance purposes requires consent in the same way open measurement does. Where clicks are in scope, compliance currently means tagging every anchor in every affected email by hand.In our own newsletters that is 27 tracked anchors per email, repeated for every locale and every send. The failure mode is silent: one untagged anchor produces a tracked click for a person who did not consent, and nothing in the product warns that the email is inconsistent with the consent state it was built for.There is a further problem that no amount of care solves. Delivered messages contain a bare anchor immediately before the closing body tag, with a tracking href and no content:<a href="https://click.example.com/NDEwLVhPUi02NzM..."></a>It is present even when the asset has open tracking disabled. It wraps no visible content and does not appear anywhere in the Email Designer, so it cannot be selected, untracked, or given the mktNoTrack class through any supported means. A customer following Adobe's own CNIL guidance to the letter still ships this element. An email level switch would cover it. Per anchor tagging cannot.PROPOSED BEHAVIOURPhase 1, asset level switch:A "Disable Click Tracking" setting on the email asset, and ideally on the template, that suppresses link rewriting for all links in the email including any platform injected elements.Exposed on the Emails Asset REST API alongside isOpenTrackingDisabled, so that it can be applied programmatically across a large asset library.Phase 2, per person evaluation:Allow the switch to reference a boolean person field instead of a fixed value, evaluated per recipient at send time, so that one asset serves both consenting and non consenting recipients.Expected outcomes:Click consent enforced by one setting rather than by remembering to tag every anchor.Platform injected tracking elements covered, which per anchor tagging cannot reach.Clicked Link activity generated for consenting recipients only.No asset duplication.Velocity can already apply mktNoTrack conditionally per anchor from a person field, which demonstrates that the per recipient decision is possible at send time. What is missing is a supported switch that applies it to the whole email rather than requiring it to be threaded through every anchor by hand, and that reaches elements the customer cannot edit.RELATEDCompanion idea covering the equivalent problem for open tracking: per person open pixel injection within a single email.Adobe CNIL guidance: https://experienceleague.adobe.com/en/docs/marketo/using/product-docs/email-marketing/email-designer/cnil-guidanceEmails Asset API: https://experienceleague.adobe.com/en/docs/marketo-developer/marketo/rest/assets/emails
Description - Did you know that Requesters cannot "Add Image" in an Update? I didn't, until a requester asked me why that was missing for them! Why?? Why is this feature important to you - Consistency of user experience, and there is no reason that a Requester should not be able to use this same functionality with UpdatesHow would you like the feature to work - Same as it works for every other access levelCurrent Behaviour - Requesters cannot use the "Add Image" when making an Update
From Gut Feeling to Grade Point: How AJO Measures Service QualityHow we grade every service behind Adobe Journey Optimizer — and what happens when a grade slips. When you're running customer journeys that depend on Adobe Journey Optimizer, you're trusting that the platform underneath is holding up its end—every trigger fires, every send lands, every integration behaves the way it should. That trust is something we take seriously, and we've built a system to hold ourselves accountable to it in a very concrete way: the Service Scorecard.The Service Scorecard gives every service that powers AJO an automated grade, refreshed twice a day, across four dimensions that together define what “healthy” means: how well we respond when incidents happen, how thoroughly the code is tested before it ships, how much reliability margin we're maintaining against our own commitments, and how quickly we act on reported issues.This is part of a wider effort across Adobe Experience Platform to apply one consistent quality bar everywhere—and AJO has seen some of the strongest gains in reliability and responsiveness as a result. Why These Four DimensionsEach dimension maps to a distinct point in a service's operational lifecycle:Before code ships — automated test coverage (Code Quality) While it's running in production — reliability against SLO commitments (Reliability Against Our Commitments) When something breaks — root-cause closure and corrective action completion (Incident Follow-Through) When a customer reports an issue — resolution time against SLA (Speed of Resolution) Four Dimensions, One GradeRather than judging a service by a single metric, the Scorecard looks at the full picture. Each service earns a letter grade, A through F, based on:🧪 Code QualityThis dimension measures automated test coverage—the percentage of a service's codebase exercised by automated tests. Coverage is tracked per service and rolled into the score as a direct percentage. Higher coverage is a leading indicator of fewer regressions across releases.⚡ Reliability Against Our CommitmentsEvery service has a reliability target—a service-level objective (SLO)—that it's expected to meet, and this dimension tracks the error budget remaining against that target. The calculation pulls reliability data across AJO's internal service dependencies, so if a service depends on another AJO service that's degraded, that impact is reflected in this score—even though the dependency relationship itself isn't shown directly. This dimension is scoped to dependencies within AJO; it doesn't extend into upstream platforms like Adobe Experience Platform or Real-Time CDP.🚨 Incident Follow-ThroughThis dimension is measured against committed SLAs for incident resolution and root-cause closure. It tracks whether root-cause analysis and every corrective action tied to a CSO (Critical Service Outage) are fully completed—not just whether the incident was mitigated. A CSO isn't marked closed in this score until every associated action item is actually done.🐛 Speed of ResolutionThis dimension tracks how quickly reported issues get resolved, weighted by severity against SLA targets. That includes issues reported through Adobe Support, as well as issues caught internally before they ever reach a customer—including bugs caught through our automated Customer Use Case (CUC) testing, which runs real customer scenarios end-to-end against every release candidate. A critical, widely-felt issue is held to a tighter SLA than a low-severity edge case, and that weighting is built directly into the score.We covered CUC testing in detail in an earlier post: Catching Bugs Before Customers Do. A service's overall grade blends the dimensions that apply to it:A Excellent — low risk, high discipline B Good — healthy, minor gaps C Acceptable — attention needed D Poor — active remediation underway F Critical — immediate escalation Every service on AJO is held to a bar of B or better across all four dimensions. Why We Built It This WayA grade only matters if it's trustworthy, so we designed the Scorecard around a few principles:The same yardstick, every time. Every service is measured identically, so a grade means the same thing no matter which team or capability you're looking at. Updated twice a day, not quarterly. Grades roll forward continuously, so what you're looking at reflects current reality, not a stale snapshot. A named owner for every score. Each service has someone directly accountable for its grade, with clear visibility into exactly what's driving it up or down. Zoomed in or zoomed out. The same data supports a leadership-level view of overall platform health and a team-level view of a single service—so everyone from an engineer to a director is looking at the same underlying truth. A FAIR QUESTION We know the obvious one: doesn't self-grading just let a team grade itself easy? Every score comes from the same systems—incident tickets, test coverage, reliability dashboards, support tickets—used organization-wide, not something a team curates. And the bar itself is fixed platform-wide; no team can lower it to flatter its own grade. How a Grade Gets MadeThis is the core of the Scorecard: a single algorithm that calculates each of the four dimension scores for every service, independently, across every production region that service runs in—using the same formula and the same thresholds everywhere. Standardization is what makes an A in one region comparable to an A in another, and what makes a director's platform-wide view and an engineer's single-service view consistent with each other.The Service Registry is the backbone this rolls up from. It's the source of truth for which services exist, who owns each one, which capability each service belongs to, and which regions it runs in. Every rollup—service to capability, capability to platform—is driven by the Service Registry's ownership and grouping structure, not by any team's own reporting.Each dimension draws on its own signal: Support & Incident Tickets for Incident Follow-Through, Automated Test Coverage for Code Quality, Support tickets plus automated Customer Use Case testing for Speed of Resolution, and Reliability Monitoring for Reliability Against Our Commitments. Those four scores blend into one A–F grade per service, calculated per region and then rolled up—using the Service Registry's structure—into an overall picture of platform health. Four per-region signals blend into one grade; the Service Registry drives every rollup from service to capability to platform. When a Score Slips, Deployments WaitA grade isn't just for visibility—it drives real action. When a service's grade falls below our bar, it becomes a candidate for what we call quarantine. Leadership reviews the full picture—score, incident history, team capacity, business impact—and services selected for quarantine enter a focused remediation period: production changes pause, including hotfixes, unless leadership explicitly signs off on an exception, while the team's full attention shifts to a concrete set of fixes.Getting out of quarantine takes more than a single number recovering. A service has to reach an overall B grade—and get sign-off from engineering leadership that the underlying risk is genuinely resolved, not just papered over. To be clear : Quarantine doesn't mean a service stops running—your existing journeys and campaigns keep operating. It means that team's roadmap pauses so they can focus entirely on the fix. We take this stance deliberately. A low grade on any of the four dimensions is a signal that a customer, somewhere, is already feeling the effects—whether that's a slower resolution time, a reliability gap, or an incident that hasn't been fully closed out. Shipping new capabilities on top of that isn't a trade-off we're willing to make.This also puts real ownership in the hands of the engineers closest to the work. Rather than quality being managed from a distance, the teams who know a service best are the ones empowered—and expected—to fix it. What This Means Going ForwardThis system is built to catch and resolve issues before they reach you—minimizing customer impact is the goal behind every one of these four dimensions, from root-cause closure to error budget tracking to resolution SLAs. It gives us a continuous, standardized way to hold every service to the same bar, across every region, and act before a quality gap turns into a customer-facing problem.That's what lets your journeys, campaigns, and customer experiences run the way you'd expect them to, day in and day out. COMING NEXT IN THIS SERIES How we're using AI to onboard every AJO service onto a standardized set of service-level objectives—turning a process that used to require deep manual expertise into something fast, consistent, and automatic. Stay tuned. Authors: Shivam Chamoli, Kevin Cabral, and Jigar Shah
Can we get an API endpoint to update multiple tokens on a program or folder at once?At the moment a single API request needs to be made to update each token 1x1 Looking at the example in the image 20+ individual API requests need to be made to update all the tokens used in the program API call efficiency is important since we have a limited daily API quota
Enter your E-mail address. We'll send you an e-mail with instructions to reset your password.