← Back to work

Adobe Advertising (DSP)

Creative 2.0

Turning dynamic creative from a specialist service into a self-serve product.

Design purview
Sole product designer (lead), end to end
Field research and usability studies
Workflows, IA, and object models
Experience mechanics and journeys
Reporting and analytics dashboard
Team
A technical PM, the Product Director, and Engineering
Year
2024, MVP

The backdrop

Chrome was going to drop third-party cookies

Google’s planned deprecation of third-party cookies in Chrome meant Adobe’s tracking and dynamic ad targeting would stop working. Google set its timeline in 2023. Our deadline to have a product ready was 2024.

Google Chrome

A large share of global ad traffic runs through Chrome and Google shared services.

Tracking

Adobe’s DSP (demand-side platform) used cookies to track who saw an ad and what they did next.

Targeting

DCO (Dynamic Creative Optimization) used cookie data to choose the message each viewer sees.

The backstory

DCO came in through an acquisition

DCO serves HTML ads that change their message for each viewer. It ran on its own tool stack, outside Adobe Advertising DSP. The UI was archaic and the UX was arcane.

Separate stack

Its own tools and UI, never moved onto Adobe’s Spectrum design system.

Specialist-only

A workflow built across multiple tools that took specialist knowledge to run.

Managed service

Adobe Client Services (ACS) ran DCO for clients, so self-serve was out of the question. That limited how far DCO could expand and how many clients adopted it.

DSP business models

Business modelWho runs the campaignsAdobe’s role
Managed serviceAdobe’s ACS team, on the client’s behalfFull service: setup, trading, optimization
Self-serveThe client’s in-house team or agencyTroubleshooting and escalation, through ACS

Every dynamic campaign joined the DCO queue, which capped how many dynamic campaigns the business could take on. Creative 2.0 had to work for both models: ACS teams running campaigns for many advertisers, and self-serve clients running their own.

The plumbing

The multi-hyphenated workflow of DCO creatives

A specialist built every dynamic HTML ad template by hand, starting from a spreadsheet.

The DCO workflow in four steps: a feed file with a row for every market, audience, and ad size; a hand-coded HTML template with placeholders; feed columns mapped to the placeholders in JSON; and tags handed off to Adobe Advertising DSP, repeated for every ad size.

Fig. 1 Feed file, HTML template, map and generate, hand off. Steps two to four repeat for every HTML ad size.

01 Feed file

A spreadsheet row for every market, audience, and ad size.

RowGeoLanguageAudienceCreative
CountryRegionCity / DMASegmentCookieData passSizeHero textSecondary textImage URLPriceCTA
1USCaliforniaLos Angeles DMAen-USAF1 visitors, 30d1P: viewed_af1section=sneakers300x250Classics for the holidaysAir Force 1 '07 · White/Black…/af1_wb_300x250_en.jpg$115Shop now
2USTexasHouston DMAes-USAll3P: in-market sneakers-300x600Clásicos para las fiestasAir Force 1 '07 · Blanco/Negro…/af1_wb_300x600_es.jpg$115Comprar
3CAOntarioTorontoen-CALapsed buyers1P: purchased_90d-300x600Classics for the holidaysAir Force 1 '07 · White/Black…/af1_wb_300x600_enca.jpgCA$150Shop now
4CAQuébecMontréalfr-CALapsed buyers1P: purchased_90dsection=lifestyle728x90Des classiques pour les fêtesAir Force 1 '07 · Blanc/Noir…/af1_wb_728x90_frca.jpg150 $ CAMagasiner
5BEBrussels-fr-BEAll--970x250Des classiques pour les fêtesAir Force 1 '07 · Blanc/Noir…/af1_wb_970x250_frbe.jpg119,99 €Acheter
6KRSeoulGangnam-guko-KRSneakerheads3P: streetwear affinitysection=running300x250연말을 위한 클래식에어 포스 1 '07 · 화이트/블랙…/af1_wb_300x250_ko.jpg₩139,000지금 구매
7JPTokyoShibuyaja-JPAF1 visitors, 30d1P: viewed_af1-320x50ホリデーに贈る定番エア フォース 1 '07 · ホワイト/ブラック…/af1_wb_320x50_ja.jpg¥14,300今すぐ購入
……………………………………

A single campaign for one advertiser can run to 1,440 rows, one tab per market.

1/84
Fig. 2 Serving ads at scale can get complex, especially when running multiple campaigns simultaneously across geos and language regions.

02 HTML template and 03 Map and generate

A hand-coded ad with placeholders for image, copy, price, and CTA. Feed columns were then mapped to those placeholders in JSON.

Fig. 3 Templates were created as hand-drawn HTML components, one for each ad size.
Fig. 4 The DCO form: placeholders mapped to the sheet's headers in hand-typed JSON. One misspelled column name and the rows render blank.
The script behind it
<?php
// dco_build.php - one run per strategy, per template
$tpl  = file_get_contents('templates/af1_holiday_300x250.html'); // exported from the design tool
$csv  = fopen('feeds/nike_holiday_master.csv', 'r');
$tags = fopen('out/tags.txt', 'w');
$head = fgetcsv($csv);            // Row, Country, Region, ... Hero text, Image URL, Price, CTA

// placeholder => CSV header, hand-typed as JSON for every template
$cfg = json_decode(file_get_contents('mapping.json'), true);
$map = $cfg['map'];

while (($row = fgetcsv($csv)) !== false) {
  $r    = array_combine($head, $row);
  $html = $tpl;
  foreach ($map as $ph => $col) {
    $html = str_replace($ph, $r[$col], $html);   // a missing column renders blank, silently
  }
  $id = $r['Country'] . '_' . $r['Language'] . '_' . $r['Size'];
  file_put_contents("out/$id.html", $html);
  fwrite($tags, "<script src=\"https://dco.example.net/serve/$id.js\"></script>\n");
}
// out/tags.txt is emailed to ACS, who attach each tag to its placement by hand
Fig. 5 A reconstruction of the core of the DCO workflow: read the CSV header, swap placeholders row by row, write a tag per row.

04 Hand off

Tags, the code a placement uses to serve the ad, went to Adobe Advertising DSP and were attached by hand.

StageTask to be executedKinks in the workflow
1. ReceiveCreative arrives from the studio, per size and languageDozens of files per message, and spreadsheets too large to check by eye
2. PlanACS turns the media brief into a build planWho-sees-what lives in the plan, not the DSP
3. ScaffoldThe DCO team builds HTML templates in an external tool and fills the DCO sheetExpert-only, outside the DSP
4. AttachACS receives the scaffold and tags, and attaches them per placementMany-to-many mapping, done manually
5. QAPreview each row by hand (1,440 rows across multiple sheets)A wrong cell or missing size found after launch
6. LearnReports per ad or per row, stitched togetherNo view by message or audience

The kink

tl;dr - The DCO had to work without cookies

We had to figure out how to keep serving HTML-based dynamic ads, so existing clients could stay on dynamic creative optimization without their workflows being interrupted.

Targeting

DCO’s targeting had to run on signals that don’t depend on cookies.

Integration

The legacy DCO tech stack would not integrate with Adobe’s DSP.

Continuity

How do you retain existing DCO clients and not interrupt their workflow?

Today: a viewer's cookie lets DCO pick the message for an HTML ad. Needed: targeting signals without cookies, and an experience picks the message.

Fig. 6 Today, the cookie decides the message. The new model needed targeting signals that don’t depend on cookies.

Research and documentation

DCO had to fit into Adobe Advertising DSP

First I had to understand how DCO was set up and how its pieces would map if integrated into the DSP. I researched with Adobe’s ACS team, campaign managers, account managers, and the support team.

  1. Sequence of eventsHow an ad template transforms from a feed file to a targeted visual.
  2. System objectsThe vocabulary, concepts, and entity relationships in use today.
  3. DependenciesWhat depends on what, across DCO and the DSP’s surfaces.
  4. System modelDCO’s abstractions, mapped to mesh with the DSP’s objects.

The Adobe Advertising DSP campaigns list, with performance charts and a table of campaigns.

Fig. 7 Adobe Advertising DSP, the product DCO had to integrate into.

Methods

  • Observed ACS setting up dynamic (DCO) and static ads, end to end
  • Shadowed planning with campaign and account managers: media brief, then tactical spend plans, then the build plan of placements and targeting line items
  • Sized the mapping needed for the right permutation of creatives to reach the right audience
  • Traced the spreadsheet into key:value pairs that could be uploaded (to keep legacy workflows), synced, or built in the DSP
  • Benchmarked dynamic creative and ad serving tools, and ran heuristic reviews and usability studies to map mental models: what transfers, and what’s net new

Findings

  1. Compress the journeyPlans moved from media brief to spend plans to build plan, across different surfaces. Account managers could set up the plan directly in the product, instead of trawling through CSV sheets.
  2. Fit net-new conceptsBundles, experiences, and decision trees were net new, so each had to fit users’ existing understanding of how placements and ad tags come together.
  3. Carry the know-howThe DCO sheet had unwritten rules. The product had to carry them: validation, a fallback bundle, and preview at every step.
  4. Make it backward compatibleThe spreadsheet wasn’t going away overnight. Legacy DCO sheets import into Catalogs as feed files, next to uploads, synced sources, and catalogs built in the DSP.

Personas to build for

The people who build creative, set up campaigns, and support them, in ACS and in clients’ own teams.

Campaign manager (CM) Primary

Owns setup and delivery across several advertisers, in ACS or in-house. Turns a media plan into placements and needs every one to serve.

WhenI want toSo I can
I build a campaign from the planSet who sees which creative, in the DSPStop maintaining it in a spreadsheet
I launchKnow every placement will serveAvoid a slow start I have to explain
Something conflictsSee it where I’m working, with the fixAvoid finding out from delivery reports
Designer Primary

Builds static and HTML ads in every size, language, and variant, and the ad templates dynamic ads are made from.

WhenI want toSo I can
I deliver a set of creativesUpload once across sizes and languagesAvoid trafficking each file by hand
I build an ad templateMap its slots to a catalogProduce variants without rebuilding each one
An ad breaksSee the reason and fix it myselfAvoid a back-and-forth with ad ops
Ad trader, account manager (AM) Secondary

The ad trader optimizes live campaigns daily. The account manager supports many advertisers and fields their escalations. Both need to see what serves where, and why, without opening a spreadsheet.

Ad trader

WhenI want toSo I can
A placement under-deliversSee which path and bundle it servesFix the creative cause, not just the bid
A bundle outperformsShift its weight, or let rotation optimizePut spend behind what works
A conflict appears mid-flightGet alerted where I workAct before budget is wasted

Account manager

WhenI want toSo I can
A client asks why an ad servedTrace the viewer to a path and bundleAnswer in one conversation
A self-serve client escalatesSee their setup and its errorsResolve it without rebuilding it
I review my accountsSpot setups at riskReach out before delivery drops

The core requirement for self-serve: rich customization, and the freedom to build any targeting funnel.

The handshake

The DSP object model that the DCO would have to comply with

An org account holds campaigns, campaigns hold packages, packages hold placements, and ads (ad tags or pixels) attach to placements. Personalizing ads by product, language, size, and audience multiplies the number of ads in every campaign.

The thinking behind integrating DCO

  1. One unified serviceMaintain one unified service across Adobe Advertising.
  2. Self-serve dynamic creativeExpand self-serve to dynamic creatives by removing the barrier of DCO’s complex tech stack and learning curve.
  3. No ACS bottleneckACS bandwidth stops being the bottleneck for managed accounts once clients can self-serve.

The DSP object tree: Adobe Advertising, org account, campaign, then package and placement, with ads (ad tags and pixels) mapped to placements.

Fig. 8 How Adobe Advertising DSP organizes an account’s campaigns, placements, and ads.

Options considered

Improve the DCO sheet

A better import and validation experience, with the least amount of change. But the logic would still originate from a CSV grid that relies on experts to interpret, so the DCO team stays in the loop.

Integrate a third-party tool

Fastest to market: a plug-in experience as a stepping-stone into the ad surface. But it splits workflow, reporting, and validation across products.

Native creative + logic model ✓

Creative Manager for assets and bundles, Ad Templates and Catalogs for dynamic ads, and Experience Manager for targeting logic, with validation throughout. The DCO workflow is no longer needed.

MVP scope

Creative 2.0 only had utility once every pillar was in place. Libraries without experiences, or experiences without tags, would still have sent teams back to DCO for the rest of the job. So the MVP shipped the whole loop - creative libraries, bundles, ad templates with catalogs, experiences with the decision tree, tags, validation, and reporting - while keeping each pillar lean. Building targeting natively let the decision tree weight signals that would survive the loss of cookies: geo, first-party audiences, profile data, and data pass key-values from publishers.

Tradeoff: a bigger first release that took longer to ship. A partial product would have forced teams to split their workflow across multiple tools.

To recap

Reconciling the new model with the DSP’s schema

The same dynamic ad, made two ways: before and after Creative 2.0.

Prior: build the template in a code editor, upload it to the DCO tool, process the catalog, build the dynamic ad, and export tags to the DSP. Proposed: build the template, then upload it, upload the catalog, build the dynamic ad, and generate the tags, all within Adobe Advertising DSP.

Fig. 9 Steps two to five move from the DCO team’s tools into the DSP, and the handoff disappears.
StepDCO workflowCreative 2.0
Design the templateDrawn in a separate HTML tool; placeholders typed into each layer by handAn ad template is uploaded as a ZIP: the HTML and an attributes file (CSV or TSV)
Prepare the dataOne master CSV per strategy, every combination a row, kept by the DCO teamA catalog is uploaded (CSV, TSV, XML), synced from Amazon S3 or Google Sheets, or built in the DSP
Map data to templateHand-typed JSON in a PHP form, mapping each placeholder to a CSV headerColumns are detected and matched to the template’s slots automatically; a person reviews the matches and saves
GenerateA script renders every row and writes a tag fileA dynamic ad renders every record in every size
CheckPreview row by row, 1,440 rows across sheetsRecords with gaps are flagged; a missing price hides the price layer for that record
Hand offTag file emailed to ACS and attached placement by placementAd tags are generated in the DSP and mapped to ads directly in the platform

The blueprint

The DCO information architecture

Files and feeds land in Creative 2.0, and an experience decides what the DSP serves.

Inputs (creative files, product feeds, legacy DCO sheets) flow into Creative 2.0. Creative Manager holds Creative Libraries of static ads, dynamic ads, and bundles. Ad Templates and Catalogs feed dynamic ads. Experience Manager picks what goes into each dynamic ad by geo, audience segment, profile data, and data pass. Out of Creative 2.0 come the ad tag, the DSP campaign, and reporting, which reads back by branch and bundle.

Fig. 10 How files, feeds, and targeting logic move through the DSP.

Creative Manager holds an advertiser’s Creative Libraries. A creative library groups assets: static ads (images, static HTML, and hard-coded files) and dynamic ads (an HTML template mapped to a catalog). Bundles group assets across sizes and languages.

Ad Templates hold HTML5 ads with placeholders, and Catalogs hold the feed files that fill them. Experience Manager builds the targeting logic: each decision funnel serves a bundle or an asset, through one ad tag per placement, resolved at serve time.

The new branch

Where Creative 2.0 sits in the DSP

The DSP object tree with Creative 2.0 beside Campaign under the org account. Creative 2.0 holds Experience Manager, Creative Manager, Ad Templates, and Catalogs. Creative Manager holds Creative Libraries of assets (static and dynamic ads) and bundles, and Experience Manager serves into ads on placements.

Fig. 11 Creative 2.0 sits beside campaigns under the org account.

The hard parts

Challenges

From the IA to porting the DCO workflows into the existing DSP, at every altitude.

  1. Where Creative lives 10,000 ftA side nav item, or a menu in the header beside DSP? In the side nav: a submenu, an accordion, or always open?
  2. Processing catalogs and templates 1,000 ftA catalog turns feed files into product rows. An ad template is the HTML boilerplate ad with slots for that data.
  3. Creating and managing assets 100 ftStatic ads, and dynamic ads that pour catalog data into a template’s slots, grouped into bundles.
  4. Building experiences 10 ftTargeting layers that form a funnel, directing each viewer to the right ad.
  5. Closing the loopReading how each branch, region, device, and creative performs, and reporting it back to the client.

Challenge 01 | Ingress

Where Creative lives

A side nav item, or a menu in the header beside DSP? In the side nav: a submenu, an accordion, or always open?

Making the house a home for Creative 2.0

What would be the ideal entry point for a persona working on any of the creative or targeting tools?

Three wireframes: DSP and Creative stacked in the side nav; DSP and Creative as tabs in the header; and a switcher at the top of the side nav.

Fig. 12 Option 01, stacked in the side nav. Option 02, tabs in the header. Option 03, a switcher in the side nav.

Why Creative lives in the side nav

Option 01: Creative tooling as a subsection of the primary menu.

Two side navs: an account with the DSP and Creative, where Creative is a section of the primary menu, and a Creative-only account, where Creative comes first.

Fig. 13 DSP + Creative, and Creative only.
  1. Creative is part of the DSPHeader tabs would have made Creative look like a separate product, and a dropdown would have hidden it. Here it is always visible, whether the account has the DSP, Creative, or both.
  2. One nav for campaign managersCampaign managers move between campaigns and creative all day. One nav, with Reports and Tools & Settings shared, lets them do both without switching tools.
  3. Error alerts open in the same navWhen an alert flags a broken asset or experience, clicking it opens the fix without changing the layout.
  4. Reuses a familiar menu patternAudiences, Inventory, and Reports already expand like this. Creative works the same way, so there is nothing new to learn.

Challenge 02 | Catalogs and templates

Processing catalogs and templates

A catalog turns feed files into product rows. An ad template is the HTML boilerplate ad with slots for that data.

SolvesHand-coded templates, a 1,440-row sheet, and hand-typed JSON, all outside the DSP (Fig. 3-5).

TradeoffThe catalog becomes the new point of failure, so records with gaps are flagged before they serve.

Add a catalog: pick a source (Amazon S3, file upload, or a ZIP archive), choose the AWS account and bucket, the files to include, and how often to refresh.

Fig. 14 Add a catalog. Connect a source or upload files, then pick the files to include and how often they refresh.

Map catalog columns: three files joined on a row ID, and each column header listed with its source file, a sample value, a field ID, and a description.

Fig. 15 Map catalog columns. Rows are matched across files by their ID.

Review catalog records: 12 records joined on SKU, with columns grouped by the source file they came from. 11 are valid and 1 needs attention because it has no price.

Fig. 16 Review catalog records, grouped by source file. A record with no price still serves, with the price layer hidden.

Ad Templates empty state: no ad templates yet, with an action to create one.

Fig. 17 Start with an ad template.

Upload an ad template: a ZIP with the template HTML and an attributes file.

Fig. 18 Upload an ad template. The ZIP needs the template HTML and an attributes file (CSV or TSV).

Add click tags and save: the template's description, two click tag URLs, the contents of the uploaded ZIP, and a Save menu with Save and Create Dynamic Ad.

Fig. 19 Add click tags and save.

The ad template list, with format, sizes, attributes, and dynamic ads per template, and a row menu to edit or create a dynamic ad.

Fig. 20 Review the ad template list. A dynamic ad can start from any template.

Challenge 03 | Assets

Creating and managing assets

Static ads, and dynamic ads that pour catalog data into a template’s slots, grouped into bundles.

SolvesDozens of files per message, trafficked one at a time, and many-to-many mapping done by hand.

TradeoffA new place to manage creative, and bundles are another concept to learn. Coverage becomes a check inside the bundle instead of a separate one.

Creative Manager: the advertiser's creative libraries.

Fig. 21 Creative Manager holds every creative library an advertiser owns.

Create a library: a dialog over Creative Manager asking for the advertiser and the library name.

Fig. 22 Create a library. A library belongs to one advertiser.

Upload static assets: files done, uploading, and one unsupported 336 x 280 file that lists the sizes that would work.

Fig. 23 Upload static assets. An unsupported size is caught at upload, with the sizes that would work.

A creative library's assets, with the New asset menu open on Upload static assets and Create dynamic ad.

Fig. 24 Start a dynamic ad from inside a creative library.

Map an ad template to a catalog: 6 columns detected and 6 of 6 matched automatically, with a multi-size preview of one record.

Fig. 25 Map an ad template to a catalog. Columns are matched automatically, and a person reviews the matches before saving.

Add assets to bundles: two selected assets, and the coverage the bundle would have after adding them.

Fig. 26 Add assets to bundles. Experiences assign bundles, not single ads, so placements always get a size that fits.

Bundles in a library, with languages, coverage, the experiences each is used in, and open issues.

Fig. 27 Check bundle coverage by language.

Inside a bundle: 22 of 24 slots covered, with 2 gaps and 1 duplicate flagged.

Fig. 28 Add assets from inside a bundle. Gaps and duplicates are flagged without blocking the rest of the work.

A dialog blocking the deletion of a bundle that two experiences use, listing each experience and the node that depends on it.

Fig. 29 Bundles in use can’t be deleted. The dialog lists the experiences and nodes that depend on them.

Challenge 04 | Experiences

Building experiences

Targeting layers that form a funnel, directing each viewer to the right ad.

SolvesWho-sees-what lived in the build plan and the sheet, invisible to the DSP.

TradeoffTrees get deep. Preview as a viewer and the issues panel keep them readable.

Six ways to build decision logic

Experience Manager needed a simple way to decide which bundle each viewer sees.

Six patterns for decision logic: a rule list, stacked filters, a decision table, a sentence builder, feed rows, and a journey canvas.

Fig. 30 Rule list, stacked filters, decision table, sentence builder, feed rows, and journey canvas.

The decisioning funnel - Experience Manager

A top-down decision tree. Each horizontal layer either targets viewers or attaches media.

The experience tree: all viewers split by geography in layer 1, by audience in layer 2, and bundles attached in layer 3, with one path missing a bundle.

Fig. 31 Experience Manager’s decision tree.
  1. Each layer targets or attaches mediaEvery new layer is either a targeting layer, such as geography or audience, or a media layer that attaches bundles.
  2. Every path reads top to bottomA node can hold several values, such as Canada or Australia. A viewer needs to match one value in every layer of a path.
  3. Bundles sit at the end of each pathEach end node gets one or more bundles, with rotation and scheduling. The ALL node holds the fallback bundle.
  4. Problems show on the nodeA red mark flags a path that is missing a bundle or a size, right where it needs fixing.

A new experience: only the ALL node, ready for its first layer.

Fig. 32 Define the experience from the ground up.

Adding a target: a geography layer with Canada and Australia selected, and an option to split targets into separate nodes.

Fig. 33 Add targeting dimensions in the form of layers.

The tree with geography and audience layers and bundles attached to two paths.

Fig. 34 Customize the breadth of the funnel.

Assigning a bundle to a node from the assets drawer.

Fig. 35 Add media to the nodes.

The rotation picker on a node's bundles: scheduled, sequenced, weighted, or optimized.

Fig. 36 Define the intensity with which media is shown: scheduled, sequenced, weighted, or optimized.

Preview as a viewer: pick a placement, date, country, language, audience, and device to see the path that serves and the ads in each size.

Fig. 37 Preview as a viewer: the path lights up, and the ads it serves show in each size.

The issues panel: the Canada | Australia node is in error because no linked placement targets Australia, with a geo comparison table and three fixes. A second issue flags a path with no bundle.

Fig. 38 Problems show on the node, and the issues panel explains them with suggested fixes. Create stays disabled until they are fixed.

Review every experience in one list

Experience Manager list: every experience with alerts, impressions, clicks, number of bundles, creative library, linked campaign, status, and languages.

Fig. 39 Every experience in one list, with alerts in the first column.

Challenge 05 | Reporting

Closing the loop

Understanding performance and enabling reporting.

SolvesTags emailed and attached by hand, and reports stitched together per ad.

TradeoffBecause the logic runs when the ad serves, the platform has to be reliable and the targeting has to be intuitive.

Ad tags for an experience: one JavaScript tag per linked placement, with the selected tag's code and a copy action.

Fig. 40 One tag per linked placement. The tag resolves the path at serve time, so edits to the tree never need new tags.

Experience reporting: overall performance over time, the serving mix of targeted, no-targeting, and fallback impressions, and performance by region.

Fig. 41 Overall performance, the serving mix, and performance by region and device. Fallback serves when no branch matches, so no placement goes blank. Notional data.

Outcome

Creative 2.0 stood the test of time

ACS took over, and clients went self-serve

The DCO-specific team was absorbed into ACS, which now runs dynamic creative for managed clients. Adobe onboarded multiple accounts to use Creative 2.0 on a self-serve basis.

Creative libraries grew into Creative Studio

The architecture was expanded to ingest assets from Adobe Creative Cloud, and creative libraries extended into brand management toolkits.

The alerts framework held up

It still anchors how issues are surfaced, and now uses AI models to troubleshoot and optimize experience builds and delivery.

Google dropped its plan to deprecate cookies in Chrome in July 2024, but a self-serve product with less dependence on cookies set Adobe Advertising up for success. Safari and Firefox already sideline third-party cookies with their privacy rules. (Adobe Advertising Creative documentation)

Measuring success

LensMetricWhy it mattersDirection
North starAd spend served through dynamic creative without a DCO handoffCaptures self-serve adoption and business value in one number↑ about 3×
SpeedTime to launch a dynamic campaign, media brief to first serveThe TAT that the DCO handoff and QA cycles used to stretch↓ about 60%
SpeedHandoffs per campaign (DCO and ACS tickets)Each handoff is a delay and a chance for error↓ about 70%
QualityShare of setup errors caught before launchErrors moved from delivery reports to build time↑ most caught at build
QualityTime to diagnose a delivery issueIssues on the node make a failing setup traceable↓ about 50%
AdoptionShare of dynamic campaigns built self-serveWhether clients run it without Adobe’s help↑ a rising share
AdoptionBundles reused across more than one experienceCreative libraries working as the source of assets↑ reused across experiences
ReportingOptimization actions taken from path and bundle reportsInsight turning into weight changes and bundle swaps↑ about 2×
BusinessDynamic ad spend per advertiserPersonalization at scale growing account value↑ about 25%
BusinessACS hours per managed-service advertiserMargin on the managed service↓ about 35%
GuardrailFallback share of impressions and serve error rateSelf-serve can’t come at the cost of deliveryHeld steady

Notional: relative values only. Absolute numbers are confidential.

Looking back

Reflections

A shared vocabulary is table stakes

In a revamp this large, everyone has to use the same taxonomy and words. Building that baseline, and getting stakeholders to buy into it, kept every conversation on the same page.

New ideas, introduced in steps

Translating new concepts into patterns people already knew, step by step, meant nobody had to adopt a whole new paradigm at once.

← Back to work